mirror of
https://github.com/sshuttle/sshuttle.git
synced 2025-01-30 17:59:22 +01:00
Ensure locale is set to C for external commands
Otherwise the output can vary and confuse our attempts to parse it. Fixes: 93
This commit is contained in:
parent
1dda9dd621
commit
8fad282bfd
@ -1,3 +1,4 @@
|
||||
import os
|
||||
import socket
|
||||
import subprocess as ssubprocess
|
||||
from sshuttle.helpers import log, debug1, Fatal, family_to_string
|
||||
@ -18,7 +19,11 @@ def ipt_chain_exists(family, table, name):
|
||||
else:
|
||||
raise Exception('Unsupported family "%s"' % family_to_string(family))
|
||||
argv = [cmd, '-t', table, '-nL']
|
||||
p = ssubprocess.Popen(argv, stdout=ssubprocess.PIPE)
|
||||
env = {
|
||||
'PATH': os.environ['PATH'],
|
||||
'LC_ALL': "C",
|
||||
}
|
||||
p = ssubprocess.Popen(argv, stdout=ssubprocess.PIPE, env=env)
|
||||
for line in p.stdout:
|
||||
if line.startswith(b'Chain %s ' % name.encode("ASCII")):
|
||||
return True
|
||||
@ -35,7 +40,11 @@ def ipt(family, table, *args):
|
||||
else:
|
||||
raise Exception('Unsupported family "%s"' % family_to_string(family))
|
||||
debug1('>> %s\n' % ' '.join(argv))
|
||||
rv = ssubprocess.call(argv)
|
||||
env = {
|
||||
'PATH': os.environ['PATH'],
|
||||
'LC_ALL': "C",
|
||||
}
|
||||
rv = ssubprocess.call(argv, env=env)
|
||||
if rv:
|
||||
raise Fatal('%r returned %d' % (argv, rv))
|
||||
|
||||
|
@ -326,9 +326,14 @@ def pfctl(args, stdin=None):
|
||||
argv = ['pfctl'] + list(args.split(" "))
|
||||
debug1('>> %s\n' % ' '.join(argv))
|
||||
|
||||
env = {
|
||||
'PATH': os.environ['PATH'],
|
||||
'LC_ALL': "C",
|
||||
}
|
||||
p = ssubprocess.Popen(argv, stdin=ssubprocess.PIPE,
|
||||
stdout=ssubprocess.PIPE,
|
||||
stderr=ssubprocess.PIPE)
|
||||
stderr=ssubprocess.PIPE,
|
||||
env=env)
|
||||
o = p.communicate(stdin)
|
||||
if p.returncode:
|
||||
raise Fatal('%r returned %d' % (argv, p.returncode))
|
||||
|
@ -63,7 +63,11 @@ def _shl(n, bits):
|
||||
def _list_routes():
|
||||
# FIXME: IPv4 only
|
||||
argv = ['netstat', '-rn']
|
||||
p = ssubprocess.Popen(argv, stdout=ssubprocess.PIPE)
|
||||
env = {
|
||||
'PATH': os.environ['PATH'],
|
||||
'LC_ALL': "C",
|
||||
}
|
||||
p = ssubprocess.Popen(argv, stdout=ssubprocess.PIPE, env=env)
|
||||
routes = []
|
||||
for line in p.stdout:
|
||||
cols = re.split(r'\s+', line.decode("ASCII"))
|
||||
|
Loading…
Reference in New Issue
Block a user