diff options
| author | shihaoyue <[email protected]> | 2024-09-06 22:53:25 +0800 |
|---|---|---|
| committer | shihaoyue <[email protected]> | 2024-09-06 22:53:25 +0800 |
| commit | 39be258719e10cd58f49914091674f0a0d986cfd (patch) | |
| tree | c7bbb25b7e225245c097c8ebc6e534f28d0a4a25 /server | |
| parent | bcd2c01d2784b239e3e99b2ec11fff88dd137438 (diff) | |
完善policy
Diffstat (limited to 'server')
| -rw-r--r-- | server/apps/policy.py | 104 |
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 |
