mirror of
https://github.com/sshuttle/sshuttle.git
synced 2025-04-28 05:09:11 +02:00
In instances where a cluster pod in a local VM needs to access a server that is sshuttle'd from the host, since the packets arriving at the host already made a hop, their TTL is 63 and so get ignored by sshuttle. Allowing an override of the firewall TTL rule allows the packets to go through.
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
import sys
|
|
import zlib
|
|
import types
|
|
|
|
verbosity = verbosity # noqa: F821 must be a previously defined global
|
|
z = zlib.decompressobj()
|
|
while 1:
|
|
name = sys.stdin.readline().strip()
|
|
if name:
|
|
# python2 compat: in python2 sys.stdin.readline().strip() -> str
|
|
# in python3 sys.stdin.readline().strip() -> bytes
|
|
# (see #481)
|
|
if sys.version_info >= (3, 0):
|
|
name = name.decode("ASCII")
|
|
nbytes = int(sys.stdin.readline())
|
|
if verbosity >= 2:
|
|
sys.stderr.write(' s: assembling %r (%d bytes)\n'
|
|
% (name, nbytes))
|
|
content = z.decompress(sys.stdin.read(nbytes))
|
|
|
|
module = types.ModuleType(name)
|
|
parents = name.rsplit(".", 1)
|
|
if len(parents) == 2:
|
|
parent, parent_name = parents
|
|
setattr(sys.modules[parent], parent_name, module)
|
|
|
|
code = compile(content, name, "exec")
|
|
exec(code, module.__dict__) # nosec
|
|
sys.modules[name] = module
|
|
else:
|
|
break
|
|
|
|
sys.stderr.flush()
|
|
sys.stdout.flush()
|
|
|
|
# import can only happen once the code has been transferred to
|
|
# the server. 'noqa: E402' excludes these lines from QA checks.
|
|
import sshuttle.helpers # noqa: E402
|
|
sshuttle.helpers.verbose = verbosity
|
|
|
|
import sshuttle.cmdline_options as options # noqa: E402
|
|
from sshuttle.server import main # noqa: E402
|
|
main(options.latency_control, options.latency_buffer_size,
|
|
options.auto_hosts, options.to_nameserver,
|
|
options.auto_nets, options.ttl)
|