Commit Graph

341 Commits

Author SHA1 Message Date
2b0d0065c7 Don't force IPv6 if IPv6 name servers
Just because we may have found IPv6 DNS servers from /etc/resolv.conf
doesn't mean we should force IPv6 support.

Instead we should disable the IPv6 DNS servers if IPv6 is disabled.

Note: this will also result in any IPv6 servers specified on the command
line being silently ignored too.

Specifying an IPv6 subnet will still require IPv6 support.

Closes #74
2016-03-08 18:49:47 +11:00
cedc8dc146 Add support for OpenBSD 2016-03-02 18:50:37 +11:00
e8047ce3a9 Fixed Python 3 issue 2016-03-02 18:38:43 +11:00
fae4cb1dbf Override the skip on lo that ends up in the chain
In some cases (see #43) it seems that some network configurations may
end up setting a skip on lo. As sshuttle adds rules that rely on
filtering/translating packets on lo, this causes problem. This fix
overrides the skip and makes the rules be applied again.
Should fix at least some of the problems reported on #43.
2016-03-02 18:36:14 +11:00
7d8309ef05 Refactor OS specific portions of PF
This will make it easier to support other platforms/versions in the
future, e.g., OpenBSD.
2016-03-02 18:04:43 +11:00
4a954c547a fix byte/string bug introduced in 1c46f25e
This is the error message that this commit fixes:
TypeError: sequence item 142: expected a bytes-like object, str found

Complete what 1c46f25e started, more or less.
2016-01-31 16:26:21 -05:00
4fcf7c73da Fix regression: ensure we do bind
Closes: #68
2016-01-31 19:15:02 +11:00
ba8e948c0d Don't allocate socket until we need it
Wew were trying to allocate an IPv6 socket even though we weren't using
IPv6, causing failures on systems without IPv6 support available.

This change means a number of methods on MultiListener, e.g. setsockopt,
should not be called until after the bind call.

Closes #68
2016-01-30 11:28:59 +11:00
262affe94f Use Sphinx for documentation
See #60
2016-01-17 16:19:13 +11:00
d80b590a71 Fix joining of seed hosts to be compatible with python 3.5
this should also be backwards compatible with python 2
2016-01-17 12:05:23 +11:00
7f0b5c698b Fix installation from wheel
Fix the following error. Looks like we have to have a function to call
for the entrypoint.

$ pip install dist/sshuttle-0.76.dev8_ngf59508f-py2-none-any.whl
Processing ./dist/sshuttle-0.76.dev8_ngf59508f-py2-none-any.whl
Installing collected packages: sshuttle
Exception:
Traceback (most recent call last):
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/commands/install.py", line 311, in run
    root=options.root_path,
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/req/req_set.py", line 646, in install
    **kwargs
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/req/req_install.py", line 803, in install
    self.move_wheel_files(self.source_dir, root=root)
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/req/req_install.py", line 998, in move_wheel_files
    isolated=self.isolated,
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/wheel.py", line 479, in move_wheel_files
    maker.make_multiple(['%s = %s' % kv for kv in console.items()])
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.py", line 364, in make_multiple
    filenames.extend(self.make(specification, options))
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.py", line 353, in make
    self._make_script(entry, filenames, options=options)
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.py", line 244, in _make_script
    script = self._get_script_text(entry).encode('utf-8')
  File "/tmp/ddd/local/lib/python2.7/site-packages/pip/wheel.py", line 396, in _get_script_text
    "import_name": entry.suffix.split(".")[0],
AttributeError: 'NoneType' object has no attribute 'split'
2016-01-17 10:21:21 +11:00
1e82571b3d Experimental: Use setuptools-scm
Closes: #58
2016-01-13 19:00:08 +11:00
fc5545ccde Remove a print from tproxy used for debug
Closes: #61
2016-01-13 19:00:08 +11:00
629c386dc5 Add the option to disable sshuttle ipv6 support
Using --disable-ipv6 will now force sshuttle not to capture
ipv6 traffic, even if the client supports ipv6.
2016-01-12 13:07:07 +11:00
1c46f25e13 Fixed str being used as bytes in hostwatch
This should solve the TypeError reported in #53 and some others I found
while testing the fix.

Closes: #53
2016-01-07 14:16:03 +11:00
11838d65c2 Adds support for FreeBSD PF
The PF firewall that is included in the FreeBSD base system does not
have exactly the same data structures as the OSX version. This commit
fixes the offsets and some field types that are also different. Tested
with FreeBSD 10.2 and OSX 10.11.2.
2016-01-05 18:00:57 +11:00
ba60d22478 Add another test. 2015-12-15 14:23:42 +11:00
1e81bf3dfc Mirror setup/restore logic 2015-12-15 13:39:00 +11:00
7362ba9f52 If listenip_v6 we should declare ipv6 required 2015-12-15 13:31:03 +11:00
b207d1d0d6 Fixes for --auto-nets 2015-12-15 13:30:34 +11:00
56e3b22820 Add FIXME comment. 2015-12-15 13:29:04 +11:00
02fa49627f Fix server side Python3 issues.
Closes: #49.
2015-12-15 12:51:29 +11:00
bdc7d3a97c Fix UDP Python 3.5 issues.
Closes: #48
2015-12-15 11:41:48 +11:00
90654b4fb9 Simplify selection of features 2015-12-15 11:40:55 +11:00
6b4e36c528 Declare DNS support as feature 2015-12-14 21:00:31 +11:00
eed917f062 Don't declare udp feature without recvmsg 2015-12-14 20:59:26 +11:00
74f2d9ca7e Ensure Fatal errors are really Fatal 2015-12-14 20:51:49 +11:00
117afc7a68 Fixed dictionary changed size during iteration
The removal loop should probably be outside the iteration loop.
2015-12-14 16:46:11 +11:00
c61984088b Test PF on non-darwin. 2015-12-14 09:28:43 +11:00
e63e121354 Print PF rules used.
Also support multiline debug output better.
2015-12-14 09:21:15 +11:00
2b235331d0 Split setup_firewall method.
* setup_firewall sets the firewall up.
* restore_firewall restores the firewall to initial state.
2015-12-13 11:56:18 +11:00
2eeea9536a Fixed str being used as bytes in daemonize 2015-12-09 16:32:39 +11:00
9a77d03edf Respect --syslog as soon as possible
When executing with the option --syslog start redirecting to
syslog immediately after the command line options are validated.
This way when using with some init daemon, e.g., upstart all the
relevant information (connection failures, etc) can be retrieved from
the log instead of being lost to stdout or stderr.
2015-12-09 14:46:11 +11:00
4fdd715bc1 Don't change object while iterating
Closes: #40
2015-12-09 10:29:40 +11:00
1ae4fce6b3 Fix logging with pf method and Python 3.5 2015-12-07 13:16:47 +11:00
118171af7f Fix get_tcp_dstip with MacOSX/Python3.5 2015-12-07 07:14:26 +11:00
3367124e6b Fix more brokenness. 2015-12-06 11:45:49 +11:00
aaa6062329 Remove IPFW support.
This is no longer used by modern MacOSX and not getting tested.

It also required a do_wait() function which was a complication for
sshuttle as a whole.

Can get resurrected if required.
2015-12-06 11:33:52 +11:00
da4ce19121 Fix MacOSX tests. 2015-12-06 11:24:38 +11:00
12d4b304c3 Fix another MacOSX/Python3.5 issue. 2015-12-06 11:24:11 +11:00
bd97506f7d Fixup firewall tests. 2015-12-06 11:02:31 +11:00
53c07f7d90 hostmap shouldn't be global. 2015-12-06 11:00:12 +11:00
7e0c1534df Be more explicit 2015-12-06 10:58:51 +11:00
a3fbf860ff Fix more MacOSX/Python3.5 issues. 2015-12-05 20:21:36 +11:00
7a9e36d211 Fix MacOSX/Python3.5 issues.
Closes: #36.
2015-12-05 16:41:33 +11:00
65e81d51c6 Try Python3.5 by default.
Python 3.0, 3.1, 3.2, and 3.4 not supported however.
2015-12-05 14:41:22 +11:00
43084eb49a Fix typo. 2015-12-05 14:40:33 +11:00
bbb4d31c3f Add accidentally removed line. 2015-12-05 14:39:07 +11:00
f7682d4c33 Make firewall messages consistent 2015-12-05 14:26:20 +11:00
d07a775d50 Don't fail if can't revert errors
We will log the errors, however no point in failing; not only can this
hide errors that occured setting up the firewall, but is pointless as we
can't actually handle these errors in a good way anyway.
2015-12-05 14:14:01 +11:00