OpenResty Edge™ Python SDK 使用者手冊

歡迎查閱 OpenResty Edge™ Python SDK 的使用者手冊。

安裝

OpenResty Edge 的 Python SDK 依賴 Python3,請確保您已經安裝好 3.6 及以上版本的 Python3。 您可以像安裝其他 Python3 模組那樣安裝此 Python SDK:

  1. 開啟 Linux 終端或 Windows 命令提示符視窗

  2. 輸入以下命令安裝 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此方法用於獲取當前應用的全部證書資訊。
delete_certificate_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 列表。
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 列表。
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_nodeThis 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 使用者組中指定的使用者資訊。

方法詳情


Edge2Client

client = Edge2Client(host, username, password, api_token=None)

此方法用於初始化 SDK 客戶端。

引數

名稱資料型別是否必需描述
hoststringedge-admin 的地址,需要包含協議和埠
usernamestring用於登入 edge-admin 的使用者名稱
passwordstring用於登入 edge-admin 的密碼
api_tokenstring訪問令牌

返回值

  • 返回一個 edge2client.Edge2Client 物件。

示例

  1. 當 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')
    
  2. 使用 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 驗證關閉。

引數

名稱資料型別是否必選描述資訊
verifybool是非啟用 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 應用。

引數

名稱資料型別是否必選描述資訊
domainslist應用所需的域名
labelstring應用的標識名稱
cluster_groupslist應用所處的叢集組

返回值

  • 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_idnumber應用的唯一識別符號
domainslist應用的域名列表
labelstring應用的名稱
cluster_groupslist應用所在的叢集組列表
offlinebool應用的線上/離線狀態,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_idnumber應用的 id
limiterdict應用的 limiter 配置
enable_websocketbool是否開啟 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_idnumber待查詢應用的 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_idnumber待刪除應用的唯一 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_domainstring需要搜尋的應用域名
pagenumber返回結果的頁碼,預設為 1
pagesizenumber每頁返回的結果數量,預設為 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 應用。

引數

引數名資料型別是否必選描述
keywordstring要搜尋的關鍵詞,將同時在域名和應用名稱中進行搜尋
pagenumber返回結果的頁碼序號,預設值為 1
pagesizenumber每頁返回結果的條目數量,預設值為 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 地址搜尋上游資訊。

引數

引數名資料型別是否必要描述
ipstring需要進行搜尋的 IP 地址
pagenumber期望獲取的結果頁碼,預設為第一頁
pagesizenumber每頁返回的結果數量,預設為 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 上游。

引數

名稱資料型別是否必須描述
ipstring要搜尋的 IP
pagenumber返回結果的頁碼,如果未指定,預設為 1
pagesizenumber每頁返回結果的數量,如果未指定,預設為 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)

此方法用於根據名稱搜尋上游。

引數

引數名資料型別是否必填描述
namestring需要搜尋的上游名稱
pagenumber返回結果的頁碼,若未指定則預設為 1
pagesizenumber返回結果的每頁條目數,若未指定則預設為 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 上游。

引數

引數資料型別是否必須描述
namestring需要搜尋的 Kubernetes 上游名稱
pagenumber返回搜尋結果的頁碼,預設值為 1
pagesizenumber單頁返回的搜尋結果條目數,預設值為 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 上游。

引數

名稱資料型別必選描述
namespacestringno搜尋的名稱空間名稱
servicestringno搜尋的服務的名稱
portnumberno搜尋的服務的埠號
pagenumberno返回結果的頁碼,預設值為 1
pagesizenumberno每一頁返回結果的條目數,預設值為 20
type_listlistno搜尋的上游型別列表,包括 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 上游歷史。

引數

名稱資料型別是否必選描述
pagenumber返回結果的頁碼,若未指定,預設為 1
pagesizenumber返回結果的條目數,若未指定,預設為 20
start_timenumber搜尋的起始時間戳
end_timenumber搜尋的結束時間戳

返回值

  • 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)

此方法用於獲取所有應用的資訊。

引數

引數名資料型別是否必須描述
detailbool是否需要返回每個應用的詳細資訊,預設為 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。

引數

名稱資料型別是否必選描述
namestring上游的名稱
serverslist上游的資訊
sslbool是否採用 HTTPS 協議,預設值為 False
health_checkerdict健康檢查的詳細配置,預設值為 None
gidarray使用者組 id 列表,如 [1]

servers 引數

名稱資料型別是否必選描述
domainstring上游的域名
ipstring上游的 IP 地址。注意,引數 domain 和 IP 至少需要填寫一個
portstring上游的埠號
weightnumber上游的權重,預設值為 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)

此方法用於修改上游資訊。

引數

名稱資料型別是否必選描述
namestring定義上游的名稱
serverslist詳細定義上游資訊
sslbool是否啟用 HTTPS 協議,預設為 False
health_checkerdict用於配置健康檢查的詳細資訊,預設為 None
gidarray使用者組 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_idstring上游的 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_idstring上游的唯一識別符號

返回值

  • 返回 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 物件,使用 hostusernamepassword 進行登入。然後,我們嘗試用 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。

引數

名稱資料型別是否必選描述
namestring上游名稱
k8s_serviceslist當上遊是 k8s 服務時所需的資訊
sslbool是否使用 HTTPS 協議,預設為 False
health_checkerdict對健康檢查的詳細配置,預設為 None
gidarray使用者組 ID 列表,例如:[1]

k8s_services 引數

名稱資料型別是否必選描述
k8snumberk8s 叢集 ID
k8s_namespacestringk8s 叢集名稱空間
k8s_servicestringk8s 叢集服務
k8s_service_portnumberk8s 叢集服務埠

返回值

  • 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_idstring待複製的上游的 ID
k8s_serviceslist當上遊是 Kubernetes 服務時的資訊
rulesarray遍歷 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 上游資訊。

引數

名稱資料型別是否必填描述
namestring指定上游名稱
k8s_serviceslist當上遊是 k8s 服務時所需的詳細資訊
sslbool確定是否使用 HTTPS 協議,預設值為 False
health_checkerdict配置健康檢查的具體引數,預設值為 None
gidarray使用者組 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_idstring上游的 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_idstring對應上游的唯一標識 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 規則和快取規則。你也可以指定規則執行的前提條件。

引數

名稱資料型別是否必須描述
conditionlist規則條件
conseqdict 或 list規則行動
waflistWAF 規則
proxylist代理規則
cachelist快取規則
contentlist內容規則
topnumber1:置頂規則,-1:置底規則
ordernumber規則順序,優先順序低於 top 引數
lastbool如果命中此條規則,則跳過所有餘下的頁面規則,預設為 False
reorderbool是否重建 order 的值,預設為 False
enablebool如果此選項被設為 False,則會禁用規則,預設為 True

condition 引數

名稱資料型別是否必須描述
varstring 或 array如果是 string 型別,則填寫變數名 name。如果是 array 型別則需要填寫變數名 name和引數 args
opstring運算子,預設為 eq,即字串相等 (equal)
valstringvals 二選一string 型別或者 array 型別,需要指定為正則或者通配型別時,傳 [正規表示式, 'rx'], [通配表示式, 'wc']
valslistval 二選一val 的集合

conseq 引數

名稱資料型別是否必須描述
edge 語言內建函式stringedge 語言內建函式
edge 語言內建函式的引數listedge 語言的內建函式引數

conseq 可以是 dict 型別或者 list 型別,如下是一個 dict 型別的例子。

waf 引數

名稱資料型別是否必須描述
rule_setslist全域性預設的使用者規則集,預設值為空列表
actionstring可選 log, 403 Forbidden, edge-captcha, redirect 中的一個
thresholdstring可選 high, medium, lownone 中的一個,與 sensitivity 二選一,sensitivity 的優先順序更高,高敏感級別對應低閾值級別,低敏感級別對應高閾值級別
sensitivitystring可選 high, medium, lownone 中的一個,與 threshold 二選一,sensitivity 的優先順序更高,高敏感級別對應低閾值級別,低敏感級別對應高閾值級別
clearancenumbercaptcha 觸發後的持續時間,預設值為 60 秒
redirect_urlstring當動作為 redirect (重定向) 時,指定的 url
cross_requestsbool當為 True 時,使用跨請求模式,預設為 True
rule_sets_thresholdlist單獨設定每個規則集的敏感分數
scoreintegerthresholdsensitivity 選擇 none時,可以自定義敏感分數

proxy 引數

proxy 陣列的描述如下:

名稱資料型別是否必須描述
upstreamslist上游資訊
backup_upstreamslist上游備份節點資訊
upstreams_el_codestrEdgelang 設定上游
timeoutnumber代理超時時間,預設值為 3 秒
connect_timeoutnumber連線超時時間,預設值為 3 秒
read_timeoutnumber讀超時時間,預設值為 3 秒
send_timeoutnumber傳送超時時間,預設值為 3 秒
retriesnumber重試次數,預設值為 1 次
retry_conditionlist重試條件,預設值為 [“error”, “timeout”, “invalid_header”, “http_500”, “http_502”, “http_504”]. 可選 http_503, http_403, http_404, http_429non_valueempotent (即方法可以是 POST, LOCK, PATCH)
balancer_algorithmstring負載均衡演算法,預設值為 roundrobin。支援的演算法還有 hashchash
balancer_varslist負載均衡演算法所依賴的變數,當負載均衡演算法選擇為 hashchash 時需要填寫該欄位
multi_tiernumber多層網路策略 ID

upstreams 引數

upstreamsbackup_upstreams 陣列的描述如下:

名稱資料型別是否必須描述
upstreamnumber上游的 ID
global_upstreamnumber全域性上游的 ID
k8s_upstreamnumberk8s 上游的 ID
global_k8s_upstreamnumber全域性 k8s 上游的 ID
weightnumber上游的權重,預設值為 1

cache 引數

名稱資料型別是否必須描述
cache_keylist快取 key
default_ttlslist是否啟用預設快取,預設值為 None
browser_ttlnumber是否啟用瀏覽器快取,預設值為 None
browser_ttl_unitstring瀏覽器快取單位,只在 browser_ttl 設定後有效,預設值為 min
enable_globalbool是否啟用跨域名快取,預設值為 False
enforce_cachebool是否啟用始終快取,預設值為 False
cluster_hashbool是否啟用叢集快取,預設值為 False
disable_convert_headbool是否將 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)

此方法用於修改頁面規則。

引數

名稱資料型別是否必選描述
conditionlist定義規則的條件
conseqdict or list定義規則的動作
waflist定義 WAF 規則
proxylist定義代理規則
cachelist定義快取規則
contentlist定義內容規則
topnumber用於設定規則的位置,1 表示置頂規則,-1 表示置底規則
ordernumber用於設定規則的順序,優先順序低於 top 引數
lastbool如果此選項被設為 True,且這條規則被命中,則會跳過所有剩餘的頁面規則,預設為 False
enablebool如果此選項被設為 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_idnumber頁面規則的 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_idnumber規則的唯一識別符號

返回值

  • 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_idnumber指定的應用 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)

此方法用於調整規則的順序。

引數

名稱資料型別必選描述
ordersdict此字典中的 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)

此方法用於根據指定的應用域名獲取對應的頁面規則。

引數

名稱資料型別必選描述
domainstring應用的域名

返回值

  • 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_ipstring用於指定上游的 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_idnumberno應用的 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_idnumber應用的唯一識別符號

返回值

  • 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 證書並提供手動上傳證書的選項。

引數

名稱資料型別是否必選描述資訊
keystring私鑰內容
certstring證書內容
ca_chainstringCA 鏈條內容
global_cert_idnumber證書的全域性 ID
gidlist使用者組 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 證書。

引數

名稱資料型別是否必選描述
domainsstring array用於自動獲取 LE 證書的域名
gidlist使用者組 ID 列表

返回值

  • 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_idnumber證書的唯一識別符號 id
keystring私鑰的詳細內容
certstring伺服器端證書的詳細內容
ca_chainstringCA 鏈的詳細內容
global_cert_idnumber證書的全球唯一識別符號 id
gidlist使用者組 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 證書。

引數

名稱資料型別是否必選描述
domainsstring array需要自動獲取 LE 證書的域名
gidlist使用者組 ID 列表
resignbool是否觸發重新簽發證書

返回值

  • 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_idnumber證書 ID

返回值

  • data:返回一個 dict 型別的資料,包含以下欄位:
欄位名稱資料型別描述
statusstring描述證書的簽發狀態,可能的值包括:valid / pending / invalid
expdatenumber證書的過期時間,使用 Unix 時間戳表示
next_udpatenumber證書的下次更新時間,使用 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_idnumber代表證書的 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()

delete_certificate_key

success = delete_certificate_key(certificate_id)

刪除與給定的 certificate_id 相關聯的證書資訊。

引數

名稱資料型別是否必選描述
certificate_idnumber證書的唯一標誌

返回值

  • 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.delete_certificate_key(certificate_id)

new_el

ok = new_el(**kwargs)

此方法用於新增自定義的 edge 語言程式碼。

引數

名稱資料型別必選描述
phasestring用於定義 edge 語言執行的階段
codestring要執行的 edge 語言程式碼
postbool如果設為 True,則該段程式碼將在選擇的階段後面執行,預設值為 False
prebool如果設為 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)

此方法用於新增應用級使用者。

引數

名稱資料型別必選描述
namestring使用者名稱
readbool是否擁有讀許可權,預設為 True
writebool是否擁有寫許可權,預設為 True
releasebool是否擁有釋出更動的許可權,預設為 False
dns_readbool是否擁有讀取 DNS 的許可權,預設為 False
dns_writebool是否擁有修改 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)

此方法用於更新應用級的使用者資訊。

引數

名稱資料型別是否必要描述
idlistyes使用者 id
namestringyes使用者名稱
readboolno使用者是否具有讀取許可權,預設值為 True
writeboolno使用者是否具有寫入許可權,預設值為 True
releaseboolno使用者是否具有釋出更改的許可權,預設值為 False
dns_readboolno使用者是否具有讀取 DNS 的許可權,預設值為 False
dns_writeboolno使用者是否具有寫入 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)

此方法用於獲取應用級別的使用者資訊,包括使用者名稱、許可權等。

引數

引數名資料型別是否必填描述
idlist使用者的 id
namestring使用者名稱
app_idnumber應用的 id,若未指定則預設為當前應用 id
user_idnumber全域性的使用者 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)

此方法用於刪除特定應用的使用者。

引數

名稱資料型別是否必須描述
idlist使用者 id
namestring使用者名稱
app_idnumber應用 id,若未指定,則預設為當前應用
user_idnumber全域性使用者 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_idnumber應用 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)

此方法用於為所有應用新增使用者。

引數

名稱資料型別是否必選描述
namestring使用者名稱
readbool使用者是否擁有讀許可權,預設為 True
writebool使用者是否擁有寫許可權,預設為 True
releasebool使用者是否擁有釋出更改的許可權,預設為 False
dns_readbool使用者是否擁有讀取 DNS 的許可權,預設為 False
dns_writebool使用者是否擁有編輯 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_idnumber應用的 ID,若未指定,則預設為當前應用的 ID
readbool使用者是否擁有讀許可權,若未指定,則預設為 True
writebool使用者是否擁有寫許可權,若未指定,則預設為 True
releasebool使用者是否擁有釋出更動的許可權,若未指定,則預設為 False
dns_readbool使用者是否有讀取 DNS 的許可權,若未指定,則預設為 False
dns_writebool使用者是否有寫入 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)

此方法用於新增條件重新整理任務。任務的觸發條件以陣列形式傳遞,支援設定多個觸發條件。只有當所有設定的條件同時滿足時,才會觸發對應的重新整理任務。

引數

名稱資料型別是否必須描述
conditionlist觸發條件

返回值

  • 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_idnumber重新整理任務的唯一標識 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_idnumber需要刪除的重新整理任務的 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 白名單規則。

引數

引數名資料型別是否必選描述
conditionlist規則執行的條件
rule_setslistWAF 規則的 ID 列表

WAF Condition 引數

引數名資料型別是否必選描述
varstring or arrayEdge 語言內建的函式名。當資料型別為 array 時,需在函式名後新增此方法所需的引數
opstring運算子,預設為 eq
valstringval / vals 中的任選一項
valslistval / 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_idnumber待更新的白名單 id
conditionlist規則執行的條件集合
rule_setslist包含 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_idnumber白名單規則的唯一識別符號 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_idnumber白名單規則的 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_idnumber應用的唯一識別符號 id
namestring用於標識動態指標的名稱
sqlstring用於生成動態指標的 SQL 語句
notestring對動態指標的附加說明或備註
intervalnumber動態指標的重新整理時間間隔(以秒為單位)

返回值

  • 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)

此方法用於修改應用的動態指標。

引數

引數資料型別是否必須描述
idnumber需要修改的動態指標的 id
app_idnumber應用的 id
namestring指標的名稱
sqlstring定義指標的 SQL 語句
notestring備註資訊
intervalnumber資料重新整理間隔,單位為秒

返回值

  • 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_idnumber指定的應用的 ID
idnumber要刪除的動態指標的 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)

此方法用於獲取指定應用的動態指標。

引數

引數資料型別必選描述
idnumber動態指標的 id
app_idnumber應用的 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_idnumber表示應用的唯一標識 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_idnumber應用的 id
idnumber動態指標的 id
chart_typenumber圖表型別
start_timenumber資料開始時間
end_timenumber資料結束時間
node_idnumberEdge 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 分鐘的資料。

引數

引數資料型別是否必須描述
idnumber指標的 id
start_timenumber指標獲取的開始時間
end_timenumber指標獲取的結束時間

返回值

  • 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 列表。

引數

名稱資料型別是否必須描述
namestringIP 列表的名稱
typestringIP 地址的型別,可以是 ipv4 或即將支援的 ipv6
itemsarrayIP 地址列表

items 引數

名稱型別是否必須描述
ipstringIP 地址

返回值

  • 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'}
                        ])

put_ip_list

ok = put_ip_list(rule_id=None, name=None, type='ipv4', items=None)

此方法用於修改指定的 IP 列表。

引數

名稱資料型別是否必選描述
rule_idnumber用於指定需要修改的 IP 列表的 ID
namestring用於指定 IP 列表的名稱
typestring用於指定 IP 地址的型別,目前僅支援 ‘ipv4’ ,‘ipv6’將在未來推出
itemsarray用於指定 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_idnumber需要刪除的 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_idnumber要檢視的 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)

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)

此方法用於建立全域性動態指標。

引數

名稱資料型別必選描述
namestring待建立的全域性動態指標的名稱
notestring對該全域性動態指標的備註資訊
intervalnumber統計的時間間隔
sqlstring用於收集指標的 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)

此方法用於修改全域性動態指標。

引數

名稱資料型別必選描述
idnumber全域性動態指標的 ID
namestring全域性動態指標的名稱
notestring備註資訊
intervalnumber資料收集的時間間隔
sqlstring用於收集指標的 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)

此方法用於刪除指定的全域性動態指標。

引數

引數名資料型別是否必需描述
idnumber需要刪除的全域性動態指標的 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)

此方法用於獲取指定的全域性動態指標。

引數

引數名資料型別是否必選描述
idnumber全域性動態指標的 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 分鐘。

引數

名稱資料型別是否必填描述
idnumber動態指標的 ID
chart_typestring圖表型別,預設為 ’line’
start_timenumber開始時間,預設為 None
end_timenumber結束時間,預設為 None
node_idnumberEdge 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_idnumber需要操作的 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 應用。

引數

名稱資料型別是否必選引數描述
zonestring域名
authoritylistNS 記錄
soa_emailstringSOA 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_idnumber代表 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_idnumber需要刪除的 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_domainstring子域名
linestring線路,參照同目錄下的 Line.txt 檔案
record_typestring記錄的型別,可選值為 [A, TXT, MX, CNAME, CAA]
textstring當記錄型別為 [TXT, CAA] 時,需要填寫此欄位
ipstring當記錄型別為 IP 時,需填寫此欄位
gatewaynumber當記錄指向特定閘道器叢集時,需填寫此欄位
domainstring當記錄型別為域名時,需填寫此欄位
prioritynumber當記錄型別為 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_idnumberDNS 記錄的 id
sub_domainstring子域名
linestring線路,參考同目錄下的 Line.txt 檔案
record_typestring記錄的型別,可選值包括 [A, TXT, MX, CNAME, CAA]
textstring當記錄型別為 [TXT, CAA] 時,需填寫該欄位
ipstring當記錄型別為 IP 時,需填寫該欄位
domainstring當記錄型別為域名時,需填寫該欄位
prioritynumber當記錄型別為 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_idnumberDNS 記錄的 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_idnumber表示 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。

引數

名稱資料型別是否必須描述
namestring上游的名稱
serverslist上游的詳細資訊
sslbool是否啟用 HTTPS 協議,預設為 False
health_checkerdict健康檢查的詳細配置項,預設為 None
gidarray使用者組的 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)

此方法用於更新全域性上游資訊。

引數

名稱資料型別是否必須描述
namestring上游名稱
serverslist上游資訊列表
sslbool是否使用 HTTPS 協議,預設值為 False
health_checkerdict健康檢查的詳細配置,預設值為 None
gidarray使用者組 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_idstring上游的 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_idstring上游的唯一識別 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。

引數

名稱資料型別是否必填引數描述
namestring定義上游的名稱
k8s_serviceslist提供 k8s 服務的詳細資訊
sslbool定義是否使用 HTTPS 協議,預設值為 False
health_checkerdict對上游的健康狀況進行檢查的詳細配置,預設值為 None
gidarray使用者組 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 上游的資訊。

引數

名稱資料型別是否必選描述
namestring定義上游名稱
k8s_serviceslist當上遊是 Kubernetes 服務時的資訊
sslbool是否採用 HTTPS 協議,預設值為 False
health_checkerdict對健康檢查的詳細配置,預設值為 None
gidarray使用者組 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_idstring上游的唯一標識 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.pemcert.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_idnumber證書的唯一識別符號 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_idnumber將被刪除的證書的 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)

此方法用於新增全域性使用者。

引數

名稱資料型別是否必須描述
namestring需要新增的全域性使用者名稱
pwdstring對應的全域性使用者密碼
gidarray包含使用者組 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)

此方法用於根據使用者名稱搜尋全球使用者資訊。

引數

引數名資料型別是否必選描述
namestring全球的使用者名稱

返回值

  • 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)

本函式用於獲取所有全域性使用者的資訊。

引數

名稱資料型別是否必填描述
detailnumber取值為 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_idnumber規則的唯一標識
conditionlist定義規則的條件
conseqdict or list規定規則的行動
gidlist使用者組的 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_idnumber規則的唯一識別符號 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)

此方法用於根據給定的應用名來獲取相應的全域性自定義動作。

引數

引數名資料型別是否必須描述
namestring規則名稱

返回值

  • 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_idnumber規則的唯一識別符號

返回值

  • 返回 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)

此方法用於新增全域性變數。

引數

名稱資料型別是否必須描述
namestring定義的變數名稱
var_typestring指定的變數型別
defaultstring設定的預設值
gidlist使用者組 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_idnumber變數的唯一識別符號
namestring變數的名稱
var_typestring變數的資料型別
defaultstring變數的預設值
gidlist使用者組的 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_idnumber全域性變數 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_buffernumber訪問日誌的緩衝區大小
access_log_buffer_unit[‘k’, ’m’, ‘g’]訪問日誌緩衝區大小的單位
access_log_flushnumber訪問日誌在記憶體中的最大保留時間
enable_access_logbool是否啟用訪問日誌
access_log_formatsdict訪問日誌的格式
avoid_gen_error_logbool是否避免生成錯誤日誌
client_body_timeoutnumber客戶端請求體的超時時間
client_body_timeout_unit[’s’, ’m’]客戶端請求體超時時間的單位
client_header_timeoutnumber客戶端請求頭的超時時間
client_header_timeout_unit[’s’, ’m’]客戶端請求頭超時時間的單位
client_max_body_sizenumber客戶端請求體的最大尺寸
client_max_body_size_unit[‘k’, ’m’]客戶端請求體最大尺寸的單位
client_header_buffer_sizenumber客戶端請求頭緩衝區的大小
client_header_buffer_size_unit[‘k’, ’m’]客戶端請求頭緩衝區大小的單位
max_client_request_line_sizenumber客戶端請求行的最大尺寸
max_client_request_header_size[‘k’, ’m’]客戶端請求頭的最大尺寸

access_log_formats 引數

名稱資料型別是否必選描述
defaultbool設定該日誌格式是否為預設格式。注意:配置中至少需要一個預設的日誌格式
namestring該訪問日誌格式的名稱,需要全域性唯一
formatstring該訪問日誌的格式,需按照 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 規則。

引數

引數名資料型別是否必填描述
namestring指定的規則名稱
codestring對應規則的 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_idnumber規則的唯一識別符號 id
namestring規則的名稱
codestring規則的 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 規則。

引數

名稱資料型別是否必選描述
detailbool表示是否展示規則的詳細資訊,預設值為 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)

此方法用於新增新的全域性自定義動作。

引數

名稱資料型別是否必填描述
namestring自定義動作的名稱
conditionlist自定義動作執行的條件
conseqdict or list執行的自定義動作
gidlist使用者組的 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_idnumber自定義動作的 id
namestring自定義動作的名稱
conditionlist自定義動作的執行條件
conseqdict or list自定義動作的結果
gidlist使用者組 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_idnumber自定義動作的 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_idnumber自定義動作的 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()

此方法用於獲取所有全域性自定義動作。

引數

名稱資料型別是否必選描述資訊
pagenumber表示頁數
pagesizenumber表示每頁顯示的條目數量

返回值

  • 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)

此方法用於上傳靜態檔案。

引數

名稱資料型別是否必選描述
contentstring靜態檔案的內容
labelstring靜態檔案的標籤
file_typestring靜態檔案的型別
gidlist使用者組 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_idnumber需要獲取的靜態檔案的 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_idnumberyes待刪除的靜態檔案的 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_namestring新增叢集組的名稱

返回值

  • 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_idnumber叢集組的唯一識別符號
group_namestring需要更改的叢集組名稱

返回值

  • 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_idnumber需要刪除的叢集組的編號

返回值

  • 返回 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_idnumber規則的唯一識別符號
proxylist用於定義代理規則的列表

返回值

  • 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 叢集連線引數。

引數

名稱資料型別是否必須描述
namestringk8s 叢集的名稱
hoststringk8s 叢集的地址
domainstringk8s 叢集的域名,host 或 domain 兩者必填一項且只能填一項
portnumberk8s 叢集的埠
connect_timeoutnumberk8s 叢集的連線超時時間,單位為秒,預設為 5 秒
read_timeoutnumberk8s 叢集的讀取資料超時時間,單位為秒,預設為 5 秒
ssl_verifybool是否需要進行 SSL 校驗
tokenstringk8s 叢集的 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_idnumberKubernetes 叢集的唯一識別符號
namestringKubernetes 叢集的名稱
hoststringKubernetes 叢集的主機地址
domainstringKubernetes 叢集的域名,host 或 domain 中至少需要一個,且不能同時填寫
portnumberKubernetes 叢集的連線埠
connect_timeoutnumberKubernetes 叢集的連線超時時間,單位為秒
read_timeoutnumberKubernetes 叢集的資料讀取超時時間,單位為秒
ssl_verifybool是否需要進行 SSL 校驗
tokenstringKubernetes 叢集的 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_idnumberKubernetes 叢集的唯一識別符號

返回值

  • 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_idnumberk8s 叢集的唯一識別符號

返回值

  • 返回一個 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_idnumberk8s 叢集的唯一識別符號

返回值

  • 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_idnumber規則的唯一識別符號
proxylist代理規則的詳細資訊

返回值

  • 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 列表。

引數

名稱資料型別是否必選描述
namestring要建立的全球 IP 列表的名稱
typestringIP 地址的型別,當前支援 ipv4ipv6(即將推出)
itemsarray包含的 IP 地址列表

items 引數

名稱資料型別是否必選描述
ipstringIP 地址

返回值

  • 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'}
                               ])

put_global_ip_list

data = put_global_ip_list(rule_id=None, name=None, type='ipv4', items=None)

此方法用於修改指定的全域性級別 IP 列表。

引數

名稱資料型別是否必選描述
rule_idnumber指定的全域性級別 IP 列表的 ID
namestring需要修改的全域性級別 IP 列表的名稱
typestringIP 地址的型別,目前支援 ‘ipv4’ 和即將支援的 ‘ipv6’
itemsarray待修改的 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_idnumber需要刪除的全域性 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_idnumber用於指定全域性級別 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)

new_user_var

var_id = new_user_var(**kwargs)

這是一個用於新增使用者級別變數的函式。

引數

名稱資料型別是否必選描述資訊
namestring變數的名稱
var_typestring變數的型別
defaultstring變數的預設值

返回值

  • 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_idnumber表示變數的唯一標識
namestring代表變數的名稱
var_typestring描述變數的型別
defaultstring定義變數的預設值

返回值

  • 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_idnumber變數的唯一識別符號

返回值

  • 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_idnumber要刪除的變數 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_idstring請求的唯一識別符號

返回值

  • 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。

引數

名稱資料型別是否必選描述
namestringAPI Token 的名稱
expirenumberAPI 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 令牌。

引數

引數名資料型別是否必需描述
idnumberAPI 令牌的標識
limitnumber返回結果的數量限制

返回值

  • 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。

引數

引數資料型別是否必選描述
idnumberapi 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)

此方法用於建立新的閘道器叢集。

引數

引數資料型別是否必選描述
namestring閘道器叢集的名稱
partition_idstring所建立的閘道器叢集所屬的閘道器分割槽 ID
tagarray用於標記所建立閘道器叢集的標籤

返回值

  • 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_idstring要刪除的閘道器叢集的唯一識別符號

返回值

  • 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_idnumber節點的唯一識別符號 (ID)
gateway_idnumber閘道器叢集的唯一識別符號 (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_addressstring該節點的特定 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

NameData TypeRequiredDescription
node_idnumberYesID of the node
gateway_idnumberNoCluster ID of the gateway. If not specified, the corresponding node will be located by traversing
namestringNoName of the node
is_grayboolNoSet/unset the node as a gray node
statusnumberNo0: Disable DNS, enable cluster cache, 1: Enable DNS, enable cluster cache, 2: Disable DNS, disable cluster cache
external_ipstringNoPublic IP address
external_ipv6stringNoPublic IPv6 address
internal_ipstringNoInternal 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_idnumber要刪除的節點的 ID
gateway_idnumber閘道器叢集的 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)

此方法用於獲取使用了指定全域性證書的應用列表。

引數

名稱資料型別是否必選描述
idnumber全域性證書 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_idnumber分割槽的唯一識別符號 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_idnumber分割槽 ID
module_idnumber模組 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_idnumber分割槽 ID
namestring模組名稱
codestring模組程式碼

返回值

  • 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_idnumber分割槽的 ID
module_idnumber模組的 ID
namestring模組的名稱
codestring模組的程式碼

返回值

  • 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_idnumber分割槽 ID
module_idnumber模組 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_filesarrayCRL 檔案陣列

返回值

  • 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_idnumber閘道器叢集的 ID,未指定時將透過遍歷方式查詢對應節點
mac_addressstring節點的 MAC 地址
internal_ipstring節點的內部 IPv4 地址
external_ipstring節點的外部 IPv4 地址
namestring節點的名稱,若未命名則預設使用主機名
external_ipv6string節點的外部 IPv6 地址
statusstring節點狀態,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_idnumberHTTP 應用的 ID
pagenumber指定要檢索的頁碼
pagesizenumber指定每頁的日誌數量
request_idstring根據特定的請求 ID 檢索日誌
start_timenumber根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒
end_timenumber根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒
hoststring根據特定的 host 檢索日誌
headerstring根據特定的請求頭資訊檢索日誌
rule_set_idnumber根據特定的規則集 ID 檢索日誌
resp_statusnumber根據特定的 HTTP 響應狀態碼檢索日誌
actionstring根據特定的動作檢索日誌,取值 log, block, edge-captcha, hcaptcha, redirect, page-template, close-connection, redirect-validate, js-challenge
remote_addrstring根據特定的客戶端地址檢索日誌
show_allbool標識是否獲取所有日誌,當為 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_idnumberHTTP 應用的 ID
pagenumber指定要檢索的頁碼
pagesizenumber指定每頁的日誌數量
request_idstring根據特定的請求 ID 檢索日誌
start_timenumber根據特定的時間範圍檢索日誌,開始時間為 Unix 時間戳,單位是秒
end_timenumber根據特定的時間範圍檢索日誌,結束時間為 Unix 時間戳,單位是秒
hoststring根據特定的 host 檢索日誌
uristring根據特定的 URI 資訊檢索日誌
user_agentnumber根據特定的 User Agent 檢索日誌
actionstring根據特定的動作檢索日誌,取值 close_connection, error_page, enable_hcaptcha, enable_edge_captcha, redirect_validate, js_challenge, delay
remote_addrstring根據特定的客戶端地址檢索日誌

返回值

  • 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)

此方法用於獲取指定的全域性頁面模板。

引數

引數名資料型別是否必需描述
idnumber全域性頁面模板的 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)

此方法用於刪除指定的全域性頁面模板。

引數

引數名資料型別是否必需描述
idnumber全域性頁面模板的 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)

此方法用於建立新的全域性頁面模板。

引數

引數名資料型別是否必需描述
namestring全域性頁面模板的名稱
contentstring全域性頁面模板的內容

返回值

  • 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)

此方法用於更新指定的全域性頁面模板。

引數

引數名資料型別是否必需描述
idnumber全域性頁面模板的 ID
namestring全域性頁面模板的名稱
contentstring全域性頁面模板的內容

至少需指定 namecontent 的其中一個。

返回值

  • 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 使用者組資訊。

引數

引數名資料型別是否必需描述
idnumberBasic Auth 使用者組的 ID
app_idnumberHTTP 應用的 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_idnumberHTTP 應用的 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 使用者組資訊。

引數

引數名資料型別是否必需描述
idnumberBasic Auth 使用者組的 ID
app_idnumberHTTP 應用的 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 使用者組。

引數

引數名資料型別是否必需描述
namestringBasic Auth 使用者組的名稱
labelstringBasic Auth 使用者組的標籤
app_idnumberHTTP 應用的 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 使用者組資訊。

引數

引數名資料型別是否必需描述
idnumberBasic Auth 使用者組的 ID
namestringBasic Auth 使用者組的名稱
labelstringBasic Auth 使用者組的標籤
app_idnumberHTTP 應用的 ID,使用 use_app 指定後可以不傳這個引數

至少需指定 namelabel 的其中一個。

返回值

  • 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 使用者組中的指定的使用者資訊。

引數

引數名資料型別是否必需描述
idnumberBasic Auth 使用者的 ID
group_idnumberBasic Auth 使用者組的 ID
app_idnumberHTTP 應用的 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_idnumberBasic Auth 使用者組的 ID
app_idnumberHTTP 應用的 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 使用者組中指定的使用者資訊。

引數

引數名資料型別是否必需描述
idnumberBasic Auth 使用者的 ID
group_idnumberBasic Auth 使用者組的 ID
app_idnumberHTTP 應用的 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_idnumberBasic Auth 使用者所屬的使用者組的 ID
usernamestringBasic Auth 使用者的名稱
passwordstringBasic Auth 使用者的密碼
app_idnumberHTTP 應用的 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 使用者組中指定的使用者資訊。

引數

引數名資料型別是否必需描述
idnumberBasic Auth 使用者的 ID
group_idnumberBasic Auth 使用者所屬的使用者組的 ID
usernamestringBasic Auth 使用者的名稱
passwordstringBasic Auth 使用者的密碼
app_idnumberHTTP 應用的 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)