summaryrefslogtreecommitdiffstats
path: root/sshuttle
AgeCommit message (Collapse)Author
2020-06-27Add missing importbrianmay-patch-1Brian May
Fixes #474.
2020-06-17leave use of default port to ssh commandTony Kasparick
to prevent overwriting ports configured in ~/.ssh/config if no port is specified, don't set the port explicitly to 22
2020-06-10remove outdated commentJoshua Li
2020-06-11ref: replace usage of deprecated imp (#449)josh
* Use types instead of imp.new_module. I can follow up with https://docs.python.org/3/library/importlib.html#importlib.util.module_from_spec if need be. * use source loader from importlib * Revert "use source loader from importlib" This reverts commit 1f255704f7bf618fb7e0432e1fccef6ee22364d4. * use inspect.getsource, but alas * placate linter * use find_spec to resolve a module spec to a file path * better function naming * remove outdated comment
2020-06-10fix connection with @ sign in usernameOleksii Mykhailov
2020-06-03shutil.which is 3.3+Joshua Li
2020-06-03remove ImportError based branchingJoshua Li
2020-06-03reduceJoshua Li
2020-06-03remove version_info based branchingJoshua Li
2020-05-29Fix Python 3.8 file operationsBrian May
Under Python 3.8 we can not wrap a File in a Sock. Note this currently requires Python >= 3.5
2020-05-22Bump flake8 from 3.6.0 to 3.8.1dependabot-preview[bot]
Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.6.0 to 3.8.1. - [Release notes](https://gitlab.com/pycqa/flake8/tags) - [Commits](https://gitlab.com/pycqa/flake8/compare/3.6.0...3.8.1) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-21Create github workflowBrian May
2020-05-10remove debug message for getpeername failureMark Heiges
2020-05-10fix crash triggered by port scans closing socketMark Heiges
2020-04-25Fix parsing of hostnames to allow ssh aliases defined in ssh configs) (#418)tobigrimm
* Fix parsing of hostnames to allow ssh aliases defined in ssh configs) * nicer formatting, pep8 applied * Properly parse IPv6 addresses with port specification * Now also handles hostnames with port specified and IPv6 addresses without port properly * Updated parameter description for the remotehost specification * Make the urlparse import backwards compatible to python2 Co-authored-by: Tobi <tobi-git@grimm.gr>
2020-03-28# Fix 410 Issue Correcte syntax write for connect server (#411)vBlackOut
2020-03-24Add password in prompt cmd (#401)vBlackOut
* Add auto password prompt Add auto password with sshpass use user:password@host or user:password:port@host * Update ssh.py * Fix for IPv4 only * Delete print sorry bad commit * ipv4 fix * Fix IPv4 args * Fix for ipv6 * Fix ipv6 no password * Add function parse_hostport * Fix minor bug detect port * Fix minor bug password detect * Clear Code * bad write "=" replace with "==" * Rewrite code for more understand logical and fix minor bug * add default define port * delete old variable unused * replace "==" per "is" try fix code reviews * reback * try define password with len * Fix consistence variable password PR * simplify function split ipv4 or ipv6 * clear code
2020-03-24Arrange systemd notification to clarify the meaningrjharmon
* this spot in the lifecycle is precisely when we know that the remote server is running AND that the local firewall-control daemon is started.
2020-03-24Run all systemd notifications from main processrjharmon
2020-03-24Trap UnicodeError to handle cases where hostnames returned by DNS are invalid.Chris Lawrence
2020-02-07Simplify nftables based methodJulian Wollrath
2020-02-04Fixed, removed unused importsHaw Loeung
2020-02-04Added nft_chain_exists() and fixed nft to use thatHaw Loeung
2020-02-04Handle when default chains already exists (#392)Haw Loeung
2019-12-13Auto sudoers file (#269)William Mantly
* added sudoers options to command line arguments * added sudoers options to command line arguments * template for sudoers file * Added option for GUI sudo * added support for GUI sudo * script for auto adding sudo file * sudoers auto add works and validates * small change * Clean up for CI * removed code that belongs in another PR * added path for package bins * added sudoers bin * added sudoers-add to setup file * fixed issue with sudoers bash script * auto sudoers now works * added --sudoers-no-modify option * bin now works with ./run * removed debug print * Updated sudoers-add script * Fixed error passing sudoers config to script * more dynamic building of sudoers file * added option to specify sudoers.d file name * fixed indent issue * fixed indent issue * indent issue * clean up * formating * docs * fix for flags * Update usage.rst * removed shell=true * cleared CI errors * cleared CI errors * removed random * cleared linter issue * cleared linter issue * cleared linter issue * updated sudoers-add script * safer temp file * moved bin directory * moved bin directory * removed print * fixed spacing issue * sudoers commands must only containe upper case latters
2019-11-09Make hostwatch locale-independent (#379)Ben Wiederhake
* Make hostwatch locale-independent See #377: hostwatch used to call netstat and parse the result, without setting the locale. The problem is converting the binary output to a unicode string, as the locale may be utf-8, latin-1, or literally anything. Setting the locale to C avoids this issue, as netstat's source strings to not use non-ASCII characters. * Break line, check all other invocations
2019-11-08Add option for latency control buffer sizeJoseph Barker
This commit resolves #297, allowing the buffers used in the latency control to be changed with a command line option ‘--latency-buffer-size’. We do this by changing a module variable in ssnet.py (similar to the MAX_CHANNEL variable) which seems to be the simplest code change without extensive hacking. Documentation is also updated.
2019-10-27Fix broken string substitution from a765aa32Joseph Barker
The changes in a765aa32 removed a more complex pieced of code for parsing which sudo command to use. The %(eb)s no longer refers to any variable and is directly printed to the command line. %(eb)s is now replaced with ‘sudo’.
2019-10-13Add tproxy udp port mark filter that was missed in #144, fixes #367.Norman Rasmussen
2019-09-22Fix capturing of local DNS serversNick Sokolov
Regression was introduced in #337 that is skipping all local traffic, including DNS. This change makes UDP port 53 (DNS) LOCAL traffic to be treated as special case. Fixes #357
2019-09-22Fix crashing on ECONNABORTEDNick Sokolov
In certain cases socket.connect fails with ECONNABORTED, which is treated as "unknown" error causing sshuttle to crash. Fixes #356
2019-09-22The size of pf_rule grew in OpenBSD 6.4Anthony Cornehl
2019-09-22Use prompt for sudo, not needed for doasAnthony Cornehl
2019-06-08Fix tests for existing PR-312 (#337)Daniel Jeffery
* use addrtype match to return the LOCAL trafik * Add assertion for the new LOCAL firewall rule added in PR 312. * Fix linter complaints
2019-02-14Hyphen in hostname fixThomas Bouve
2019-02-14assembler import fix (#319)Thomas Bouve
* assembler import fix. * Added noqa to import statements.
2019-02-11Fix/pep8 (#277)Bastian Venthur
* re-organized imports according to pep8 * fixed all remaining pep8 issues * moved common config into setup.cfg, additionally test `tests` * removed --select=X -- the errors selected where by default not in flake8's --ignore list so effectively had no effect * update .travis.yml to reflect changes in tox.ini * make travis just use tox in order to avoid code duplaction * replace py.test with pytest * fixed .travis.yml * try different pypy toxenv * hopefully fixed testenv for pypy * added pypy basepython, removed unused python2.6 * install dev package before testing (fixes missing coverage) * fixed empty exception pass blocks with noqa * Added dummy log message on empty try-except-pass blocks to make dodacy happy :( * Replaced Exception with BaseException
2019-01-28auto-nets: retrieve routes only if using auto-netsVasil Kolev
There's a known issue that makes sshuttle crash if there are too many routes on the remote host (that don't fit in 64KB). This patch requests the routes only if auto-nets is specified on the command line.
2019-01-23Fix potential deadlock condition in nft_get_handleAlex Tomlins
This was susceptible to the same deadlock issue that ipt_chain_exists had and was fixed in d43db80 where if the command returned a significant amount of output, it wouldn't all be read in, resulting in the subprocess hanging waiting for the output to be read.
2019-01-23Use subprocess.check_output instead of runAlex Tomlins
subprocess.run only exists for python3, and this needs to also support python 2.7
2018-12-09Fix deadlock with iptables with large rulesetAlex Tomlins
When running sshuttle with a large list of routes it's failing to clean them up at exit. It returns the following: $ sshuttle -r user@host.example.com -s /tmp/aws-cidrs.txt user@host.example.com's password: client: Connected. ^CAnother app is currently holding the xtables lock; still -9s 0us time ahead to have a chance to grab the lock... Another app is currently holding the xtables lock; still -19s 0us time ahead to have a chance to grab the lock... Another app is currently holding the xtables lock; still -29s 0us time ahead to have a chance to grab the lock... This continues indefinitely. Looking in ps reveals that there are 2 iptables processes running. Killing -9 the first one, allows sshuttle to continue and clean up successfully. The problem lies with the use of Popen here. The function currently returns as soon as it finds a match without consuming everything from stdout. This means that if there's more output from iptables than will fit in the buffer it doesn't exit, and therefore doesn't release the kernel xtables lock.
2018-11-03Changes pf exclusion rules precedenceJoão Vieira
Before this change, in pf, exclusions used a pass out quick which gave them higher precedence than any other rule independent of subnet width. As reported in #265 this causes exclusion from one instance of sshuttle to also take effect on other instances because quick aborts the evaluation of rules across all anchors. This commit changes the precedence of rules so quick can now be dropped. The new order is defined by the following rule, from subnet_weight: "We need to go from smaller, more specific, port ranges, to larger, less-specific, port ranges. At each level, we order by subnet width, from most-specific subnets (largest swidth) to least-specific. On ties, excludes come first."
2018-11-01Close stdin, stdout, and stderr when using syslog or forking to daemon (#283)Brian May
* Close stdin, stdout, and stderr when using syslog or forking to daemon Fixes #139 * Ensure we close devnull after use
2018-10-23Fixes support for OpenBSD (6.1+) (#282)João Vieira
* Fixes support for OpenBSD (6.1+) As reported in #219, new versions of OpenBSD ship with a different pfioc_rule struct. This commit adjusts the offset to match the new struct. * Fixes tests for OpenBSD 6.1+
2018-10-17replace path /dev/null by os.devnullAbbalYouness
2018-10-17Moved sshuttle/tests into tests to.Bastian Venthur
Having the tests in a `tests` directory in root is the most common approach. Also moved pytest's conftest.py into `tests` making the fixture available for client and server tests.
2018-10-07Fix missing string formatting argumentBrian May
2018-09-21Add --no-sudo-pythonpath optionSteven McDonald
This provides a way to avoid setting PYTHONPATH when invoking the privileged part of sshuttle with sudo. This is useful if running sshuttle as a PEX archive, as Telepresence does, as it enables sshuttle's sudo access to be securely locked down. PEX archives will extract themselves into the invoking user's home directory, which means that the invoking user has full control over the code in them. This makes restricting sudo access with PYTHONPATH set completely pointless in this scenario -- an attacker could put any code into ~/.pex and gain full root access anyway. On the other hand, if sshuttle is a PEX archive, the privileged invocation will simply extract itself into /root/.pex anyway, so there is no need to set PYTHONPATH in this case.
2018-08-21Don't crash if we can't look up peernameBrian May
Peername is only used for information display messages. Fixes #259
2018-05-13Fix sudo/doasIvan Shvedunov
Fixes #227