Commit da774f3f authored by Avery Pennarun's avatar Avery Pennarun

import and use subprocess.py from python 2.6.

This should hopefully let us run even on python 2.3 on really old servers.
parent 7d3028de
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: ...@@ -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:
......
This diff is collapsed.
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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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))
......
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(): ...@@ -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): ...@@ -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): ...@@ -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:
......
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): ...@@ -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)
......
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): ...@@ -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): ...@@ -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): ...@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment