mirror of
https://github.com/Ysurac/openmptcprouter-vps-admin.git
synced 2025-03-09 15:40:05 +00:00
Another interface can be defined for IPv6, ULA can be set from router
This commit is contained in:
parent
08dd9b8b00
commit
b5608748ff
1 changed files with 34 additions and 9 deletions
35
omr-admin.py
35
omr-admin.py
|
@ -63,6 +63,16 @@ IFACE = None
|
|||
for line in READ.splitlines():
|
||||
if 'NET_IFACE=' in line:
|
||||
IFACE = line.split('=', 1)[1]
|
||||
FILE.close()
|
||||
|
||||
# Get ipv6 net interface
|
||||
FILE = open('/etc/shorewall6/params.net', "r")
|
||||
READ = FILE.read()
|
||||
IFACE6 = None
|
||||
for line in READ.splitlines():
|
||||
if 'NET_IFACE=' in line:
|
||||
IFACE6 = line.split('=', 1)[1]
|
||||
FILE.close()
|
||||
|
||||
# Get interface rx/tx
|
||||
def get_bytes(t, iface='eth0'):
|
||||
|
@ -814,12 +824,12 @@ async def config(current_user: User = Depends(get_current_user)):
|
|||
if 'ipv6_network' in omr_config_data:
|
||||
ipv6_network = omr_config_data['ipv6_network']
|
||||
else:
|
||||
ipv6_network = os.popen('ip -6 addr show ' + IFACE +' | grep -oP "(?<=inet6 ).*(?= scope global)"').read().rstrip()
|
||||
ipv6_network = os.popen('ip -6 addr show ' + IFACE6 +' | grep -oP "(?<=inet6 ).*(?= scope global)"').read().rstrip()
|
||||
#ipv6_addr = os.popen('wget -6 -qO- -T 2 ipv6.openmptcprouter.com').read().rstrip()
|
||||
if 'ipv6_addr' in omr_config_data:
|
||||
ipv6_addr = omr_config_data['ipv6_addr']
|
||||
else:
|
||||
ipv6_addr = os.popen('ip -6 addr show ' + IFACE +' | grep -oP "(?<=inet6 ).*(?= scope global)" | cut -d/ -f1').read().rstrip()
|
||||
ipv6_addr = os.popen('ip -6 addr show ' + IFACE6 +' | grep -oP "(?<=inet6 ).*(?= scope global)" | cut -d/ -f1').read().rstrip()
|
||||
#ipv4_addr = os.popen('wget -4 -qO- -T 1 https://ip.openmptcprouter.com').read().rstrip()
|
||||
LOG.debug('get server IPv4')
|
||||
if 'ipv4' in omr_config_data:
|
||||
|
@ -862,6 +872,7 @@ async def config(current_user: User = Depends(get_current_user)):
|
|||
|
||||
localip6 = ''
|
||||
remoteip6 = ''
|
||||
ula = ''
|
||||
if userid == 0:
|
||||
if os.path.isfile('/etc/openmptcprouter-vps-admin/omr-6in4/user' + str(userid)):
|
||||
with open('/etc/openmptcprouter-vps-admin/omr-6in4/user' + str(userid), "r") as omr6in4_file:
|
||||
|
@ -870,6 +881,8 @@ async def config(current_user: User = Depends(get_current_user)):
|
|||
localip6 = line.replace(line[:9], '').rstrip()
|
||||
if 'REMOTEIP6=' in line:
|
||||
remoteip6 = line.replace(line[:10], '').rstrip()
|
||||
if 'ULA=' in line:
|
||||
ula = line.replace(line[:4], '').rstrip()
|
||||
else:
|
||||
locaip6 = 'fd80::a00:1'
|
||||
remoteip6 = 'fd80::a00:2'
|
||||
|
@ -896,7 +909,7 @@ async def config(current_user: User = Depends(get_current_user)):
|
|||
if '#DNAT net vpn:$OMR_ADDR tcp 1-64999' in line:
|
||||
shorewall_redirect = "disable"
|
||||
LOG.debug('Get config: done')
|
||||
return {'vps': {'kernel': vps_kernel, 'machine': vps_machine, 'omr_version': vps_omr_version, 'loadavg': vps_loadavg, 'uptime': vps_uptime, 'aes': vps_aes}, 'shadowsocks': {'traffic': ss_traffic, '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, 'internet': internet}, 'vpn': {'available': available_vpn, 'current': vpn, 'remoteip': vpn_remote_ip, 'localip': vpn_local_ip}, 'iperf': {'user': 'openmptcprouter', 'password': 'openmptcprouter', 'key': iperf3_key}, 'pihole': {'state': pihole}, 'user': {'name': current_user.username, 'permission': user_permissions}, '6in4': {'localip': localip6, 'remoteip': remoteip6}, 'client2client': {'enabled': client2client, 'lanips': alllanips}}
|
||||
return {'vps': {'kernel': vps_kernel, 'machine': vps_machine, 'omr_version': vps_omr_version, 'loadavg': vps_loadavg, 'uptime': vps_uptime, 'aes': vps_aes}, 'shadowsocks': {'traffic': ss_traffic, '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, 'internet': internet}, 'vpn': {'available': available_vpn, 'current': vpn, 'remoteip': vpn_remote_ip, 'localip': vpn_local_ip}, 'iperf': {'user': 'openmptcprouter', 'password': 'openmptcprouter', 'key': iperf3_key}, 'pihole': {'state': pihole}, 'user': {'name': current_user.username, 'permission': user_permissions}, '6in4': {'localip': localip6, 'remoteip': remoteip6,'ula': ula}, 'client2client': {'enabled': client2client, 'lanips': alllanips}}
|
||||
|
||||
# Set shadowsocks config
|
||||
class ShadowsocksConfigparams(BaseModel):
|
||||
|
@ -916,7 +929,7 @@ def shadowsocks(*, params: ShadowsocksConfigparams, current_user: User = Depends
|
|||
if current_user.permissions == "ro":
|
||||
set_lastchange(10)
|
||||
return {'result': 'permission', 'reason': 'Read only user', 'route': 'shadowsocks'}
|
||||
ipv6_network = os.popen('ip -6 addr show ' + IFACE +' | grep -oP "(?<=inet6 ).*(?= scope global)"').read().rstrip()
|
||||
ipv6_network = os.popen('ip -6 addr show ' + IFACE6 +' | grep -oP "(?<=inet6 ).*(?= scope global)"').read().rstrip()
|
||||
with open('/etc/shadowsocks-libev/manager.json') as f:
|
||||
content = f.read()
|
||||
content = re.sub(",\s*}", "}", content) # pylint: disable=W1401
|
||||
|
@ -1359,18 +1372,23 @@ def lan(*, lanconfig: Lanips, current_user: User = Depends(get_current_user)):
|
|||
class VPNips(BaseModel):
|
||||
remoteip: str
|
||||
localip: str
|
||||
remoteip6: str
|
||||
localip6: str
|
||||
ula: str
|
||||
|
||||
# Set user vpn IPs
|
||||
@app.post('/vpnips')
|
||||
def vpnips(*, vpnconfig: VPNips, current_user: User = Depends(get_current_user)):
|
||||
if current_user.permissions == "ro":
|
||||
return {'result': 'permission', 'reason': 'Read only user', 'route': 'vpnips'}
|
||||
remoteip = vpnconfig.remoteip
|
||||
localip = vpnconfig.localip
|
||||
ula = vpnconfig.ula
|
||||
if not remoteip or not localip or not ula:
|
||||
if not remoteip or not localip:
|
||||
return {'result': 'error', 'reason': 'Invalid parameters', 'route': 'vpnips'}
|
||||
modif_config_user(current_user, {'vpnremoteip': remoteip})
|
||||
modif_config_user(current_user, {'vpnlocalip': localip})
|
||||
if ula:
|
||||
modif_config_user(current_user, {'ula': ula})
|
||||
userid = current_user.userid
|
||||
if userid is None:
|
||||
|
@ -1382,8 +1400,15 @@ def vpnips(*, vpnconfig: VPNips, current_user: User = Depends(get_current_user))
|
|||
with open('/etc/openmptcprouter-vps-admin/omr-6in4/user' + str(userid), 'w+') as n:
|
||||
n.write('LOCALIP=' + localip + "\n")
|
||||
n.write('REMOTEIP=' + remoteip + "\n")
|
||||
if localip6:
|
||||
n.write('LOCALIP6=' + localip6 + "\n")
|
||||
else:
|
||||
n.write('LOCALIP6=fd80::a0' + hex(userid)[2:] + ':1/126' + "\n")
|
||||
if remoteip6:
|
||||
n.write('REMOTEIP6=' + remoteip6 + "\n")
|
||||
else:
|
||||
n.write('REMOTEIP6=fd80::a0' + hex(userid)[2:] + ':2/126' + "\n")
|
||||
if ula:
|
||||
n.write('ULA=' + ula + "\n")
|
||||
final_md5 = hashlib.md5(file_as_bytes(open('/etc/openmptcprouter-vps-admin/omr-6in4/user' + str(userid), 'rb'))).hexdigest()
|
||||
if not initial_md5 == final_md5:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue