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

More function should work with FastAPI now

This commit is contained in:
Ysurac 2019-11-02 17:32:35 +00:00
parent 53fd153bad
commit cbc2c2daa5

View file

@ -438,8 +438,21 @@ def config(current_user: User = Depends(get_current_user)):
return {'vps': {'kernel': vps_kernel,'machine': vps_machine,'omr_version': vps_omr_version,'loadavg': vps_loadavg,'uptime': vps_uptime,'aes': vps_aes},'shadowsocks': {'key': shadowsocks_key,'port': shadowsocks_port,'method': shadowsocks_method,'fast_open': shadowsocks_fast_open,'reuse_port': shadowsocks_reuse_port,'no_delay': shadowsocks_no_delay,'mptcp': shadowsocks_mptcp,'ebpf': shadowsocks_ebpf,'obfs': shadowsocks_obfs,'obfs_plugin': shadowsocks_obfs_plugin,'obfs_type': shadowsocks_obfs_type},'glorytun': {'key': glorytun_key,'udp': {'host_ip': glorytun_udp_host_ip,'client_ip': glorytun_udp_client_ip},'tcp': {'host_ip': glorytun_tcp_host_ip,'client_ip': glorytun_tcp_client_ip},'port': glorytun_port,'chacha': glorytun_chacha},'dsvpn': {'key': dsvpn_key, 'host_ip': dsvpn_host_ip, 'client_ip': dsvpn_client_ip, 'port': dsvpn_port},'openvpn': {'key': openvpn_key,'client_key': openvpn_client_key,'client_crt': openvpn_client_crt,'client_ca': openvpn_client_ca,'host_ip': openvpn_host_ip, 'client_ip': openvpn_client_ip, 'port': openvpn_port},'mlvpn': {'key': mlvpn_key, 'host_ip': mlvpn_host_ip, 'client_ip': mlvpn_client_ip},'shorewall': {'redirect_ports': shorewall_redirect},'mptcp': {'enabled': mptcp_enabled,'checksum': mptcp_checksum,'path_manager': mptcp_path_manager,'scheduler': mptcp_scheduler, 'syn_retries': mptcp_syn_retries},'network': {'congestion_control': congestion_control,'ipv6_network': ipv6_network,'ipv6': ipv6_addr,'ipv4': ipv4_addr,'domain': vps_domain},'vpn': {'available': available_vpn,'current': vpn},'iperf': {'user': 'openmptcprouter','password': 'openmptcprouter', 'key': iperf3_key},'pihole': {'state': pihole}} return {'vps': {'kernel': vps_kernel,'machine': vps_machine,'omr_version': vps_omr_version,'loadavg': vps_loadavg,'uptime': vps_uptime,'aes': vps_aes},'shadowsocks': {'key': shadowsocks_key,'port': shadowsocks_port,'method': shadowsocks_method,'fast_open': shadowsocks_fast_open,'reuse_port': shadowsocks_reuse_port,'no_delay': shadowsocks_no_delay,'mptcp': shadowsocks_mptcp,'ebpf': shadowsocks_ebpf,'obfs': shadowsocks_obfs,'obfs_plugin': shadowsocks_obfs_plugin,'obfs_type': shadowsocks_obfs_type},'glorytun': {'key': glorytun_key,'udp': {'host_ip': glorytun_udp_host_ip,'client_ip': glorytun_udp_client_ip},'tcp': {'host_ip': glorytun_tcp_host_ip,'client_ip': glorytun_tcp_client_ip},'port': glorytun_port,'chacha': glorytun_chacha},'dsvpn': {'key': dsvpn_key, 'host_ip': dsvpn_host_ip, 'client_ip': dsvpn_client_ip, 'port': dsvpn_port},'openvpn': {'key': openvpn_key,'client_key': openvpn_client_key,'client_crt': openvpn_client_crt,'client_ca': openvpn_client_ca,'host_ip': openvpn_host_ip, 'client_ip': openvpn_client_ip, 'port': openvpn_port},'mlvpn': {'key': mlvpn_key, 'host_ip': mlvpn_host_ip, 'client_ip': mlvpn_client_ip},'shorewall': {'redirect_ports': shorewall_redirect},'mptcp': {'enabled': mptcp_enabled,'checksum': mptcp_checksum,'path_manager': mptcp_path_manager,'scheduler': mptcp_scheduler, 'syn_retries': mptcp_syn_retries},'network': {'congestion_control': congestion_control,'ipv6_network': ipv6_network,'ipv6': ipv6_addr,'ipv4': ipv4_addr,'domain': vps_domain},'vpn': {'available': available_vpn,'current': vpn},'iperf': {'user': 'openmptcprouter','password': 'openmptcprouter', 'key': iperf3_key},'pihole': {'state': pihole}}
# Set shadowsocks config # Set shadowsocks config
class ShadowsocksConfigparams(BaseModel):
port: int
method: str
fast_open: str
reuse_port: bool
no_delay: bool
mptcp: bool
obfs: bool
obfs_plugin: bool
obfs_type: str
ebpf: bool
key: str
@app.get('/shadowsocks') @app.get('/shadowsocks')
def shadowsocks(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/config.json') as f:
content = f.read() content = f.read()
content = re.sub(",\s*}","}",content) content = re.sub(",\s*}","}",content)
@ -455,18 +468,17 @@ def shadowsocks(current_user: User = Depends(get_current_user)):
else: else:
verbose = 0 verbose = 0
prefer_ipv6 = data["prefer_ipv6"] prefer_ipv6 = data["prefer_ipv6"]
params = request.get_json() port = params.port
port = params.get('port', None) method = params.method
method = params.get('method', None) fast_open = params.fast_open
fast_open = params.get('fast_open', None) reuse_port = params.reuse_port
reuse_port = params.get('reuse_port', None) no_delay = params.no_delay
no_delay = params.get('no_delay', None) mptcp = params.mptcp
mptcp = params.get('mptcp', None) obfs = params.obfs
obfs = params.get('obfs', False) obfs_plugin = params.obfs_plugin
obfs_plugin = params.get('obfs_plugin', False) obfs_type = params.obfs_type
obfs_type = params.get('obfs_type', None) ebpf = params.ebpf
ebpf = params.get('ebpf', False) key = params.key
key = params.get('key', None)
if not key: if not key:
if 'key' in data: if 'key' in data:
key = data["key"] key = data["key"]
@ -509,10 +521,12 @@ def shadowsocks(current_user: User = Depends(get_current_user)):
return {'result': 'done','reason': 'no changes','route': 'shadowsocks'} return {'result': 'done','reason': 'no changes','route': 'shadowsocks'}
# Set shorewall config # Set shorewall config
class ShorewallAllparams(BaseModel):
redirect_ports: str
@app.post('/shorewall') @app.post('/shorewall')
def shorewall(current_user: User = Depends(get_current_user)): def shorewall(*, params: ShorewallAllparams,current_user: User = Depends(get_current_user)):
params = request.get_json() state = params.redirect_ports
state = params.get('redirect_ports', None)
if state is None: if state is None:
return {'result': 'error','reason': 'Invalid parameters','route': 'shorewall'} return {'result': 'error','reason': 'Invalid parameters','route': 'shorewall'}
initial_md5 = hashlib.md5(file_as_bytes(open('/etc/shorewall/rules', 'rb'))).hexdigest() initial_md5 = hashlib.md5(file_as_bytes(open('/etc/shorewall/rules', 'rb'))).hexdigest()
@ -537,10 +551,12 @@ def shorewall(current_user: User = Depends(get_current_user)):
# Need to do the same for IPv6... # Need to do the same for IPv6...
return {'result': 'done','reason': 'changes applied'} return {'result': 'done','reason': 'changes applied'}
class ShorewallListparams(BaseModel):
name: str
@app.post('/shorewalllist') @app.post('/shorewalllist')
def shorewall_list(current_user: User = Depends(get_current_user)): def shorewall_list(*,params: ShorewallListparams, current_user: User = Depends(get_current_user)):
params = request.get_json() name = params.name
name = params.get('name', None)
if name is None: if name is None:
return {'result': 'error','reason': 'Invalid parameters','route': 'shorewalllist'} return {'result': 'error','reason': 'Invalid parameters','route': 'shorewalllist'}
fwlist = [] fwlist = []
@ -550,39 +566,49 @@ def shorewall_list(current_user: User = Depends(get_current_user)):
fwlist.append(line) fwlist.append(line)
return {'list': fwlist} return {'list': fwlist}
class Shorewallparams(BaseModel):
name: str
port: int
proto: str
fwtype: str
@app.post('/shorewallopen') @app.post('/shorewallopen')
def shorewall_open(current_user: User = Depends(get_current_user)): def shorewall_open(*,params: Shorewallparams, current_user: User = Depends(get_current_user)):
params = request.get_json() name = params.name
name = params.get('name', None) port = params.port
port = params.get('port', None) proto = params.proto
proto = params.get('proto', None) fwtype = params.fwtype
fwtype = params.get('fwtype', None)
if name is None: if name is None:
return {'result': 'error','reason': 'Invalid parameters','route': 'shorewalllist'} return {'result': 'error','reason': 'Invalid parameters','route': 'shorewalllist'}
shorewall_add_port(str(port),proto,name,fwtype) shorewall_add_port(str(port),proto,name,fwtype)
return {'result': 'done','reason': 'changes applied'} return {'result': 'done','reason': 'changes applied'}
@app.post('/shorewallclose') @app.post('/shorewallclose')
def shorewall_close(current_user: User = Depends(get_current_user)): def shorewall_close(*,params: Shorewallparams,current_user: User = Depends(get_current_user)):
params = request.get_json() name = params.name
name = params.get('name', None) port = params.port
port = params.get('port', None) proto = params.proto
proto = params.get('proto', None) fwtype = params.fwtype
fwtype = params.get('fwtype', None)
if name is None: if name is None:
return {'result': 'error','reason': 'Invalid parameters','route': 'shorewalllist'} return {'result': 'error','reason': 'Invalid parameters','route': 'shorewalllist'}
shorewall_del_port(str(port),proto,name,fwtype) shorewall_del_port(str(port),proto,name,fwtype)
return {'result': 'done','reason': 'changes applied'} return {'result': 'done','reason': 'changes applied'}
# Set MPTCP config # Set MPTCP config
class MPTCPparams(BaseModel):
checksum: str
path_manager: str
scheduler: str
syn_retries: int
congestion_control: str
@app.post('/mptcp') @app.post('/mptcp')
def mptcp(current_user: User = Depends(get_current_user)): def mptcp(*, params: MPTCPparams,current_user: User = Depends(get_current_user)):
params = request.get_json() checksum = params.checksum
checksum = params.get('checksum', None) path_manager = params.path_manager
path_manager = params.get('path_manager', None) scheduler = params.scheduler
scheduler = params.get('scheduler', None) syn_retries = params.syn_retries
syn_retries = params.get('syn_retries', None) congestion_control = params.congestion_control
congestion_control = params.get('congestion_control', None)
if not checksum or not path_manager or not scheduler or not syn_retries or not congestion_control: if not checksum or not path_manager or not scheduler or not syn_retries or not congestion_control:
return {'result': 'error','reason': 'Invalid parameters','route': 'mptcp'} return {'result': 'error','reason': 'Invalid parameters','route': 'mptcp'}
os.system('sysctl -qw net.mptcp.mptcp_checksum=' + checksum) os.system('sysctl -qw net.mptcp.mptcp_checksum=' + checksum)
@ -600,7 +626,6 @@ class Vpn(BaseModel):
@app.post('/vpn') @app.post('/vpn')
def vpn(*,vpnconfig: Vpn,current_user: User = Depends(get_current_user)): def vpn(*,vpnconfig: Vpn,current_user: User = Depends(get_current_user)):
vpn = vpnconfig.vpn vpn = vpnconfig.vpn
log.debug("VPN !")
if not vpn: if not vpn:
return {'result': 'error','reason': 'Invalid parameters','route': 'vpn'} return {'result': 'error','reason': 'Invalid parameters','route': 'vpn'}
os.system('echo ' + vpn + ' > /etc/openmptcprouter-vps-admin/current-vpn') os.system('echo ' + vpn + ' > /etc/openmptcprouter-vps-admin/current-vpn')
@ -664,11 +689,14 @@ def glorytun(*, glorytunconfig: GlorytunConfig,current_user: User = Depends(get_
return {'result': 'done'} return {'result': 'done'}
# Set A Dead Simple VPN config # Set A Dead Simple VPN config
class DSVPN(BaseModel):
key: str
port: int
@app.post('/dsvpn') @app.post('/dsvpn')
def dsvpn(current_user: User = Depends(get_current_user)): def dsvpn(*,params: DSVPN,current_user: User = Depends(get_current_user)):
params = request.get_json() key = params.key
key = params.get('key', None) port = params.port
port = params.get('port', None)
if not key or port is None: if not key or port is None:
return {'result': 'error','reason': 'Invalid parameters','route': 'dsvpn'} return {'result': 'error','reason': 'Invalid parameters','route': 'dsvpn'}
initial_md5 = hashlib.md5(file_as_bytes(open('/etc/dsvpn/dsvpn.key', 'rb'))).hexdigest() initial_md5 = hashlib.md5(file_as_bytes(open('/etc/dsvpn/dsvpn.key', 'rb'))).hexdigest()
@ -682,10 +710,12 @@ def dsvpn(current_user: User = Depends(get_current_user)):
return {'result': 'done'} return {'result': 'done'}
# Set OpenVPN config # Set OpenVPN config
class OpenVPN(BaseModel):
key: str
@app.post('/openvpn') @app.post('/openvpn')
def openvpn(current_user: User = Depends(get_current_user)): def openvpn(*,ovpn: OpenVPN,current_user: User = Depends(get_current_user)):
params = request.get_json() key = ovpn.key
key = params.get('key', None)
if not key: if not key:
return {'result': 'error','reason': 'Invalid parameters','route': 'openvpn'} return {'result': 'error','reason': 'Invalid parameters','route': 'openvpn'}
initial_md5 = hashlib.md5(file_as_bytes(open('/etc/openvpn/server/static.key', 'rb'))).hexdigest() initial_md5 = hashlib.md5(file_as_bytes(open('/etc/openvpn/server/static.key', 'rb'))).hexdigest()
@ -726,10 +756,12 @@ def update(current_user: User = Depends(get_current_user)):
return {'result': 'done'} return {'result': 'done'}
# Backup # Backup
class Backupfile(BaseModel):
data: str
@app.post('/backuppost') @app.post('/backuppost')
def backuppost(current_user: User = Depends(get_current_user)): def backuppost(*,backupfile: Backupfile ,current_user: User = Depends(get_current_user)):
params = request.get_json() backup_file = backupfile.data
backup_file = params.get('data', None)
if not backup_file: if not backup_file:
return {'result': 'error','reason': 'Invalid parameters','route': 'backuppost'} return {'result': 'error','reason': 'Invalid parameters','route': 'backuppost'}
with open('/var/opt/openmptcprouter/backup.tar.gz','wb') as f: with open('/var/opt/openmptcprouter/backup.tar.gz','wb') as f:
@ -760,8 +792,7 @@ def show_backup(current_user: User = Depends(get_current_user)):
return {'backup': False} return {'backup': False}
@app.post('/backupedit') @app.post('/backupedit')
def edit_backup(current_user: User = Depends(get_current_user)): def edit_backup(params,current_user: User = Depends(get_current_user)):
params = request.get_data()
o = OpenWrt(params) o = OpenWrt(params)
o.write('backup',path='/var/opt/openmptcprouter/') o.write('backup',path='/var/opt/openmptcprouter/')
return {'result': 'done'} return {'result': 'done'}