diff --git a/synology_api/__init__.py b/synology_api/__init__.py index a2129d3..9631d1e 100644 --- a/synology_api/__init__.py +++ b/synology_api/__init__.py @@ -1 +1,12 @@ -from . import auth, filestation, downloadstation, audiostation, sys_info, virtualization, backup, active_backup +from . import \ + audiostation,\ + auth,\ + base_api_core,\ + core_active_backup,\ + core_backup,\ + core_certificate,\ + core_sys_info,\ + downloadstation,\ + filestation,\ + virtualization + diff --git a/synology_api/active_backup.py b/synology_api/active_backup.py deleted file mode 100644 index cc997c8..0000000 --- a/synology_api/active_backup.py +++ /dev/null @@ -1,43 +0,0 @@ -from . import auth as syn - -import time - -class ActiveBackupBusiness: - def __init__(self, ip_address, port, username, password, secure=False, cert_verify=False): - - self.session = syn.Authentication(ip_address, port, username, password, secure, cert_verify) - - self.session.login('Core') - self.session.get_api_list('Core') - self.session.get_api_list() - - self.request_data = self.session.request_data - self.core_list = self.session.app_api_list - self.gen_list = self.session.full_api_list - self._sid = self.session.sid - self.base_url = self.session.base_url - - print('You are now logged in!') - - def logout(self): - self.session.logout('Core') - - def list_vm_hypervisor(self): - api_name = 'SYNO.ActiveBackup.Inventory' - info = self.gen_list[api_name] - api_path = info['path'] - - req_param = { 'version': '1', 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def list_device_transfer_size(self): - api_name = 'SYNO.ActiveBackup.Overview' - info = self.gen_list[api_name] - api_path = info['path'] - - req_param = { 'version': '1', 'method': 'list_device_transfer_size', 'time_start': int(time.time() - 86400), 'time_end': int(time.time()) } - - return self.request_data(api_name, api_path, req_param) - - diff --git a/synology_api/base_api_core.py b/synology_api/base_api_core.py new file mode 100644 index 0000000..94e115f --- /dev/null +++ b/synology_api/base_api_core.py @@ -0,0 +1,22 @@ +from . import auth as syn + + +class Core(object): + def __init__(self, ip_address, port, username, password, secure=False, cert_verify=False): + + self.session = syn.Authentication(ip_address, port, username, password, secure, cert_verify) + + self.session.login('Core') + self.session.get_api_list('Core') + self.session.get_api_list() + + self.request_data = self.session.request_data + self.core_list = self.session.app_api_list + self.gen_list = self.session.full_api_list + self._sid = self.session.sid + self.base_url = self.session.base_url + + print('You are now logged in!') + + def logout(self): + self.session.logout('Core') diff --git a/synology_api/core_active_backup.py b/synology_api/core_active_backup.py new file mode 100644 index 0000000..1d757df --- /dev/null +++ b/synology_api/core_active_backup.py @@ -0,0 +1,30 @@ +from . import base_api_core + +import time + + +class ActiveBackupBusiness(base_api_core.Core): + def __init__(self, ip_address, port, username, password, secure=False, cert_verify=False): + super(ActiveBackupBusiness, self).__init__(ip_address, port, username, password, secure, cert_verify) + + def list_vm_hypervisor(self): + api_name = 'SYNO.ActiveBackup.Inventory' + info = self.gen_list[api_name] + api_path = info['path'] + + req_param = {'version': '1', + 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def list_device_transfer_size(self): + api_name = 'SYNO.ActiveBackup.Overview' + info = self.gen_list[api_name] + api_path = info['path'] + + req_param = {'version': '1', + 'method': 'list_device_transfer_size', + 'time_start': int(time.time() - 86400), + 'time_end': int(time.time()) } + + return self.request_data(api_name, api_path, req_param) diff --git a/synology_api/backup.py b/synology_api/core_backup.py similarity index 72% rename from synology_api/backup.py rename to synology_api/core_backup.py index ce23fee..306a747 100644 --- a/synology_api/backup.py +++ b/synology_api/core_backup.py @@ -1,25 +1,9 @@ -from . import auth as syn +from . import base_api_core -class Backup: +class Backup(base_api_core.Core): def __init__(self, ip_address, port, username, password, secure=False, cert_verify=False): - - self.session = syn.Authentication(ip_address, port, username, password, secure, cert_verify) - - self.session.login('Core') - self.session.get_api_list('Core') - self.session.get_api_list() - - self.request_data = self.session.request_data - self.core_list = self.session.app_api_list - self.gen_list = self.session.full_api_list - self._sid = self.session.sid - self.base_url = self.session.base_url - - print('You are now logged in!') - - def logout(self): - self.session.logout('Core') + super(Backup, self).__init__(ip_address, port, username, password, secure, cert_verify) def backup_repository_get(self): api_name = 'SYNO.Backup.Repository' diff --git a/synology_api/core_certificate.py b/synology_api/core_certificate.py new file mode 100644 index 0000000..258e05a --- /dev/null +++ b/synology_api/core_certificate.py @@ -0,0 +1,70 @@ +from . import base_api_core + +import os +import requests + + +class Certificate(base_api_core.Core): + def __init__(self, ip_address, port, username, password, secure=False, cert_verify=False): + super(Certificate, self).__init__(ip_address, port, username, password, secure, cert_verify) + + def list_cert(self): + api_name = 'SYNO.Core.Certificate.CRT' + info = self.gen_list[api_name] + api_path = info['path'] + + req_param = {'version': '1', 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def set_default_cert(self, cert_id): + api_name = 'SYNO.Core.Certificate.CRT' + info = self.gen_list[api_name] + api_path = info['path'] + + req_param = {'version': '1', + 'method': 'set', + 'as_default': 'true', + 'desc': cert_id, + } + + return self.request_data(api_name, api_path, req_param) + + def upload_cert(self, serv_key="server.key", ser_cert="server.crt", ca_cert="server-ca.crt"): + api_name = 'SYNO.Core.Certificate' + info = self.session.app_api_list[api_name] + api_path = info['path'] + serv_key = os.path.basename(serv_key) + ser_cert = os.path.basename(ser_cert) + ca_cert = os.path.basename(ca_cert) + + session = requests.session() + + payload_serv_key = open(serv_key, 'rb') + payload_ser_cert = open(ser_cert, 'rb') + payload_ca_cert = open(ca_cert, 'rb') + + url = ('%s%s' % (self.base_url, api_path)) + '?api=%s&version=%s&method=import&_sid=%s' % ( + api_name, info['minVersion'], self._sid) + + files = {'key': (serv_key, payload_serv_key, 'application/x-iwork-keynote-sffkey'), + 'cert': (ser_cert, payload_ser_cert, 'application/pkix-cert'), + 'inter_cert': (ca_cert, payload_ca_cert, 'application/pkix-cert')} + + data_payload = {'id': "", + 'desc': "", + 'as_default': ""} + + try: + r = session.post(url, files=files, data=data_payload) + # close file if reading files rises an exception. + finally: + payload_serv_key.close() + payload_ser_cert.close() + payload_ca_cert.close() + + if r.status_code is 200 and r.json()['success']: + return 'Upload Complete' + else: + return r.status_code, r.json() + diff --git a/synology_api/sys_info.py b/synology_api/core_sys_info.py similarity index 93% rename from synology_api/sys_info.py rename to synology_api/core_sys_info.py index 02868ed..52fbb3a 100644 --- a/synology_api/sys_info.py +++ b/synology_api/core_sys_info.py @@ -1,479 +1,463 @@ -from . import auth as syn - - -class SysInfo: - def __init__(self, ip_address, port, username, password, secure=False, cert_verify=False): - - self.session = syn.Authentication(ip_address, port, username, password, secure, cert_verify) - - self.session.login('Core') - self.session.get_api_list('Core') - self.session.get_api_list() - - self.request_data = self.session.request_data - self.core_list = self.session.app_api_list - self.gen_list = self.session.full_api_list - self._sid = self.session.sid - self.base_url = self.session.base_url - - print('You are now logged in!') - - def logout(self): - self.session.logout('Core') - - def fileserv_smb(self): - api_name = 'SYNO.Core.FileServ.SMB' - info = self.core_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 fileserv_afp(self): - api_name = 'SYNO.Core.FileServ.AFP' - info = self.core_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 fileserv_nfs(self): - api_name = 'SYNO.Core.FileServ.NFS' - info = self.core_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 fileserv_ftp(self): - api_name = 'SYNO.Core.FileServ.FTP' - info = self.core_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 fileserv_sftp(self): - api_name = 'SYNO.Core.FileServ.FTP.SFTP' - info = self.core_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 network_backup_info(self): - api_name = 'SYNO.Backup.Service.NetworkBackup' - 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 bandwidth_control_protocol(self): - api_name = 'SYNO.Core.BandwidthControl.Protocol' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'get', 'protocol': 'NetworkBackup'} - - return self.request_data(api_name, api_path, req_param) - - def shared_folders_info(self): - api_name = 'SYNO.Core.Share' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def services_status(self): - api_name = 'SYNO.Core.Service' - info = self.core_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 services_discovery(self): - api_name = 'SYNO.Core.FileServ.ServiceDiscovery' - info = self.core_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 file_transfer_status(self): - api_name = 'SYNO.Core.SyslogClient.FileTransfer' - info = self.core_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 network_status(self): - api_name = 'SYNO.Core.Network' - info = self.core_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 web_status(self): - api_name = 'SYNO.Core.Web.DSM' - info = self.core_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 current_connection(self): - api_name = 'SYNO.Core.CurrentConnection' - info = self.core_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 bandwidth_control_status(self): - api_name = 'SYNO.Core.BandwidthControl.Status' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def sys_status(self): - api_name = 'SYNO.Core.System.Status' - info = self.core_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 latest_logs(self): - api_name = 'SYNO.Core.SyslogClient.Status' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'latestlog_get'} - - return self.request_data(api_name, api_path, req_param) - - def client_notify_settings_status(self): - api_name = 'SYNO.Core.SyslogClient.Setting.Notify' - info = self.core_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 get_security_scan_info(self): - api_name = 'SYNO.Core.SecurityScan.Conf' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'first_get'} - - return self.request_data(api_name, api_path, req_param) - - def get_security_scan_rules(self): - api_name = 'SYNO.Core.SecurityScan.Status' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'items': 'ALL', 'method': 'rule_get'} - - return self.request_data(api_name, api_path, req_param) - - def get_security_scan_status(self): - api_name = 'SYNO.Core.SecurityScan.Status' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'system_get'} - - return self.request_data(api_name, api_path, req_param) - - def get_user_list(self): - api_name = 'SYNO.Core.User' - info = self.core_list[api_name] - api_path = info['path'] - additional = '["email", "description", "expired"]' - req_param = {'version': info['maxVersion'], 'method': 'list', 'additional': additional} - - return self.request_data(api_name, api_path, req_param) - - def quickconnect_info(self): - api_name = 'SYNO.Core.QuickConnect' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'get_misc_config'} - - return self.request_data(api_name, api_path, req_param) - - def quickconnect_permissions(self): - api_name = 'SYNO.Core.QuickConnect.Permission' - info = self.core_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 network_topology(self): - api_name = 'SYNO.Core.Network.Router.Topology' - info = self.core_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 network_wifi_client(self): - api_name = 'SYNO.Core.Network.Wifi.Client' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_bond(self): - api_name = 'SYNO.Core.Network.Bond' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_bridge(self): - api_name = 'SYNO.Core.Network.Bridge' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_ethernet(self): - api_name = 'SYNO.Core.Network.Ethernet' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_local_bridge(self): - api_name = 'SYNO.Core.Network.LocalBridge' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_usb_modem(self): - api_name = 'SYNO.Core.Network.USBModem' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_pppoe(self): - api_name = 'SYNO.Core.Network.PPPoE' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_ipv6tunnel(self): - api_name = 'SYNO.Core.Network.IPv6Tunnel' - info = self.core_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 network_vpn_pptp(self): - api_name = 'SYNO.Core.Network.VPN.PPTP' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_openvpn_with_conf(self): - api_name = 'SYNO.Core.Network.VPN.OpenVPNWithConf' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def network_openvpn(self): - api_name = 'SYNO.Core.Network.VPN.OpenVPN' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list', 'additional': '["status"]'} - - return self.request_data(api_name, api_path, req_param) - - def network_vpn_l2tp(self): - api_name = 'SYNO.Core.Network.VPN.L2TP' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def domain_schedule(self): - api_name = 'SYNO.Core.Directory.Domain.Schedule' - info = self.core_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 client_ldap(self): - api_name = 'SYNO.Core.Directory.LDAP' - info = self.core_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 client_sso(self): - api_name = 'SYNO.Core.Directory.SSO' - info = self.core_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 sys_upgrade_check(self): - api_name = 'SYNO.Core.Upgrade.Server' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'check'} - - return self.request_data(api_name, api_path, req_param) - - def sys_upgrade_download(self): - api_name = 'SYNO.Core.Upgrade.Server.Download' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'progress'} - - return self.request_data(api_name, api_path, req_param) - - def sys_upgrade_setting(self): - api_name = 'SYNO.Core.Upgrade.Setting' - info = self.core_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 notification_sms_conf(self): - api_name = 'SYNO.Core.Notification.SMS.Conf' - info = self.core_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 notification_mail_conf(self): - api_name = 'SYNO.Core.Notification.Mail.Conf' - info = self.core_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 notification_push_mail(self): - api_name = 'SYNO.Core.Notification.Push.Mail' - info = self.core_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 notification_push_conf(self): - api_name = 'SYNO.Core.Notification.Push.Conf' - info = self.core_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 hardware_beep_control(self): - api_name = 'SYNO.Core.Hardware.BeepControl' - info = self.core_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 hardware_fan_speed(self): - api_name = 'SYNO.Core.Hardware.FanSpeed' - info = self.core_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 hardware_hibernation(self): - api_name = 'SYNO.Core.Hardware.Hibernation' - info = self.core_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 hardware_ups(self): - api_name = 'SYNO.Core.ExternalDevice.UPS' - info = self.core_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 hardware_power_schedule(self): - api_name = 'SYNO.Core.Hardware.PowerSchedule' - info = self.core_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 terminal_info(self): - api_name = 'SYNO.Core.Terminal' - info = self.core_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 snmp_info(self): - api_name = 'SYNO.Core.SNMP' - info = self.core_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 process(self): - api_name = 'SYNO.Core.System.Process' - info = self.core_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'list'} - - return self.request_data(api_name, api_path, req_param) - - def utilisation(self): - api_name = 'SYNO.Core.System.Utilization' - info = self.core_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 storage(self): - api_name = 'SYNO.Storage.CGI.Storage' - info = self.gen_list[api_name] - api_path = info['path'] - req_param = {'version': info['maxVersion'], 'method': 'load_info'} - - return self.request_data(api_name, api_path, req_param) +from . import base_api_core + + +class SysInfo(base_api_core.Core): + def __init__(self, ip_address, port, username, password, secure=False, cert_verify=False): + super(SysInfo, self).__init__(ip_address, port, username, password, secure, cert_verify) + + def fileserv_smb(self): + api_name = 'SYNO.Core.FileServ.SMB' + info = self.core_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 fileserv_afp(self): + api_name = 'SYNO.Core.FileServ.AFP' + info = self.core_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 fileserv_nfs(self): + api_name = 'SYNO.Core.FileServ.NFS' + info = self.core_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 fileserv_ftp(self): + api_name = 'SYNO.Core.FileServ.FTP' + info = self.core_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 fileserv_sftp(self): + api_name = 'SYNO.Core.FileServ.FTP.SFTP' + info = self.core_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 network_backup_info(self): + api_name = 'SYNO.Backup.Service.NetworkBackup' + 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 bandwidth_control_protocol(self): + api_name = 'SYNO.Core.BandwidthControl.Protocol' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'get', 'protocol': 'NetworkBackup'} + + return self.request_data(api_name, api_path, req_param) + + def shared_folders_info(self): + api_name = 'SYNO.Core.Share' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def services_status(self): + api_name = 'SYNO.Core.Service' + info = self.core_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 services_discovery(self): + api_name = 'SYNO.Core.FileServ.ServiceDiscovery' + info = self.core_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 file_transfer_status(self): + api_name = 'SYNO.Core.SyslogClient.FileTransfer' + info = self.core_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 network_status(self): + api_name = 'SYNO.Core.Network' + info = self.core_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 web_status(self): + api_name = 'SYNO.Core.Web.DSM' + info = self.core_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 current_connection(self): + api_name = 'SYNO.Core.CurrentConnection' + info = self.core_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 bandwidth_control_status(self): + api_name = 'SYNO.Core.BandwidthControl.Status' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def sys_status(self): + api_name = 'SYNO.Core.System.Status' + info = self.core_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 latest_logs(self): + api_name = 'SYNO.Core.SyslogClient.Status' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'latestlog_get'} + + return self.request_data(api_name, api_path, req_param) + + def client_notify_settings_status(self): + api_name = 'SYNO.Core.SyslogClient.Setting.Notify' + info = self.core_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 get_security_scan_info(self): + api_name = 'SYNO.Core.SecurityScan.Conf' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'first_get'} + + return self.request_data(api_name, api_path, req_param) + + def get_security_scan_rules(self): + api_name = 'SYNO.Core.SecurityScan.Status' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'items': 'ALL', 'method': 'rule_get'} + + return self.request_data(api_name, api_path, req_param) + + def get_security_scan_status(self): + api_name = 'SYNO.Core.SecurityScan.Status' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'system_get'} + + return self.request_data(api_name, api_path, req_param) + + def get_user_list(self): + api_name = 'SYNO.Core.User' + info = self.core_list[api_name] + api_path = info['path'] + additional = '["email", "description", "expired"]' + req_param = {'version': info['maxVersion'], 'method': 'list', 'additional': additional} + + return self.request_data(api_name, api_path, req_param) + + def quickconnect_info(self): + api_name = 'SYNO.Core.QuickConnect' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'get_misc_config'} + + return self.request_data(api_name, api_path, req_param) + + def quickconnect_permissions(self): + api_name = 'SYNO.Core.QuickConnect.Permission' + info = self.core_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 network_topology(self): + api_name = 'SYNO.Core.Network.Router.Topology' + info = self.core_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 network_wifi_client(self): + api_name = 'SYNO.Core.Network.Wifi.Client' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_bond(self): + api_name = 'SYNO.Core.Network.Bond' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_bridge(self): + api_name = 'SYNO.Core.Network.Bridge' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_ethernet(self): + api_name = 'SYNO.Core.Network.Ethernet' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_local_bridge(self): + api_name = 'SYNO.Core.Network.LocalBridge' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_usb_modem(self): + api_name = 'SYNO.Core.Network.USBModem' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_pppoe(self): + api_name = 'SYNO.Core.Network.PPPoE' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_ipv6tunnel(self): + api_name = 'SYNO.Core.Network.IPv6Tunnel' + info = self.core_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 network_vpn_pptp(self): + api_name = 'SYNO.Core.Network.VPN.PPTP' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_openvpn_with_conf(self): + api_name = 'SYNO.Core.Network.VPN.OpenVPNWithConf' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def network_openvpn(self): + api_name = 'SYNO.Core.Network.VPN.OpenVPN' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list', 'additional': '["status"]'} + + return self.request_data(api_name, api_path, req_param) + + def network_vpn_l2tp(self): + api_name = 'SYNO.Core.Network.VPN.L2TP' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def domain_schedule(self): + api_name = 'SYNO.Core.Directory.Domain.Schedule' + info = self.core_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 client_ldap(self): + api_name = 'SYNO.Core.Directory.LDAP' + info = self.core_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 client_sso(self): + api_name = 'SYNO.Core.Directory.SSO' + info = self.core_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 sys_upgrade_check(self): + api_name = 'SYNO.Core.Upgrade.Server' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'check'} + + return self.request_data(api_name, api_path, req_param) + + def sys_upgrade_download(self): + api_name = 'SYNO.Core.Upgrade.Server.Download' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'progress'} + + return self.request_data(api_name, api_path, req_param) + + def sys_upgrade_setting(self): + api_name = 'SYNO.Core.Upgrade.Setting' + info = self.core_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 notification_sms_conf(self): + api_name = 'SYNO.Core.Notification.SMS.Conf' + info = self.core_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 notification_mail_conf(self): + api_name = 'SYNO.Core.Notification.Mail.Conf' + info = self.core_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 notification_push_mail(self): + api_name = 'SYNO.Core.Notification.Push.Mail' + info = self.core_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 notification_push_conf(self): + api_name = 'SYNO.Core.Notification.Push.Conf' + info = self.core_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 hardware_beep_control(self): + api_name = 'SYNO.Core.Hardware.BeepControl' + info = self.core_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 hardware_fan_speed(self): + api_name = 'SYNO.Core.Hardware.FanSpeed' + info = self.core_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 hardware_hibernation(self): + api_name = 'SYNO.Core.Hardware.Hibernation' + info = self.core_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 hardware_ups(self): + api_name = 'SYNO.Core.ExternalDevice.UPS' + info = self.core_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 hardware_power_schedule(self): + api_name = 'SYNO.Core.Hardware.PowerSchedule' + info = self.core_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 terminal_info(self): + api_name = 'SYNO.Core.Terminal' + info = self.core_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 snmp_info(self): + api_name = 'SYNO.Core.SNMP' + info = self.core_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 process(self): + api_name = 'SYNO.Core.System.Process' + info = self.core_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'list'} + + return self.request_data(api_name, api_path, req_param) + + def utilisation(self): + api_name = 'SYNO.Core.System.Utilization' + info = self.core_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 storage(self): + api_name = 'SYNO.Storage.CGI.Storage' + info = self.gen_list[api_name] + api_path = info['path'] + req_param = {'version': info['maxVersion'], 'method': 'load_info'} + + return self.request_data(api_name, api_path, req_param)