AE-1999: System General Settings API part2
Review Request #979 — Created July 18, 2025 and submitted
| Information | |
|---|---|
| apoorva.sn | |
| AMP | |
| amp_4_0 | |
| AE-1999 | |
| Reviewers | |
| ngurunathan, pmurugaiyan, pradeep, shuinvy | |
Problem
Need to port API's for the following section in General Settings API:
‘License’, ‘System HA’ (HA Status, HA Setting, HA Log), 'WebUI Settings', 'Admin AAA Settings', 'Log Setting', 'Backup', RestoreSolution
There were some issues w.r.t python migration from 2-3 while were resolved
License
[root@AN admin]# curl 'http://127.0.0.1:8000/api/cm/system/License/_fields' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'Connection: keep-alive' \
-b 'csrftoken=aeJxTqK8YTCjih9W2nhyMyq89rIWywqm; hive_key=1; django_language=en; csrf_token=aeJxTqK8YTCjih9W2nhyMyq89rIWywqm; current_user=array; hive_sess=54b5352a-4f97-4283-9803-c06191c094de' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: aeJxTqK8YTCjih9W2nhyMyq89rIWywqm' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"license_key": "XdlnijZc-NkRis8Ua-atev3t8Q-tys=#131-451f8999-cda92106-5572#989-cfbf705#-ba987654-3210fedc-ba98765", "serial_num": "487930380A4D7100000065143C93F3", "device_num": 120, "adc_num": 70, "vpn_num": 50, "waf_num": 0, "vpn_lic_sess": 0, "expiration_data": "2025-10-15", "status": "Normal"}System HA
HA status
[root@AN admin]# curl 'http://127.0.0.1:8000/cm/get_ha_status' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en;q=0.9' \
-H 'Connection: keep-alive' \
-b 'csrf_token=H9tC0QtfSrKbol42PMme6djpodWHO1Xz; hive_key=1; current_user=array; csrftoken=H9tC0QtfSrKbol42PMme6djpodWHO1Xz; django_language=en; hive_sess=6a177648-57a5-40a4-a0fc-7cb8cf66cc99' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: H9tC0QtfSrKbol42PMme6djpodWHO1Xz' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"is_success": true, "data": {"enabled": false, "node_state": "standalone", "hc_state": "inactive", "opposite_state": ""}}HA Setting
[root@AN admin]# curl 'http://127.0.0.1:8000/cm/get_ha_setting' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en;q=0.9' \
-H 'Connection: keep-alive' \
-b 'csrf_token=H9tC0QtfSrKbol42PMme6djpodWHO1Xz; hive_key=1; current_user=array; csrftoken=H9tC0QtfSrKbol42PMme6djpodWHO1Xz; django_language=en; hive_sess=6a177648-57a5-40a4-a0fc-7cb8cf66cc99' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: H9tC0QtfSrKbol42PMme6djpodWHO1Xz' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"is_success": true, "data": {"interface": "", "interval": 5, "log_path": "/var/log", "opposite_ip": "", "router_id": 186, "state": "master", "vip": "", "postgres": {"bin": "/usr/pgsql-10/bin", "database": "cm", "datapath": "/var/lib/pgsql/10/data", "port": "5432", "user": "postgres"}, "enabled": false}}HA Log
[root@AN admin]# curl 'http://127.0.0.1:8000/cm/get_ha_log' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en;q=0.9' \
-H 'Connection: keep-alive' \
-b 'csrf_token=H9tC0QtfSrKbol42PMme6djpodWHO1Xz; hive_key=1; current_user=array; csrftoken=H9tC0QtfSrKbol42PMme6djpodWHO1Xz; django_language=en; hive_sess=6a177648-57a5-40a4-a0fc-7cb8cf66cc99' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: H9tC0QtfSrKbol42PMme6djpodWHO1Xz' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecureWebui Settings
[root@AN admin]# curl 'http://127.0.0.1:8000/api/cm/system/AccessControl/_field_group?field_group=webui_settings' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en;q=0.9' \
-H 'Connection: keep-alive' \
-b 'csrf_token=ZKYhfhG3Otvo0B5LCxXKgnoEPD7CPgmW; hive_key=1; current_user=array; csrftoken=ZKYhfhG3Otvo0B5LCxXKgnoEPD7CPgmW; django_language=en; hive_sess=5faa4f07-655a-4e65-aa19-71f0876da707' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: ZKYhfhG3Otvo0B5LCxXKgnoEPD7CPgmW' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"enable_webui": false, "webui_port": 8888, "pk_id": null}
{"is_success": true, "data": []}AAA Settings
[root@AN admin]# curl 'http://127.0.0.1:8000/api/cm/system/AdminAAASettings/_fields' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'Connection: keep-alive' \
-b 'csrftoken=ZEcp00cgVAdDqBaruHszaXvu9AublMYU; csrf_token=ZEcp00cgVAdDqBaruHszaXvu9AublMYU; hive_key=1; django_language=en; current_user=array; hive_sess=90ba4b01-d629-452e-a95e-642ad39d6e17' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: ZEcp00cgVAdDqBaruHszaXvu9AublMYU' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"enable_aaa_authorize": false, "enable_aaa": true, "priority": "0", "method": "radius", "admin_aaa_server": []}Log Settings
Basic Setting:
[root@AN admin]# curl 'http://127.0.0.1:8000/cm/get_log_basic' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en;q=0.9' \
-H 'Connection: keep-alive' \
-b 'csrf_token=Lq6WsLW5cTrzsMApfOtDVYV6Kf1Fyi4I; hive_key=1; current_user=array; csrftoken=Lq6WsLW5cTrzsMApfOtDVYV6Kf1Fyi4I; django_language=en; hive_sess=3044ffac-d6c1-47db-aabb-32def0fbb028' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: Lq6WsLW5cTrzsMApfOtDVYV6Kf1Fyi4I' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"status": true, "data": {"enable_log": true, "log_level": "1"}}Remote Syslog Setting
[root@AN admin]# curl 'http://127.0.0.1:8000/cm/get_log_host' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en;q=0.9' \
-H 'Connection: keep-alive' \
-b 'csrf_token=Lq6WsLW5cTrzsMApfOtDVYV6Kf1Fyi4I; hive_key=1; current_user=array; csrftoken=Lq6WsLW5cTrzsMApfOtDVYV6Kf1Fyi4I; django_language=en; hive_sess=3044ffac-d6c1-47db-aabb-32def0fbb028' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: Lq6WsLW5cTrzsMApfOtDVYV6Kf1Fyi4I' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"status": true, "data": []}Backup
Get Backups:
root@AN admin]# curl 'http://127.0.0.1:8000/backup/files' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'Connection: keep-alive' \
-b 'csrftoken=umvO7yRAzlIbLlIc3t2EW9e36BYgUBcx; hive_key=1; django_language=en; csrf_token=umvO7yRAzlIbLlIc3t2EW9e36BYgUBcx; current_user=array; hive_sess=18908cba-8ef9-4ec6-aebe-7848f3e172ee' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: umvO7yRAzlIbLlIc3t2EW9e36BYgUBcx' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
[{"filename": "backup_20250718_124117.tar.gz", "status": "Failed", "destination": "local", "time": "2025-07-18T12:41:17.790525"}]Get Scheduled Backups
[root@AN admin]# curl 'http://127.0.0.1:8000/backup/schedule' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'Connection: keep-alive' \
-b 'csrftoken=ISJIKS5zlOg7u9S5m9Zi1fiVPc1y0FZU; hive_key=1; django_language=en; csrf_token=ISJIKS5zlOg7u9S5m9Zi1fiVPc1y0FZU; current_user=array; hive_sess=91f12318-3feb-497e-9dc1-3ff48b22f274' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: ISJIKS5zlOg7u9S5m9Zi1fiVPc1y0FZU' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"message": "No Backups scheduled!"}[root@AN admin]# curl 'http://127.0.0.1:8000/backup/schedule' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'Connection: keep-alive' \
-b 'csrftoken=153QqSUNTVN0VQGKZ3548UO3F8L66Cgz; hive_key=1; django_language=en; csrf_token=153QqSUNTVN0VQGKZ3548UO3F8L66Cgz; current_user=array; hive_sess=af232ab8-0d77-477e-bed6-3531bdf05f8a' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: 153QqSUNTVN0VQGKZ3548UO3F8L66Cgz' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--insecure
{"frequency": "weekly", "time": "18:10", "day_of_the_month": null, "day_of_the_week": 5, "month": null, "backup_target": "local"}Start Backup:
[root@AN admin]# curl 'http://127.0.0.1:8000/backup/start' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json' \
-b 'csrftoken=Rpa81k0YeQySTiyaWQUy7P8z0j85cum6; hive_key=1; django_language=en; csrf_token=Rpa81k0YeQySTiyaWQUy7P8z0j85cum6; current_user=array; hive_sess=7c0627cb-7528-4700-90ea-b670694ba4d6' \
-H 'Origin: http://127.0.0.1:8000' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: Rpa81k0YeQySTiyaWQUy7P8z0j85cum6' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--data-raw '{"backup_target":"local"}' \
--insecure
{"message": "Backup started!"}Schedule Backup:
[root@AN admin]# curl 'http://127.0.0.1:8000/backup/schedule' \
-H 'Accept: application/json, text/plain, /' \
-H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json' \
-b 'csrftoken=153QqSUNTVN0VQGKZ3548UO3F8L66Cgz; hive_key=1; django_language=en; csrf_token=153QqSUNTVN0VQGKZ3548UO3F8L66Cgz; current_user=array; hive_sess=af232ab8-0d77-477e-bed6-3531bdf05f8a' \
-H 'Origin: http://127.0.0.1:8000' \
-H 'Referer: http://127.0.0.1:8000/app/' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36' \
-H 'X-CSRFToken: 153QqSUNTVN0VQGKZ3548UO3F8L66Cgz' \
-H 'sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
--data-raw '{"backup_target":"local","time":"18:10","frequency":"weekly","day_of_the_week":"5"}' \
--insecure
{"message": "Backup schedule updated successfully!", "cron_time": "10 18 * * 5"}
