mirror of
https://github.com/sshuttle/sshuttle.git
synced 2024-11-22 16:03:57 +01:00
import and use subprocess.py from python 2.6.
This should hopefully let us run even on python 2.3 on really old servers.
This commit is contained in:
parent
7d3028dee2
commit
da774f3f46
@ -1,4 +1,5 @@
|
|||||||
import struct, socket, select, subprocess, errno, re
|
import struct, socket, select, errno, re
|
||||||
|
import compat.ssubprocess as ssubprocess
|
||||||
import helpers, ssnet, ssh
|
import helpers, ssnet, ssh
|
||||||
from ssnet import SockWrapper, Handler, Proxy, Mux, MuxWrapper
|
from ssnet import SockWrapper, Handler, Proxy, Mux, MuxWrapper
|
||||||
from helpers import *
|
from helpers import *
|
||||||
@ -45,7 +46,7 @@ class FirewallClient:
|
|||||||
e = None
|
e = None
|
||||||
for argv in argv_tries:
|
for argv in argv_tries:
|
||||||
try:
|
try:
|
||||||
self.p = subprocess.Popen(argv, stdout=s1, preexec_fn=setup)
|
self.p = ssubprocess.Popen(argv, stdout=s1, preexec_fn=setup)
|
||||||
e = None
|
e = None
|
||||||
break
|
break
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
|
0
compat/__init__.py
Normal file
0
compat/__init__.py
Normal file
1294
compat/ssubprocess.py
Normal file
1294
compat/ssubprocess.py
Normal file
File diff suppressed because it is too large
Load Diff
15
firewall.py
15
firewall.py
@ -1,11 +1,12 @@
|
|||||||
import subprocess, re, errno
|
import re, errno
|
||||||
|
import compat.ssubprocess as ssubprocess
|
||||||
import helpers
|
import helpers
|
||||||
from helpers import *
|
from helpers import *
|
||||||
|
|
||||||
|
|
||||||
def ipt_chain_exists(name):
|
def ipt_chain_exists(name):
|
||||||
argv = ['iptables', '-t', 'nat', '-nL']
|
argv = ['iptables', '-t', 'nat', '-nL']
|
||||||
p = subprocess.Popen(argv, stdout = subprocess.PIPE)
|
p = ssubprocess.Popen(argv, stdout = ssubprocess.PIPE)
|
||||||
for line in p.stdout:
|
for line in p.stdout:
|
||||||
if line.startswith('Chain %s ' % name):
|
if line.startswith('Chain %s ' % name):
|
||||||
return True
|
return True
|
||||||
@ -17,7 +18,7 @@ def ipt_chain_exists(name):
|
|||||||
def ipt(*args):
|
def ipt(*args):
|
||||||
argv = ['iptables', '-t', 'nat'] + list(args)
|
argv = ['iptables', '-t', 'nat'] + list(args)
|
||||||
debug1('>> %s\n' % ' '.join(argv))
|
debug1('>> %s\n' % ' '.join(argv))
|
||||||
rv = subprocess.call(argv)
|
rv = ssubprocess.call(argv)
|
||||||
if rv:
|
if rv:
|
||||||
raise Fatal('%r returned %d' % (argv, rv))
|
raise Fatal('%r returned %d' % (argv, rv))
|
||||||
|
|
||||||
@ -64,7 +65,7 @@ def do_iptables(port, subnets):
|
|||||||
|
|
||||||
def ipfw_rule_exists(n):
|
def ipfw_rule_exists(n):
|
||||||
argv = ['ipfw', 'list']
|
argv = ['ipfw', 'list']
|
||||||
p = subprocess.Popen(argv, stdout = subprocess.PIPE)
|
p = ssubprocess.Popen(argv, stdout = ssubprocess.PIPE)
|
||||||
found = False
|
found = False
|
||||||
for line in p.stdout:
|
for line in p.stdout:
|
||||||
if line.startswith('%05d ' % n):
|
if line.startswith('%05d ' % n):
|
||||||
@ -82,7 +83,7 @@ def ipfw_rule_exists(n):
|
|||||||
|
|
||||||
def sysctl_get(name):
|
def sysctl_get(name):
|
||||||
argv = ['sysctl', '-n', name]
|
argv = ['sysctl', '-n', name]
|
||||||
p = subprocess.Popen(argv, stdout = subprocess.PIPE)
|
p = ssubprocess.Popen(argv, stdout = ssubprocess.PIPE)
|
||||||
line = p.stdout.readline()
|
line = p.stdout.readline()
|
||||||
rv = p.wait()
|
rv = p.wait()
|
||||||
if rv:
|
if rv:
|
||||||
@ -96,7 +97,7 @@ def sysctl_get(name):
|
|||||||
def _sysctl_set(name, val):
|
def _sysctl_set(name, val):
|
||||||
argv = ['sysctl', '-w', '%s=%s' % (name, val)]
|
argv = ['sysctl', '-w', '%s=%s' % (name, val)]
|
||||||
debug1('>> %s\n' % ' '.join(argv))
|
debug1('>> %s\n' % ' '.join(argv))
|
||||||
rv = subprocess.call(argv, stdout = open('/dev/null', 'w'))
|
rv = ssubprocess.call(argv, stdout = open('/dev/null', 'w'))
|
||||||
|
|
||||||
|
|
||||||
_oldctls = []
|
_oldctls = []
|
||||||
@ -110,7 +111,7 @@ def sysctl_set(name, val):
|
|||||||
def ipfw(*args):
|
def ipfw(*args):
|
||||||
argv = ['ipfw', '-q'] + list(args)
|
argv = ['ipfw', '-q'] + list(args)
|
||||||
debug1('>> %s\n' % ' '.join(argv))
|
debug1('>> %s\n' % ' '.join(argv))
|
||||||
rv = subprocess.call(argv)
|
rv = ssubprocess.call(argv)
|
||||||
if rv:
|
if rv:
|
||||||
raise Fatal('%r returned %d' % (argv, rv))
|
raise Fatal('%r returned %d' % (argv, rv))
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import subprocess, time, socket, re, select, errno
|
import time, socket, re, select, errno
|
||||||
if not globals().get('skip_imports'):
|
if not globals().get('skip_imports'):
|
||||||
|
import compat.ssubprocess as ssubprocess
|
||||||
import helpers
|
import helpers
|
||||||
from helpers import *
|
from helpers import *
|
||||||
|
|
||||||
@ -108,7 +109,7 @@ def _check_netstat():
|
|||||||
debug2(' > netstat\n')
|
debug2(' > netstat\n')
|
||||||
argv = ['netstat', '-n']
|
argv = ['netstat', '-n']
|
||||||
try:
|
try:
|
||||||
p = subprocess.Popen(argv, stdout=subprocess.PIPE, stderr=null)
|
p = ssubprocess.Popen(argv, stdout=ssubprocess.PIPE, stderr=null)
|
||||||
content = p.stdout.read()
|
content = p.stdout.read()
|
||||||
p.wait()
|
p.wait()
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
@ -128,7 +129,7 @@ def _check_smb(hostname):
|
|||||||
argv = ['smbclient', '-U', '%', '-L', hostname]
|
argv = ['smbclient', '-U', '%', '-L', hostname]
|
||||||
debug2(' > smb: %s\n' % hostname)
|
debug2(' > smb: %s\n' % hostname)
|
||||||
try:
|
try:
|
||||||
p = subprocess.Popen(argv, stdout=subprocess.PIPE, stderr=null)
|
p = ssubprocess.Popen(argv, stdout=ssubprocess.PIPE, stderr=null)
|
||||||
lines = p.stdout.readlines()
|
lines = p.stdout.readlines()
|
||||||
p.wait()
|
p.wait()
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
@ -185,7 +186,7 @@ def _check_nmb(hostname, is_workgroup, is_master):
|
|||||||
argv = ['nmblookup'] + ['-M']*is_master + ['--', hostname]
|
argv = ['nmblookup'] + ['-M']*is_master + ['--', hostname]
|
||||||
debug2(' > n%d%d: %s\n' % (is_workgroup, is_master, hostname))
|
debug2(' > n%d%d: %s\n' % (is_workgroup, is_master, hostname))
|
||||||
try:
|
try:
|
||||||
p = subprocess.Popen(argv, stdout=subprocess.PIPE, stderr=null)
|
p = ssubprocess.Popen(argv, stdout=ssubprocess.PIPE, stderr=null)
|
||||||
lines = p.stdout.readlines()
|
lines = p.stdout.readlines()
|
||||||
rv = p.wait()
|
rv = p.wait()
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import re, struct, socket, select, subprocess, traceback
|
import re, struct, socket, select, traceback
|
||||||
if not globals().get('skip_imports'):
|
if not globals().get('skip_imports'):
|
||||||
import ssnet, helpers, hostwatch
|
import ssnet, helpers, hostwatch
|
||||||
|
import compat.ssubprocess as ssubprocess
|
||||||
from ssnet import SockWrapper, Handler, Proxy, Mux, MuxWrapper
|
from ssnet import SockWrapper, Handler, Proxy, Mux, MuxWrapper
|
||||||
from helpers import *
|
from helpers import *
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ def _maskbits(netmask):
|
|||||||
|
|
||||||
def _list_routes():
|
def _list_routes():
|
||||||
argv = ['netstat', '-rn']
|
argv = ['netstat', '-rn']
|
||||||
p = subprocess.Popen(argv, stdout=subprocess.PIPE)
|
p = ssubprocess.Popen(argv, stdout=ssubprocess.PIPE)
|
||||||
routes = []
|
routes = []
|
||||||
for line in p.stdout:
|
for line in p.stdout:
|
||||||
cols = re.split(r'\s+', line)
|
cols = re.split(r'\s+', line)
|
||||||
|
9
ssh.py
9
ssh.py
@ -1,4 +1,5 @@
|
|||||||
import sys, os, re, subprocess, socket, zlib
|
import sys, os, re, socket, zlib
|
||||||
|
import compat.ssubprocess as ssubprocess
|
||||||
import helpers
|
import helpers
|
||||||
from helpers import *
|
from helpers import *
|
||||||
|
|
||||||
@ -14,9 +15,10 @@ def readfile(name):
|
|||||||
|
|
||||||
|
|
||||||
def empackage(z, filename):
|
def empackage(z, filename):
|
||||||
|
(path,basename) = os.path.split(filename)
|
||||||
content = z.compress(readfile(filename))
|
content = z.compress(readfile(filename))
|
||||||
content += z.flush(zlib.Z_SYNC_FLUSH)
|
content += z.flush(zlib.Z_SYNC_FLUSH)
|
||||||
return '%s\n%d\n%s' % (filename,len(content), content)
|
return '%s\n%d\n%s' % (basename,len(content), content)
|
||||||
|
|
||||||
|
|
||||||
def connect(rhostport, python):
|
def connect(rhostport, python):
|
||||||
@ -33,6 +35,7 @@ def connect(rhostport, python):
|
|||||||
z = zlib.compressobj(1)
|
z = zlib.compressobj(1)
|
||||||
content = readfile('assembler.py')
|
content = readfile('assembler.py')
|
||||||
content2 = (empackage(z, 'helpers.py') +
|
content2 = (empackage(z, 'helpers.py') +
|
||||||
|
empackage(z, 'compat/ssubprocess.py') +
|
||||||
empackage(z, 'ssnet.py') +
|
empackage(z, 'ssnet.py') +
|
||||||
empackage(z, 'hostwatch.py') +
|
empackage(z, 'hostwatch.py') +
|
||||||
empackage(z, 'server.py') +
|
empackage(z, 'server.py') +
|
||||||
@ -58,7 +61,7 @@ def connect(rhostport, python):
|
|||||||
s1a,s1b = os.dup(s1.fileno()), os.dup(s1.fileno())
|
s1a,s1b = os.dup(s1.fileno()), os.dup(s1.fileno())
|
||||||
s1.close()
|
s1.close()
|
||||||
debug2('executing: %r\n' % argv)
|
debug2('executing: %r\n' % argv)
|
||||||
p = subprocess.Popen(argv, stdin=s1a, stdout=s1b, preexec_fn=setup,
|
p = ssubprocess.Popen(argv, stdin=s1a, stdout=s1b, preexec_fn=setup,
|
||||||
close_fds=True)
|
close_fds=True)
|
||||||
os.close(s1a)
|
os.close(s1a)
|
||||||
os.close(s1b)
|
os.close(s1b)
|
||||||
|
Loading…
Reference in New Issue
Block a user