mirror of
https://github.com/vimagick/dockerfiles.git
synced 2025-12-21 21:33:02 +01:00
update
This commit is contained in:
@@ -2,3 +2,4 @@ dockerfiles
|
|||||||
===========
|
===========
|
||||||
|
|
||||||
https://hub.docker.com/u/vimagick/
|
https://hub.docker.com/u/vimagick/
|
||||||
|
|
||||||
|
|||||||
@@ -14,10 +14,10 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
from base64 import decodestring
|
|
||||||
from sh import sslocal, curl
|
from sh import sslocal, curl
|
||||||
from urlparse import urlparse
|
from urlparse import urlparse
|
||||||
import argparse
|
import argparse
|
||||||
|
import base64
|
||||||
import json
|
import json
|
||||||
import os.path
|
import os.path
|
||||||
import socket
|
import socket
|
||||||
@@ -40,23 +40,23 @@ def parse_uri(uri):
|
|||||||
if '@' not in uri:
|
if '@' not in uri:
|
||||||
b64 = obj.netloc
|
b64 = obj.netloc
|
||||||
b64 += "=" * ((4 - len(b64) % 4) % 4)
|
b64 += "=" * ((4 - len(b64) % 4) % 4)
|
||||||
uri = decodestring(b64)
|
uri = base64.decodestring(b64)
|
||||||
obj = urlparse('ss://' + uri)
|
obj = urlparse('ss://' + uri)
|
||||||
param = dict(
|
param = dict(
|
||||||
method = obj.username or 'aes-256-cfb',
|
method = obj.username or 'aes-256-cfb',
|
||||||
passwd = obj.password,
|
password = obj.password,
|
||||||
server = obj.hostname,
|
server = obj.hostname,
|
||||||
port = obj.port or 8388,
|
server_port = obj.port or 8388,
|
||||||
)
|
)
|
||||||
if not param['passwd']:
|
if not param['password']:
|
||||||
param['method'], param['passwd'] = 'aes-256-cfb', param['method']
|
param['method'], param['password'] = 'aes-256-cfb', param['method']
|
||||||
return param
|
return param
|
||||||
|
|
||||||
|
|
||||||
def run_sslocal(args):
|
def run_sslocal(args):
|
||||||
|
|
||||||
lport = random_port()
|
lport = random_port()
|
||||||
proc = sslocal(l=lport, m=args['method'], s=args['server'], p=args['port'], k=args['passwd'], _bg=True)
|
proc = sslocal(l=lport, m=args['method'], s=args['server'], p=args['server_port'], k=args['password'], _bg=True)
|
||||||
return proc, lport
|
return proc, lport
|
||||||
|
|
||||||
|
|
||||||
@@ -69,16 +69,20 @@ def run_curl(lport, timeout=5):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def gen_config(args, bind, port):
|
def gen_config(args, bind, port, enc):
|
||||||
|
|
||||||
print json.dumps({
|
if enc:
|
||||||
'local_address': bind,
|
uri = '{0[method]}:{0[password]}@{0[server]}:{0[server_port]}'.format(args)
|
||||||
'local_port': port or random_port(),
|
print 'ss://' + base64.encodestring(uri).rstrip('=\n')
|
||||||
'server': args['server'],
|
else:
|
||||||
'server_port': args['port'],
|
print json.dumps({
|
||||||
'method': args['method'],
|
'local_address': bind,
|
||||||
'password': args['passwd'],
|
'local_port': port or random_port(),
|
||||||
}, indent=2)
|
'server': args['server'],
|
||||||
|
'server_port': args['server_port'],
|
||||||
|
'method': args['method'],
|
||||||
|
'password': args['password'],
|
||||||
|
}, indent=2)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
@@ -86,6 +90,8 @@ if __name__ == '__main__':
|
|||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('-t', '--timeout', type=int, default=5)
|
parser.add_argument('-t', '--timeout', type=int, default=5)
|
||||||
parser.add_argument('-w', '--wait', type=int, default=1)
|
parser.add_argument('-w', '--wait', type=int, default=1)
|
||||||
|
parser.add_argument('-e', '--encode', action='store_true', default=False)
|
||||||
|
parser.add_argument('-n', '--dryrun', action='store_true', default=False)
|
||||||
parser.add_argument('-b', '--bind', type=str, default='127.0.0.1')
|
parser.add_argument('-b', '--bind', type=str, default='127.0.0.1')
|
||||||
parser.add_argument('-p', '--port', type=int, default=0)
|
parser.add_argument('-p', '--port', type=int, default=0)
|
||||||
parser.add_argument('uri')
|
parser.add_argument('uri')
|
||||||
@@ -101,11 +107,16 @@ if __name__ == '__main__':
|
|||||||
uri = 'ss://' + uri
|
uri = 'ss://' + uri
|
||||||
|
|
||||||
param = parse_uri(uri)
|
param = parse_uri(uri)
|
||||||
proc, lport = run_sslocal(param)
|
|
||||||
time.sleep(args.wait)
|
if args.dryrun:
|
||||||
ok = run_curl(lport, args.timeout)
|
ok = True
|
||||||
|
else:
|
||||||
|
proc, lport = run_sslocal(param)
|
||||||
|
time.sleep(args.wait)
|
||||||
|
ok = run_curl(lport, args.timeout)
|
||||||
|
proc.process.kill()
|
||||||
|
|
||||||
if ok:
|
if ok:
|
||||||
gen_config(param, args.bind, args.port)
|
gen_config(param, args.bind, args.port, args.encode)
|
||||||
proc.process.kill()
|
|
||||||
exit(0 if ok else 1)
|
exit(0 if ok else 1)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user