summaryrefslogtreecommitdiff
path: root/support
diff options
context:
space:
mode:
authorzhaokun <[email protected]>2024-11-28 16:50:57 +0800
committerzhaokun <[email protected]>2024-11-28 16:50:57 +0800
commit83661e91f8abd64f6b0ecee8e9e69e784a72e5d8 (patch)
tree1aa4b4365efdf9bed886056f3ba67c0941260b6b /support
parent06fa53634037ae81bfb5b24e97a48697061cb083 (diff)
parentc9deae84b3d26ca19242a95d8a8c9a18974bdcc9 (diff)
Diffstat (limited to 'support')
-rw-r--r--support/api_utils/query_rule_log.py17
-rw-r--r--support/ui_utils/element_position/map_element_position_library.py38
-rw-r--r--support/ui_utils/profiles/create_css_file.py (renamed from support/ui_utils/profiles/create_insert_profile.py)4
-rw-r--r--support/ui_utils/profiles/create_dns_resource_record.py (renamed from support/ui_utils/profiles/create_dns_records_profile.py)7
-rw-r--r--support/ui_utils/profiles/create_js_file.py104
-rw-r--r--support/ui_utils/profiles/create_lua_script.py (renamed from support/ui_utils/profiles/create_run_script_profile.py)4
-rw-r--r--support/ui_utils/profiles/create_profiles.py201
-rw-r--r--support/ui_utils/profiles/create_replacement_file.py (renamed from support/ui_utils/profiles/create_hijack_profile.py)4
-rw-r--r--support/ui_utils/profiles/create_response_page.py12
-rw-r--r--support/ui_utils/profiles/create_statistics_template.py4
-rw-r--r--support/ui_utils/profiles/create_tcp_option_profile.py (renamed from support/ui_utils/profiles/create_tcp_proxy_profile.py)4
-rw-r--r--support/ui_utils/profiles/delete_profiles.py11
-rw-r--r--support/ui_utils/profiles/edit_profiles.py6
-rw-r--r--support/ui_utils/profiles/elemen_position.py49
-rw-r--r--support/ui_utils/profiles/search_profiles.py3
-rw-r--r--support/ui_utils/ui_client.py11
16 files changed, 351 insertions, 128 deletions
diff --git a/support/api_utils/query_rule_log.py b/support/api_utils/query_rule_log.py
index 8d516a00c..7f8ede0b6 100644
--- a/support/api_utils/query_rule_log.py
+++ b/support/api_utils/query_rule_log.py
@@ -3,6 +3,10 @@ import json
import time
import pytz
import requests
+import os
+import configparser
+from support.organize_config import *
+from support.packet_generator.workpath import workdir
from datetime import datetime
from support.ui_utils.element_position.policy_element_position import *
@@ -368,7 +372,18 @@ class QueryRuleLog:
temp_log_result_list.append(False)
elif query_field_key in {"sc_rsp_raw_uuid_list", "sc_rsp_decrypted_uuid_list"}:
query_value = self.policy_configuration["action_parameter"]["sff_profiles"][0]["service_func_profiles"]
- if query_value == log[query_field_key]:
+ conf_path = os.path.join(workdir, "configuration_file.ini")
+ conf = configparser.ConfigParser()
+ conf.read(conf_path, encoding="utf-8")
+ active_dst_ip_list = conf.get("sc_active_dst_ip", "ip_list")
+ effective_device_tag_list = ["group-xxg-tsgx", "center-xxg-tsgx"]
+ if log[query_field_key] == [] and self.policy_configuration["action_parameter"]["sf_configuration"][0]["connectivity"]["method"] == "vxlan_g" and self.policy_configuration["action_parameter"]["sf_configuration"][0]["connectivity"]["dest_ip"] not in active_dst_ip_list:
+ temp_log_result_list.append(True)
+ elif log[query_field_key] == [] and self.policy_configuration["action_parameter"]["sf_configuration"][0]["device_group"]["value"] not in effective_device_tag_list:
+ temp_log_result_list.append(True)
+ elif log[query_field_key] == [] and self.policy_configuration["action_parameter"]["sf_configuration"][0]["admin_status"] == 0:
+ temp_log_result_list.append(True)
+ elif query_value == log[query_field_key]:
temp_log_result_list.append(True)
else:
temp_log_result_list.append(False)
diff --git a/support/ui_utils/element_position/map_element_position_library.py b/support/ui_utils/element_position/map_element_position_library.py
index de3b70531..f5ca1d666 100644
--- a/support/ui_utils/element_position/map_element_position_library.py
+++ b/support/ui_utils/element_position/map_element_position_library.py
@@ -1538,7 +1538,6 @@ object_apn_object_element_position = {
"objectListPage_deleteButton_warningYes_posXpath": apnObjectListPage_deleteButton_warningYes_posXpath
}
}
-
object_application_object_element_position = {
"page_jump": {
"mainPage_navigationBar_logo_posXpath": mainPage_navigationBar_logo_posXpath,
@@ -1600,7 +1599,6 @@ object_application_object_element_position = {
}
}
-
object_application_group_object_element_position = {
"page_jump": {
"mainPage_navigationBar_logo_posXpath": mainPage_navigationBar_logo_posXpath,
@@ -1768,7 +1766,6 @@ object_tunnel_object_element_position = {
}
}
-
object_interval_object_element_position = {
"page_jump": {
"mainPage_navigationBar_logo_posXpath": mainPage_navigationBar_logo_posXpath,
@@ -2165,15 +2162,15 @@ log_session_log_element_position = {
}
-def get_profile_element_position(key_name):
- if key_name == "statistics_template":
- element_position_map = profile_statistics_template_element_position
- elif key_name == "monitor_profile":
- element_position_map = profile_monitor_profile_element_position
- else:
- print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "{} no element position map".format(key_name))
- element_position_map = {}
- return element_position_map
+# def get_profile_element_position(key_name):
+# if key_name == "statistics_template":
+# element_position_map = profile_statistics_template_element_position
+# elif key_name == "monitor_profile":
+# element_position_map = profile_monitor_profile_element_position
+# else:
+# print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "{} no element position map".format(key_name))
+# element_position_map = {}
+# return element_position_map
def get_name_list(test_data):
@@ -2219,7 +2216,7 @@ def get_name_list(test_data):
tmp_name_dict["name"] = value[i]["profile_file"]["name"]
else:
tmp_name_dict["name"] = value[i]["profile_file"]["name"]
-
+
name_list.append(copy.deepcopy(tmp_name_dict))
#print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], name_list)
#"""
@@ -2409,21 +2406,22 @@ def get_element_position(key_name):
element_position_map = profile_ssl_decryption_keyring_element_position
elif key_name == "ssl_decryption_profile":
element_position_map = profile_ssl_decryption_profile_element_position
- elif key_name == "tcp_proxy_profile":
+ elif key_name == "tcp_option_profile":
element_position_map = profile_tcp_proxy_profile_element_position
elif key_name == "traffic_mirroring_profile":
element_position_map = profile_traffic_mirroring_profile_element_position
- elif key_name == "hijack_file":
+ elif key_name == "replacement_file":
element_position_map = profile_hijack_file_element_position
- elif "insert_script" in key_name:
- if "css" in key_name:
- element_position_map = profile_insert_script_css_element_position
- else:
- element_position_map = profile_insert_script_js_element_position
+ elif key_name == "js_file":
+ element_position_map = profile_insert_script_js_element_position
+ elif key_name == "css_file":
+ element_position_map = profile_insert_script_css_element_position
elif key_name =="statistics_template":
element_position_map = profile_statistics_template_element_position
elif key_name == "run_script":
element_position_map = profile_run_script_element_position
+ elif key_name == "statistics_template":
+ element_position_map = profile_statistics_template_element_position
# policy
elif key_name == "proxy_manipulation":
element_position_map = policy_manipulation_rule_element_position
diff --git a/support/ui_utils/profiles/create_insert_profile.py b/support/ui_utils/profiles/create_css_file.py
index 51bcefeb4..30d17600f 100644
--- a/support/ui_utils/profiles/create_insert_profile.py
+++ b/support/ui_utils/profiles/create_css_file.py
@@ -5,11 +5,11 @@ from selenium.webdriver.common.by import By
from support.ui_utils.element_position.profile_element_position import *
from datetime import datetime
-class CreateInsertProfile:
+class CreateCSSFile:
def __init__(self, driver):
self.driver = driver
- def create_hijack_file(self, data):
+ def create_css_file(self, data):
profile_name = data["name"]
if "css" in data["script_type"]:
temp_insertScripts_input_Name_posXpath = insertScripts_input_Name_posXpath
diff --git a/support/ui_utils/profiles/create_dns_records_profile.py b/support/ui_utils/profiles/create_dns_resource_record.py
index e69a3453f..684683d89 100644
--- a/support/ui_utils/profiles/create_dns_records_profile.py
+++ b/support/ui_utils/profiles/create_dns_resource_record.py
@@ -18,13 +18,14 @@ import copy
from support.ui_utils.random_name import RandomName
from datetime import datetime
-class CreateDnsProfile():
- def __init__(self, driver, secy_dnsRecords_profile_element_position):
+class CreateDnsResourceReccord():
+ def __init__(self, driver):
self.driver = driver
+ secy_dnsRecords_profile_element_position = {}
self.page_jump_element_position = secy_dnsRecords_profile_element_position["page_jump"]
self.create_element_position = secy_dnsRecords_profile_element_position["create"]
- def create_dns_records_profile(self, data, secy_dnsRecords_profile_element_position,source_name):
+ def create_dns_resource_record(self, data, secy_dnsRecords_profile_element_position,source_name):
page_jump_element_position = secy_dnsRecords_profile_element_position["page_jump"]
create_element_position = secy_dnsRecords_profile_element_position["create"]
try:
diff --git a/support/ui_utils/profiles/create_js_file.py b/support/ui_utils/profiles/create_js_file.py
new file mode 100644
index 000000000..b8021ece7
--- /dev/null
+++ b/support/ui_utils/profiles/create_js_file.py
@@ -0,0 +1,104 @@
+import os
+import sys
+import time
+from selenium.webdriver.common.by import By
+from support.ui_utils.element_position.profile_element_position import *
+from datetime import datetime
+
+class CreateJSFile:
+ def __init__(self, driver):
+ self.driver = driver
+
+ def create_js_file(self, data):
+ profile_name = data["name"]
+ if "css" in data["script_type"]:
+ temp_insertScripts_input_Name_posXpath = insertScripts_input_Name_posXpath
+ temp_insertScripts_button_oK_posXpath = insertScripts_button_oK_posXpath
+ else:
+ temp_insertScripts_input_Name_posXpath = insertScripts_js_input_Name_posXpath
+ temp_insertScripts_button_oK_posXpath = insertScripts_js_button_oK_posXpath
+ self.driver.find_element(By.XPATH, temp_insertScripts_input_Name_posXpath).clear()
+ self.driver.find_element(By.XPATH, temp_insertScripts_input_Name_posXpath).send_keys(profile_name)
+ #页面其它选项操作
+ result_code = self._operate_page(data, operation_type="create")
+ #点击OK
+ self.driver.find_element(By.XPATH, temp_insertScripts_button_oK_posXpath).click()
+ if self.driver.is_element_exist_by_value(By.XPATH, insertScripts_button_warningSaveYes_posXpath):
+ self.driver.find_element(By.XPATH, insertScripts_button_warningSaveYes_posXpath).click()
+
+ def _operate_page(self, data, operation_type="create"):
+ """
+ 除name的其它选项操作,共创建、修改逻辑调用
+ :param data:
+ :param operation_type: create modify。创建 修改时调用
+ :return:
+ """
+ if operation_type == "create":
+ data_index = 0 #新增数据索引
+ else:
+ data_index = -1 #编辑数据索引
+ no_modify = "不修改"
+ #script type脚本类型操作 --先操作文件类型
+
+ #self._operate_scriptType(data, data_index=data_index)
+ #File文件上传操作
+ file = self._get_value_from_data(data, key="script", data_index=data_index) #解析file文件名称
+ if file != no_modify: #判断修改时不修改时跳过操作。
+ if file != "":
+ create_file = data["script"].split("->")[data_index] # 提取上传文件绝对路径
+ profile_path = os.path.dirname(os.path.abspath(__file__)) # ...support\ui_utils\profile
+ file_abs = os.path.join(profile_path, "profile_file", "insert_scripts", create_file)
+ #上传文件
+ if "css" in data["script_type"]:
+ temp_insertScripts_input_scriptUpLoad_posXpath = insertScripts_input_scriptUpLoad_posXpath
+ else:
+ temp_insertScripts_input_scriptUpLoad_posXpath = insertScripts_js_input_scriptUpLoad_posXpath
+ self.driver.find_element(By.XPATH, temp_insertScripts_input_scriptUpLoad_posXpath).send_keys(file_abs)
+
+ def _operate_scriptType(self, data, data_index=0, no_modify="不修改"):
+ """
+ 脚本类型操作,。
+ :param data:
+ :param data_index: 0 -1来自上层
+ :param no_modify:"不修改" 来自上次调用
+ :param operation_type: create modify两个状态,
+ :return:
+ """
+ #解析输入data数据的数据,脚本类型
+ script_type = self._get_value_from_data(data, key="script_type", data_index=data_index)
+ if script_type != no_modify: #编辑不修改时执行
+ if script_type != "":
+ self.driver.find_element(By.XPATH, insertScripts_input_scriptType_posXpath).click() #点击输入列表框
+ if "js" == script_type: #js类型点击
+ self.driver.find_element(By.XPATH, insertScripts_dropdown_jsItem_posXpath).click()
+ #insert position操作
+ insert_position = self._get_value_from_data(data, key="insert_position", data_index=data_index) #获取insert position等操作After Page Load
+ if insert_position != no_modify:
+ self.driver.find_element(By.XPATH, insertScripts_input_insertPosition_posXpath).click()
+ if ("after" in insert_position) and ("page" in insert_position) and ("load" in insert_position): #点击 after Page Load选项
+ #点击下拉列表选项
+ self.driver.find_element(By.XPATH, insertScripts_dropdown_afterPageLoadItem_posXpath).click()
+ else: #点击 before Page Load选项
+ self.driver.find_element(By.XPATH, insertScripts_dropdown_beforePageLoadItem_posXpath).click()
+ else: #css类型点击列表
+ self.driver.find_element(By.XPATH, insertScripts_dropdown_cssItem_posXpath).click()
+
+ def _get_value_from_data(self, data, key="", data_index=0):
+ """
+ 从data数据中,根据key提取值
+ :param data:
+ :param key:
+ :param data_index: 0 -1
+ :return:
+ """
+ try:
+ switch_value: str = data[key].split("->")[data_index].strip().lower() #用例数据
+ return switch_value
+ except Exception as e:
+ print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], f"Exception: {e}", flush=True)
+ raise
+
+
+
+
+
diff --git a/support/ui_utils/profiles/create_run_script_profile.py b/support/ui_utils/profiles/create_lua_script.py
index 0e0251566..03b29c452 100644
--- a/support/ui_utils/profiles/create_run_script_profile.py
+++ b/support/ui_utils/profiles/create_lua_script.py
@@ -5,11 +5,11 @@ from selenium.webdriver.common.by import By
from support.ui_utils.element_position.profile_element_position import *
from datetime import datetime
-class CreateRunScriptProfile:
+class CreateLuaScript:
def __init__(self, driver):
self.driver = driver
- def create_run_script_file(self, data):
+ def create_lua_script(self, data):
profile_name = data["name"]
self.driver.find_element(By.XPATH, tsgProxyScripts_input_Name_posXpath).clear()
self.driver.find_element(By.XPATH, tsgProxyScripts_input_Name_posXpath).send_keys(profile_name)
diff --git a/support/ui_utils/profiles/create_profiles.py b/support/ui_utils/profiles/create_profiles.py
index ebe60d00b..1b07b7732 100644
--- a/support/ui_utils/profiles/create_profiles.py
+++ b/support/ui_utils/profiles/create_profiles.py
@@ -2,109 +2,144 @@ import os
import sys
import time
from support.ui_utils.profiles.page_jump import PageJump
-from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
-from support.ui_utils.element_position.profile_element_position import *
-import traceback
-from support.ui_utils.profiles.create_statistics_template import CreateStatisticsTemplate
-from support.ui_utils.element_position.map_element_position_library import get_profile_element_position
-from support.ui_utils.profiles.create_hijack_profile import CreateHijackProfile
-from support.ui_utils.profiles.create_insert_profile import CreateInsertProfile
-from support.ui_utils.profiles.create_run_script_profile import CreateRunScriptProfile
+from datetime import datetime
from support.ui_utils.profiles.create_response_page import CreateResponsePage
+from support.ui_utils.profiles.create_dns_resource_record import CreateDnsResourceReccord
+from support.ui_utils.profiles.create_traffic_mirroring_profile import CreateMonitorProfile
from support.ui_utils.profiles.create_ssl_decryption_keyring_profile import CreateSSLDecryptionKeyringProfile
from support.ui_utils.profiles.create_ssl_decryption_profile import CreateSSLDecryptionProfile
-from support.ui_utils.profiles.create_tcp_proxy_profile import CreateTcpProxyProfile
-from support.ui_utils.profiles.create_traffic_mirroring_profile import CreateMonitorProfile
-from datetime import datetime
+from support.ui_utils.profiles.create_tcp_option_profile import CreateTcpOptionProfile
+from support.ui_utils.profiles.create_replacement_file import CreateReplacementFile
+from support.ui_utils.profiles.create_js_file import CreateJSFile
+from support.ui_utils.profiles.create_css_file import CreateCSSFile
+from support.ui_utils.profiles.create_lua_script import CreateLuaScript
+from support.ui_utils.profiles.create_sc_profile import CreateServiceFunctionForwarderProfile
+from support.ui_utils.profiles.create_statistics_template import CreateStatisticsTemplate
+from support.ui_utils.profiles.elemen_position import ElementPosition
class CreateProfiles:
def __init__(self, driver):
self.driver = driver
- def create_profiles(self, policy_configuration):
- profile_element_position = {}
- page_jump_element_position = profile_element_position["page_jump"]
- create_element_position = profile_element_position["create"]
- try:
- # 页面跳转
- page_jump = PageJump(self.driver)
- page_jump.jump_sub_profile_page(page_jump_element_position)
- # 点击create
- self.driver.find_element(By.XPATH, create_element_position["profileListPage_createButton_posXpath"]).click()
- if policy_configuration["profile_type"] == "response_page": # response page创建
- self._create_response_page(policy_configuration["profile_file"])
- elif policy_configuration["profile_type"] == "statistics_template": # response page创建
- self._create_statistics_template_page(policy_configuration)
- elif policy_configuration["profile_type"] == "hijack_file": # hijack file 创建
- self._create_hijack_file(policy_configuration["profile_file"])
- elif policy_configuration["profile_type"] == "insert_script": # insert script 创建
- self._create_insert_script(policy_configuration["profile_file"])
- elif policy_configuration["profile_type"] == "run_script": # run script 创建
- self._create_run_script(policy_configuration["profile_file"])
- elif policy_configuration["profile_type"] == "ssl_keyring": # ssl decrpytion keyring 创建
- self._create_run_ssl_decryption_keyring(policy_configuration["profile_file"])
- elif policy_configuration["profile_type"] == "ssl_decryption": # ssl decrpytion profile 创建
- self._create_run_ssl_decryption_profile(policy_configuration["profile_file"])
- elif policy_configuration["profile_type"] == "tcp_option": # tcp proxy 创建
- self._create_run_tcp_proxy_profile(policy_configuration["profile_file"])
- elif policy_configuration["profile_type"] == "traffic_mirror": # traffic mirror 创建
- self._create_traffic_mirroring_profile(policy_configuration["profile_file"])
- # 其它 profile创建
+ def create_profiles(self, parameter, policy_configuration):
+ result = ""
+ if "action_parameter" not in policy_configuration.keys():
return ""
- except Exception as e:
- print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], f"Exception: {e}")
- raise
-
- def _create_response_page(self, data):
- """
- resposne page 创建函数
- """
- Pl = CreateResponsePage(self.driver)
- Pl.create_response_page(data)
+ # 遍历创建
+ profile_list = ["html_profile", "resolution", "traffic_mirroring", "keyring_for_trusted", "keyring_for_untrusted",
+ "decryption_profile", "tcp_option_profile", "replacement_file", "js_file", "css_file", "lua_script",
+ "profile_chain", "sff_profiles", "template_profile"]
+ policy_configuration["parameter"] = parameter
+ for k, v in policy_configuration["action_parameter"].items():
+ if k not in profile_list: # 没有则不用执行profile
+ continue
+ profile_element_position, key_name = ElementPosition(policy_configuration).get_profile_element_position_library
+ if len(profile_element_position) == 0:
+ return ""
+ try: #页面Profile菜单跳转
+ page_jump_element_position = profile_element_position["page_jump"]
+ page_jump = PageJump(self.driver)
+ page_jump.jump_sub_profile_page(page_jump_element_position)
+ except Exception as e:
+ print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "When jumping profile, the exception error: ", str(e), flush=True)
+ return "When jumping profile, the exception error: " + str(e)
+ try: #点击create button
+ create_element_position = profile_element_position["create"]
+ self.driver.find_element(By.XPATH, create_element_position["profileListPage_createButton_posXpath"]).click()
+ except Exception as e:
+ print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "When clicking create button, the exception error: ", str(e), flush=True)
+ return "When clicking create button, the exception error: " + str(e)
- def _create_hijack_file(self, data):
- # 新建hijack_file
- Pl = CreateHijackProfile(self.driver)
- Pl.create_hijack_file(data)
+ if key_name == "response_page":
+ result = self._create_response_page(policy_configuration)
+ elif key_name == "dns_resource_record":
+ result = self._create_dns_resource_record(policy_configuration)
+ elif key_name == "traffic_mirroring_profile":
+ result = self._create_traffic_mirroring_profile(policy_configuration)
+ elif key_name == "ssl_decryption_keyring":
+ result = self._create_run_ssl_decryption_keyring(policy_configuration)
+ elif key_name == "ssl_decryption_profile":
+ result = self._create_run_ssl_decryption_profile(policy_configuration)
+ elif key_name == "tcp_option_profile":
+ result = self._create_run_tcp_option_profile(policy_configuration)
+ elif key_name == "replacement_file":
+ result = self._create_replacement_file(policy_configuration)
+ elif key_name == "js_file":
+ result = self._create_js_file(policy_configuration)
+ elif key_name == "css_file":
+ result = self._create_cs_file(policy_configuration)
+ elif key_name == "run_script":
+ result = self._create_run_script(policy_configuration)
+ elif key_name == "shaping_profile":
+ result = "shaping_profile"
+ elif key_name == "sff_profiles":
+ result = self._create_sff_script(policy_configuration)
+ elif key_name == "statistics_template":
+ result = self._create_statistics_template_page(policy_configuration)
+ else:
+ result = ""
+ return result
- def _create_insert_script(self, data):
- # 新建hijack_file
- Pl = CreateInsertProfile(self.driver)
- Pl.create_hijack_file(data)
+ def _create_response_page(self, policy_configuration):
+ # resposne page 创建函数
+ Pl = CreateResponsePage(self.driver)
+ return Pl.create_response_page(policy_configuration)
- def _create_run_script(self, data):
- # 新建 run script
- Pl = CreateRunScriptProfile(self.driver)
- Pl.create_run_script_file(data)
+ def _create_dns_resource_record(self, policy_configuration):
+ # dns resource record 创建函数
+ Pl = CreateDnsResourceReccord(self.driver)
+ return Pl.create_dns_resource_record(policy_configuration)
+
+ def _create_traffic_mirroring_profile(self, policy_configuration):
+ # 新建 tcp_proxy_profile
+ Pl = CreateMonitorProfile(self.driver)
+ return Pl.create_traffic_mirroring_profile(policy_configuration)
- def _create_run_ssl_decryption_keyring(self, data):
+ def _create_run_ssl_decryption_keyring(self, policy_configuration):
# 新建 ssl_decryption_keyring
Pl = CreateSSLDecryptionKeyringProfile(self.driver)
- Pl.create_ssl_decryption_keyring_file(data)
+ return Pl.create_ssl_decryption_keyring_file(policy_configuration)
- def _create_run_ssl_decryption_profile(self, data):
+ def _create_run_ssl_decryption_profile(self, policy_configuration):
# 新建 ssl_decryption_proile
Pl = CreateSSLDecryptionProfile(self.driver)
- Pl.create_ssl_decryption_file(data)
+ return Pl.create_ssl_decryption_file(policy_configuration)
- def _create_run_tcp_proxy_profile(self, data):
- # 新建 tcp_proxy_profile
- Pl = CreateTcpProxyProfile(self.driver)
- Pl.create_tcp_proxy_profile(data)
+ def _create_run_tcp_option_profile(self, policy_configuration):
+ # 新建 tcp_option_profile
+ Pl = CreateTcpOptionProfile(self.driver)
+ return Pl.create_tcp_option_profile(policy_configuration)
+
+ def _create_replacement_file(self, policy_configuration):
+ # 新建replacement file
+ Pl = CreateReplacementFile(self.driver)
+ return Pl.create_Replacement_file(policy_configuration)
+
+ def _create_js_file(self, policy_configuration):
+ # 新建js file
+ Pl = CreateJSFile(self.driver)
+ return Pl.create_js_file(policy_configuration)
+
+ def _create_cs_file(self, policy_configuration):
+ # 新建js file
+ Pl = CreateCSSFile(self.driver)
+ return Pl.create_css_file(policy_configuration)
+
+ def _create_run_script(self, policy_configuration):
+ # 新建 run script
+ Pl = CreateLuaScript(self.driver)
+ return Pl.create_lua_script(policy_configuration)
+
+ def _create_sff_script(self, policy_configuration):
+ # 新建 sff
+ Pl = CreateServiceFunctionForwarderProfile(self.driver)
+ return Pl.create_sff_profile(policy_configuration)
+
+ def _create_statistics_template_page(self, policy_configuration):
+ # 新建 statistics_template
+ Pl = CreateStatisticsTemplate(self.driver)
+ return Pl.create_statistics_template(policy_configuration)
- def _create_traffic_mirroring_profile(self, data):
- # 新建 tcp_proxy_profile
- Pl = CreateMonitorProfile(self.driver)
- Pl.create_traffic_mirroring_profile(data)
-
- def _create_statistics_template_page(self, data):
- cond_code = 0
- # create_statistics_template = CreateProfile(driver)
- if data != None and len(data) >= 0:
- create_statistics_template = CreateStatisticsTemplate(self.driver)
- element_position_map = get_profile_element_position("statistics_template")
- cond_code = create_statistics_template.create(data, element_position_map)
- return cond_code
diff --git a/support/ui_utils/profiles/create_hijack_profile.py b/support/ui_utils/profiles/create_replacement_file.py
index df5401b5b..289565b8a 100644
--- a/support/ui_utils/profiles/create_hijack_profile.py
+++ b/support/ui_utils/profiles/create_replacement_file.py
@@ -5,11 +5,11 @@ from selenium.webdriver.common.by import By
from support.ui_utils.element_position.profile_element_position import *
from datetime import datetime
-class CreateHijackProfile:
+class CreateReplacementFile:
def __init__(self, driver):
self.driver = driver
- def create_hijack_file(self, data):
+ def create_Replacement_file(self, data):
try:
profile_name = data["name"]
self.driver.find_element(By.XPATH, hijackFiles_input_Name_posXpath).clear()
diff --git a/support/ui_utils/profiles/create_response_page.py b/support/ui_utils/profiles/create_response_page.py
index 3899473b2..260954759 100644
--- a/support/ui_utils/profiles/create_response_page.py
+++ b/support/ui_utils/profiles/create_response_page.py
@@ -8,19 +8,19 @@ class CreateResponsePage:
def __init__(self, driver):
self.driver = driver
- def create_response_page(self, data):
+ def create_response_page(self, policy_configuration):
"""
resposne page 创建函数
"""
# 在create resposne page页面操作
- profile_name = data["name"]
+ data = policy_configuration["action_parameter"]
+ profile_name = data["html_profile"]["name"]
self.driver.find_element(By.XPATH, responsePage_input_Name_posXpath).clear()
self.driver.find_element(By.XPATH, responsePage_input_Name_posXpath).send_keys(profile_name)
# 上传文件
- create_file = data["file"].split("->")[0] # 提取上传文件绝对路径
- profile_path = os.path.dirname(os.path.abspath(__file__)) # ...support\ui_utils\profile
- file_abs = os.path.join(profile_path, "profile_file", "response_pages", create_file)
-
+ create_file = data["html_profile"]["file_path"] # 提取上传文件绝对路径
+ root_path = policy_configuration["parameter"]["root_path"]# ...support/configuration_management/profile
+ file_abs = os.path.join(root_path, "support" ,"configuration_management", "profile", create_file)
self.driver.find_element(By.XPATH, responsePage_input_file_posXpath).send_keys(file_abs)
self.driver.find_element(By.XPATH, responsePage_button_oK_posXpath).click()
if self.driver.is_element_exist_by_value(By.XPATH, responsePage_button_warningSaveYes_posXpath):
diff --git a/support/ui_utils/profiles/create_statistics_template.py b/support/ui_utils/profiles/create_statistics_template.py
index aeb836598..6d8c3c045 100644
--- a/support/ui_utils/profiles/create_statistics_template.py
+++ b/support/ui_utils/profiles/create_statistics_template.py
@@ -20,7 +20,9 @@ class CreateStatisticsTemplate():
self.driver = driver
self.actions = ActionChains(self.driver)
- def create(self, data, template_element_position):
+ def create_statistics_template(self, policy_configuration):
+ data = policy_configuration
+ template_element_position = {}
page_jump_element_position = template_element_position["page_jump"]
create_element_position = template_element_position["create"]
try:
diff --git a/support/ui_utils/profiles/create_tcp_proxy_profile.py b/support/ui_utils/profiles/create_tcp_option_profile.py
index a1adc408f..6b4544703 100644
--- a/support/ui_utils/profiles/create_tcp_proxy_profile.py
+++ b/support/ui_utils/profiles/create_tcp_option_profile.py
@@ -5,11 +5,11 @@ from selenium.webdriver.common.by import By
from support.ui_utils.element_position.profile_element_position import *
from datetime import datetime
-class CreateTcpProxyProfile:
+class CreateTcpOptionProfile:
def __init__(self, driver):
self.driver = driver
- def create_tcp_proxy_profile(self, data):
+ def create_tcp_option_profile(self, data):
profile_name = data["name"]
self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).send_keys(profile_name)
#页面其它选项操作
diff --git a/support/ui_utils/profiles/delete_profiles.py b/support/ui_utils/profiles/delete_profiles.py
index e12ff5c2a..70dd5882f 100644
--- a/support/ui_utils/profiles/delete_profiles.py
+++ b/support/ui_utils/profiles/delete_profiles.py
@@ -11,7 +11,10 @@ class DeleteProfiles:
def __init__(self, driver):
self.driver = driver
- def delete_profiles(self, profile_element_position, first_row_checkbox_element, is_del_all=False):
+ def delete_profiles(self, profiles_tuple):
+ profile_element_position = {}
+ first_row_checkbox_element = {}
+ is_del_all = False
delete_element_position = profile_element_position["delete"]
try:
if is_del_all == True:
@@ -56,7 +59,7 @@ class DeleteProfiles:
return return_code
except Exception as e:
raise
-
+
def delete_profiles_by_name(self, parameter, policy_configuration, headers):
try:
api_server = parameter["api_server"]
@@ -107,7 +110,7 @@ class DeleteProfiles:
except Exception as e:
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "When deleting profile by name, the exception error: ", str(e), flush=True)
return "When deleting profile by name, the exception error: " + str(e)
-
+
def get_profiles_info(policy_configuration):
object_info_list = []
object_info_dict = {}
@@ -121,7 +124,7 @@ class DeleteProfiles:
object_info_dict["name"] = or_conditions[j]["name"]
object_info_list.append(object_info_dict)
return object_info_list
-
+
def combine_profiles_uuid(self, template, data_list):
uuid_list = []
for _, json_obj in enumerate(data_list):
diff --git a/support/ui_utils/profiles/edit_profiles.py b/support/ui_utils/profiles/edit_profiles.py
index eb1dbc4e8..2e811a613 100644
--- a/support/ui_utils/profiles/edit_profiles.py
+++ b/support/ui_utils/profiles/edit_profiles.py
@@ -4,4 +4,8 @@ import time
class EditProfiles:
def __init__(self, driver):
- self.driver = driver \ No newline at end of file
+ self.driver = driver
+
+ def edit_profiles(self, policy_configuration):
+ if "action_parameter" not in policy_configuration.keys():
+ return "" \ No newline at end of file
diff --git a/support/ui_utils/profiles/elemen_position.py b/support/ui_utils/profiles/elemen_position.py
new file mode 100644
index 000000000..1709d0053
--- /dev/null
+++ b/support/ui_utils/profiles/elemen_position.py
@@ -0,0 +1,49 @@
+# -*- coding: UTF-8 -*-
+from support.ui_utils.element_position.map_element_position_library import get_element_position
+
+
+class ElementPosition:
+ def __init__(self, policy_configuration):
+ self.policy_configuration = policy_configuration
+
+ @property
+ def get_profile_element_position_library(self):
+ """
+ 从action_parameter中提取要定位的key_name,再从map_element_position_library到入定位信息
+ """
+ action_parameter = self.policy_configuration["action_parameter"]
+ key_name = ""
+ if "html_profile" in action_parameter:
+ key_name = "response_page"
+ elif "resolution" in action_parameter:
+ # 需要处理
+ key_name = "dns_resource_record"
+ elif "traffic_mirroring" in action_parameter:
+ key_name = "traffic_mirroring_profile"
+ elif "keyring_for_trusted" in action_parameter:
+ key_name = "ssl_decryption_keyring"
+ elif "keyring_for_untrusted" in action_parameter:
+ key_name = "ssl_decryption_keyring"
+ elif "decryption_profile" in action_parameter:
+ key_name = "ssl_decryption_profile"
+ elif "tcp_option_profile" in action_parameter:
+ key_name = "tcp_option_profile"
+ elif "replacement_file" in action_parameter:
+ key_name = "replacement_file"
+ elif "js_file" in action_parameter:
+ key_name = "js_file"
+ elif "css_file" in action_parameter:
+ key_name = "css_file"
+ elif "lua_script" in action_parameter:
+ key_name = "run_script"
+ elif "profile_chain" in action_parameter:
+ key_name = "shaping_profile"
+ elif "sff_profiles" in action_parameter:
+ # 需要处理
+ key_name = "sff_profiles"
+ elif "template_profile" in action_parameter:
+ key_name = "statistics_template"
+ else:
+ return {}, key_name
+ element_position_library = get_element_position(key_name)
+ return element_position_library, key_name
diff --git a/support/ui_utils/profiles/search_profiles.py b/support/ui_utils/profiles/search_profiles.py
index 8f73005e3..b0244ff97 100644
--- a/support/ui_utils/profiles/search_profiles.py
+++ b/support/ui_utils/profiles/search_profiles.py
@@ -41,3 +41,6 @@ class SearchProfiles:
else:
return 400, ""
+ def get_profiles_uuid(self, policy_configuration):
+ if "action_parameter" not in policy_configuration.keys():
+ return [], ""
diff --git a/support/ui_utils/ui_client.py b/support/ui_utils/ui_client.py
index d7a4e7a56..8be19e564 100644
--- a/support/ui_utils/ui_client.py
+++ b/support/ui_utils/ui_client.py
@@ -52,7 +52,7 @@ class UIClient:
def create_profiles(self, policy_configuration):
profiles = CreateProfiles(self.driver)
- error = profiles.create_profiles(policy_configuration)
+ error = profiles.create_profiles(self.parameter, policy_configuration)
return error
def search_profiles(self, policy_configuration, search_type):
@@ -65,6 +65,15 @@ class UIClient:
profiles_tuple, error = profiles.get_profiles_uuid(policy_configuration)
return profiles_tuple, error
+ def edit_profiles(self, policy_configuration):
+ profiles = EditProfiles(self.driver)
+ error = profiles.edit_profiles(policy_configuration)
+ return error
+
+ def delete_profiles(self, profiles_tuple):
+ profiles = DeleteProfiles(self.driver)
+ profiles.delete_profiles(profiles_tuple)
+
def create_rules(self, policy_configuration):
self.policy_configuration = policy_configuration
rules = CreateRules(self.driver)