Files
synology-api/synology_api/vpn.py
2024-01-30 21:30:49 +01:00

219 lines
9.1 KiB
Python

from __future__ import annotations
from typing import Optional
from . import base_api
class VPN(base_api.BaseApi):
def settings_list(self) -> dict[str, object] | str:
api_name = 'SYNO.VPNServer.Settings.Config'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'status_load'}
return self.request_data(api_name, api_path, req_param)
def active_connections_list(self,
sort: str = 'login_time',
sort_dir: str = 'DESC',
start: int = 0,
limit: int = 100
) -> dict[str, object] | str:
api_name = 'SYNO.VPNServer.Management.Connection'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'enum', 'sort': sort, 'dir': sort_dir, 'start': start,
'limit': limit}
return self.request_data(api_name, api_path, req_param)
def log_list(self, start: int = 0, limit: int = 50, prtltype: int = 0) -> dict[str, object] | str:
api_name = 'SYNO.VPNServer.Management.Log'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'load', 'start': start, 'limit': limit,
'prtltype': prtltype}
return self.request_data(api_name, api_path, req_param)
def network_interface_setting(self) -> dict[str, object] | str:
api_name = 'SYNO.VPNServer.Management.Interface'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'load'}
return self.request_data(api_name, api_path, req_param)
def security_autoblock_setting(self) -> dict[str, object] | str:
api_name = 'SYNO.Core.Security.AutoBlock'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'get'}
return self.request_data(api_name, api_path, req_param)
def permission_setting(self, start: int = 0, limit: int = 100) -> dict[str, object] | str:
api_name = 'SYNO.VPNServer.Management.Account'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'load', 'action': 'enum', 'start': str(start),
'limit': str(limit)}
return self.request_data(api_name, api_path, req_param)
def pptp_settings_info(self) -> dict[str, object] | str:
api_name = 'SYNO.VPNServer.Settings.Config'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'load', 'serv_type': 'pptp'}
return self.request_data(api_name, api_path, req_param)
def openvpn_settings_info(self) -> dict[str, object] | str:
api_name = 'SYNO.VPNServer.Settings.Config'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'load', 'serv_type': 'openvpn'}
return self.request_data(api_name, api_path, req_param)
def l2tp_settings_info(self) -> dict[str, object] | str:
api_name = 'SYNO.VPNServer.Settings.Config'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'load', 'serv_type': 'l2tp'}
return self.request_data(api_name, api_path, req_param)
# TODO not working {'error': {'code': 600}, 'success': False} response
'''def pptp_settings_setup(self, serv_type='pptp', serv_enable=True, serv_ip='10.0.0.0', serv_range=5, auth_type=2,
auth_conn=3, mppe_type=1, mtu=1400, dns_check=False, dns='192.168.1.1'):
api_name = 'SYNO.VPNServer.Settings.Config'
info = self.gen_list[api_name]
api_path = info['path']
if serv_enable:
serv_enable = 'true'
elif not serv_enable:
serv_enable = 'false'
else:
return 'serv_enable must be True or False'
if dns_check:
dns_check = 'true'
elif not dns_check:
dns_check = 'false'
else:
return 'dns_check must be True or False'
req_param = {'version': info['maxVersion'], 'method': 'apply', 'serv_type': serv_type,
'serv_enable': serv_enable, 'serv_ip': serv_ip, 'serv_range': serv_range,
'auth_type': auth_type, 'auth_conn': auth_conn, 'mppe_type': mppe_type, 'mtu': mtu,
'dns_check': dns_check, 'dns': dns}
return self.request_data(api_name, api_path, req_param)'''
# TODO not working {'error': {'code': 600}, 'success': False} response
'''def openvpn_settings_setup(self, serv_type='openvpn', serv_enable=True, serv_ip='10.8.0.0', serv_range=5,
comp_enable=True, push_route_enable=False, tls_auth_key=False, verify_server_cn=False,
auth_conn=3, port=1194, protocol='udp', encryption='AES-256-CBC', authentication='SHA512',
enable_ipv6_server=False, ipv6_prefix='', mssfix_value=1450):
api_name = 'SYNO.VPNServer.Settings.Config'
info = self.gen_list[api_name]
api_path = info['path']
if serv_enable:
serv_enable = 'true'
elif not serv_enable:
serv_enable = 'false'
else:
return 'serv_enable must be True or False'
if comp_enable:
comp_enable = 'true'
elif not comp_enable:
comp_enable = 'false'
else:
return 'comp_enable must be True or False'
if push_route_enable:
push_route_enable = 'true'
elif not push_route_enable:
push_route_enable = 'false'
else:
return 'push_route_enable must be True or False'
if tls_auth_key:
tls_auth_key = 'true'
elif not tls_auth_key:
tls_auth_key = 'false'
else:
return 'tls_auth_key must be True or False'
if verify_server_cn:
verify_server_cn = 'true'
elif not verify_server_cn:
verify_server_cn = 'false'
else:
return 'verify_server_cn must be True or False'
if enable_ipv6_server:
enable_ipv6_server = 'true'
elif not enable_ipv6_server:
enable_ipv6_server = 'false'
else:
return 'enable_ipv6_server must be True or False'
req_param = {'version': info['maxVersion'], 'method': 'apply', 'serv_type': serv_type,
'serv_enable': serv_enable, 'serv_ip': serv_ip, 'serv_range': serv_range,
'comp_enable': comp_enable, 'push_route_enable': push_route_enable, 'tls_auth_key': tls_auth_key,
'verify_server_cn': verify_server_cn, 'auth_conn': auth_conn, 'port': port, 'protocol': protocol,
'encryption': encryption, 'authentication': authentication,
'enable_ipv6_server': enable_ipv6_server, 'ipv6_prefix': ipv6_prefix, 'mssfix_value': mssfix_value}
return self.request_data(api_name, api_path, req_param)'''
# TODO not working {'error': {'code': 600}, 'success': False} response
'''def l2tp_settings_setup(self, serv_type='l2tp', serv_enable=True, serv_ip='10.2.0.0', serv_range=5,
auth_type=2, auth_conn=3, mtu=1400, dns_check=False, dns='192.168.1.1', preshared_key='',
preshared_key_confirm='', sha2_truncbug=True, kernel_mode=True):
api_name = 'SYNO.VPNServer.Settings.Config'
info = self.gen_list[api_name]
api_path = info['path']
if serv_enable:
serv_enable = 'true'
elif not serv_enable:
serv_enable = 'false'
else:
return 'serv_enable must be True or False'
if dns_check:
dns_check = 'true'
elif not dns_check:
dns_check = 'false'
else:
return 'dns_check must be True or False'
if sha2_truncbug:
sha2_truncbug = 'true'
elif not sha2_truncbug:
sha2_truncbug = 'false'
else:
return 'sha2_truncbug must be True or False'
if kernel_mode:
kernel_mode = 'true'
elif not kernel_mode:
kernel_mode = 'false'
else:
return 'kernel_mode must be True or False'
req_param = {'version': info['maxVersion'], 'method': 'apply', 'serv_type': serv_type,
'serv_enable': serv_enable, 'serv_ip': serv_ip, 'serv_range': serv_range,
'auth_type': auth_type, 'auth_conn': auth_conn, 'mtu': mtu, 'dns_check': dns_check, 'dns': dns,
'preshared_key': preshared_key, 'preshared_key_confirm': preshared_key_confirm,
'sha2_truncbug': sha2_truncbug, 'kernel_mode': kernel_mode}
return self.request_data(api_name, api_path, req_param)'''