1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-vps-admin.git synced 2025-03-09 15:40:05 +00:00

Use shadowsocks-manager

This commit is contained in:
Ysurac 2019-11-16 19:49:26 +00:00
parent d10afe5e88
commit 85a4cf4492
2 changed files with 91 additions and 24 deletions

View file

@ -4,7 +4,8 @@
{ {
"openmptcprouter": { "openmptcprouter": {
"username": "openmptcprouter", "username": "openmptcprouter",
"hashed_password": "MySecretKey", "user_password": "MySecretKey",
"shadowsocks_port": 65101,
"disabled": false "disabled": false
} }
} }

View file

@ -125,9 +125,9 @@ with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
fake_users_db = omr_config_data['users'][0] fake_users_db = omr_config_data['users'][0]
def verify_password(plain_password, hashed_password): def verify_password(plain_password, user_password):
#return pwd_context.verify(plain_password, hashed_password) #return pwd_context.verify(plain_password, user_password)
if plain_password == hashed_password: if plain_password == user_password:
log.debug("password true") log.debug("password true")
return True return True
return False return False
@ -147,7 +147,7 @@ def authenticate_user(fake_db, username: str, password: str):
if not user: if not user:
log.debug("user doesn't exist") log.debug("user doesn't exist")
return False return False
if not verify_password(password, user.hashed_password): if not verify_password(password, user.user_password):
log.debug("wrong password") log.debug("wrong password")
return False return False
return user return user
@ -168,7 +168,7 @@ class User(BaseModel):
class UserInDB(User): class UserInDB(User):
hashed_password: str user_password: str
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token") oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token")
app = FastAPI() app = FastAPI()
@ -248,15 +248,16 @@ def config(current_user: User = Depends(get_current_user)):
omr_config_data = json.load(f) omr_config_data = json.load(f)
except ValueError as e: except ValueError as e:
omr_config_data = {} omr_config_data = {}
with open('/etc/shadowsocks-libev/config.json') as f: with open('/etc/shadowsocks-libev/manager.json') as f:
content = f.read() content = f.read()
content = re.sub(",\s*}","}",content) content = re.sub(",\s*}","}",content)
try: try:
data = json.loads(content) data = json.loads(content)
except ValueError as e: except ValueError as e:
data = {'key': '', 'server_port': 65101, 'method': 'chacha20'} data = {'key': '', 'server_port': 65101, 'method': 'chacha20'}
shadowsocks_key = data["key"] #shadowsocks_port = data["server_port"]
shadowsocks_port = data["server_port"] shadowsocks_port = current_user.shadowsocks_port
shadowsocks_key = data["port_key"][str(shadowsocks_port)]
shadowsocks_method = data["method"] shadowsocks_method = data["method"]
if 'fast_open' in data: if 'fast_open' in data:
shadowsocks_fast_open = data["fast_open"] shadowsocks_fast_open = data["fast_open"]
@ -453,9 +454,76 @@ class ShadowsocksConfigparams(BaseModel):
ebpf: bool ebpf: bool
key: str key: str
#@app.post('/shadowsocks')
#def shadowsocks(*,params: ShadowsocksConfigparams,current_user: User = Depends(get_current_user)):
# with open('/etc/shadowsocks-libev/config.json') as f:
# content = f.read()
# content = re.sub(",\s*}","}",content)
# try:
# data = json.loads(content)
# except ValueError as e:
# data = {'timeout': 600, 'verbose': 0, 'prefer_ipv6': False}
# if 'timeout' in data:
# timeout = data["timeout"]
# if 'verbose' in data:
# verbose = data["verbose"]
# else:
# verbose = 0
# prefer_ipv6 = data["prefer_ipv6"]
# port = params.port
# method = params.method
# fast_open = params.fast_open
# reuse_port = params.reuse_port
# no_delay = params.no_delay
# mptcp = params.mptcp
# obfs = params.obfs
# obfs_plugin = params.obfs_plugin
# obfs_type = params.obfs_type
# ebpf = params.ebpf
# key = params.key
# if not key:
# if 'key' in data:
# key = data["key"]
# vps_domain = os.popen('wget -4 -qO- -T 2 http://hostname.openmptcprouter.com').read().rstrip()
#
# if port is None or method is None or fast_open is None or reuse_port is None or no_delay is None or key is None:
# return {'result': 'error','reason': 'Invalid parameters','route': 'shadowsocks'}
# if obfs:
# if obfs_plugin == 'v2ray':
# if obfs_type == 'tls':
# if vps_domain == '':
# shadowsocks_config = {'server': '::0','server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server;tls'}
# else:
# shadowsocks_config = {'server': '::0','server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server;tls;host=' + vps_domain}
# else:
# shadowsocks_config = {'server': '::0','server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server'}
# else:
# if obfs_type == 'tls':
# if vps_domain == '':
# shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=tls;mptcp;fast-open;t=400'}
# else:
# shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=tls;mptcp;fast-open;t=400;host=' + vps_domain}
# else:
# shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=http;mptcp;fast-open;t=400'}
# else:
# shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl'}
#
# if ordered(data) != ordered(json.loads(json.dumps(shadowsocks_config))):
# with open('/etc/shadowsocks-libev/config.json','w') as outfile:
# json.dump(shadowsocks_config,outfile,indent=4)
# os.system("systemctl restart shadowsocks-libev-server@config.service")
# for x in range (1,os.cpu_count()):
# os.system("systemctl restart shadowsocks-libev-server@config" + str(x) + ".service")
# shorewall_add_port(str(port),'tcp','shadowsocks')
# shorewall_add_port(str(port),'udp','shadowsocks')
# set_lastchange()
# return {'result': 'done','reason': 'changes applied','route': 'shadowsocks'}
# else:
# return {'result': 'done','reason': 'no changes','route': 'shadowsocks'}
@app.post('/shadowsocks') @app.post('/shadowsocks')
def shadowsocks(*,params: ShadowsocksConfigparams,current_user: User = Depends(get_current_user)): def shadowsocks(*,params: ShadowsocksConfigparams,current_user: User = Depends(get_current_user)):
with open('/etc/shadowsocks-libev/config.json') as f: with open('/etc/shadowsocks-libev/manager.json') as f:
content = f.read() content = f.read()
content = re.sub(",\s*}","}",content) content = re.sub(",\s*}","}",content)
try: try:
@ -479,11 +547,9 @@ def shadowsocks(*,params: ShadowsocksConfigparams,current_user: User = Depends(g
obfs = params.obfs obfs = params.obfs
obfs_plugin = params.obfs_plugin obfs_plugin = params.obfs_plugin
obfs_type = params.obfs_type obfs_type = params.obfs_type
ebpf = params.ebpf
key = params.key key = params.key
if not key: portkey = data["port_key"]
if 'key' in data: portkey[str(port)] = key
key = data["key"]
#ipv4_addr = os.popen('wget -4 -qO- -T 2 http://ip.openmptcprouter.com').read().rstrip() #ipv4_addr = os.popen('wget -4 -qO- -T 2 http://ip.openmptcprouter.com').read().rstrip()
vps_domain = os.popen('wget -4 -qO- -T 2 http://hostname.openmptcprouter.com').read().rstrip() vps_domain = os.popen('wget -4 -qO- -T 2 http://hostname.openmptcprouter.com').read().rstrip()
@ -493,28 +559,28 @@ def shadowsocks(*,params: ShadowsocksConfigparams,current_user: User = Depends(g
if obfs_plugin == 'v2ray': if obfs_plugin == 'v2ray':
if obfs_type == 'tls': if obfs_type == 'tls':
if vps_domain == '': if vps_domain == '':
shadowsocks_config = {'server': '::0','server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server;tls'} shadowsocks_config = {'server': '::0','port_key': portkey,'local_port': 1081,'mode': 'tcp_and_udp','timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server;tls'}
else: else:
shadowsocks_config = {'server': '::0','server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server;tls;host=' + vps_domain} shadowsocks_config = {'server': '::0','port_key': portkey,'local_port': 1081,'mode': 'tcp_and_udp','timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server;tls;host=' + vps_domain}
else: else:
shadowsocks_config = {'server': '::0','server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server'} shadowsocks_config = {'server': '::0','port_key': portkey,'local_port': 1081,'mode': 'tcp_and_udp','timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/v2ray-plugin','plugin_opts': 'server'}
else: else:
if obfs_type == 'tls': if obfs_type == 'tls':
if vps_domain == '': if vps_domain == '':
shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=tls;mptcp;fast-open;t=400'} shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'port_key': portkey,'local_port': 1081,'mode': 'tcp_and_udp','timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=tls;mptcp;fast-open;t=400'}
else: else:
shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=tls;mptcp;fast-open;t=400;host=' + vps_domain} shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'port_key': portkey,'local_port': 1081,'mode': 'tcp_and_udp','timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=tls;mptcp;fast-open;t=400;host=' + vps_domain}
else: else:
shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=http;mptcp;fast-open;t=400'} shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'port_key': portkey,'local_port': 1081,'mode': 'tcp_and_udp','timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl', 'plugin': '/usr/local/bin/obfs-server','plugin_opts': 'obfs=http;mptcp;fast-open;t=400'}
else: else:
shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'server_port': port,'local_port': 1081,'mode': 'tcp_and_udp','key': key,'timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl'} shadowsocks_config = {'server': ('[::0]', '0.0.0.0'),'port_key': portkey,'local_port': 1081,'mode': 'tcp_and_udp','timeout': timeout,'method': method,'verbose': verbose,'ipv6_first': True, 'prefer_ipv6': prefer_ipv6,'fast_open': fast_open,'no_delay': no_delay,'reuse_port': reuse_port,'mptcp': mptcp,'ebpf': ebpf,'acl': '/etc/shadowsocks-libev/local.acl'}
if ordered(data) != ordered(json.loads(json.dumps(shadowsocks_config))): if ordered(data) != ordered(json.loads(json.dumps(shadowsocks_config))):
with open('/etc/shadowsocks-libev/config.json','w') as outfile: with open('/etc/shadowsocks-libev/manager.json','w') as outfile:
json.dump(shadowsocks_config,outfile,indent=4) json.dump(shadowsocks_config,outfile,indent=4)
os.system("systemctl restart shadowsocks-libev-server@config.service") os.system("systemctl restart shadowsocks-libev-manager@manager.service")
for x in range (1,os.cpu_count()): for x in range (1,os.cpu_count()):
os.system("systemctl restart shadowsocks-libev-server@config" + str(x) + ".service") os.system("systemctl restart shadowsocks-libev-manager@manager" + str(x) + ".service")
shorewall_add_port(str(port),'tcp','shadowsocks') shorewall_add_port(str(port),'tcp','shadowsocks')
shorewall_add_port(str(port),'udp','shadowsocks') shorewall_add_port(str(port),'udp','shadowsocks')
set_lastchange() set_lastchange()