summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshihaoyue <[email protected]>2024-09-06 22:53:25 +0800
committershihaoyue <[email protected]>2024-09-06 22:53:25 +0800
commit39be258719e10cd58f49914091674f0a0d986cfd (patch)
treec7bbb25b7e225245c097c8ebc6e534f28d0a4a25
parentbcd2c01d2784b239e3e99b2ec11fff88dd137438 (diff)
完善policy
-rw-r--r--server/apps/policy.py104
1 files changed, 82 insertions, 22 deletions
diff --git a/server/apps/policy.py b/server/apps/policy.py
index 0729130..8b62a0a 100644
--- a/server/apps/policy.py
+++ b/server/apps/policy.py
@@ -1,13 +1,10 @@
# 策略生成与调整,效果评估模块
import random
-import ipaddress
-from .util import is_ipaddress
-
from exts import db
-from model import Policy, Target, TaskPolicy
-from .target import target_GZ
+from model import Policy, TaskPolicy
+# --------------------------策略-----------------------------
def chiose_policy(task):
target = task.target
# 目标支持协议范围
@@ -27,54 +24,117 @@ def chiose_policy(task):
# auto自动包含两类策略,否则仅支持用户选定的策略类型
policy = ["ddos", "sjqp"] if task.ptype == "auto" else [task.ptype]
- # TODO 随机选择一个作为初始策略(策略选择)
policy_list = db.session.query(Policy).filter(Policy.p_type.in_(policy), Policy.p_proto.in_(proto)).all()
return policy_list
+def copy_task_policy(task):
+
+ last_policy = task.task_policies[-1].Policy
+
+ task_policy = TaskPolicy(
+ policy = last_policy.p_id,
+ policy_param = last_policy.policy_param,
+ for_task = last_policy.for_task
+ )
+
+ # 记录该任务策略
+ db.session.add(task_policy)
+ db.session.commit()
+
+ return task_policy
+
+# ----------------------------------------调整中心----------------------------------------------------
+
# 初始task_policy创建
def init_task_policy(task):
policy_list = chiose_policy(task)
first_policy = random.choice(policy_list)
-
- # TODO 编写参数(可能要根据不同的Policy做适配!!!!)
- p_param = task.target_domain
task_policy = TaskPolicy(
policy = first_policy.p_id,
- policy_param = p_param,
+ policy_param = first_policy.p_payload,
for_task = task.task_id
)
# 记录该任务策略
db.session.add(task_policy)
db.session.commit()
+ target2polocy(task_policy)
+ generate_parameters(task_policy)
return task_policy
-def copy_task_policy(task):
- last_policy = task.task_policies[-1].Policy
- # TODO 编写参数(可能要根据不同的Policy做适配!!!!)
- p_param = task.target_domain
+# 自动task_policy调整
+def center_process_unit(task):
+ # TODO 通信
+ policy_list = chiose_policy(task)
+ first_policy = random.choice(policy_list)
task_policy = TaskPolicy(
- policy = last_policy.p_id,
- policy_param = p_param,
+ policy = first_policy.p_id,
+ policy_param = first_policy.p_payload,
for_task = task.task_id
)
# 记录该任务策略
db.session.add(task_policy)
db.session.commit()
+ target2polocy(task_policy)
+ adjust_parameters(task_policy)
+
+# -----------------------------------------不可调整参数------------------------------------------------
+def target2polocy(task_policy):
+ commmand = task_policy.Policy.p_payload
+ # 固定
+ # <target>
+ commmand.replace("<target>", task_policy.task.target.target.addrv4)
+ # 篡改
+ # <tamper> 目标域名 (DoH DoT)
+ commmand.replace("<tamper>", task_policy.task.target_domain)
+ # 注入
+ # <inject> 目标域名 (DoH DoT)
+ # <ns> 要注入的记录 (DoH DoT)
+ commmand.replace("<ns>", task_policy.task.target_rr)
+ task_policy.policy_param = commmand
+
+ db.session.add(task_policy)
+ db.session.commit()
- return task_policy
-
-def parameters2polocy(task_policy):
- commmand = "aaaaaa"
- return commmand
+# ----------------------------------------可调整参数-----------------------------------------------------
+# 生成初始参数
def generate_parameters(task_policy):
- pass
+ commmand = task_policy.Policy.p_payload
+ # 调整
+ # DDoS
+ # <n> 启动请求发送的进程数(DoT DoH) 包数 (DNSSEC v6)
+ if task_policy.policy.Policy.p_proto=="DOH" or task_policy.policy.Policy.p_proto=="DOT":
+ commmand.replace("<n>", 4)
+ elif task_policy.policy.Policy.p_proto=="DNSSEC" :
+ commmand.replace("<n>", 30000)
+ elif task_policy.policy.Policy.p_proto=="IPv6":
+ commmand.replace("<n>", 10000)
+ # <r> 发包速率(DNSSEC)
+ if task_policy.policy.Policy.p_proto=="DNSSEC" :
+ commmand.replace("<r>", 300)
+ # <round> 向CND节点发送的请求次数 (DoT)
+
+ # <wait> pending 总时长 (DoT)
+ db.session.add(task_policy)
+ db.session.commit()
+
+# 生成调整参数
def adjust_parameters(task_policy):
+ # 调整
+ # DDoS
+ # <n> 启动请求发送的进程数(DoT DoH) 包数 (DNSSEC v6)
+
+ # <r> 发包速率(DNSSEC)
+
+ # <round> 向CND节点发送的请求次数 (DoT)
+
+ # <wait> pending 总时长 (DoT)
+
pass