OpenResty Edge™ Python SDK 使用者手冊
歡迎查閱 OpenResty Edge™ Python SDK 的使用者手冊。
安裝
OpenResty Edge 的 Python SDK 依賴 Python3,請確保您已經安裝好 3.6 及以上版本的 Python3。 您可以像安裝其他 Python3 模組那樣安裝此 Python SDK:
開啟 Linux 終端或 Windows 命令提示符視窗
輸入以下命令安裝 Python SDK:
pip3 install openresty-edge-sdk --index-url https://pypi.org/simple
如果您要安裝特定版本的 Python SDK,則可以在模組名稱後加上版本號:
pip3 install openresty-edge-sdk==1.2.39 --index-url https://pypi.org/simple
安裝命令執行成功後,您可以像下面這樣驗證是否已經正確安裝:
$ python3
>>> from edge2client import Edge2Client
>>> client = Edge2Client('https://EDGE_ADMIN_HOST:EDGE_ADMIN_PORT', 'USERNAME', 'PASSWORD')
>>> client.login()
True
>>> client.get_version()
{'waf': {'waf_version': '3.3.4-1' ...}
>>> exit()
鍵入在 client.login()
後,如果輸出 True
,則表示已經正確安裝,如果您的 Edge Admin 使用的是自簽名證書(預設是自簽名證書),那麼你還需要在 client.login()
之前呼叫 client.set_ssl_verify(False)
。
接著你還可以使用 client.get_version()
來檢視 OpenResty Edge 的版本資訊。
此外,你可以在這裡看到此 Python SDK 的變更日誌。
至此,安裝已經全部完成,您可以參考本文件中後續的內容,以實現更為複雜的功能。
概述
import sys
import time
from edge2client import Edge2Client
def get_client():
client = Edge2Client(host, username, password)
# 如果是自簽證書導致 SSL 校驗失敗,可以去掉下面的註釋
# client.set_ssl_verify(False)
ok = client.login()
return client
if __name__ == '__main__':
try:
client = get_client()
except Exception as e:
print("failed to get client: ", str(e))
sys.exit(1)
try:
app_ids = client.get_all_apps()
except Exception as e:
print("failed to get all apps: ", str(e))
sys.exit(1)
for app_id in app_ids:
client.use_app(app_id)
if client.pending_changes() > 0:
ret = client.new_release()
if ret:
print('release ok app id: ' + str(app_id))
else:
print('release failed: ' + str(app_id))
time.sleep(1)
方法列表
方法 | 描述 |
---|---|
Edge2Client | 此方法用於初始化 SDK 客戶端。 |
set_ssl_verify | 設定訪問 Edge Admin 時,是否進行 SSL 驗證,預設會進行驗證。 |
login | 此方法用於登入 OpenResty Edge,以便進行後續操作。 |
use_app | 此方法用於指定當前例項操作的應用 ID。 |
new_app | 此方法用於新增 HTTP 應用。 |
put_app | 此方法用於修改 HTTP 應用的基本資訊。 |
get_app | 此方法用於獲取 HTTP 應用的相關資訊,包括域名、標籤以及所屬群組等。 |
put_app_config | 此方法用於修改 HTTP 應用的配置。 |
get_app_config | 此方法用於獲取指定 HTTP 應用的配置資訊。 |
del_app | 此方法根據提供的 app_id 刪除指定的 HTTP 應用。 |
search_app | 此方法用於根據指定域名搜尋 HTTP 應用。 |
search_http_app_by_keyword | 此方法用於根據域名或應用名稱搜尋 HTTP 應用。 |
search_upstream_by_ip | 此方法用於透過 IP 地址搜尋上游資訊。 |
search_k8s_upstream_by_ip | 這個方法用於根據 IP 搜尋 Kubernetes 上游。 |
search_upstream_by_name | 此方法用於根據名稱搜尋上游。 |
search_k8s_upstream_by_name | 此方法用於透過指定名稱搜尋 Kubernetes 上游。 |
search_k8s_upstream | 此方法允許使用者透過指定名稱空間,服務名稱和埠號來搜尋 Kubernetes 上游。 |
search_k8s_upstream_history | 此方法根據名稱空間、服務名稱和埠號搜尋 Kubernetes 上游歷史。 |
get_all_apps | 此方法用於獲取所有應用的資訊。 |
new_upstream | 此方法用於新增上游,返回值為新增上游的 id。 |
put_upstream | 此方法用於修改上游資訊。 |
get_upstream | 此方法用於獲取上游資訊。 |
del_upstream | 此方法用於刪除上游。 |
get_all_upstreams | 此方法用於獲取所有上游的詳細資訊。 |
new_k8s_upstream | 本函式用於新增全域性 Kubernetes 上游,將返回新建立的 k8s 上游的 ID。 |
copy_upstream_to_k8s_upstream | 此方法用於將一個常規上游複製為一個 Kubernetes 上游。 |
put_k8s_upstream | 此方法用於修改 Kubernetes 上游資訊。 |
get_k8s_upstream | 此方法用於獲取 k8s 上游的資訊。 |
del_k8s_upstream | 此方法用於刪除 k8s(Kubernetes)上游。 |
get_all_k8s_upstreams | 此方法用於獲取所有 Kubernetes 上游的資訊。 |
new_rule | 此方法用於新建頁面規則,包含各種規則型別,如:通用規則,代理規則,WAF 規則和快取規則。你也可以指定規則執行的前提條件。 |
put_rule | 此方法用於修改頁面規則。 |
get_rule | 此方法用於根據規則 ID 獲取頁面規則。 |
del_rule | 此方法用於刪除與 rule_id 對應的頁面規則。 |
get_all_rules | 此方法用於獲取指定應用 ID (app_id) 的所有頁面規則。 |
reorder_rules | 此方法用於調整規則的順序。 |
get_all_rules_by_app_domain | 此方法用於根據指定的應用域名獲取對應的頁面規則。 |
get_all_rules_by_upstream_ip | 此方法用於根據上游 IP 地址來檢索所有關聯的頁面規則。 |
get_all_waf_rules | 此方法用於根據特定的應用 id (app_id) 獲取對應的 WAF 規則。 |
get_global_actions_used_in_app | 此方法用以獲取與應用 ID (app_id) 相關聯的自定義規則 ID。 |
set_cert_key | 此方法用於新增 SSL 證書並提供手動上傳證書的選項。 |
set_le_cert | 此方法用於新增 Let’s Encrypt 證書。 |
put_cert_key | 此方法用於更新 SSL 證書(手動上傳方式)。 |
put_le_cert | 此方法用於更新 Let’s Encrypt 證書。 |
get_le_cert | 此方法用於獲取 Let’s Encrypt 證書的簽發狀態。 |
get_cert_key | 此方法用於獲取 SSL 證書內容。 |
get_all_cert_keys | 此方法用於獲取當前應用的全部證書資訊。 |
del_cert_key | 刪除與給定的 certificate_id 相關聯的證書資訊。 |
new_el | 此方法用於新增自定義的 edge 語言程式碼。 |
new_release | 此方法用於釋出當前應用的更新。 |
pending_changes | 此方法用於查詢待發布的更改數量。 |
sync_status | 釋出新更動到所有節點。 |
node_sync_status | 此方法用於獲取各節點的同步詳情。 |
get_healthcheck_status | 這段程式碼用於獲取各節點的健康檢查資訊。 |
add_app_user | 此方法用於新增應用級使用者。 |
update_app_user | 此方法用於更新應用級的使用者資訊。 |
get_app_user | 此方法用於獲取應用級別的使用者資訊,包括使用者名稱、許可權等。 |
del_app_user | 此方法用於刪除特定應用的使用者。 |
get_all_app_users | 此方法用於獲取所有當前應用級別的使用者,也可以透過指定 app_id 來獲取特定應用的使用者。 |
add_user_for_all_apps | 此方法用於為所有應用新增使用者。 |
add_all_users_for_app | 此方法用於將所有全域性使用者新增到指定應用。 |
new_cache_purge_task | 此方法用於新增條件重新整理任務。任務的觸發條件以陣列形式傳遞,支援設定多個觸發條件。只有當所有設定的條件同時滿足時,才會觸發對應的重新整理任務。 |
get_cache_purge_task | 此方法透過指定的重新整理任務 id 來查詢任務的詳細資訊。 |
get_all_cache_purge_tasks | 此方法用於獲取所有快取重新整理任務的詳細資訊。 |
del_cache_purge_task | 此方法用於刪除指定 ID 的重新整理任務。 |
new_waf_whitelist | 此方法用於新增 WAF 白名單規則。 |
update_waf_whitelist | 此方法用於更新 WAF 白名單規則。 |
get_waf_whitelist | 此方法用於獲取 WAF 的白名單規則。 |
del_waf_whitelist | 執行此操作會刪除指定的 WAF 白名單規則。 |
get_all_waf_whitelists | 此方法用於獲取所有的 WAF 白名單規則。 |
new_app_dymetrics | 建立新的應用動態指標。 |
put_app_dymetrics | 此方法用於修改應用的動態指標。 |
del_app_dymetrics | 此方法用於刪除指定應用的動態指標。 |
get_app_dymetrics | 此方法用於獲取指定應用的動態指標。 |
get_all_app_dymetrics | 此方法用於獲取指定應用的全部動態指標資訊。 |
get_app_dymetrics_data | 此方法用於獲取應用的動態指標資料,預設返回最近 30 分鐘的資料。 |
get_app_metrics | 此方法用於獲取應用的 HTTP 請求狀態指標和網路收發指標,預設情況下,它會獲取最近 30 分鐘的資料。 |
new_ip_list | 新增新的應用級 IP 列表。 |
put_ip_list | 此方法用於修改指定的 IP 列表。 |
del_ip_list | 此方法用於刪除指定的 IP 列表。 |
get_ip_list | 此方法用於檢視特定的 IP 列表。 |
append_to_ip_list | 此方法用於向特定的 IP 列表追加 IP。 |
remove_from_ip_list | 此方法用於從特定的 IP 列表移除指定 IP |
node_monitor | 此方法用於獲取網路節點的 CPU 和記憶體負載相關資訊。 |
new_global_dymetrics | 此方法用於建立全域性動態指標。 |
put_global_dymetrics | 此方法用於修改全域性動態指標。 |
del_global_dymetrics | 此方法用於刪除指定的全域性動態指標。 |
get_global_dymetrics | 此方法用於獲取指定的全域性動態指標。 |
get_all_global_dymetrics | 此方法用於獲取所有全域性動態指標。 |
get_global_dymetrics_data | 此方法用於獲取全域性動態指標資料,預設範圍為最近的 30 分鐘。 |
use_dns_app | 此方法用於切換當前例項所操作的 DNS 應用。 |
new_dns_app | 此方法用於建立新的 DNS 應用。 |
put_dns_app | 此方法用於修改 DNS 應用的相關資訊。 |
get_dns_app | 此方法用於獲取 DNS 應用的相關資訊。 |
del_dns_app | 此方法用於刪除指定的 DNS 應用。 |
new_dns_record | 此方法用於新增 DNS 記錄。 |
put_dns_record | 此方法用於修改 DNS 記錄。 |
get_dns_record | 此方法用於獲取 DNS 記錄。 |
del_dns_record | 此方法用於刪除 DNS 記錄。 |
new_global_upstream | 此方法用於新增上游,並返回新建立的全域性上游的 id。 |
update_global_upstream | 此方法用於更新全域性上游資訊。 |
get_global_upstream | 此方法用於獲取全域性上游資訊。 |
del_global_upstream | 此方法用於刪除全域性上游。 |
get_all_global_upstreams | 此方法用於獲取全部的上游資訊。 |
new_global_k8s_upstream | 此方法用於建立新的全域性 Kubernetes 上游,並返回新建立的上游的 ID。 |
put_global_k8s_upstream | 此方法用於修改全域性 Kubernetes 上游的資訊。 |
fetch_global_k8s_upstream | 此方法用於獲取全域性 Kubernetes 上游的資訊。 |
del_global_k8s_upstream | 此方法用於刪除全域性 k8s 上游。 |
get_all_global_k8s_upstreams | 此方法用於獲取所有的 Kubernetes 上游資訊。 |
set_global_cert_key | 用於新增全域性 SSL 證書。 |
put_global_cert_key | 此方法用於修改全域性 SSL 證書。 |
get_global_cert_key | 此方法用於獲取與 cert_id 相關聯的 SSL 證書資訊。 |
del_global_cert_key | 此方法用於刪除指定的全域性 SSL 證書。 |
add_global_user | 此方法用於新增全域性使用者。 |
search_global_user | 此方法用於根據使用者名稱搜尋全域性使用者資訊。 |
get_all_global_users | 本函式用於獲取所有全域性使用者的資訊。 |
new_global_rule | 此方法用於新增全域性規則。 |
put_global_rule | 此方法用於修改全域性規則。 |
get_global_rule | 此方法用於獲取全域性規則資訊。 |
get_global_action_by_name | 此方法用於根據給定的應用名來獲取相應的全域性自定義動作。 |
get_all_global_rules | 此方法用於獲取所有的全域性規則。 |
del_global_rule | 此方法用於刪除全域性規則。 |
new_global_var | 此方法用於新增全域性變數。 |
put_global_var | 此方法用於修改全域性變數。 |
get_global_var | 此方法用於獲取全域性變數。 |
get_all_global_vars | 此方法用於獲取所有全域性變數。 |
del_global_var | 此方法用於根據全域性變數的 ID 進行刪除操作。 |
get_global_ngx_config | 此方法用於獲取全域性的 nginx 配置資訊。 |
set_global_ngx_config | 此方法設定全域性的 nginx 配置資訊。 |
get_global_misc_config | 此方法用於獲取全域性的雜項配置資訊。 |
set_global_misc_config | 此方法用於設定全域性雜項配置資訊。 |
get_request_id_status | 此方法用於查詢請求 id 的狀態。 |
enable_request_id | 這個方法用於啟用請求 id 功能。 |
disable_request_id | 此方法用於禁用請求 ID 功能。 |
new_global_waf_rule | 此方法用於新增全域性 WAF 規則。 |
put_global_waf_rule | 此方法用於修改全域性 WAF 規則。 |
get_global_waf_rule | 此方法透過提供的規則集 ID(rule_id)來獲取全域性的 WAF 規則集。 |
del_global_waf_rule | 此方法用於刪除全域性 WAF 規則。 |
get_all_global_waf_rules | 此方法用於獲取所有全域性 WAF 規則。 |
new_global_action | 此方法用於新增新的全域性自定義動作。 |
put_global_action | 此方法用於修改全域性自定義動作。 |
get_global_action | 此方法用於獲取全域性自定義動作。 |
del_global_action | 此方法用於刪除指定的全域性自定義動作。 |
count_global_actions | 此方法用於獲取全域性自定義動作的總數。 |
get_all_global_actions | 此方法用於獲取所有全域性自定義動作。 |
upload_static_file | 此方法用於上傳靜態檔案。 |
get_static_file | 此方法用於獲取指定的靜態檔案配置。 |
del_static_file | 此方法用於刪除已上傳的靜態檔案。 |
new_cluster_group | 此方法用於新增新的叢集組。 |
put_cluster_group | 此方法用於修改叢集組資訊。 |
get_cluster_group | 此方法用於獲取叢集組的詳細資訊。 |
get_all_cluster_groups | 此方法用於獲取所有叢集組的資訊。 |
del_cluster_group | 此方法用於刪除叢集組資訊。 |
put_proxy_rule | 此方法用於修改上游代理規則。 |
new_global_k8s | 此方法用於新增新的 k8s 叢集連線引數。 |
put_global_k8s | 此方法用於修改 Kubernetes 叢集的連線引數。 |
get_global_k8s | 此方法用於獲取 Kubernetes 叢集的連線引數資訊。 |
get_k8s_service_detail | 此方法用於獲取 k8s 叢集中定義的服務相關資訊。 |
get_all_global_k8s | 此方法用於獲取所有全域性 Kubernetes 叢集的 id。 |
del_global_k8s | 此方法用於刪除 k8s 叢集的連線引數。 |
update_proxy_rule | 更新指定的上游代理規則。 |
new_global_ip_list | 此方法用於建立新的全域性 IP 列表。 |
put_global_ip_list | 此方法用於修改指定的全域性級別 IP 列表。 |
del_global_ip_list | 此方法用於刪除指定的全域性 IP 列表。 |
get_global_ip_list | 此方法用於獲取指定的全域性 IP 列表。 |
append_to_global_ip_list | 此方法用於向指定的全域性 IP 列表追加 IP。 |
remove_from_global_ip_list | 此方法用於從指定的全域性 IP 列表移除 IP。 |
new_user_var | 這是一個用於新增使用者級別變數的函式。 |
put_user_var | 此方法用於修改使用者級別的變數。 |
get_user_var | 此方法用於獲取使用者級別的變數。 |
del_user_var | 此方法用於刪除使用者級別的變數。 |
decode_request_id | 此方法用於解碼 request_id 以獲取諸如 app_id 等資訊。 |
search_waf_log | 此方法用於透過請求 id 獲取 WAF 日誌。 |
get_version | 此方法用於獲取 Admin、Admin DB、Log Server、Log Server DB 及 WAF 的版本資訊。 |
add_api_token | 此方法用於生成 API Token。 |
get_api_token | 此方法用於獲取 API 令牌。 |
del_api_token | 此方法用於刪除一個指定的 API Token。 |
get_all_gateway_tag | 此方法用於獲取所有閘道器叢集的標籤。 |
get_all_gateway | 此方法用於獲取所有閘道器叢集的資訊。 |
add_gateway | 此方法用於建立新的閘道器叢集。 |
del_gateway | 此方法用於刪除指定的閘道器叢集。 |
get_all_nodes | 此方法用於獲取所有的閘道器節點。 |
get_node | 此方法根據提供的節點 ID 獲取相應的節點資訊。 |
get_node_by_mac_address | 此方法用於根據節點的硬體 ID 來檢索節點的詳細資訊。 |
put_node | This method is used for updating node information. Parameters |
del_node | 此方法用於根據節點 ID 刪除指定節點。 |
lmdb_backup | 此方法用於觸發 LMDB 的備份。如果備份成功,方法將返回 True 。如果備份失敗,則返回一個包含失敗 Node 節點的 dict 資訊,其中 key 是 Node ID,value 是失敗的原因。您可以透過呼叫 node_sync_status 介面來確認備份是否成功。如果該介面中節點的 backup_time 大於 lmdb_backup() 方法的呼叫時間,那麼可以認為該節點的備份已成功執行。 |
get_global_cert_referenced | 此方法用於獲取使用了指定全域性證書的應用列表。 |
get_all_partition_lua_module | 此方法用於獲取指定分割槽的所有 Lua 模組。 |
get_partition_lua_module | 此方法用於獲取指定分割槽中的指定 lua 模組。 |
new_partition_lua_module | 此方法用於向指定分割槽新增一個新的 Lua 模組。 |
put_partition_lua_module | 此方法用於編輯指定分割槽的特定 lua 模組。 |
del_partition_lua_module | 此方法用於刪除指定分割槽內的特定 lua 模組。 |
conv_crl_to_lua_module | 此方法用於將 CRL 檔案轉換為 Lua 模組。 |
get_all_candidate_node | 此方法用於獲取所有待批准的節點,隨後可以透過呼叫 approve_candidate_node 介面來將這些節點批准加入到指定的叢集。 |
approve_candidate_node | 此方法用於批准 MAC 地址為 mac_address 的節點加入到 ID 為 gateway_id 的閘道器叢集。 |
get_waf_logs | 此方法用於獲取指定應用的 WAF 日誌。 |
get_dos_logs | 此方法用於檢索指定應用的 CC 日誌。 |
get_global_page_template | 此方法用於獲取指定的全域性頁面模板。 |
get_all_global_page_templates | 此方法用於獲取所有的全域性頁面模板。 |
del_global_page_template | 此方法用於刪除指定的全域性頁面模板。 |
new_global_page_template | 此方法用於建立新的全域性頁面模板。 |
put_global_page_template | 此方法用於更新指定的全域性頁面模板。 |
get_app_basic_auth_user_group | 此方法用於獲取指定應用中指定的 Basic Auth 使用者組資訊。 |
get_all_app_basic_auth_user_groups | 此方法用於獲取指定應用中所有 Basic Auth 使用者組資訊。 |
del_app_basic_auth_user_group | 此方法用於刪除指定應用中指定的 Basic Auth 使用者組資訊。 |
new_app_basic_auth_user_group | 此方法用於在指定應用中建立 Basic Auth 使用者組。 |
put_app_basic_auth_user_group | 此方法用於更新指定應用中指定的 Basic Auth 使用者組資訊。 |
get_app_basic_auth_user | 此方法用於獲取指定應用的 Basic Auth 使用者組中指定的使用者資訊。 |
get_app_basic_auth_users_in_group | 此方法用於獲取指定應用的 Basic Auth 使用者組中所有使用者資訊。 |
del_app_basic_auth_user | 此方法用於刪除指定應用的 Basic Auth 使用者組中指定的使用者資訊。 |
new_app_basic_auth_user | 此方法用於在指定應用的 Basic Auth 使用者組中建立使用者。 |
put_app_basic_auth_user | 此方法用於更新指定應用的 Basic Auth 使用者組中指定的使用者資訊。 |
new_acme_provider | 此方法用於新增 ACME 提供商記錄,返回值為新增記錄的 id。 |
put_acme_provider | 此方法用於修改 ACME 提供商記錄。 |
get_acme_provider | 此方法用於獲取 ACME 提供商記錄。 |
get_all_acme_providers | 此方法用於獲取所有 ACME 提供商的記錄。 |
del_acme_provider | 此方法用於刪除 ACME 提供商記錄。 |
get_acme_logs | 此方法用於獲取指定 ACME 證書的日誌,最多 100 條。 |
get_node_error_logs | 此方法用於獲取 Edge Node 的錯誤日誌。 |
get_admin_error_logs | 此方法用於獲取 Edge Admin 的錯誤日誌。 |
get_log_server_error_logs | 此方法用於獲取 Edge Log Server 的錯誤日誌。 |
get_http_app_error_logs | 此方法用於獲取指定 HTTP 應用的錯誤日誌。 |
方法詳情
Edge2Client
client = Edge2Client(host, username, password, api_token=None)
此方法用於初始化 SDK 客戶端。
引數
名稱 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
host | string | 是 | edge-admin 的地址,需要包含協議和埠 |
username | string | 是 | 用於登入 edge-admin 的使用者名稱 |
password | string | 是 | 用於登入 edge-admin 的密碼 |
api_token | string | 否 | 訪問令牌 |
返回值
- 返回一個
edge2client.Edge2Client
物件。
示例
當 Edge Admin 的地址為
https://127.0.0.1:443
,且使用使用者名稱username
和密碼password
初始化 Edge2Client 物件時:from edge2client import Edge2Client client = Edge2Client('https://127.0.0.1:443', 'username', 'password')
使用 API Token
api_token
來初始化 Edge2Client 物件時:from edge2client import Edge2Client client = Edge2Client('https://127.0.0.1:443', None, None, "api_token")
set_ssl_verify
set_ssl_verify(verify)
設定訪問 Edge Admin 時,是否進行 SSL 驗證,預設會進行驗證。 當您的 Edge Admin 使用的是自簽名的證書時,那麼需要把 SSL 驗證關閉。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
verify | bool | 是 | 是非啟用 SSL 驗證 |
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.set_ssl_verify(False)
ok = client.login()
login
ok = login()
此方法用於登入 OpenResty Edge,以便進行後續操作。
返回值
- True:表示登入成功。
- False:表示登入失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
ok = client.login()
use_app
ok = use_app(app_id)
此方法用於指定當前例項操作的應用 ID。
返回值
- True:應用 ID 指定成功。
- False:應用 ID 指定失敗。
示例
下面的示例演示如何將當前例項操作的應用 ID 更改為 10。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 10
client.use_app(app_id)
new_app
app_id = new_app(domains, label)
此方法用於新增 HTTP 應用。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
domains | list | 是 | 應用所需的域名 |
label | string | 是 | 應用的標識名稱 |
cluster_groups | list | 否 | 應用所處的叢集組 |
返回值
- app_id:返回新建應用的 ID,其資料型別為 number。
示例
以下示例展示瞭如何建立一個域名為 orig.foo.com
,標籤為 origin site for foo.com
的 HTTP 應用,且該應用所在的叢集組為 [1]
。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = client.new_app(
domains=['orig.foo.com'],
label='origin site for foo.com',
cluster_groups = [1])
put_app
ok = put_app(app_id, domains, label, cluster_groups=None, offline=None)
此方法用於修改 HTTP 應用的基本資訊。
引數
名稱 | 資料型別 | 必選 | 描述 |
---|---|---|---|
app_id | number | 是 | 應用的唯一識別符號 |
domains | list | 是 | 應用的域名列表 |
label | string | 是 | 應用的名稱 |
cluster_groups | list | 否 | 應用所在的叢集組列表 |
offline | bool | 否 | 應用的線上/離線狀態,True 表示離線,False 表示線上 |
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
以下示例展示瞭如何將已建立的應用(其域名為 orig.foo.com
)的域名修改為 *.foo.com
。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 10
client.use_app(app_id)
ok = client.put_app(app_id, domains=['*.foo.com'], label='foo.com')
get_app
data = get_app()
此方法用於獲取 HTTP 應用的相關資訊,包括域名、標籤以及所屬群組等。
返回值
- data:返回一個
dict
型別的資料。
示例
以下示例演示瞭如何獲取 app_id 為 1 的應用資訊。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_app()
put_app_config
put_app_config(app_id, limiter)
此方法用於修改 HTTP 應用的配置。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
app_id | number | 是 | 應用的 id |
limiter | dict | 是 | 應用的 limiter 配置 |
enable_websocket | bool | 否 | 是否開啟 websocket |
返回值
- True:配置修改成功。
- False:配置修改失敗。
示例
以下示例展示瞭如何修改 app_id 為 1 的應用配置。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
res = client.put_app_config(app_id=app_id,
limiter={
'max_uri_args': 130,
'max_post_args': 140,
'max_req_headers': 150,
'check_post_args_type': True
},
enable_websocket=True)
get_app_config
data = get_app_config(app_id)
此方法用於獲取指定 HTTP 應用的配置資訊。
引數
名稱 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
app_id | number | 是 | 待查詢應用的 id |
返回值
- data:返回一個字典(
dict
)型別的資料。
示例
下例展示瞭如何獲取 id 為 1 的應用的配置資訊:
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
data = client.get_app_config(app_id)
del_app
success = del_app(app_id)
此方法根據提供的 app_id 刪除指定的 HTTP 應用。
引數
名稱 | 資料型別 | 是否必須 | 描述資訊 |
---|---|---|---|
app_id | number | 是 | 待刪除應用的唯一 id |
返回值
- True:表示應用刪除成功。
- False:表示應用刪除失敗。
示例
以下示例展示瞭如何刪除 app_id 為 1 的應用。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
success = client.del_app(app_id)
search_app
data = search_app(app_domain)
此方法用於根據指定域名搜尋 HTTP 應用。
引數
名稱 | 資料型別 | 是否必須 | 引數描述 |
---|---|---|---|
app_domain | string | 是 | 需要搜尋的應用域名 |
page | number | 否 | 返回結果的頁碼,預設為 1 |
pagesize | number | 否 | 每頁返回的結果數量,預設為 20 |
返回值
- data:返回一個
list
型別的結果,其中每個元素都是應用的相關資訊。
示例
以下示例以 orig.foo.com
為域名來搜尋 HTTP 應用。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_app(app_domain='orig.foo.com')
search_http_app_by_keyword
data = search_http_app_by_keyword(keyword, page, pagesize)
此方法用於根據域名或應用名稱搜尋 HTTP 應用。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
keyword | string | 是 | 要搜尋的關鍵詞,將同時在域名和應用名稱中進行搜尋 |
page | number | 否 | 返回結果的頁碼序號,預設值為 1 |
pagesize | number | 否 | 每頁返回結果的條目數量,預設值為 20 |
返回值
- data:此返回值為
list
型別,每個元素包含應用的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_http_app_by_keyword('orig.foo.com')
data = client.search_http_app_by_keyword('orig.foo.com', 1, 2)
data = client.search_http_app_by_keyword('origin')
search_upstream_by_ip
data = search_upstream_by_ip(ip, page=1, pagesize=20)
此方法用於透過 IP 地址搜尋上游資訊。
引數
引數名 | 資料型別 | 是否必要 | 描述 |
---|---|---|---|
ip | string | 是 | 需要進行搜尋的 IP 地址 |
page | number | 否 | 期望獲取的結果頁碼,預設為第一頁 |
pagesize | number | 否 | 每頁返回的結果數量,預設為 20 條 |
返回值
- data:返回一個
list
型別的資料,列表中的每一個元素代表一個上游的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_upstream_by_ip('1.1.1.1')
search_k8s_upstream_by_ip
data = search_k8s_upstream_by_ip(ip, page, pagesize)
這個方法用於根據 IP 搜尋 Kubernetes 上游。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
ip | string | 是 | 要搜尋的 IP |
page | number | 否 | 返回結果的頁碼,如果未指定,預設為 1 |
pagesize | number | 否 | 每頁返回結果的數量,如果未指定,預設為 20 |
返回值
- data:一個
list
型別的變數,其中包含了 Kubernetes 上游的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_k8s_upstream_by_ip('1.1.1.1')
search_upstream_by_name
data = search_upstream_by_name(name, page, pagesize)
此方法用於根據名稱搜尋上游。
引數
引數名 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
name | string | 是 | 需要搜尋的上游名稱 |
page | number | 否 | 返回結果的頁碼,若未指定則預設為 1 |
pagesize | number | 否 | 返回結果的每頁條目數,若未指定則預設為 20 |
返回值
- data:此為
list
型別,每個元素都代表了一條上游資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_upstream_by_name('test')
search_k8s_upstream_by_name
data = search_k8s_upstream_by_name(name, page, pagesize)
此方法用於透過指定名稱搜尋 Kubernetes 上游。
引數
引數 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | 需要搜尋的 Kubernetes 上游名稱 |
page | number | 否 | 返回搜尋結果的頁碼,預設值為 1 |
pagesize | number | 否 | 單頁返回的搜尋結果條目數,預設值為 20 |
返回值
- data:此為
list
型別,包含多個 Kubernetes 上游的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_k8s_upstream_by_name('test')
search_k8s_upstream
data = search_k8s_upstream(namespace, service, port, page, pagesize, type_list)
此方法允許使用者透過指定名稱空間,服務名稱和埠號來搜尋 Kubernetes 上游。
引數
名稱 | 資料型別 | 必選 | 描述 |
---|---|---|---|
namespace | string | no | 搜尋的名稱空間名稱 |
service | string | no | 搜尋的服務的名稱 |
port | number | no | 搜尋的服務的埠號 |
page | number | no | 返回結果的頁碼,預設值為 1 |
pagesize | number | no | 每一頁返回結果的條目數,預設值為 20 |
type_list | list | no | 搜尋的上游型別列表,包括 k8s_http 和 k8s_global,預設情況下搜尋所有型別 |
返回值
- data:
list
型別,列表中每個元素都是 Kubernetes 上游的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = self.client.search_k8s_upstream(port = 80, service = "test-hello", namespace = "default")
search_k8s_upstream_history
data = search_k8s_upstream_history(page, pagesize, start_time, end_time)
此方法根據名稱空間、服務名稱和埠號搜尋 Kubernetes 上游歷史。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
page | number | 否 | 返回結果的頁碼,若未指定,預設為 1 |
pagesize | number | 否 | 返回結果的條目數,若未指定,預設為 20 |
start_time | number | 否 | 搜尋的起始時間戳 |
end_time | number | 否 | 搜尋的結束時間戳 |
返回值
- data:返回值為
list
型別,每個元素代表一個 Kubernetes 上游的更新歷史操作。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.search_k8s_upstream_history(port = 80, service = "test-hello", namespace = "default")
get_all_apps
data = get_all_apps(detail)
此方法用於獲取所有應用的資訊。
引數
引數名 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
detail | bool | 否 | 是否需要返回每個應用的詳細資訊,預設為 False |
返回值
- 當
detail
引數為False
時,函式返回一個包含所有的 app id 的list
型別的 Python 物件,包含所有應用的基本資訊。 - 當
detail
引數為True
時,函式返回一個以 app id 作為鍵值的dict
型別的 Python 物件,包含所有應用的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
# 獲取基本資訊
apps = client.get_all_apps()
# 獲取詳細資訊
apps = client.get_all_apps(detail=True)
new_upstream
up_id = new_upstream(**kwargs)
此方法用於新增上游,返回值為新增上游的 id。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 是 | 上游的名稱 |
servers | list | 是 | 上游的資訊 |
ssl | bool | 否 | 是否採用 HTTPS 協議,預設值為 False |
health_checker | dict | 否 | 健康檢查的詳細配置,預設值為 None |
gid | array | 是 | 使用者組 id 列表,如 [1] |
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
domain | string | 否 | 上游的域名 |
ip | string | 否 | 上游的 IP 地址。注意,引數 domain 和 IP 至少需要填寫一個 |
port | string | 是 | 上游的埠號 |
weight | number | 否 | 上游的權重,預設值為 1 |
返回值
- up_id:表示建立成功的上游的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = client.new_upstream(
name='origin-upstream',
servers=[
{'ip': '172.22.31.1', 'port': 80},
{'ip': '172.22.31.2', 'port': 80, 'weight': 2}
])
put_upstream
ok = put_upstream(**kwargs)
此方法用於修改上游資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 是 | 定義上游的名稱 |
servers | list | 是 | 詳細定義上游資訊 |
ssl | bool | 否 | 是否啟用 HTTPS 協議,預設為 False |
health_checker | dict | 否 | 用於配置健康檢查的詳細資訊,預設為 None |
gid | array | 是 | 使用者組 id 列表,例如[1] |
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
ok = client.put_upstream(up_id,
name='origin-upstream',
servers=[
{'domain': 'test.com', 'port': 8080},
{'ip': '172.22.31.2', 'port': 8080, 'weight': 1}
],
health_checker={
'type': 'http',
'http_req_uri': '/status',
'http_req_host': 'test.com',
'interval': 3,
'interval_unit': 'sec',
'timeout': 1,
'fall': 3,
'rise': 2,
'valid_statuses': [200, 302],
'report_interval': 3,
'report_interval_unit': 'min'
})
get_upstream
data = get_upstream(up_id)
此方法用於獲取上游資訊。
引數
引數名 | 資料型別 | 是否必須 | 引數描述 |
---|---|---|---|
up_id | string | 否 | 上游的 ID |
返回值
- data:返回型別為
dict
的上游資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
data = client.get_upstream(up_id)
del_upstream
del_upstream(up_id)
此方法用於刪除上游。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
up_id | string | 否 | 上游的唯一識別符號 |
返回值
- 返回 True:表示上游刪除成功。
- 返回 False:表示上游刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
ok = client.del_upstream(up_id)
在這個示例中,我們首先匯入了 Edge2Client
,然後建立了一個 Edge2Client
物件,使用 host
,username
和 password
進行登入。然後,我們嘗試用 del_upstream
方法刪除識別符號為 1
的上游。
get_all_upstreams
upstreams = client.get_all_upstreams()
此方法用於獲取所有上游的詳細資訊。
返回值
- upstreams:返回一組
list
型別的資料,包含所有上游資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
upstreams = client.get_all_upstreams()
new_k8s_upstream
up_id = new_k8s_upstream(**kwargs)
本函式用於新增全域性 Kubernetes 上游,將返回新建立的 k8s 上游的 ID。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 是 | 上游名稱 |
k8s_services | list | 是 | 當上遊是 k8s 服務時所需的資訊 |
ssl | bool | 否 | 是否使用 HTTPS 協議,預設為 False |
health_checker | dict | 否 | 對健康檢查的詳細配置,預設為 None |
gid | array | 是 | 使用者組 ID 列表,例如:[1] |
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
k8s | number | 是 | k8s 叢集 ID |
k8s_namespace | string | 是 | k8s 叢集名稱空間 |
k8s_service | string | 是 | k8s 叢集服務 |
k8s_service_port | number | 是 | k8s 叢集服務埠 |
返回值
- up_id:新建立的 k8s 上游的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
k8s_up_id = client.new_k8s_upstream(
name = 'k8s-upstream',
k8s_services = [
{
'k8s' : 1,
'k8s_namespace' : 'default',
'k8s_service' : 'foo',
'k8s_service_port' : 80,
}
])
copy_upstream_to_k8s_upstream
k8s_up_id = copy_upstream_to_k8s_upstream(up_id, k8s_services, rules)
此方法用於將一個常規上游複製為一個 Kubernetes 上游。
引數
名稱 | 資料型別 | 是否必要 | 描述 |
---|---|---|---|
up_id | string | 是 | 待複製的上游的 ID |
k8s_services | list | 是 | 當上遊是 Kubernetes 服務時的資訊 |
rules | array | 否 | 遍歷 rules 中的規則,使用原上游的規則將全部遷移到 Kubernetes 上游,如果不提供此引數,函式會預設查詢本 app 的所有規則進行遍歷。使用此引數可以防止函式多次自動查詢所有規則 |
返回值
- up_id:新建立的 Kubernetes 上游的 ID。
示例
示例一:
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = client.new_app(domains = ['orig.foo.com'], label = 'origin site for foo.com')
up_id = client.new_upstream(name = 'origin-upstream',
servers = [
{'ip': '172.22.31.1', 'port': 80},
{'ip': '172.22.31.2', 'port': 80, 'weight': 2}
])
k8s_up_id = client.copy_upstream_to_k8s_upstream(up_id,
k8s_services = [
{
'k8s' : 1,
'k8s_namespace' : 'default',
'k8s_service' : 'foo',
'k8s_service_port' : 80,
}
])
示例二:
client.use_app(app_id)
rules = client.get_all_rules()
k8s_up_id = client.copy_upstream_to_k8s_upstream(up_id = up_id,
k8s_services = [
{
'k8s' : 1,
'k8s_namespace' : 'default',
'k8s_service' : 'foo',
'k8s_service_port' : 80,
}
],
rules = rules)
put_k8s_upstream
ok = put_k8s_upstream(**kwargs)
此方法用於修改 Kubernetes 上游資訊。
引數
名稱 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
name | string | 是 | 指定上游名稱 |
k8s_services | list | 是 | 當上遊是 k8s 服務時所需的詳細資訊 |
ssl | bool | 否 | 確定是否使用 HTTPS 協議,預設值為 False |
health_checker | dict | 否 | 配置健康檢查的具體引數,預設值為 None |
gid | array | 是 | 使用者組 ID 列表,例如[1] |
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
ok = client.put_k8s_upstream(up_id,
name='k8s-upstream',
k8s_services = [
{
'k8s' : 1,
'k8s_namespace' : 'default',
'k8s_service' : 'foo',
'k8s_service_port' : 80,
}
],
health_checker={
'type': 'http',
'http_req_uri': '/status',
'http_req_host': 'test.com',
'interval': 3,
'interval_unit': 'sec',
'timeout': 1,
'fall': 3,
'rise': 2,
'valid_statuses': [200, 302],
'report_interval': 3,
'report_interval_unit': 'min'
})
get_k8s_upstream
data = get_k8s_upstream(up_id)
此方法用於獲取 k8s 上游的資訊。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
up_id | string | 是 | 上游的 ID |
返回值
- data:返回一個
dict
型別的資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = 1
data = client.get_k8s_upstream(up_id)
del_k8s_upstream
success = del_k8s_upstream(upstream_id)
此方法用於刪除 k8s(Kubernetes)上游。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
upstream_id | string | 是 | 對應上游的唯一標識 ID |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
upstream_id = '1'
success = client.del_k8s_upstream(upstream_id)
get_all_k8s_upstreams
upstreams = client.get_all_k8s_upstreams()
此方法用於獲取所有 Kubernetes 上游的資訊。
返回值
- upstreams:返回一個
list
型別的 Kubernetes 上游列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
upstreams = client.get_all_k8s_upstreams()
new_rule
rule_id = new_rule(**kwargs)
此方法用於新建頁面規則,包含各種規則型別,如:通用規則,代理規則,WAF 規則和快取規則。你也可以指定規則執行的前提條件。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
condition | list | 否 | 規則條件 |
conseq | dict 或 list | 否 | 規則行動 |
waf | list | 否 | WAF 規則 |
proxy | list | 否 | 代理規則 |
cache | list | 否 | 快取規則 |
content | list | 否 | 內容規則 |
top | number | 否 | 1:置頂規則,-1:置底規則 |
order | number | 否 | 規則順序,優先順序低於 top 引數 |
last | bool | 否 | 如果命中此條規則,則跳過所有餘下的頁面規則,預設為 False |
reorder | bool | 否 | 是否重建 order 的值,預設為 False |
enable | bool | 否 | 如果此選項被設為 False,則會禁用規則,預設為 True |
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
var | string 或 array | 是 | 如果是 string 型別,則填寫變數名 name 。如果是 array 型別則需要填寫變數名 name 和引數 args 。 |
op | string | 否 | 運算子,預設為 eq ,即字串相等 (equal) |
val | string | 與 vals 二選一 | string 型別或者 array 型別,需要指定為正則或者通配型別時,傳 [正規表示式, 'rx'] , [通配表示式, 'wc'] |
vals | list | 與 val 二選一 | val 的集合 |
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
edge 語言內建函式 | string | 是 | edge 語言內建函式 |
edge 語言內建函式的引數 | list | 是 | edge 語言的內建函式引數 |
conseq
可以是 dict 型別或者 list 型別,如下是一個 dict 型別的例子。
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
rule_sets | list | 否 | 全域性預設的使用者規則集,預設值為空列表 |
action | string | 是 | 可選 log , 403 Forbidden , edge-captcha , redirect 中的一個 |
threshold | string | 否 | 可選 high , medium , low 、none 中的一個,與 sensitivity 二選一,sensitivity 的優先順序更高,高敏感級別對應低閾值級別,低敏感級別對應高閾值級別 |
sensitivity | string | 否 | 可選 high , medium , low 、none 中的一個,與 threshold 二選一,sensitivity 的優先順序更高,高敏感級別對應低閾值級別,低敏感級別對應高閾值級別 |
clearance | number | 否 | captcha 觸發後的持續時間,預設值為 60 秒 |
redirect_url | string | 否 | 當動作為 redirect (重定向) 時,指定的 url |
cross_requests | bool | 否 | 當為 True 時,使用跨請求模式,預設為 True |
rule_sets_threshold | list | 否 | 單獨設定每個規則集的敏感分數 |
score | integer | 否 | 當 threshold 或 sensitivity 選擇 none 時,可以自定義敏感分數 |
proxy
陣列的描述如下:
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
upstreams | list | 是 | 上游資訊 |
backup_upstreams | list | 是 | 上游備份節點資訊 |
upstreams_el_code | str | 是 | Edgelang 設定上游 |
timeout | number | 否 | 代理超時時間,預設值為 3 秒 |
connect_timeout | number | 否 | 連線超時時間,預設值為 3 秒 |
read_timeout | number | 否 | 讀超時時間,預設值為 3 秒 |
send_timeout | number | 否 | 傳送超時時間,預設值為 3 秒 |
retries | number | 否 | 重試次數,預設值為 1 次 |
retry_condition | list | 否 | 重試條件,預設值為 [“error”, “timeout”, “invalid_header”, “http_500”, “http_502”, “http_504”]. 可選 http_503 , http_403 , http_404 , http_429 和 non_valueempotent (即方法可以是 POST, LOCK, PATCH) |
balancer_algorithm | string | 否 | 負載均衡演算法,預設值為 roundrobin 。支援的演算法還有 hash 和 chash |
balancer_vars | list | 否 | 負載均衡演算法所依賴的變數,當負載均衡演算法選擇為 hash 或 chash 時需要填寫該欄位 |
multi_tier | number | 否 | 多層網路策略 ID |
upstreams
與 backup_upstreams
陣列的描述如下:
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
upstream | number | 是 | 上游的 ID |
global_upstream | number | 是 | 全域性上游的 ID |
k8s_upstream | number | 是 | k8s 上游的 ID |
global_k8s_upstream | number | 是 | 全域性 k8s 上游的 ID |
weight | number | 否 | 上游的權重,預設值為 1 |
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
cache_key | list | 是 | 快取 key |
default_ttls | list | 否 | 是否啟用預設快取,預設值為 None |
browser_ttl | number | 否 | 是否啟用瀏覽器快取,預設值為 None |
browser_ttl_unit | string | 否 | 瀏覽器快取單位,只在 browser_ttl 設定後有效,預設值為 min |
enable_global | bool | 否 | 是否啟用跨域名快取,預設值為 False |
enforce_cache | bool | 否 | 是否啟用始終快取,預設值為 False |
cluster_hash | bool | 否 | 是否啟用叢集快取,預設值為 False |
disable_convert_head | bool | 否 | 是否將 HEAD 請求方法轉換為 GET,預設值為 True |
返回值
- rule_id:新規則的 ID。
示例
示例一:使用 dict 型別的條件和動作來新建規則。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
{
'var': 'host',
'val': 'test.openresty.com'
},
{
'var': ['req-header', 'Referer'],
'vals': [
'foo.com',
['foo\d+', 'rx'],
['foo*', 'wc']
]
}
]
conseq = {
'enable-websocket': {},
'redirect': {'url': '/cn/2017/', 'code': 302}
}
rule_id = client.new_rule(condition=condition, conseq=conseq)
由於 dict 型別不能自行排序,並且不能設定重複名稱的動作,
所以推薦下面這種使用 list
型別代替 dict
型別的方式。
示例二:使用 list 型別的條件和動作來新建規則。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
{'var': 'host', 'val': 'test.openresty.com'},
{'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
conseq = [
{'set-proxy-header': {
'header': 'Foo',
'value': 'default'
}},
{'set-proxy-header': {
'header': 'Host',
'value': "orig"
}},
{'print': {
'msg': 'hello'
}}
]
rule_id = client.new_rule(condition=condition, conseq=conseq)
示例三:啟用 WAF 規則。
建立自定義的 WAF 規則,並在應用中使用該規則。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
global_waf_rule_id = client.new_global_waf_rule(
name='foo',
code="uri-arg('foo') => waf-mark-risk(level: 'definite', msg: 'found foo');")
condition = [{'var': 'uri', 'op': 'prefix', 'val': '/foo'}]
waf_rule = {
'rule_sets': [global_waf_rule_id],
'action': '403 Forbidden', 'threshold': 'low'}
rule_id = client.new_rule(condition=condition, waf=waf_rule)
示例四:啟用代理規則。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
up_id = client.new_upstream(
name='origin-upstream',
servers=[
{'ip': '172.22.31.1', 'port': 80},
{'ip': '172.22.31.2', 'port': 80, 'weight': 2}
])
k8s_up_id = client.new_k8s_upstream(
name='k8s-upstream',
k8s_services = [
{
'k8s' : k8s_id,
'k8s_namespace' : 'default',
'k8s_service' : 'test-hello',
'k8s_service_port' : 80,
}
])
ok = client.put_upstream(up_id,
name='origin-upstream',
servers=[
{'ip': '172.22.31.1', 'port': 8080},
{'ip': '172.22.31.2', 'port': 8080, 'weight': 1}
])
backup_up_id = client.new_upstream(
name='backup-upstream',
servers=[
{'ip': '172.22.31.3', 'port': 80},
{'ip': '172.22.31.4', 'port': 80, 'weight': 3}
])
proxy_rule = {
'upstreams': [{'upstream': up_id, 'weight': 2}],
'backup_upstreams': [{'upstream': backup_up_id}],
'upstream_el_code': '',
'retries': 2,
"retry_condition": ["invalid_header", "http_500"],
"balancer_algorithm": "hash",
"balancer_vars": [
{"name":"uri"},
{
"name":"uri-arg",
"args":"foo"
}
]
}
rule_id = client.new_rule(proxy = proxy_rule)
k8s_proxy_rule = {
'upstreams': [{'k8s_upstream': k8s_up_id, 'weight': 2}],
'upstream_el_code': '',
'retries': 2,
"retry_condition": ["invalid_header", "http_500"],
"balancer_algorithm": "hash",
"balancer_vars": [
{"name":"uri"},
{
"name":"uri-arg",
"args":"foo"
}
]
}
k8s_rule_id = client.new_rule(proxy = k8s_proxy_rule)
示例五:啟用快取。
在該示例中,當訪問來源的 IP 位於中國(CN)時,將會實施快取規則。具體的快取 key 包含 URL、查詢字串以及客戶端來源的城市。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [{'var': 'client-country', 'op': 'eq', 'val': 'CN'}]
# cache_key = ['uri', 'query-string', 'client-city']
# or
cache_key = [
{'name': 'uri'},
{'name':'query-string'},
{'name': 'client-city', 'args': 'first-x-forwarded-addr'}
]
default_ttls = [
{
'ttl_unit': "min", 'status': 200, 'ttl': 1
}, {
'ttl_unit': "min", 'status': 301, 'ttl': 1
}
]
cache_rule = {'cache_key': cache_key, 'default_ttls': default_ttls}
rule_id = client.new_rule(condition=condition, cache=cache_rule)
put_rule
ok = put_rule(**kwargs)
此方法用於修改頁面規則。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
condition | list | 否 | 定義規則的條件 |
conseq | dict or list | 否 | 定義規則的動作 |
waf | list | 否 | 定義 WAF 規則 |
proxy | list | 否 | 定義代理規則 |
cache | list | 否 | 定義快取規則 |
content | list | 否 | 定義內容規則 |
top | number | 否 | 用於設定規則的位置,1 表示置頂規則,-1 表示置底規則 |
order | number | 否 | 用於設定規則的順序,優先順序低於 top 引數 |
last | bool | 否 | 如果此選項被設為 True,且這條規則被命中,則會跳過所有剩餘的頁面規則,預設為 False |
enable | bool | 否 | 如果此選項被設為 False,則會禁用規則,預設為 True |
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
from edge2client.constants import OFF, ON
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
conseq = {
'enable-websocket': {},
'redirect': {'url': '/cn/2017/', 'code': 302},
'user-code': {'el': 'true => say(\"hello\");'}
}
conseq['redirect']['url'] = '/cn/2018/'
ok = client.put_rule(rule_id=rule_id, condition=condition, conseq=conseq)
# 關閉頁面規則中的條件
ok = client.put_rule(rule_id=rule_id, condition=OFF, conseq=conseq)
get_rule
data = get_rule(rule_id)
此方法用於根據規則 ID 獲取頁面規則。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 頁面規則的 id |
返回值
- data:返回一個
dict
型別的頁面規則資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
rule_id = 1
data = client.get_rule(rule_id)
del_rule
success = del_rule(rule_id)
此方法用於刪除與 rule_id 對應的頁面規則。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 規則的唯一識別符號 |
返回值
- True:表示頁面規則成功刪除。
- False:表示頁面規則刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
rule_id = 1
success = client.del_rule(rule_id)
get_all_rules
rules = get_all_rules(app_id)
此方法用於獲取指定應用 ID (app_id) 的所有頁面規則。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
app_id | number | 否 | 指定的應用 id,若未提供,預設為當前應用 id |
返回值
- 返回一個規則列表,該列表中的每個元素的型別與 get_rule 函式的返回值型別一致。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_rules()
reorder_rules
ok = reorder_rules(orders)
此方法用於調整規則的順序。
引數
名稱 | 資料型別 | 必選 | 描述 |
---|---|---|---|
orders | dict | 是 | 此字典中的 key-value 對定義了新的規則順序,其中 key 代表規則 ID,value 代表規則的順序 |
返回值
- True:如果成功調整規則順序。
- False:如果調整規則順序失敗。
示例
以下示例展示瞭如何調換規則 ID 2 和 3 的順序。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
new_orders = {
1: 1,
2: 3,
3: 2,
}
data = client.reorder_rules(new_orders)
get_all_rules_by_app_domain
rules = get_all_rules_by_app_domain(domain)
此方法用於根據指定的應用域名獲取對應的頁面規則。
引數
名稱 | 資料型別 | 必選 | 描述 |
---|---|---|---|
domain | string | 是 | 應用的域名 |
返回值
- rules:
list
型別的規則列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_rules_by_app_domain('orig.foo.com')
get_all_rules_by_upstream_ip
rules = get_all_rules_by_upstream_ip(upstream_ip)
此方法用於根據上游 IP 地址來檢索所有關聯的頁面規則。
引數
名稱 | 資料型別 | 是否必要 | 描述 |
---|---|---|---|
upstream_ip | string | 是 | 用於指定上游的 IP 地址 |
返回值
- rules:這是一個包含所有相關規則的
list
型別列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
upstream_ip = '1.2.3.4'
data = client.get_all_rules_by_upstream_ip(upstream_ip)
for app_id, rules in data.items():
print(app_id)
get_all_waf_rules
rules = get_all_waf_rules(app_id)
此方法用於根據特定的應用 id (app_id) 獲取對應的 WAF 規則。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
app_id | number | no | 應用的 id,如未指定,則預設為當前應用的 id |
返回值
- rules:返回一種
list
型別的規則列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_waf_rules()
get_global_actions_used_in_app
rule_ids = get_global_actions_used_in_app(app_id)
此方法用以獲取與應用 ID (app_id) 相關聯的自定義規則 ID。
引數
名稱 | 資料型別 | 必需性 | 描述 |
---|---|---|---|
app_id | number | 否 | 應用的唯一識別符號 |
返回值
- rule_ids:返回一個列表,其中元素為各自規則的唯一 ID。如果需要獲取規則的詳細資訊,可以依據這些規則 ID 進行進一步查詢,詳情請參閱 get_global_rule() 方法。
示例
以下示例展示瞭如何獲取所有全域性規則的 ID。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
rule_ids = client.get_global_actions_used_in_app(app_id)
set_cert_key
cert_id = set_cert_key(**kwargs)
此方法用於新增 SSL 證書並提供手動上傳證書的選項。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
key | string | 是 | 私鑰內容 |
cert | string | 否 | 證書內容 |
ca_chain | string | 否 | CA 鏈條內容 |
global_cert_id | number | 否 | 證書的全域性 ID |
gid | list | 否 | 使用者組 ID 列表 |
返回值
- cert_id:返回新新增的證書的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
key_file = os.path.join('tests', 'key.pem')
cert_file = os.path.join('tests', 'cert.pem')
with open(key_file) as f:
key = f.read()
with open(cert_file) as f:
cert = f.read()
cert_id = client.set_cert_key(key=key, cert=cert)
set_le_cert
cert_id = set_le_cert(**kwargs)
此方法用於新增 Let’s Encrypt 證書或其他證書提供商(如 ZeroSSL)的證書。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
domains | string array | 是 | 需要自動獲取 LE 證書的域名 |
gid | list | 否 | 使用者組 ID 列表 |
resign | bool | 否 | 是否觸發重新簽發證書 |
acme_provider | integer | 否 | ACME Provider 的 ID |
acme_csr_type | string | 否 | 簽名演算法型別,可選 ec、rsa |
enabled | bool | 否 | 是否觸發重新簽發證書 |
返回值
- cert_id:新建立的 Let’s Encrypt 證書的 ID
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
cert_id = client.set_le_cert(domains=["orig.foo.com"])
put_cert_key
ok = put_cert_key(**kwargs)
此方法用於更新 SSL 證書(手動上傳方式)。
引數
名稱 | 資料型別 | 是否必選 | 引數描述 |
---|---|---|---|
cert_id | number | 是 | 證書的唯一識別符號 id |
key | string | 是 | 私鑰的詳細內容 |
cert | string | 否 | 伺服器端證書的詳細內容 |
ca_chain | string | 否 | CA 鏈的詳細內容 |
global_cert_id | number | 否 | 全域性證書的唯一識別符號 id |
gid | list | 否 | 使用者組 id 的列表形式 |
返回值
- True:表示更新成功。
- False:表示更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
new_key_file = os.path.join('tests', 'new_key.pem')
new_cert_file = os.path.join('tests', 'new_cert.pem')
with open(new_key_file) as f:
new_key = f.read()
with open(new_cert_file) as f:
new_cert = f.read()
cert_id = 1
ok = client.put_cert_key(cert_id=cert_id, key=new_key, cert=new_cert)
put_le_cert
ok = put_le_cert(**kwargs)
此方法用於更新 Let’s Encrypt 證書或其他證書提供商(如 ZeroSSL)提供的證書。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
cert_id | integer | 否 | 整數的 ID |
domains | string array | 是 | 需要自動獲取 LE 證書的域名 |
gid | list | 否 | 使用者組 ID 列表 |
resign | bool | 否 | 是否觸發重新簽發證書 |
acme_provider | integer | 否 | ACME Provider 的 ID |
acme_csr_type | string | 否 | 簽名演算法型別,可選 ec、rsa |
enabled | bool | 否 | 是否觸發重新簽發證書 |
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
cert_id = 1
ok = client.put_le_cert(cert_id=cert_id, domains=["xx.foo.com"], resign=False)
get_le_cert
data = get_le_cert(cert_id)
此方法用於獲取 Let’s Encrypt 證書的簽發狀態。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
cert_id | number | 是 | 證書 ID |
返回值
- data:返回一個
dict
型別的資料,包含以下欄位:
欄位名稱 | 資料型別 | 描述 |
---|---|---|
status | string | 描述證書的簽發狀態,可能的值包括:valid / pending / invalid |
expdate | number | 證書的過期時間,使用 Unix 時間戳表示 |
next_udpate | number | 證書的下次更新時間,使用 Unix 時間戳表示 |
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
cert_id = 1
data = client.get_le_cert(cert_id)
get_cert_key
cert_data = get_cert_key(cert_id)
此方法用於獲取 SSL 證書內容。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
cert_id | number | 是 | 代表證書的 id |
返回值
- 返回值為 cert_data,表示證書的內容,資料型別為 dict。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
cert_id = 1
data = client.get_cert_key(cert_id)
get_all_cert_keys
cert_data = get_all_cert_keys()
此方法用於獲取當前應用的全部證書資訊。
返回值
- cert_data:以
dict
型別返回的證書資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_cert_keys()
del_cert_key
success = del_cert_key(certificate_id)
刪除與給定的 certificate_id 相關聯的證書資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
certificate_id | number | 是 | 證書的唯一標誌 |
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
application_id = 1
client.use_application(application_id)
certificate_id = 1
success = client.del_cert_key(certificate_id)
new_el
ok = new_el(**kwargs)
此方法用於新增自定義的 edge 語言程式碼。
引數
名稱 | 資料型別 | 必選 | 描述 |
---|---|---|---|
phase | string | 是 | 用於定義 edge 語言執行的階段 |
code | string | 是 | 要執行的 edge 語言程式碼 |
post | bool | 是 | 如果設為 True ,則該段程式碼將在選擇的階段後面執行,預設值為 False |
pre | bool | 是 | 如果設為 True ,則該段程式碼將在選擇的階段前面執行,預設值為 False |
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
code = "true => print('hello, world');"
ok = client.new_el(phase='req-rewrite', code=code, pre=True)
new_release
ok = new_release()
此方法用於釋出當前應用的更新。
返回值
- True:表示更新成功。
- False:表示更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.new_release()
此示例展示瞭如何使用 Edge2Client 的 new_release 方法來發布應用的更新。
pending_changes
changes = pending_changes()
此方法用於查詢待發布的更改數量。
返回值
- changes:這是一個整數,表示待發布的更改數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
changes = client.pending_changes()
在上述示例中,首先建立了一個 Edge2Client
例項並完成登入。隨後,將應用的 id 設定為 1,並透過 pending_changes
函式查詢待發布的更改數量。
sync_status
total, synced = sync_status()
查詢當前的同步狀態。
返回值
- total:Edge Node 伺服器的總數量。
- synced:已成功同步的 Edge Node 伺服器的數量。
示例
建立多個規則,並確認它們是否已成功釋出到全網。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
total, synced = client.sync_status()
if total == synced:
print('新的釋出已同步到所有節點')
node_sync_status
data = node_sync_status()
此方法用於獲取各節點的同步詳情。
返回值
- data:
dict
型別,它返回每個節點的 node_id 以及該節點上一次釋出到現在的延遲時間。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.node_sync_status()
for node_id, delay in data.items():
if delay > 0:
print('警告:節點 id {}: 落後 {}'
.format(str(node_id), str(delay)))
get_healthcheck_status
data = get_healthcheck_status(node_id, page=1, page_size=1000)
這段程式碼用於獲取各節點的健康檢查資訊。
返回值
- data:這是一個
dict
型別的資料,它返回每個節點的 node_id 以及對應節點的健康狀態。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.node_sync_status()
for node_id, node_info in data.items():
node_id = int(node_id)
data = client.get_healthcheck_status(node_id, 1, 1000)
add_app_user
user_id = add_app_user(name, read, write, release, dns_read, dns_write)
此方法用於新增應用級使用者。
引數
名稱 | 資料型別 | 必選 | 描述 |
---|---|---|---|
name | string | 是 | 使用者名稱 |
read | bool | 否 | 是否擁有讀許可權,預設為 True |
write | bool | 否 | 是否擁有寫許可權,預設為 True |
release | bool | 否 | 是否擁有釋出更動的許可權,預設為 False |
dns_read | bool | 否 | 是否擁有讀取 DNS 的許可權,預設為 False |
dns_write | bool | 否 | 是否擁有修改 DNS 的許可權,預設為 False |
返回值
- user_id:新新增使用者的 ID。
請注意:此處的 user_id 與全域性使用者的 user_id 不同。
示例
以下示例展示瞭如何新增一個應用級使用者,使用者名稱為 only_reader
,並且沒有寫許可權和釋出更動許可權。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
user_id = client.add_app_user(name='only_reader', write=False, release=False)
update_app_user
success = update_app_user(id, name, read, write, release, dns_read, dns_write)
此方法用於更新應用級的使用者資訊。
引數
名稱 | 資料型別 | 是否必要 | 描述 |
---|---|---|---|
id | list | yes | 使用者 id |
name | string | yes | 使用者名稱 |
read | bool | no | 使用者是否具有讀取許可權,預設值為 True |
write | bool | no | 使用者是否具有寫入許可權,預設值為 True |
release | bool | no | 使用者是否具有釋出更改的許可權,預設值為 False |
dns_read | bool | no | 使用者是否具有讀取 DNS 的許可權,預設值為 False |
dns_write | bool | no | 使用者是否具有寫入 DNS 的許可權,預設值為 False |
返回值
- True:使用者資訊更新成功。
- False:使用者資訊更新失敗。
示例
以下示例展示瞭如何使用此方法更新 id 為 1 的使用者的許可權,將使用者名稱設定為 master
,並賦予寫入和釋出更改的許可權。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
uid = 1
success = client.update_app_user(id=uid, name='master', write=True, release=True)
get_app_user
data = get_app_user(id=None, name=None, app_id=None, user_id=None)
此方法用於獲取應用級別的使用者資訊,包括使用者名稱、許可權等。
引數
引數名 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
id | list | 否 | 使用者的 id |
name | string | 否 | 使用者名稱 |
app_id | number | 否 | 應用的 id,若未指定則預設為當前應用 id |
user_id | number | 否 | 全域性的使用者 id |
返回值
- data:返回一個字典型別的資料,包含使用者名稱、許可權等使用者資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
username = 'only_reader'
data = client.get_app_user(name=username)
del_app_user
ok = del_app_user(id, name, app_id, user_id)
此方法用於刪除特定應用的使用者。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
id | list | 否 | 使用者 id |
name | string | 否 | 使用者名稱 |
app_id | number | 否 | 應用 id,若未指定,則預設為當前應用 |
user_id | number | 否 | 全域性使用者 id |
返回值
- 如果操作成功,則返回 True。
- 如果操作失敗,則返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
username = 'only_reader'
ok = client.del_app_user(name=username)
在這個例子中,我們首先建立了一個 Edge2Client 例項並登入。然後,我們選擇了一個應用,最後我們透過傳入使用者名稱來刪除應用的使用者。
get_all_app_users
data = get_all_app_users(app_id)
此方法用於獲取所有當前應用級別的使用者,也可以透過指定 app_id 來獲取特定應用的使用者。
引數
名稱 | 資料型別 | 是否必選 | 引數 |
---|---|---|---|
app_id | number | 否 | 應用 id,預設為當前應用 id |
返回值
- data:返回值為
list
型別,列表中的每個元素都是 dict 型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_app_users()
add_user_for_all_apps
ok = add_user_for_all_apps(name, read, write, release, dns_read, dns_write)
此方法用於為所有應用新增使用者。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 否 | 使用者名稱 |
read | bool | 否 | 使用者是否擁有讀許可權,預設為 True |
write | bool | 否 | 使用者是否擁有寫許可權,預設為 True |
release | bool | 否 | 使用者是否擁有釋出更改的許可權,預設為 False |
dns_read | bool | 否 | 使用者是否擁有讀取 DNS 的許可權,預設為 False |
dns_write | bool | 否 | 使用者是否擁有編輯 DNS 的許可權,預設為 False |
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
# 利用 add_global_user() 函式建立名為 'write' 的使用者。
username='write'
data = client.add_user_for_all_apps(name=username)
add_all_users_for_app
ok = add_all_users_for_app(app_id, read, write, release, dns_read, dns_write)
此方法用於將所有全域性使用者新增到指定應用。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
app_id | number | 否 | 應用的 ID,若未指定,則預設為當前應用的 ID |
read | bool | 否 | 使用者是否擁有讀許可權,若未指定,則預設為 True |
write | bool | 否 | 使用者是否擁有寫許可權,若未指定,則預設為 True |
release | bool | 否 | 使用者是否擁有釋出更動的許可權,若未指定,則預設為 False |
dns_read | bool | 否 | 使用者是否有讀取 DNS 的許可權,若未指定,則預設為 False |
dns_write | bool | 否 | 使用者是否有寫入 DNS 的許可權,若未指定,則預設為 False |
返回值
- True:表示新增成功。
- False:表示新增失敗。
示例
以下示例展示瞭如何為 ID 為 1 的應用新增使用者,其中所有全域性使用者都將新增在該應用下,且 release
(釋出更動) 許可權為 True
,其他許可權保持預設值。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.add_all_users_for_app(release=True)
new_cache_purge_task
task_id = client.new_cache_purge_task(condition=condition)
此方法用於新增條件重新整理任務。任務的觸發條件以陣列形式傳遞,支援設定多個觸發條件。只有當所有設定的條件同時滿足時,才會觸發對應的重新整理任務。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
condition | list | 否 | 觸發條件 |
返回值
- task_id:返回已建立的重新整理任務的 ID,可透過此 ID 查詢重新整理任務的執行詳情。
示例
以下示例中,新建的條件重新整理任務的觸發條件設定為:“當訪問的 Host 為 con.foo.com,並且請求頭中 Referer
的值匹配到正規表示式 foo\d+
時。”
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
{'var': 'host', 'val': 'con.foo.com'},
{'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
rule_id = client.new_cache_purge_task(condition=condition)
get_cache_purge_task
data = client.get_cache_purge_task(task_id)
此方法透過指定的重新整理任務 id 來查詢任務的詳細資訊。
引數
名稱 | 資料型別 | 是否必須 | 引數 |
---|---|---|---|
task_id | number | 是 | 重新整理任務的唯一標識 id |
返回值
- data:返回的是一個包含任務詳情的字典(
dict
)型別的資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
task_id = 1
data = client.get_cache_purge_task(task_id)
get_all_cache_purge_tasks
data = client.get_all_cache_purge_tasks()
此方法用於獲取所有快取重新整理任務的詳細資訊。
返回值
- data:返回一個包含所有重新整理任務的列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_all_cache_purge_tasks()
del_cache_purge_task
ok = client.del_cache_purge_task(task_id)
此方法用於刪除指定 ID 的重新整理任務。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
task_id | number | 是 | 需要刪除的重新整理任務的 ID |
返回值
- True:表示成功刪除。
- False:表示刪除失敗。
示例
以下示例展示如何刪除 ID 為 1 的重新整理快取任務。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
task_id = 1
ok = client.del_cache_purge_task(task_id)
new_waf_whitelist
rule_id = new_waf_whitelist(**kwargs)
此方法用於新增 WAF 白名單規則。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
condition | list | 否 | 規則執行的條件 |
rule_sets | list | 是 | WAF 規則的 ID 列表 |
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
var | string or array | 是 | Edge 語言內建的函式名。當資料型別為 array 時,需在函式名後新增此方法所需的引數 |
op | string | 否 | 運算子,預設為 eq |
val | string | val / vals 中的任選一項 | 值 |
vals | list | val / vals 中的任選一項 | 一組值 (使用陣列) |
返回值
- rule_id:新建立的 WAF 白名單規則的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
{'var': 'host', 'val': 'con.foo.com'},
{'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
id = client.new_waf_whitelist(condition=condition, rule_sets=[1, 2])
update_waf_whitelist
ok = update_waf_whitelist(**kwargs)
此方法用於更新 WAF 白名單規則。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
whitelist_id | number | 是 | 待更新的白名單 id |
condition | list | 否 | 規則執行的條件集合 |
rule_sets | list | 是 | 包含 waf id 的列表 |
返回值
- 若成功,返回 True。
- 若失敗,返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
condition = [
{'var': 'host', 'val': 'con.foo.com'},
{'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
waf_whitelist_id = 1
ok = client.update_waf_whitelist(
whitelist_id=waf_whitelist_id, condition=condition, rule_sets=[1])
get_waf_whitelist
data = get_waf_whitelist(whitelist_id)
此方法用於獲取 WAF 的白名單規則。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
whitelist_id | number | 是 | 白名單規則的唯一識別符號 id |
返回值
- data:返回一個
dict
型別,包含 WAF 白名單的規則資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_waf_whitelist(waf_whitelist_id)
del_waf_whitelist
ok = del_waf_whitelist(whitelist_id)
執行此操作會刪除指定的 WAF 白名單規則。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
whitelist_id | number | 是 | 白名單規則的 ID |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
# 初始化客戶端並登入
client = Edge2Client(host, username, password)
client.login()
# 指定 APP ID
app_id = 1
client.use_app(app_id)
# 刪除特定 WAF 白名單規則
ok = client.del_waf_whitelist(waf_whitelist_id)
get_all_waf_whitelists
data = get_all_waf_whitelists()
此方法用於獲取所有的 WAF 白名單規則。
返回值
- data:返回一個
list
型別的 WAF 白名單資料。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
# 選擇應用
app_id = 1
client.use_app(app_id)
# 獲取所有的 WAF 白名單
data = client.get_all_waf_whitelists()
new_app_dymetrics
id = new_app_dymetrics(app_id=None, name=None, note=None, interval=60, sql=None)
建立新的應用動態指標。如果想要開啟 OpenResty Edge 的內建動態指標,可以從此文件獲取內建動態指標的名稱及 SQL。
引數
引數 | 資料型別 | 必選 | 描述 |
---|---|---|---|
app_id | number | 是 | 應用的唯一識別符號 id |
name | string | 是 | 用於標識動態指標的名稱 |
sql | string | 是 | 用於生成動態指標的 SQL 語句 |
note | string | 否 | 對動態指標的附加說明或備註 |
interval | number | 否 | 動態指標的重新整理時間間隔(以秒為單位) |
返回值
- id:新建立的動態指標的唯一識別符號。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
sql = 'select status, count(*) from reqs group by status'
dymetrics_id = client.new_app_dymetrics(app_id=1, name='test', sql=sql)
put_app_dymetrics
ok = put_app_dymetrics(app_id=None, id=None, name=None, note=None, interval=60, sql=None)
此方法用於修改應用的動態指標。
引數
引數 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
id | number | 是 | 需要修改的動態指標的 id |
app_id | number | 是 | 應用的 id |
name | string | 是 | 指標的名稱 |
sql | string | 是 | 定義指標的 SQL 語句 |
note | string | 否 | 備註資訊 |
interval | number | 否 | 資料重新整理間隔,單位為秒 |
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
id=1
sql = 'select status, count(*) from reqs group by status'
data = client.put_app_dymetrics(app_id=1, id=id, name='test', sql=sql)
del_app_dymetrics
ok = del_app_dymetrics(app_id, id)
此方法用於刪除指定應用的動態指標。
引數
引數 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
app_id | number | 是 | 指定的應用的 ID |
id | number | 是 | 要刪除的動態指標的 ID |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
ok = client.del_app_dymetrics(app_id, dymetrics_id)
get_app_dymetrics
data = get_app_dymetrics(app_id, id)
此方法用於獲取指定應用的動態指標。
引數
引數 | 資料型別 | 必選 | 描述 |
---|---|---|---|
id | number | 是 | 動態指標的 id |
app_id | number | 是 | 應用的 id |
返回值
- data:返回一個
dict
型別的動態指標資料。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_app_dymetrics(app_id, dymetrics_id)
get_all_app_dymetrics
data = get_all_app_dymetrics(app_id)
此方法用於獲取指定應用的全部動態指標資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
app_id | number | 是 | 表示應用的唯一標識 id |
返回值
- data:返回的資料為一個包含所有動態指標資訊的
list
型別列表。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_app_dymetrics(app_id)
get_app_dymetrics_data
data = get_app_dymetrics_data(app_id, id, chart_type='line', start_time=None, end_time=None, node_id=None)
此方法用於獲取應用的動態指標資料,預設返回最近 30 分鐘的資料。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
app_id | number | 是 | 應用的 id |
id | number | 是 | 動態指標的 id |
chart_type | number | 是 | 圖表型別 |
start_time | number | 是 | 資料開始時間 |
end_time | number | 是 | 資料結束時間 |
node_id | number | 是 | Edge Node 節點的 ID |
返回資料
- data:返回的動態指標資料,其資料型別為
list
。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
app_id = 1
dymetrics_id = 1
data = client.get_app_dymetrics_data(app_id, dymetrics_id)
get_app_metrics
data = get_app_metrics(id, start_time=None, end_time=None)
此方法用於獲取應用的 HTTP 請求狀態指標和網路收發指標,預設情況下,它會獲取最近 30 分鐘的資料。
引數
引數 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
id | number | 是 | 指標的 id |
start_time | number | 是 | 指標獲取的開始時間 |
end_time | number | 是 | 指標獲取的結束時間 |
返回值
- data:這是一個包含指標資料的
list
型別。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_app_metrics(app_id)
new_ip_list
id = new_ip_list(name=None, type='ipv4', items=None)
新增新的應用級 IP 列表。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | IP 列表的名稱 |
type | string | 否 | IP 地址的型別,可以是 ipv4 或即將支援的 ipv6 |
items | array | 否 | IP 地址列表 |
名稱 | 型別 | 是否必須 | 描述 |
---|---|---|---|
ip | string | 是 | IP 地址 |
exptime | int | 否 | IP 有效期,傳 Unix 時間戳。如果不設定,則 IP 永久有效 |
返回值
- id:新建立的 IP 列表的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.new_ip_list(name = 'ip-list-1',
type = 'ipv4',
items = [
{'ip': '127.0.0.0/24'},
{'ip': '192.168.1.0/24'},
{'ip': '192.168.2.0/24', 'exptime': 1725000000},
{'ip': '192.168.3.0/24', 'exptime': 1735000000}
])
put_ip_list
ok = put_ip_list(rule_id=None, name=None, type='ipv4', items=None)
此方法用於修改指定的 IP 列表。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 用於指定需要修改的 IP 列表的 ID |
name | string | 是 | 用於指定 IP 列表的名稱 |
type | string | 否 | 用於指定 IP 地址的型別,目前僅支援 ‘ipv4’ ,‘ipv6’將在未來推出 |
items | array | 否 | 用於指定 IP 地址列表 |
返回值
- True:表示成功修改指定的 IP 列表。
- False:表示修改指定的 IP 列表失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.put_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.2'} ])
del_ip_list
ok = del_ip_list(rule_id=None)
此方法用於刪除指定的 IP 列表。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
rule_id | number | 是 | 需要刪除的 IP 列表的 ID |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.del_ip_list(rule_id=1)
在此示例中,我們首先使用 Edge2Client 的例項登陸,然後選擇應用程式,最後刪除指定 ID 的 IP 列表。
get_ip_list
data = get_ip_list(rule_id=None)
此方法用於檢視特定的 IP 列表。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 要檢視的 IP 列表的唯一識別符號 ID |
返回值
- data:返回一個字典型別的 IP 列表資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
data = client.get_ip_list(rule_id=1)
append_to_ip_list
ok = append_to_ip_list(rule_id, items)
此方法用於向指定的 IP 列表追加 IP。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 用於指定需要修改的 IP 列表的 ID |
items | array | 是 | 用於指定 IP 地址列表 |
remove_expired | bool | 否 | 是否移除過期的 IP。預設為 False。如果設定為 True,會在追加新 IP 之前先移除已過期的 IP |
返回值
- True:表示成功修改指定的 IP 列表。
- False:表示修改指定的 IP 列表失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.append_to_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ])
ok = client.append_to_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ], remove_expired = True)
remove_from_ip_list
ok = remove_from_ip_list(rule_id, items)
此方法用於從指定的 IP 列表移除 IP。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 用於指定需要修改的 IP 列表的 ID |
items | array | 是 | 用於指定 IP 地址列表 |
返回值
- True:表示成功修改指定的 IP 列表。
- False:表示修改指定的 IP 列表失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
ok = client.remove_from_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ])
node_monitor
data = node_monitor(node_id, start_time=None, end_time=None, step=60)
此方法用於獲取網路節點的 CPU 和記憶體負載相關資訊。
引數
引數名 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
node_id | 數值 | 是 | 閘道器節點的 ID |
start_time | 數值 | 否 | 資料開始時間 |
end_time | 數值 | 否 | 資料結束時間 |
step | 數值 | 否 | 資料獲取的時間間隔 |
返回值
- data:返回一個包含監控資料的列表。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
node_id = 1
data = client.node_monitor(node_id)
new_global_dymetrics
id = new_global_dymetrics(name=None, note=None, interval=60, sql=None)
此方法用於建立全域性動態指標。
引數
名稱 | 資料型別 | 必選 | 描述 |
---|---|---|---|
name | string | 是 | 待建立的全域性動態指標的名稱 |
note | string | 否 | 對該全域性動態指標的備註資訊 |
interval | number | 否 | 統計的時間間隔 |
sql | string | 是 | 用於收集指標的 SQL 語句 |
返回值
- id:新建立的全域性動態指標的唯一識別符號 ID。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
sql = 'select status, count(*) from reqs group by status'
dymetrics_id = client.new_global_dymetrics(name='test', sql=sql)
put_global_dymetrics
ok = put_global_dymetrics(id=None, name=None, note=None, interval=60, sql=None)
此方法用於修改全域性動態指標。
引數
名稱 | 資料型別 | 必選 | 描述 |
---|---|---|---|
id | number | 是 | 全域性動態指標的 ID |
name | string | 是 | 全域性動態指標的名稱 |
note | string | 否 | 備註資訊 |
interval | number | 否 | 資料收集的時間間隔 |
sql | string | 是 | 用於收集指標的 SQL 語句 |
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
id=1
sql = 'select status, count(*) from reqs group by status'
data = client.put_global_dymetrics(id=id, name='test', sql=sql)
del_global_dymetrics
ok = del_global_dymetrics(id)
此方法用於刪除指定的全域性動態指標。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | 需要刪除的全域性動態指標的 ID |
返回值
- True:表示成功刪除全域性動態指標。
- False:表示刪除全域性動態指標失敗。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
ok = client.del_global_dymetrics(dymetrics_id)
get_global_dymetrics
data = get_global_dymetrics(id)
此方法用於獲取指定的全域性動態指標。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
id | number | 是 | 全域性動態指標的 ID |
返回值
- data:返回的是一個型別為
dict
的全域性動態指標資訊。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_global_dymetrics(dymetrics_id)
get_all_global_dymetrics
data = get_all_global_dymetrics()
此方法用於獲取所有全域性動態指標。
返回值
- data:返回一個包含全域性動態指標資訊的
list
型別資料。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_dymetrics()
get_global_dymetrics_data
data = get_global_dymetrics_data(id, chart_type='line', start_time=None, end_time=None, node_id=None)
此方法用於獲取全域性動態指標資料,預設範圍為最近的 30 分鐘。
引數
名稱 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
id | number | 是 | 動態指標的 ID |
chart_type | string | 否 | 圖表型別,預設為 ’line’ |
start_time | number | 否 | 開始時間,預設為 None |
end_time | number | 否 | 結束時間,預設為 None |
node_id | number | 否 | Edge Node 節點的 ID,預設為 None |
返回值
- data:返回值是一個列表,包含全域性動態指標資料。
示例
from edge2client import Edge2Client
# 建立並登入客戶端
client = Edge2Client(host, username, password)
client.login()
dymetrics_id = 1
data = client.get_global_dymetrics_data(dymetrics_id)
use_dns_app
ok = use_dns_app(dns_id)
此方法用於切換當前例項所操作的 DNS 應用。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
dns_id | number | 是 | 需要操作的 DNS 應用的 id |
返回值
- True:表示切換成功。
- False:表示切換失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
client.use_dns_app(dns_id)
new_dns_app
dns_id = new_dns_app(**kwargs)
此方法用於建立新的 DNS 應用。
引數
名稱 | 資料型別 | 是否必選 | 引數描述 |
---|---|---|---|
zone | string | 是 | 域名 |
authority | list | 是 | NS 記錄 |
soa_email | string | 否 | SOA EMAIL 記錄 |
返回內容
- dns_id:返回新建立的 DNS 應用的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
authority = [
{'domain': 'ns1.foo.com', 'ttl': '2 [hour]'},
{'domain': 'ns2.foo.com', 'ttl': '1 [day]'}
]
soa_email = 'admin@foo.com'
dns_id = client.new_dns_app(
authority=authority,
soa_email=soa_email,
zone='foo.com')
put_dns_app
ok = put_dns_app(**kwargs)
此方法用於修改 DNS 應用的相關資訊。
引數
名稱 | 資料型別 | 是否必填 | 描述資訊 |
---|---|---|---|
dns_id | 數值型 | 是 | DNS 應用的唯一標識 id |
zone | 字串型 | 是 | DNS 的域名記錄 |
authority | 列表型 | 是 | DNS 的 NS 記錄 |
soa_email | 字串型 | 否 | DNS 的 SOA EMAIL 記錄 |
返回值
- True:表示資訊修改成功。
- False:表示資訊修改失敗。
示例
以下示例展示如何修改 dns_id 為 1 的應用。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
authority = [
{'domain': 'ns1.foo.com', 'ttl': '4 [hour]'},
{'domain': 'ns2.foo.com', 'ttl': '1 [day]'}
]
ok = client.put_dns_app(
dns_id=dns_id,
authority=authority,
soa_email=soa_email,
zone='foo.com')
get_dns_app
data = get_dns_app(dns_id)
此方法用於獲取 DNS 應用的相關資訊。
引數
引數名 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
dns_id | number | 是 | 代表 DNS 應用的唯一 id |
返回值描述
- data:一個
dict
型別的資料,包含 DNS 應用的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
data = client.get_dns_app(dns_id)
del_dns_app
ok = del_dns_app(dns_id)
此方法用於刪除指定的 DNS 應用。
引數
下表列出了此方法所需的引數。
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
dns_id | number | 是 | 需要刪除的 DNS 應用的 id |
返回值
- True:表示成功刪除了 DNS 應用。
- False:表示刪除 DNS 應用失敗。
示例
以下示例展示瞭如何刪除指定的 DNS 應用。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
data = client.del_dns_app(dns_id)
new_dns_record
record_id = new_dns_record(**kwargs)
此方法用於新增 DNS 記錄。
引數
名稱 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
sub_domain | string | 是 | 子域名 |
line | string | 是 | 線路,參照同目錄下的 Line.txt 檔案 |
record_type | string | 是 | 記錄的型別,可選值為 [A, TXT, MX, CNAME, CAA] |
text | string | 否 | 當記錄型別為 [TXT, CAA] 時,需要填寫此欄位 |
ip | string | 否 | 當記錄型別為 IP 時,需填寫此欄位 |
gateway | number | 否 | 當記錄指向特定閘道器叢集時,需填寫此欄位 |
domain | string | 否 | 當記錄型別為域名時,需填寫此欄位 |
priority | number | 否 | 當記錄型別為 MX 時,需填寫此欄位 |
返回值
- record_id:新增的 DNS 記錄的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
record_id = client.new_dns_record(
sub_domain='bar', record_type='TXT', text='text string')
client.new_dns_record(
sub_domain='bar', record_type='A', ip='127.0.0.1')
client.new_dns_record(
sub_domain='bar', record_type='CNAME', domain='test.com')
client.new_dns_record(
sub_domain='bar', record_type='MX', domain='test.com', priority=3)
put_dns_record
ok = put_dns_record(**kwargs)
此方法用於修改 DNS 記錄。
引數
名稱 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
record_id | number | 是 | DNS 記錄的 id |
sub_domain | string | 是 | 子域名 |
line | string | 是 | 線路,參考同目錄下的 Line.txt 檔案 |
record_type | string | 是 | 記錄的型別,可選值包括 [A, TXT, MX, CNAME, CAA] |
text | string | 否 | 當記錄型別為 [TXT, CAA] 時,需填寫該欄位 |
ip | string | 否 | 當記錄型別為 IP 時,需填寫該欄位 |
domain | string | 否 | 當記錄型別為域名時,需填寫該欄位 |
priority | number | 否 | 當記錄型別為 MX 時,需填寫該欄位 |
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
record_id = 1
ok = client.put_dns_record(
record_id=record_id,
sub_domain='a.bar',
record_type='TXT',
text='text string')
get_dns_record
data = get_dns_record(record_id)
此方法用於獲取 DNS 記錄。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
record_id | number | 是 | DNS 記錄的 id |
返回值
- data:返回一個
dict
型別的 DNS 記錄資訊。
示例
如需獲取 record_id 為 1 的 DNS 記錄資訊,可以參考以下步驟。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
record_id = 1
data = client.get_dns_record(record_id)
del_dns_record
ok = del_dns_record(record_id)
此方法用於刪除 DNS 記錄。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
record_id | number | 是 | 表示 DNS 記錄的 id |
返回值
- 若成功刪除,則返回 True。
- 若刪除失敗,則返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
dns_id = 1
use_dns_app(dns_id)
record_id = 1
ok = client.del_dns_record(record_id)
在該示例中,我們首先建立了一個 Edge2Client 客戶端,並用特定的主機,使用者名稱和密碼進行登入。然後,我們選擇使用具有特定 id 的 DNS 應用。最後,我們嘗試使用該客戶端刪除具有特定 id 的 DNS 記錄,並將結果儲存在 ok 中。
new_global_upstream
up_id = new_global_upstream(**kwargs)
此方法用於新增上游,並返回新建立的全域性上游的 id。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | 上游的名稱 |
servers | list | 是 | 上游的詳細資訊 |
ssl | bool | 否 | 是否啟用 HTTPS 協議,預設為 False |
health_checker | dict | 否 | 健康檢查的詳細配置項,預設為 None |
gid | array | 是 | 使用者組的 id 列表,例如[1] |
返回值
- up_id:新建上游的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = client.new_global_upstream(
name='origin-upstream',
servers=[
{'ip': '172.22.31.1', 'port': 80},
{'ip': '172.22.31.2', 'port': 80, 'weight': 2}
])
update_global_upstream
ok = update_global_upstream(**kwargs)
此方法用於更新全域性上游資訊。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | 上游名稱 |
servers | list | 是 | 上游資訊列表 |
ssl | bool | 否 | 是否使用 HTTPS 協議,預設值為 False |
health_checker | dict | 否 | 健康檢查的詳細配置,預設值為 None |
gid | array | 是 | 使用者組 id 列表,示例:[1] |
返回值
- True:操作成功。
- False:操作失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = 1
ok = client.update_global_upstream(up_id,
name='origin-upstream',
servers=[
{'domain': 'test.com', 'port': 8080},
{'ip': '172.22.31.2', 'port': 8080, 'weight': 1}
],
health_checker={
'type': 'http',
'http_req_uri': '/status',
'http_req_host': 'test.com',
'interval': 3,
'interval_unit': 'sec',
'timeout': 1,
'fall': 3,
'rise': 2,
'valid_statuses': [200, 302],
'report_interval': 3,
'report_interval_unit': 'min'
})
get_global_upstream
data = get_global_upstream(up_id)
此方法用於獲取全域性上游資訊。
引數
名稱 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
up_id | string | 否 | 上游的 ID |
返回值
- True:當獲取資訊成功時。
- False:當獲取資訊失敗時。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = 1
data = client.get_global_upstream(up_id)
del_global_upstream
del_global_upstream(up_id)
此方法用於刪除全域性上游。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
up_id | string | 否 | 上游的唯一識別 ID |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = 1
operation_status = client.del_global_upstream(up_id)
get_all_global_upstreams
upstreams = client.get_all_global_upstreams()
此方法用於獲取全部的上游資訊。
返回值
- upstreams:返回一個包含所有全域性上游資訊的
list
型別變數。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
upstreams = client.get_all_global_upstreams()
new_global_k8s_upstream
up_id = new_global_k8s_upstream(**kwargs)
此方法用於建立新的全域性 Kubernetes 上游,並返回新建立的上游的 ID。
引數
名稱 | 資料型別 | 是否必填 | 引數描述 |
---|---|---|---|
name | string | 是 | 定義上游的名稱 |
k8s_services | list | 是 | 提供 k8s 服務的詳細資訊 |
ssl | bool | 否 | 定義是否使用 HTTPS 協議,預設值為 False |
health_checker | dict | 否 | 對上游的健康狀況進行檢查的詳細配置,預設值為 None |
gid | array | 是 | 使用者組 ID 列表,例如:[1] |
返回值
- up_id: 新建立的 k8s 上游的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
k8s_up_id = client.new_global_k8s_upstream(
name = 'k8s-upstream',
k8s_services = [
{
'k8s' : 1,
'k8s_namespace' : 'default',
'k8s_service' : 'foo',
'k8s_service_port' : 80,
}
])
put_global_k8s_upstream
ok = put_global_k8s_upstream(**kwargs)
此方法用於修改全域性 Kubernetes 上游的資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 是 | 定義上游名稱 |
k8s_services | list | 是 | 當上遊是 Kubernetes 服務時的資訊 |
ssl | bool | 否 | 是否採用 HTTPS 協議,預設值為 False |
health_checker | dict | 否 | 對健康檢查的詳細配置,預設值為 None |
gid | array | 是 | 使用者組 id 列表,如 [1] |
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = 1
ok = client.put_global_k8s_upstream(up_id,
name='k8s-upstream',
k8s_services = [
{
'k8s' : 1,
'k8s_namespace' : 'default',
'k8s_service' : 'foo',
'k8s_service_port' : 80,
}
],
health_checker={
'type': 'http',
'http_req_uri': '/status',
'http_req_host': 'test.com',
'interval': 3,
'interval_unit': 'sec',
'timeout': 1,
'fall': 3,
'rise': 2,
'valid_statuses': [200, 302],
'report_interval': 3,
'report_interval_unit': 'min'
})
fetch_global_k8s_upstream
data = fetch_global_k8s_upstream(up_id)
此方法用於獲取全域性 Kubernetes 上游的資訊。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
up_id | 字串 | 是 | 上游的唯一識別 ID |
返回值
- data:返回一個包含 Kubernetes 上游資訊的字典型別值。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = '1'
data = client.fetch_global_k8s_upstream(up_id)
del_global_k8s_upstream
del_global_upstream(up_id)
此方法用於刪除全域性 k8s 上游。
引數
名稱 | 資料型別 | 是否必選 | 引數描述 |
---|---|---|---|
up_id | string | 是 | 上游的唯一標識 ID |
返回值
- 如果刪除成功,返回 True。
- 如果刪除失敗,返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
up_id = '1'
ok = client.del_global_k8s_upstream(up_id)
get_all_global_k8s_upstreams
upstreams = client.get_all_global_k8s_upstreams()
此方法用於獲取所有的 Kubernetes 上游資訊。
返回值
- upstreams:返回 Kubernetes 上游資訊的列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
upstreams = client.get_all_global_k8s_upstreams()
set_global_cert_key
cert_id = set_global_cert_key(**kwargs)
用於新增全域性 SSL 證書。
引數
引數名 | 型別 | 是否必需 | 描述 |
---|---|---|---|
key | 字串 | 是 | 私鑰內容 |
cert | 字串 | 否 | 伺服器證書內容 |
ca_chain | 字串 | 否 | CA 鏈證書內容 |
返回值
- cert_id:新建全域性證書的 ID。
示例
以下示例展示瞭如何上傳本地的 key.pem
和 cert.pem
檔案以建立全域性證書。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
key_file = os.path.join('tests', 'key.pem')
cert_file = os.path.join('tests', 'cert.pem')
with open(key_file) as f:
key = f.read()
with open(cert_file) as f:
cert = f.read()
cert_id = client.set_global_cert_key(key=key, cert=cert)
put_global_cert_key
ok = put_global_cert_key(**kwargs)
此方法用於修改全域性 SSL 證書。
引數
引數名 | 型別 | 是否必要 | 描述 |
---|---|---|---|
cert_id | 數字 | 是 | 證書的 id |
key | 字串 | 是 | 私鑰的內容 |
cert | 字串 | 否 | 證書的內容 |
ca_chain | 字串 | 否 | CA 鏈的內容 |
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
cert_id = 1
new_key_file = os.path.join('tests', 'new_key.pem')
new_cert_file = os.path.join('tests', 'new_cert.pem')
with open(new_key_file) as f:
new_key = f.read()
with open(new_cert_file) as f:
new_cert = f.read()
ok = client.put_global_cert_key(cert_id=cert_id, key=new_key, cert=new_cert)
get_global_cert_key
data = get_global_cert_key(cert_id)
此方法用於獲取與 cert_id 相關聯的 SSL 證書資訊。
引數
名稱 | 型別 | 是否必需 | 描述 |
---|---|---|---|
cert_id | number | 是 | 證書的唯一識別符號 id |
返回值
- data:返回一個
dict
型別資料,其中包含了全域性證書的所有資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
cert_id = 1
data = client.get_global_cert_key(cert_id)
del_global_cert_key
ok = del_global_cert_key(cert_id)
此方法用於刪除指定的全域性 SSL 證書。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
cert_id | number | 是 | 將被刪除的證書的 id |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
cert_id = 1
ok = client.del_global_cert_key(cert_id)
add_global_user
uid = add_global_user(name, pwd, gid)
此方法用於新增全域性使用者。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | 需要新增的全域性使用者名稱 |
pwd | string | 是 | 對應的全域性使用者密碼 |
gid | array | 是 | 包含使用者組 id 的列表,如 [1] |
返回值
- uid:新增的全域性使用者的唯一識別 ID。
注意:全域性使用者的 ID 與應用級別的使用者 ID 需要區分。
示例
以下示例展示瞭如何建立一個名為 global_demo_user
,具有建立新應用許可權,且其角色為普通使用者的全域性使用者。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
username='global_demo_user'
uid = client.add_global_user(name=username, pwd=pwd, gid=[1])
search_global_user
user_info = search_global_user(name)
此方法用於根據使用者名稱搜尋全域性使用者資訊。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 是 | 全域性使用者的名稱 |
返回值
- user_info:
dict
型別,包含搜尋到的使用者資訊及其相關許可權資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
username = 'global_demo_user'
data = client.search_global_user(username)
user_id = data.get('id')
get_all_global_users
data = get_all_global_users(detail)
本函式用於獲取所有全域性使用者的資訊。
引數
名稱 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
detail | number | 否 | 取值為 0 或 1,用於指示是否返回使用者的詳細資訊 |
返回值
- data:返回一個
list
型別的資料,其每一個元素均為dict
型別,包含對應全域性使用者的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_users()
data = client.get_all_global_users(True)
new_global_rule
rule_id = new_global_rule(**kwargs)
此方法用於新增全域性規則。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
condition | 列表 | 否 | 規則觸發的條件 |
conseq | 字典 或 列表 | 否 | 規則所包含的動作 |
gid | 列表 | 否 | 使用者組的 ID 列表 |
返回值
- rule_id:成功建立的全域性規則的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
condition = [
{'var': 'host', 'val': 'con.' + APEX},
{'var': ['req-header', 'Referer'], 'vals': [['foo\d+', 'rx'], 'foo.com']}
]
conseq = {
'enable-websocket': {},
'redirect': {'url': '/cn/2017/', 'code': 302}
}
rule_id = client.new_global_rule(condition=condition, conseq=conseq,gid=[1])
put_global_rule
ok = put_global_rule(**kwargs)
此方法用於修改全域性規則。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 規則的唯一標識 |
condition | list | 否 | 定義規則的條件 |
conseq | dict or list | 否 | 規定規則的行動 |
gid | list | 否 | 使用者組的 id 列表 |
返回值
- True:表示成功。
- False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
conseq['redirect']['url'] = '/cn/2018/'
ok = client.put_global_rule(
rule_id=rule_id, condition=condition, conseq=conseq)
get_global_rule
data = get_global_rule(rule_id)
此方法用於獲取全域性規則資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 規則的唯一識別符號 id |
返回值
- data:返回值是一個
dict
型別,包含全域性規則的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
data = client.get_global_rule(rule_id)
這個示例展示瞭如何使用 Edge2Client 的例項獲取特定 id 的全域性規則資訊。
get_global_action_by_name
rule_id = get_global_action_by_name(name)
此方法用於根據給定的應用名來獲取相應的全域性自定義動作。
引數
引數名 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | 規則名稱 |
返回值
- data:返回一個包含全域性規則資訊的
dict
型別資料。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_name = 'test-actions'
rule_id = client.get_global_action_by_name(rule_name)
get_all_global_rules
data = get_all_global_rules()
此方法用於獲取所有的全域性規則。
返回值
- data:這是一個
list
型別的全域性規則資訊列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_rules()
del_global_rule
ok = del_global_rule(rule_id)
此方法用於刪除全域性規則。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 規則的唯一識別符號 |
返回值
- 返回 True:表示規則成功刪除。
- 返回 False:表示規則刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
ok = client.del_global_rule(rule_id)
此示例展示瞭如何使用 Edge2Client 物件的 del_global_rule 方法來刪除指定的全域性規則。
new_global_var
var_id = new_global_var(**kwargs)
此方法用於新增全域性變數。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | 定義的變數名稱 |
var_type | string | 是 | 指定的變數型別 |
default | string | 是 | 設定的預設值 |
gid | list | 否 | 使用者組 id 陣列 |
返回值
- var_id:若建立成功,則返回新建變數的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = client.new_global_var(
name='is-whitelist', var_type='string', default='no')
put_global_var
ok = put_global_var(**kwargs)
此方法用於修改全域性變數。
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
var_id | number | 是 | 變數的唯一識別符號 |
name | string | 是 | 變數的名稱 |
var_type | string | 是 | 變數的資料型別 |
default | string | 是 | 變數的預設值 |
gid | list | 否 | 使用者組的 ID 列表 |
返回值
- True:表示全域性變數修改成功。
- False:表示全域性變數修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
ok = client.put_global_var(
var_id=var_id,
name='is-whitelist',
var_type='string',
default='yes',
gid=[1])
在此示例中,我們首先建立了一個 Edge2Client 物件並進行登入。然後,使用 put_global_var() 函式,透過指定對應的引數,修改 ID 為 1 的全域性變數名稱為’is-whitelist’,型別為’string’,預設值為’yes’,並將其關聯到 ID 為 1 的使用者組。
get_global_var
data = get_global_var(var_id)
此方法用於獲取全域性變數。
引數
引數名 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
var_id | number | 是 | 全域性變數 id |
返回值
- data:返回值為一個
dict
型別,包含全域性變數的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
data = client.get_global_var(var_id)
get_all_global_vars
data = get_all_global_vars()
此方法用於獲取所有全域性變數。
返回值
- data:此為一個 list 型別的物件,其中每一個元素都是一個 dict 型別,包含了全域性變數的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password) # 建立一個 Edge2Client 例項
client.login() # 登陸
data = client.get_all_global_vars() # 獲取所有全域性變數
del_global_var
ok = del_global_var(var_id)
此方法用於根據全域性變數的 ID 進行刪除操作。
引數
| 名稱 | 資料型別 | 是否必須 | 描述資訊 | | var_id | number | 是 | 指定需要刪除的全域性變數的 ID |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
ok = client.del_global_var(var_id)
get_global_ngx_config
data = get_global_ngx_config()
此方法用於獲取全域性的 nginx 配置資訊。
返回值
- data:返回一個
dict
型別的全域性 ngx 配置資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_global_ngx_config()
set_global_ngx_config
data = set_global_ngx_config(opts)
此方法設定全域性的 nginx 配置資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
access_log_buffer | number | 否 | 訪問日誌的緩衝區大小 |
access_log_buffer_unit | [‘k’, ’m’, ‘g’] | 否 | 訪問日誌緩衝區大小的單位 |
access_log_flush | number | 否 | 訪問日誌在記憶體中的最大保留時間 |
enable_access_log | bool | 否 | 是否啟用訪問日誌 |
access_log_formats | dict | 否 | 訪問日誌的格式 |
avoid_gen_error_log | bool | 否 | 是否避免生成錯誤日誌 |
client_body_timeout | number | 否 | 客戶端請求體的超時時間 |
client_body_timeout_unit | [’s’, ’m’] | 否 | 客戶端請求體超時時間的單位 |
client_header_timeout | number | 否 | 客戶端請求頭的超時時間 |
client_header_timeout_unit | [’s’, ’m’] | 否 | 客戶端請求頭超時時間的單位 |
client_max_body_size | number | 否 | 客戶端請求體的最大尺寸 |
client_max_body_size_unit | [‘k’, ’m’] | 否 | 客戶端請求體最大尺寸的單位 |
client_header_buffer_size | number | 否 | 客戶端請求頭緩衝區的大小 |
client_header_buffer_size_unit | [‘k’, ’m’] | 否 | 客戶端請求頭緩衝區大小的單位 |
max_client_request_line_size | number | 否 | 客戶端請求行的最大尺寸 |
max_client_request_header_size | [‘k’, ’m’] | 否 | 客戶端請求頭的最大尺寸 |
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
default | bool | 否 | 設定該日誌格式是否為預設格式。注意:配置中至少需要一個預設的日誌格式 |
name | string | 是 | 該訪問日誌格式的名稱,需要全域性唯一 |
format | string | 是 | 該訪問日誌的格式,需按照 nginx log_format 指令設定 |
返回值
- True:設定成功。
- False:設定失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
opts = {'keepalive_timeout': 10, 'enable_open_file_cache': False}
ok = client.set_global_ngx_config(opts)
get_global_misc_config
data = get_global_misc_config()
此方法用於獲取全域性的雜項配置資訊。
返回值
- data:返回一個
dict
型別,其中包含了雜項的配置資訊。
示例
from edge2client import Edge2Client
# 建立客戶端並登陸
client = Edge2Client(host, username, password)
client.login()
# 獲取全域性雜項配置資訊
data = client.get_global_misc_config()
set_global_misc_config
ok = set_global_misc_config(opts)
此方法用於設定全域性雜項配置資訊。
引數
| 引數名 | 資料型別 | 是否必須 | 描述 | | opts | 字典型別(dict) | 否 | 雜項(misc)配置項 |
返回值
- True:表示設定成功。
- False:表示設定失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
opts = {'enabled_req_id': True}
ok = client.set_global_misc_config(opts)
get_request_id_status
status = get_request_id_status()
此方法用於查詢請求 id 的狀態。
返回值
- True:表示請求 id 已啟用。
- False:表示請求 id 已禁用。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
status = client.get_request_id_status()
enable_request_id
ok = enable_request_id()
這個方法用於啟用請求 id 功能。
返回值
- True:表示啟用成功。
- False:表示啟用失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.enable_request_id()
disable_request_id
ok = disable_request_id()
此方法用於禁用請求 ID 功能。
返回值
- True:表示請求 ID 功能成功被禁用。
- False:表示請求 ID 功能禁用失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.disable_request_id()
new_global_waf_rule
rule_id = new_global_waf_rule(**kwargs)
此方法用於新增全域性 WAF 規則。
引數
引數名 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
name | string | 是 | 指定的規則名稱 |
code | string | 是 | 對應規則的 edge 語言程式碼 |
返回值
- rule_id:返回新建立的全域性 WAF 規則集的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
waf_rule_id = client.new_global_waf_rule(
name='foo',
code="uri-arg('foo') => waf-mark-risk(level: 'definite', msg: 'found foo');")
在這個例子中,我們首先建立了一個 Edge2Client 例項,然後使用 new_global_waf_rule
方法建立了一個新的全域性 WAF 規則,並將其規則 ID 儲存在 waf_rule_id
中。規則名稱為 ‘foo’,edge 語言程式碼為 “uri-arg(‘foo’) => waf-mark-risk(level: ‘definite’, msg: ‘found foo’);"。
put_global_waf_rule
ok = put_global_waf_rule(**kwargs)
此方法用於修改全域性 WAF 規則。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 規則的唯一識別符號 id |
name | string | 是 | 規則的名稱 |
code | string | 是 | 規則的 edge 語言指令碼 |
返回值
- True:表示修改成功。
- False:表示修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
waf_rule_id = 1
ok = client.put_global_waf_rule(
rule_id=waf_rule_id,
name='bar',
code="uri-arg('bar') => waf-mark-risk(level: 'definite', msg: 'found bar');")
在此示例中,我們透過 put_global_waf_rule
函式修改了 id 為 1 的全域性 WAF 規則。
get_global_waf_rule
data = get_global_waf_rule(rule_id)
此方法透過提供的規則集 ID(rule_id)來獲取全域性的 WAF 規則集。
引數
| 名稱 | 資料型別 | 是否必選 | 描述資訊 | | rule_id | number | 是 | WAF 規則集的唯一識別符號 |
返回值
- data:返回一個包含 WAF 規則集詳細資訊的字典。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
waf_rule_id = 1
data = client.get_global_waf_rule(waf_rule_id)
del_global_waf_rule
ok = del_global_waf_rule(rule_id)
此方法用於刪除全域性 WAF 規則。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | | rule_id | number | 是 | 規則集的 ID |
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
waf_rule_id = 1
ok = client.del_global_waf_rule(waf_rule_id)
get_all_global_waf_rules
data = get_all_global_waf_rules(detail=False)
此方法用於獲取所有全域性 WAF 規則。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
detail | bool | 否 | 表示是否展示規則的詳細資訊,預設值為 False |
返回值
- data:返回一個
list
型別的 WAF 規則集資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_waf_rules()
new_global_action
rule_id = new_global_action(**kwargs)
此方法用於新增新的全域性自定義動作。
引數
名稱 | 資料型別 | 是否必填 | 描述 |
---|---|---|---|
name | string | 是 | 自定義動作的名稱 |
condition | list | 否 | 自定義動作執行的條件 |
conseq | dict or list | 是 | 執行的自定義動作 |
gid | list | 否 | 使用者組的 id 列表 |
返回值
- rule_id:返回新建立的全域性自定義動作的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
name = 'test'
condition = [
{'var': 'req-method', 'vals': ['GET', 'POST', 'HEAD']}
]
conseq = [
{
'exit': {'code': 403}
}
]
action_id = client.new_global_action(
name=name, condition=condition, conseq=conseq, gid=[1, 2])
put_global_action
ok = put_global_action(**kwargs)
此方法用於修改全域性自定義動作。
引數
引數 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
action_id | number | 是 | 自定義動作的 id |
name | string | 否 | 自定義動作的名稱 |
condition | list | 否 | 自定義動作的執行條件 |
conseq | dict or list | 否 | 自定義動作的結果 |
gid | list | 否 | 使用者組 id 列表 |
返回值
- True:代表操作成功。
- False:代表操作失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
action_id = 1
ok = client.put_global_action(
name=name,
action_id=action_id,
condition=condition,
conseq=conseq,
gid=[1])
get_global_action
data = get_global_action(action_id)
此方法用於獲取全域性自定義動作。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
action_id | number | 是 | 自定義動作的 id |
返回值
- data:返回的資料為字典型別,包含全域性自定義動作的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
action_id = 1
data = client.get_global_action(action_id)
del_global_action
ok = del_global_action(action_id)
此方法用於刪除指定的全域性自定義動作。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
action_id | number | 是 | 自定義動作的 id |
返回值
- 返回 True:表示刪除成功。
- 返回 False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
action_id = 1
ok = client.del_global_action(action_id)
count_global_actions
count = count_global_actions()
此方法用於獲取全域性自定義動作的總數。
返回值
- count:返回全域性自定義動作的總數。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
count = client.count_global_actions()
get_all_global_actions
data = get_all_global_actions()
此方法用於獲取所有全域性自定義動作。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
page | number | 否 | 表示頁數 |
pagesize | number | 否 | 表示每頁顯示的條目數量 |
返回值
- data:返回一個包含所有全域性自定義動作資訊的列表。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_global_actions()
upload_static_file
file_id = upload_static_file(**kwargs)
此方法用於上傳靜態檔案。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
content | string | 是 | 靜態檔案的內容 |
label | string | 是 | 靜態檔案的標籤 |
file_type | string | 否 | 靜態檔案的型別 |
gid | list | 否 | 使用者組 id 列表 |
返回值
- file_id:返回新上傳的靜態檔案的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
file_id = client.upload_static_file(content='test_content', label='500.html', gid=[1])
get_static_file
data = get_static_file(file_id)
此方法用於獲取指定的靜態檔案配置。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
file_id | number | 是 | 需要獲取的靜態檔案的 ID |
返回值
- data:返回一個
dict
型別的物件,包含所獲取的靜態檔案的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
file_id = 1
data = client.get_static_file(file_id)
在這個示例中,我們首先從 edge2client 模組匯入了 Edge2Client 類,然後建立了一個 Edge2Client 物件並進行登入。之後,我們呼叫了其 get_static_file 方法,獲取了 ID 為 1 的靜態檔案的配置資訊,並將其儲存在 data 變數中。
del_static_file
ok = del_static_file(file_id)
此方法用於刪除已上傳的靜態檔案。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
file_id | number | yes | 待刪除的靜態檔案的 ID |
返回值
- True:表示檔案刪除成功。
- False:表示檔案刪除失敗。
示例
from edge2client import Edge2Client
# 建立 Edge2Client 例項
client = Edge2Client(host, username, password)
# 登入
client.login()
# 設定要刪除的檔案 ID
file_id = 1
# 刪除指定 ID 的靜態檔案
ok = client.del_static_file(file_id)
new_cluster_group
group_id = new_cluster_group(group_name)
此方法用於新增新的叢集組。
引數
名稱 | 資料型別 | 是否必須 | 詳細描述 |
---|---|---|---|
group_name | string | 是 | 新增叢集組的名稱 |
返回值
- id:返回新建的叢集組的唯一識別符號 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
group_id = client.new_cluster_group('foo')
put_cluster_group
ok = put_cluster_group(**kwargs)
此方法用於修改叢集組資訊。
引數
引數名 | 資料型別 | 必選 | 描述 |
---|---|---|---|
group_id | number | 是 | 叢集組的唯一識別符號 |
group_name | string | 是 | 需要更改的叢集組名稱 |
返回值
- True:表示成功修改叢集組資訊。
- False:表示修改叢集組資訊失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
group_id = 1
ok = client.put_cluster_group(group_id=group_id, group_name='bar')
此示例演示瞭如何使用 put_cluster_group
函式來修改具有指定 group_id
的叢集組名稱為 ‘bar’。
get_cluster_group
data = get_cluster_group(group_id)
此方法用於獲取叢集組的詳細資訊。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
group_id | 數值型 | 是 | 叢集組的唯一識別符號 |
返回值
- data:返回一個
dict
型別的叢集組詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
group_id = 1
data = client.get_cluster_group(group_id)
get_all_cluster_groups
data = get_all_cluster_groups()
此方法用於獲取所有叢集組的資訊。
返回值
- data:這是一個
list
型別,包含了所有叢集組的資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_cluster_groups()
del_cluster_group
ok = del_cluster_group(group_id)
此方法用於刪除叢集組資訊。
引數
引數名 | 資料型別 | 是否必填 | 描述資訊 |
---|---|---|---|
group_id | number | 是 | 需要刪除的叢集組的編號 |
返回值
- 返回 True:表示叢集組資訊刪除成功。
- 返回 False:表示叢集組資訊刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
group_id = 1
ok = client.del_cluster_group(group_id)
在以上示例中,首先初始化一個 Edge2Client 物件並登陸,然後指定要刪除的叢集組的編號,並呼叫 del_cluster_group 方法進行刪除操作。
put_proxy_rule
ok = put_proxy_rule(**kwargs)
此方法用於修改上游代理規則。
引數
名稱 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
rule_id | number | 是 | 規則的唯一識別符號 |
proxy | list | 是 | 用於定義代理規則的列表 |
返回值
- True:表示規則修改成功。
- False:表示規則修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
proxy_rule = []
ok = client.put_proxy_rule(rule_id=rule_id, proxy=proxy_rule)
new_global_k8s
k8s_id = new_global_k8s(name=None, host=None, port=None, ssl_verify=True, token=None)
此方法用於新增新的 k8s 叢集連線引數。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | k8s 叢集的名稱 |
host | string | 否 | k8s 叢集的地址 |
domain | string | 否 | k8s 叢集的域名,host 或 domain 兩者必填一項且只能填一項 |
port | number | 是 | k8s 叢集的埠 |
connect_timeout | number | 否 | k8s 叢集的連線超時時間,單位為秒,預設為 5 秒 |
read_timeout | number | 否 | k8s 叢集的讀取資料超時時間,單位為秒,預設為 5 秒 |
ssl_verify | bool | 否 | 是否需要進行 SSL 校驗 |
token | string | 是 | k8s 叢集的 api token |
返回值
- k8s_id:新建立的 k8s 叢集的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
k8s_id = client.new_global_k8s(name = "k8s", host = "192.168.1.1", port = 443, token = "xxxxx")
put_global_k8s
ok = put_global_k8s(**kwargs)
此方法用於修改 Kubernetes 叢集的連線引數。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
k8s_id | number | 是 | Kubernetes 叢集的唯一識別符號 |
name | string | 否 | Kubernetes 叢集的名稱 |
host | string | 否 | Kubernetes 叢集的主機地址 |
domain | string | 否 | Kubernetes 叢集的域名,host 或 domain 中至少需要一個,且不能同時填寫 |
port | number | 否 | Kubernetes 叢集的連線埠 |
connect_timeout | number | 否 | Kubernetes 叢集的連線超時時間,單位為秒 |
read_timeout | number | 否 | Kubernetes 叢集的資料讀取超時時間,單位為秒 |
ssl_verify | bool | 否 | 是否需要進行 SSL 校驗 |
token | string | 否 | Kubernetes 叢集的 API 令牌 |
返回值
- 返回 True:表示成功。
- 返回 False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.put_global_k8s(k8s_id = 1, name = "k8s", host = "192.168.1.1", port = 443, token = "xxxxx")
get_global_k8s
data = get_global_k8s(k8s_id)
此方法用於獲取 Kubernetes 叢集的連線引數資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
k8s_id | number | 是 | Kubernetes 叢集的唯一識別符號 |
返回值
- data:返回一個
dict
型別的資料,包含 Kubernetes 叢集的詳細資訊。
示例
from edge2client import Edge2Client
# 建立一個 Edge2Client 例項
client = Edge2Client(host, username, password)
# 登入客戶端
client.login()
# 使用 get_global_k8s 方法獲取 Kubernetes 叢集資訊
data = client.get_global_k8s(k8s_id = 1)
get_k8s_service_detail
data = get_k8s_service_detail()
此方法用於獲取 k8s 叢集中定義的服務相關資訊。
引數
名稱 | 資料型別 | 是否必選 | 詳細描述 |
---|---|---|---|
k8s_id | number | 是 | k8s 叢集的唯一識別符號 |
返回值
- 返回一個
dict
型別的資料,包含 k8s 叢集的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_k8s_service_detail(k8s_id = 1)
get_all_global_k8s
data = get_all_global_k8s()
此方法用於獲取所有全域性 Kubernetes 叢集的 id。
返回值
- data:返回一個
list
型別的 Kubernetes 叢集資訊。
應用示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_k8s()
del_global_k8s
ok = del_global_k8s(k8s_id)
此方法用於刪除 k8s 叢集的連線引數。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
k8s_id | number | 是 | k8s 叢集的唯一識別符號 |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.del_global_k8s(k8s_id = 1)
以上程式碼展示瞭如何使用 Edge2Client 刪除特定的 k8s 叢集連線引數。
update_proxy_rule
result = update_proxy_rule(**kwargs)
更新指定的上游代理規則。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 規則的唯一識別符號 |
proxy | list | 是 | 代理規則的詳細資訊 |
返回值
- True:代表成功更新代理規則。
- False:代表更新代理規則失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
rule_id = 1
proxy_rule = [...]
result = client.update_proxy_rule(rule_id=rule_id, proxy=proxy_rule)
此方法用於更新全域性級別的 IP 規則列表。
new_global_ip_list
data = new_global_ip_list(name=None, type='ipv4', items=None)
此方法用於建立新的全域性 IP 列表。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 是 | 要建立的全域性 IP 列表的名稱 |
type | string | 否 | IP 地址的型別,當前支援 ipv4 或 ipv6 (即將推出) |
items | array | 否 | 包含的 IP 地址列表 |
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
ip | string | 是 | IP 地址 |
exptime | int | 否 | IP 有效期,傳 Unix 時間戳。如果不設定,則 IP 永久有效 |
返回值
- id:新建立的全域性 IP 列表的唯一標識 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.new_global_ip_list(name = 'ip-list-1',
type = 'ipv4',
items = [
{'ip': '127.0.0.0/24'},
{'ip': '192.168.1.0/24'},
{'ip': '192.168.2.0/24', 'exptime': 1725000000},
{'ip': '192.168.3.0/24', 'exptime': 1735000000}
])
put_global_ip_list
data = put_global_ip_list(rule_id=None, name=None, type='ipv4', items=None)
此方法用於修改指定的全域性級別 IP 列表。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 指定的全域性級別 IP 列表的 ID |
name | string | 是 | 需要修改的全域性級別 IP 列表的名稱 |
type | string | 否 | IP 地址的型別,目前支援 ‘ipv4’ 和即將支援的 ‘ipv6’ |
items | array | 否 | 待修改的 IP 地址列表 |
返回值
- True:表明修改成功。
- False:表明修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.put_global_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.2'} ])
del_global_ip_list
ok = del_global_ip_list(rule_id=None)
此方法用於刪除指定的全域性 IP 列表。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 需要刪除的全域性 IP 列表的 ID |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.del_global_ip_list(rule_id=1)
get_global_ip_list
data = get_global_ip_list(rule_id=None)
此方法用於獲取指定的全域性 IP 列表。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 用於指定全域性級別 IP 列表的 ID |
返回值
- data:返回一個
dict
型別的 IP 列表資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_global_ip_list(rule_id=1)
append_to_global_ip_list
ok = append_to_global_ip_list(rule_id, items)
此方法用於向指定的全域性 IP 列表追加 IP。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 指定的全域性級別 IP 列表的 ID |
items | array | 是 | 待修改的 IP 地址列表 |
remove_expired | bool | 否 | 是否移除過期的 IP。預設為 False。如果設定為 True,會在追加新 IP 之前先移除已過期的 IP |
返回值
- True:表明修改成功。
- False:表明修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.append_to_global_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ])
ok = client.append_to_global_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ], remove_expired = True)
remove_from_global_ip_list
ok = remove_from_global_ip_list(rule_id, items)
此方法用於從指定的全域性 IP 列表移除 IP。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
rule_id | number | 是 | 指定的全域性級別 IP 列表的 ID |
items | array | 是 | 待修改的 IP 地址列表 |
返回值
- True:表明修改成功。
- False:表明修改失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.remove_from_global_ip_list(rule_id = 1, items = [ {'ip': '127.0.0.3'} ])
new_user_var
var_id = new_user_var(**kwargs)
這是一個用於新增使用者級別變數的函式。
引數
名稱 | 資料型別 | 是否必選 | 描述資訊 |
---|---|---|---|
name | string | 是 | 變數的名稱 |
var_type | string | 是 | 變數的型別 |
default | string | 是 | 變數的預設值 |
返回值
- id:返回新建的使用者級別變數的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = client.new_user_var(
name='is-whitelist',
var_type='string',
default='no')
put_user_var
ok = put_user_var(**kwargs)
此方法用於修改使用者級別的變數。
引數
名稱 | 資料型別 | 是否必選 | 詳細描述 |
---|---|---|---|
var_id | number | 是 | 表示變數的唯一標識 |
name | string | 是 | 代表變數的名稱 |
var_type | string | 是 | 描述變數的型別 |
default | string | 是 | 定義變數的預設值 |
返回值
- True:表示成功修改使用者級別的變數。
- False:表示修改使用者級別的變數失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
ok = client.put_user_var(var_id=var_id,
name='is-whitelist',
var_type='string',
default='yes')
請注意,此示例會將名為 ‘is-whitelist’ 的變數的值設定為 ‘yes’。
get_user_var
data = get_user_var(var_id)
此方法用於獲取使用者級別的變數。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
var_id | number | 是 | 變數的唯一識別符號 |
返回值
- data:返回一個
dict
型別,包含使用者變數的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
data = client.get_user_var(var_id)
del_user_var
ok = del_user_var(var_id)
此方法用於刪除使用者級別的變數。
引數
名稱 | 資料型別 | 是否必填 | 描述資訊 |
---|---|---|---|
var_id | number | 是 | 要刪除的變數 id |
返回值
- True:刪除變數成功。
- False:刪除變數失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
var_id = 1
ok = client.del_user_var(var_id)
在這個示例中,我們首先從 edge2client 模組匯入 Edge2Client。然後,我們建立一個 Edge2Client 例項,並用它登入。最後,我們試圖刪除 var_id 為 1 的使用者級別變數。
decode_request_id
data = decode_request_id(request_id)
此方法用於解碼 request_id 以獲取諸如 app_id 等資訊。
引數
| 名稱 | 資料型別 | 是否必選 | 描述 | | request_id | 字串 | 是 | 請求 ID |
返回值
- data:返回一個
字典
型別的資料,其中包含處理請求的閘道器、應用等資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.decode_request_id('00000a00000c0826c9803222')
print(data)
search_waf_log
data = search_waf_log(request_id)
此方法用於透過請求 id 獲取 WAF 日誌。
引數
引數 | 資料型別 | 必選 | 描述 |
---|---|---|---|
request_id | string | 是 | 請求的唯一識別符號 |
返回值
- data:返回一個
dict
型別的 WAF 日誌資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
request_id = "0000008000042c421ea80011"
data = client.search_waf_log(request_id)
這個示例展示瞭如何使用 Edge2Client 例項來呼叫 search_waf_log
函式並獲取 WAF 日誌。
get_version
data = get_version()
此方法用於獲取 Admin、Admin DB、Log Server、Log Server DB 及 WAF 的版本資訊。
返回值
- data:返回一個
dict
型別,包含了版本資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_version()
add_api_token
data = add_api_token(name=None, expire=0)
此方法用於生成 API Token。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 否 | API Token 的名稱 |
expire | number | 否 | API Token 的過期時間 |
返回值
- data:返回一個
dict
型別,包含 API Token 的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.add_api_token("name", 0)
get_api_token
data = get_api_token(id=None, limit=20)
此方法用於獲取 API 令牌。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 否 | API 令牌的標識 |
limit | number | 否 | 返回結果的數量限制 |
返回值
- data:以
dict
型別返回 API 令牌的資訊。
示例
from edge2client import Edge2Client
# 建立客戶端並登入
client = Edge2Client(host, username, password)
client.login()
# 獲取指定 id 的 API 令牌
data = client.get_api_token(id)
# 獲取數量限制在 100 以內的 API 令牌
data = client.get_api_token(None, 100)
del_api_token
ok = del_api_token(id)
此方法用於刪除一個指定的 API Token。
引數
引數 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
id | number | 否 | api token 的標識 |
返回值
- 返回 True:表示 API Token 刪除成功。
- 返回 False:表示 API Token 刪除失敗。
示例
from edge2client import Edge2Client
# 建立 Edge2Client 例項
client = Edge2Client(host, username, password)
# 登入
client.login()
# 刪除指定的 API Token
data = client.del_api_token(id)
get_all_gateway_tag
tags = get_all_gateway_tag()
此方法用於獲取所有閘道器叢集的標籤。
返回值
- data:返回一個包含所有閘道器標籤資訊的
list
型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
tags = client.get_all_gateway_tag()
for i, tag in enumerate(tags):
print(i, tag)
get_all_gateway
gateways = get_all_gateway()
此方法用於獲取所有閘道器叢集的資訊。
返回值
- data:返回一個
list
型別,包含所有閘道器的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password) # 建立並初始化 Edge2Client 例項
client.login() # 登入到伺服器
gateways = client.get_all_gateway() # 獲取所有閘道器叢集資訊
# 迴圈列印所有閘道器資訊
for i, gateway in enumerate(gateways):
print(i, gateway)
add_gateway
id = add_gateway(name, partition_id, tag=None)
此方法用於建立新的閘道器叢集。
引數
引數 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
name | string | 是 | 閘道器叢集的名稱 |
partition_id | string | 是 | 所建立的閘道器叢集所屬的閘道器分割槽 ID |
tag | array | 否 | 用於標記所建立閘道器叢集的標籤 |
返回值
- id:返回新建立的閘道器叢集的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
default_partition_id = 1
id = client.add_gateway('my-cluster', default_partition_id)
del_gateway
ok = del_gateway(gateway_id)
此方法用於刪除指定的閘道器叢集。
引數
引數 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
gateway_id | string | 是 | 要刪除的閘道器叢集的唯一識別符號 |
返回值
- True:表示閘道器叢集刪除成功。
- False:表示閘道器叢集刪除失敗。
true
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
gateway_id = 1
ok = client.del_gateway(gateway_id)
在這個示例中,我們首先使用 Edge2Client 建立了一個客戶端,然後登入。接著,我們嘗試刪除 ID 為 1 的閘道器叢集,並將結果儲存在變數 ok 中。
get_all_nodes
nodes = get_all_nodes()
此方法用於獲取所有的閘道器節點。
返回值
- data:此返回值是一個
list
型別,包含了所有閘道器節點(伺服器)的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
nodes = client.get_all_nodes()
for i, node in enumerate(nodes):
print(i, node)
get_node
node = get_node(node_id, gateway_id=None)
此方法根據提供的節點 ID 獲取相應的節點資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
node_id | number | 是 | 節點的唯一識別符號 (ID) |
gateway_id | number | 否 | 閘道器叢集的唯一識別符號 (ID),未指定時,將透過遍歷來查詢對應的節點 |
返回值
- 返回值為
dict
型別,包含了閘道器節點的相關資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
node = client.get_node(1) # 獲取節點 ID 為 1 的節點資訊
node = client.get_node(1, gateway_id=1) # 在閘道器叢集 ID 為 1 的範圍內,獲取節點 ID 為 1 的節點資訊
get_node_by_mac_address
node = get_node_by_mac_address(mac_address)
此方法用於根據節點的硬體 ID 來檢索節點的詳細資訊。
引數
引數名 | 資料型別 | 是否必選 | 描述內容 |
---|---|---|---|
mac_address | string | 是 | 該節點的特定 MAC 地址 |
返回值
- node:返回一個
dict
型別的閘道器節點詳細資訊。
{
"mac_address": "46:b1:5f:1d:fa:ea",
"serial": "2655388572",
"is_limited": false,
"config": {
"enable_qat": false
},
"name": "test-edge-node-75c5bf6969-65tgg\n",
"id": 11,
"external_ip": "172.20.0.2",
"sync_status_utime": 0,
"online_status": true,
"internal_ip": "10.244.0.6",
"hardware_id": "a11abe66fe25be7941bda81c3f358344",
"is_healthy": true,
"status": 1,
"gateway_id": 14
}
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
node = client.get_node_by_mac_address("e2:d1:d9:e0:c4:6e")
put_node
ok = put_node(node_id, gateway_id=None, **kwargs)
This method is used for updating node information.
Parameters
Name | Data Type | Required | Description |
---|---|---|---|
node_id | number | Yes | ID of the node |
gateway_id | number | No | Cluster ID of the gateway. If not specified, the corresponding node will be located by traversing |
name | string | No | Name of the node |
is_gray | bool | No | Set/unset the node as a gray node |
status | number | No | 0: Disable DNS, enable cluster cache, 1: Enable DNS, enable cluster cache, 2: Disable DNS, disable cluster cache |
external_ip | string | No | Public IP address |
external_ipv6 | string | No | Public IPv6 address |
internal_ip | string | No | Internal IP address |
Return Value
- True: If the operation is successful.
- False: If the operation fails.
Example
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
node_id=1
gateway_id=1
ok = self.client.put_node(node_id, \
gateway_id=gateway_id, name='test', \
is_gray=False, status=1, external_ip='127.0.0.1', \
external_ipv6='::1', internal_ip='127.0.0.1')
del_node
node = del_node(node_id, gateway_id=None)
此方法用於根據節點 ID 刪除指定節點。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
node_id | number | 是 | 要刪除的節點的 ID |
gateway_id | number | 否 | 閘道器叢集的 ID。如果未指定,系統將遍歷查詢對應的節點 |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
true
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
success = client.del_node(1)
success = client.del_node(1, gateway_id=1)
lmdb_backup
ok = lmdb_backup()
此方法用於觸發 LMDB 的備份。如果備份成功,方法將返回 True
。如果備份失敗,則返回一個包含失敗 Node 節點的 dict
資訊,其中 key 是 Node ID,value 是失敗的原因。
您可以透過呼叫 node_sync_status
介面來確認備份是否成功。如果該介面中節點的 backup_time
大於 lmdb_backup() 方法的呼叫時間,那麼可以認為該節點的備份已成功執行。
返回值
- True:表示備份成功。
- False:表示備份失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
result = self.client.lmdb_backup()
get_global_cert_referenced
result = get_global_cert_referenced(id)
此方法用於獲取使用了指定全域性證書的應用列表。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
id | number | 是 | 全域性證書 ID |
返回值
- data:返回一個包含應用資訊的
list
型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
global_cert_id = 1
result = client.get_global_cert_referenced(global_cert_id)
get_all_partition_lua_module
data = get_all_partition_lua_module(partition_id)
此方法用於獲取指定分割槽的所有 Lua 模組。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
partition_id | number | 是 | 分割槽的唯一識別符號 ID |
返回值
- data:返回一個列表(list),包含了所查詢分割槽的全部 Lua 模組資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
result = client.get_all_partition_lua_module(partition_id)
get_partition_lua_module
data = get_partition_lua_module(partition_id, module_id)
此方法用於獲取指定分割槽中的指定 lua 模組。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
partition_id | number | 是 | 分割槽 ID |
module_id | number | 是 | 模組 ID |
返回值
- data:返回一個
dict
型別的全域性 Lua 模組資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
module_id = 1
result = client.get_partition_lua_module(partition_id, module_id)
new_partition_lua_module
data = new_partition_lua_module(partition_id, name, code)
此方法用於向指定分割槽新增一個新的 Lua 模組。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
partition_id | number | 是 | 分割槽 ID |
name | string | 是 | 模組名稱 |
code | string | 是 | 模組程式碼 |
返回值
- data:返回一個字典型別的資料,包含新建的 Lua 模組的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
name = "example"
code = """
local _M = {}
return _M
"""
result = client.new_partition_lua_module(partition_id, name, code)
put_partition_lua_module
ok = put_partition_lua_module(partition_id, module_id, name, code)
此方法用於編輯指定分割槽的特定 lua 模組。
引數
名稱 | 資料型別 | 是否必須 | 詳細描述 |
---|---|---|---|
partition_id | number | 是 | 分割槽的 ID |
module_id | number | 是 | 模組的 ID |
name | string | 否 | 模組的名稱 |
code | string | 否 | 模組的程式碼 |
返回值
- True:表示操作成功。
- False:表示操作失敗。
例如:
true
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
module_id = 1
name = "example"
code = """
local _M = {}
return _M
"""
result = self.client.put_partition_lua_module(partition_id, module_id, name, code)
del_partition_lua_module
result = del_partition_lua_module(partition_id, module_id)
此方法用於刪除指定分割槽內的特定 lua 模組。
引數
名稱 | 資料型別 | 是否必要 | 描述 |
---|---|---|---|
partition_id | number | 是 | 分割槽 ID |
module_id | number | 是 | 模組 ID |
返回值
- 若成功則返回 True。
- 若失敗則返回 False。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
partition_id = 1
module_id = 1
result = self.client.del_partition_lua_module(partition_id, module_id)
conv_crl_to_lua_module
code = conv_crl_to_lua_module(crl_files)
此方法用於將 CRL 檔案轉換為 Lua 模組。
引數
引數名 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
crl_files | array | 是 | CRL 檔案陣列 |
返回值
- code:轉換完成後的 Lua 模組程式碼。
示例
import sys
from edge2client import Edge2Client
client = Edge2Client('https://your-admin-addr', 'your-admin-user', 'your-admin-password')
crl_files = ["~/test.crl"]
code = client. conv_crl_to_lua_module(crl_files)
client.login()
partition_id = 1
name = "crl_test.com"
result = client.new_partition_lua_module(partition_id, name, code)
mod_id = result["id"]
result = client.put_partition_lua_module(partition_id, mod_id, name, code)
print(result)
get_all_candidate_node
nodes = get_all_candidate_node()
此方法用於獲取所有待批准的節點,隨後可以透過呼叫 approve_candidate_node 介面來將這些節點批准加入到指定的叢集。
返回值
- nodes:返回的是一個
list
型別,包含所有候選閘道器節點的詳細資訊。
例如:
[
{
"priv_hash": "0ab3a37cfea7d044c93a46712053a081",
"external_ipv6": "",
"external_ip": "172.20.0.2",
"hostname": "test-edge-node-75c5bf6969-65tgg\n",
"client_city": "/",
"internal_ip": "10.244.0.3",
"os": "Linux\n3.10.0-1127.19.1.el7.x86_64\n",
"hardware_id": "3e20ff1b92ca06e03b2ab0d877687662",
"mac_address": "9e:18:28:f5:1b:d5",
"csr": "..."
}
]
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
nodes = client.get_all_candidate_node()
approve_candidate_node
ok = approve_candidate_node(gateway_id, mac_address, internal_ip=None, external_ip=None, name=None, external_ipv6=None, status=1)
此方法用於批准 MAC 地址為 mac_address 的節點加入到 ID 為 gateway_id 的閘道器叢集。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
gateway_id | number | 是 | 閘道器叢集的 ID,未指定時將透過遍歷方式查詢對應節點 |
mac_address | string | 是 | 節點的 MAC 地址 |
internal_ip | string | 否 | 節點的內部 IPv4 地址 |
external_ip | string | 否 | 節點的外部 IPv4 地址 |
name | string | 否 | 節點的名稱,若未命名則預設使用主機名 |
external_ipv6 | string | 否 | 節點的外部 IPv6 地址 |
status | string | 否 | 節點狀態,0 代表禁用,1 代表啟用,2 代表斷開(禁用 DNS 和禁用叢集內快取共享) |
返回值
- True:批准成功。
- False:批准失敗。
示例
以下示例說明如何批准主機名稱為 “new-edge-node” 的節點加入到 ID 為 1 的閘道器叢集。
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
def first_address(addrs):
return addrs.split(' ')[0]
gateway_id=1
nodes = client.get_all_candidate_node()
for i, node in enumerate(nodes):
if nodes.get('hostname') == "new-edge-node":
ok = client.approve_candidate_node(gateway_id, first_address(nodes.get('mac_address')))
break
get_waf_logs
data, count = get_waf_logs(app_id, page=1, pagesize=20, request_id=None,
start_time=None, end_time=None, host=None, header=None,
rule_set_id=None, resp_status=None, action=None,
remote_addr=None, show_all=False)
此方法用於檢索指定應用的 WAF 日誌。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
app_id | number | 是 | HTTP 應用的 ID |
page | number | 否 | 指定要檢索的頁碼 |
pagesize | number | 否 | 指定每頁的日誌數量 |
request_id | string | 否 | 根據特定的請求 ID 檢索日誌 |
start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 |
end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 |
host | string | 否 | 根據特定的 host 檢索日誌 |
header | string | 否 | 根據特定的請求頭資訊檢索日誌 |
rule_set_id | number | 否 | 根據特定的規則集 ID 檢索日誌 |
resp_status | number | 否 | 根據特定的 HTTP 響應狀態碼檢索日誌 |
action | string | 否 | 根據特定的動作檢索日誌,取值 log, block, edge-captcha, hcaptcha, redirect, page-template, close-connection, redirect-validate, js-challenge |
remote_addr | string | 否 | 根據特定的客戶端地址檢索日誌 |
show_all | bool | 否 | 標識是否獲取所有日誌,當為 False 時,不返回未達到閾值的日誌,為 True 時,無論閾值大小均返回 |
返回值
- data: 此次檢索到的日誌列表,
list
型別。 - count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
page = 1
while True:
logs, count = get_waf_logs(app_id, page=page, pagesize=10,
start_time=1698888000,
end_time=1699988000)
if logs is None:
break
if len(logs) <= 0:
break
for log in logs:
print(log)
page = page + 1
get_dos_logs
data, count = get_dos_logs(app_id, page=1, pagesize=20, request_id=None,
start_time=None, end_time=None, host=None, uri=None,
user_agent=None, action=None, remote_addr=None):
此方法用於檢索指定應用的 CC 日誌。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
app_id | number | 是 | HTTP 應用的 ID |
page | number | 否 | 指定要檢索的頁碼 |
pagesize | number | 否 | 指定每頁的日誌數量 |
request_id | string | 否 | 根據特定的請求 ID 檢索日誌 |
start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 |
end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 |
host | string | 否 | 根據特定的 host 檢索日誌 |
uri | string | 否 | 根據特定的 URI 資訊檢索日誌 |
user_agent | number | 否 | 根據特定的 User Agent 檢索日誌 |
action | string | 否 | 根據特定的動作檢索日誌,取值 close_connection, error_page, enable_hcaptcha, enable_edge_captcha, redirect_validate, js_challenge, delay |
remote_addr | string | 否 | 根據特定的客戶端地址檢索日誌 |
返回值
- data: 此次檢索到的日誌列表,
list
型別。 - count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
page = 1
while True:
logs, count = get_dos_logs(app_id, page=page, pagesize=10,
start_time=1698888000,
end_time=1699988000)
if logs is None:
break
if len(logs) <= 0:
break
for log in logs:
print(log)
page = page + 1
get_global_page_template
data = get_global_page_template(id)
此方法用於獲取指定的全域性頁面模板。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | 全域性頁面模板的 ID |
返回值
- data: 此次檢索到的全域性頁面模板,
dict
型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_global_page_template(id)
get_all_global_page_templates
data = get_all_global_page_templates()
此方法用於獲取所有的全域性頁面模板。
返回值
- data: 此次檢索到的全域性頁面模板列表,
list
型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
templates = client.get_all_global_page_templates()
for t in templates:
print(t)
del_global_page_template
ok = del_global_page_template(id)
此方法用於刪除指定的全域性頁面模板。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | 全域性頁面模板的 ID |
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
ok = client.del_global_page_template(id)
new_global_page_template
id = new_global_page_template(name, content)
此方法用於建立新的全域性頁面模板。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
name | string | 是 | 全域性頁面模板的名稱 |
content | string | 是 | 全域性頁面模板的內容 |
返回值
- id:返回新建的全域性頁面模板的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
name = "default"
content = """
<!doctype html>
<html>
<head>
<title>404 NOT FOUND</title>
</head>
<body>
::CLIENT_IP::
</body>
</html>
"""
id = client.new_global_page_template(name=name, content=content)
put_global_page_template
ok = put_global_page_template(id, name=None, content=None)
此方法用於更新指定的全域性頁面模板。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | 全域性頁面模板的 ID |
name | string | 否 | 全域性頁面模板的名稱 |
content | string | 否 | 全域性頁面模板的內容 |
至少需指定 name
與 content
的其中一個。
返回值
- True:更新成功。
- False:更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
name = "newname"
ok = client.put_global_page_template(name=name, content=content)
get_app_basic_auth_user_group
data = get_app_basic_auth_user_group(id, app_id=None)
此方法用於獲取指定應用中指定的 Basic Auth 使用者組資訊。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | Basic Auth 使用者組的 ID |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- data: 此次檢索到的 Basic Auth 使用者組資訊,
dict
型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
data = client.get_app_basic_auth_user_group(group_id)
get_all_app_basic_auth_user_groups
data = get_all_app_basic_auth_user_groups(app_id=None)
此方法用於獲取指定應用中所有 Basic Auth 使用者組資訊。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- data: 此次檢索到的 Basic Auth 使用者組列表,
list
型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
# client.use_app(app_id)
groups = client.get_all_app_basic_auth_user_groups(app_id)
for g in groups:
print(g)
del_app_basic_auth_user_group
ok = del_app_basic_auth_user_group(id, app_id=None)
此方法用於刪除指定應用中指定的 Basic Auth 使用者組資訊。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | Basic Auth 使用者組的 ID |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
ok = client.del_app_basic_auth_user_group(group_id)
new_app_basic_auth_user_group
id = new_app_basic_auth_user_group(name, label=None, app_id=None)
此方法用於在指定應用中建立 Basic Auth 使用者組。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
name | string | 是 | Basic Auth 使用者組的名稱 |
label | string | 否 | Basic Auth 使用者組的標籤 |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- id:返回新建的 Basic Auth 使用者組的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
name = "default"
label = "default label"
id = client.new_app_basic_auth_user_group(name, label)
put_app_basic_auth_user_group
ok = put_app_basic_auth_user_group(id, name=None, label=None, app_id=None)
此方法用於更新指定應用中指定的 Basic Auth 使用者組資訊。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | Basic Auth 使用者組的 ID |
name | string | 否 | Basic Auth 使用者組的名稱 |
label | string | 否 | Basic Auth 使用者組的標籤 |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
至少需指定 name
與 label
的其中一個。
返回值
- True:更新成功。
- False:更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
name = "new-name"
label = "new-label"
ok = client.put_app_basic_auth_user_group(group_id, name=name, label=label)
get_app_basic_auth_user
data = get_app_basic_auth_user(id, group_id, app_id=None)
此方法用於獲取指定應用的 Basic Auth 使用者組中的指定的使用者資訊。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | Basic Auth 使用者的 ID |
group_id | number | 是 | Basic Auth 使用者組的 ID |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- data: 此次檢索到的 Basic Auth 使用者組資訊,
dict
型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
user_id = 1
group_id = 1
data = client.get_app_basic_auth_user(user_id, group_id)
get_app_basic_auth_users_in_group
data = get_app_basic_auth_users_in_group(group_id, app_id=Nonee)
此方法用於獲取指定應用的 Basic Auth 使用者組中所有使用者資訊。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
group_id | number | 是 | Basic Auth 使用者組的 ID |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- data: 此次檢索到的 Basic Auth 使用者列表,
list
型別。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
users = client.get_app_basic_auth_users_in_group(group_id)
for u in users:
print(u)
del_app_basic_auth_user
ok = del_app_basic_auth_user(id, group_id, app_id=None)
此方法用於刪除指定應用的 Basic Auth 使用者組中指定的使用者資訊。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | Basic Auth 使用者的 ID |
group_id | number | 是 | Basic Auth 使用者組的 ID |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- True:刪除成功。
- False:刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
user_id = 1
group_id = 1
ok = client.del_app_basic_auth_user(user_id, group_id)
new_app_basic_auth_user
id = new_app_basic_auth_user(group_id, username, password, app_id=None)
此方法用於在指定應用的 Basic Auth 使用者組中建立使用者。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
group_id | number | 是 | Basic Auth 使用者所屬的使用者組的 ID |
username | string | 是 | Basic Auth 使用者的名稱 |
password | string | 是 | Basic Auth 使用者的密碼 |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- id:返回新建的 Basic Auth 使用者組的唯一 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
group_id = 1
username = "username1"
password = "password"
id = client.new_app_basic_auth_user(group_id, username, password)
put_app_basic_auth_user
ok = put_app_basic_auth_user(id, group_id, username, password, app_id=None)
此方法用於更新指定應用的 Basic Auth 使用者組中指定的使用者資訊。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
id | number | 是 | Basic Auth 使用者的 ID |
group_id | number | 是 | Basic Auth 使用者所屬的使用者組的 ID |
username | string | 是 | Basic Auth 使用者的名稱 |
password | string | 是 | Basic Auth 使用者的密碼 |
app_id | number | 否 | HTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數 |
返回值
- True:更新成功。
- False:更新失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
client.use_app(app_id)
user_id = 1
group_id = 1
username = "new-username"
password = "new-password"
ok = client.put_app_basic_auth_user(user_id, group_id, username, password)
new_acme_provider
provider_id = new_acme_provider(name=None, endpoint=None,
eab_hmac_key=None, eab_kid=None,
email=None)
此方法用於新增 ACME 提供商/頒發者。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
name | string | 是 | ACME 提供商的名稱 |
endpoint | string | 是 | 用於獲取 ACME 證書的端點資訊 |
eab_hmac_key | string | 否 | 與 ACME 提供商提供的賬戶繫結的 HMAC 金鑰 |
eab_kid | number | 否 | 與 ACME 提供商提供的賬戶繫結的金鑰識別符號 |
number | 否 | 與 ACME 提供商提供的賬戶繫結的郵箱 |
返回值
- provider_id:新建立的 ACME 提供商資訊的 ID。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
endpoint = "https://acme.zerossl.com/v2/DV90"
email = "oredge-sdk@openresty.com"
eab_hmac_key = "abcdefghijklmnopqrstuvwxyz"
eab_kid = "_abcdefghijklmnopqrstuvwxyz_dL4"
provider_id = self.client.new_acme_provider(name="zerossl",
endpoint=endpoint,
eab_hmac_key=eab_hmac_key,
eab_kid=eab_kid, email=email)
put_acme_provider
ok = put_acme_provider(**kwargs)
此方法用於修改 ACME 提供商的資訊。
引數
名稱 | 資料型別 | 是否必須 | 描述 |
---|---|---|---|
id | integer | 是 | ACME 提供商的 ID |
name | string | 是 | ACME 提供商的名稱 |
endpoint | string | 是 | 用於獲取 ACME 證書的端點資訊 |
eab_hmac_key | string | 否 | 與 ACME 提供商提供的賬戶繫結的 HMAC 金鑰 |
eab_kid | number | 否 | 與 ACME 提供商提供的賬戶繫結的金鑰識別符號 |
number | 否 | 與 ACME 提供商提供的賬戶繫結的郵箱 |
返回值
- 返回 True:表示成功。
- 返回 False:表示失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
new_endpoint = "https://acme.zerossl.com/v2/DV90new"
new_email = "oredge-sdk-new@openresty.com"
new_eab_hmac_key = "abcdefghijklmnopqrstuvwxyz-new"
new_eab_kid = "_abcdefghijklmnopqrstuvwxyz_dL4_new"
ok = self.client.put_acme_provider(id=provider_id,
name=f"new_zerossl",
endpoint=new_endpoint,
eab_hmac_key=new_eab_hmac_key,
eab_kid=new_eab_kid, email=new_email)
get_acme_provider
data = get_acme_provider(provider_id)
此方法用於獲取 ACME 提供商的資訊。
引數
名稱 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
id | number | 是 | ACME 提供商的唯一識別符號 |
返回值
- data:返回一個
dict
型別的資料,包含 ACME 提供商的詳細資訊。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
provider_id = 1
data = client.get_acme_provider(provider_id)
get_all_acme_providers
data = get_all_acme_providers()
此方法用於獲取所有 ACME 提供商的資訊。
返回值
- data:返回一個
list
型別的 ACME 提供商的資訊。
應用示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
data = client.get_all_acme_providers()
del_acme_provider
ok = del_acme_provider(id)
此方法用於刪除 ACME 提供商的資訊。
引數
引數名 | 資料型別 | 是否必選 | 描述 |
---|---|---|---|
id | number | 是 | ACME 提供商記錄的唯一識別符號 |
返回值
- True:表示刪除成功。
- False:表示刪除失敗。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
provider_id = 1
ok = client.del_acme_provider(provider_id)
以上程式碼展示瞭如何使用 Edge2Client 刪除特定的 ACME 提供商記錄。
get_acme_logs
data, count = client.get_acme_logs(cert_id)
此方法用於獲取指定 ACME 證書的簽發日誌,最多獲取 100 條
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
cert_id | number | 是 | ACME 證書的 ID |
返回值
- data: 此次檢索到的日誌列表,
list
型別。 - count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
cert_id = 1
logs, count = client.get_acme_logs(cert_id)
get_node_error_logs
data, count = client.get_node_error_logs(page=1, page_size=10,
node_id=None, req_id=None, level=None,
start_time=None, end_time=None)
此方法用於獲取 Edge Node 的錯誤日誌。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
page | number | 否 | 指定要檢索的頁碼 |
page_size | number | 否 | 指定每頁的日誌數量 |
node_id | string | 否 | 僅檢索指定 一個或多個 Edge Node 的錯誤日誌 |
req_id | string | 否 | 僅檢索指定的請求的錯誤日誌 |
level | string | 否 | 僅檢索指定級別的錯誤日誌,日誌級別有:stderr, emerg, alert, crit, error, warn, notice, info, debug |
start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 |
end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 |
返回值
- data: 此次檢索到的日誌列表,
list
型別。 - count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
logs, count = client.get_node_error_logs(page=1, page_size=10,
start_time=1698888000,
end_time=1699988000)
get_admin_error_logs
data, count = client.get_admin_error_logs(page=1, page_size=10, level=None,
start_time=None, end_time=None)
此方法用於獲取 Edge Admin 的錯誤日誌。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
page | number | 否 | 指定要檢索的頁碼 |
page_size | number | 否 | 指定每頁的日誌數量 |
level | string | 否 | 僅檢索指定級別的錯誤日誌,日誌級別有:stderr, emerg, alert, crit, error, warn, notice, info, debug |
start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 |
end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 |
返回值
- data: 此次檢索到的日誌列表,
list
型別。 - count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
logs, count = client.get_admin_error_logs(page=1, page_size=10,
start_time=1698888000,
end_time=1699988000)
get_log_server_error_logs
data, count = client.get_log_server_error_logs(page=1, page_size=10, level=None,
start_time=None, end_time=None)
此方法用於獲取 Edge Log Server 的錯誤日誌。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
page | number | 否 | 指定要檢索的頁碼 |
page_size | number | 否 | 指定每頁的日誌數量 |
level | string | 否 | 僅檢索指定級別的錯誤日誌,日誌級別有:stderr, emerg, alert, crit, error, warn, notice, info, debug |
start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 |
end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 |
返回值
- data: 此次檢索到的日誌列表,
list
型別。 - count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
logs, count = client.get_log_server_error_logs(page=1, page_size=10,
start_time=1698888000,
end_time=1699988000)
get_http_app_error_logs
data, count = client.get_http_app_error_logs(page=1, page_size=10, app_id=None,
node_id=None, req_id=None, level=None,
start_time=None, end_time=None)
此方法用於獲取指定 HTTP 應用的錯誤日誌。
引數
引數名 | 資料型別 | 是否必需 | 描述 |
---|---|---|---|
app_id | string | 否 | 僅檢索指定 HTTP 應用的錯誤日誌 |
page | number | 否 | 指定要檢索的頁碼 |
page_size | number | 否 | 指定每頁的日誌數量 |
node_id | string | 否 | 僅檢索指定一個或多個 Edge Node 的錯誤日誌 |
req_id | string | 否 | 僅檢索指定的請求的錯誤日誌 |
level | string | 否 | 僅檢索指定級別的錯誤日誌,日誌級別有:stderr, emerg, alert, crit, error, warn, notice, info, debug |
start_time | number | 否 | 根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒 |
end_time | number | 否 | 根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒 |
返回值
- data: 此次檢索到的日誌列表,
list
型別。 - count: 日誌的總數量,注意這不是此次檢索到的日誌數量。
示例
from edge2client import Edge2Client
client = Edge2Client(host, username, password)
client.login()
app_id = 1
logs, count = client.get_http_app_error_logs(app_id=app_id, page=1, page_size=10,
req_id="000028800bac65d7fed03afd",
start_time=1698888000,
end_time=1699988000)