105 lines
3.7 KiB
Python
105 lines
3.7 KiB
Python
from lib.all import *
|
|
from cloudflare_manager import *
|
|
from namesilo_manager import *
|
|
import ningx_proxy_manager as npm
|
|
import string
|
|
import random
|
|
|
|
cf_manager = CloudflareManager()
|
|
ns_manager = NameSiloMgr()
|
|
|
|
service_name = 'log'
|
|
log_dir = '.'
|
|
logger = Logger(service_name, log_dir=log_dir)
|
|
|
|
|
|
def generate_random_string(length):
|
|
letters = string.ascii_lowercase + string.digits
|
|
return ''.join(random.choice(letters) for _ in range(length))
|
|
|
|
|
|
def proc():
|
|
# 获取所有cloudflare zone
|
|
cf_zones_resp = json.loads(cf_manager.zone_list().json())
|
|
cf_zones = safe_get_list(cf_zones_resp, "result")
|
|
cf_domain_zone_map = dict()
|
|
for cf_zone in cf_zones:
|
|
domain = safe_get_str(cf_zone, "name")
|
|
cf_domain_zone_map[domain] = cf_zone
|
|
# for k, v in cf_domain_zone_map.items():
|
|
# print(k, v)
|
|
|
|
# 获取nginx证书
|
|
ng_cert_map = npm.get_all_cert_map()
|
|
# for k, v in ng_cert_map.items():
|
|
# print(k, v)
|
|
|
|
col_share_url = MongoDB(
|
|
host="mongodb://root:Wishpal2024@dds-bp1da1ddd62bede41.mongodb.rds.aliyuncs.com:3717,dds-bp1da1ddd62bede42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-77304659",
|
|
port=3717,
|
|
db="share",
|
|
collection="share_url"
|
|
)
|
|
|
|
for domain, cf_zone in cf_domain_zone_map.items():
|
|
# 添加cf域名解析
|
|
zone_id = safe_get_str(cf_zone, "id")
|
|
if len(zone_id) <= 0:
|
|
continue
|
|
# print(zone_id)
|
|
|
|
# 获取域名对应的证书id
|
|
cert = safe_get_dict(ng_cert_map, domain)
|
|
cert_id = safe_get_int(cert, "id")
|
|
# print(zone_id, cert_id)
|
|
|
|
# 分享域名
|
|
share_l2_names = list()
|
|
for i in range(50):
|
|
random_str = generate_random_string(random.randint(8, 12))
|
|
share_l2_names.append(random_str)
|
|
|
|
# 要添加nginx域名解析的域名
|
|
need_add_nginx_anal_l2_names = list()
|
|
for l2_name in share_l2_names:
|
|
try:
|
|
cf_add_record_ret = json.loads(cf_manager.add_record(zone_id, "47.242.233.23", l2_name, "A").json())
|
|
ret_id = safe_get_str(cf_add_record_ret, "id")
|
|
if len(ret_id) <= 0:
|
|
logger.Error("cf_add_record fail, domain: {}, l2_name: {}, ret: {}".format(domain, l2_name, cf_add_record_ret))
|
|
continue
|
|
need_add_nginx_anal_l2_names.append(l2_name)
|
|
except Exception as e:
|
|
logger.Error("cf_add_record panic, domain: {}, l2_name: {}, err: {}".format(domain, l2_name, str(e)))
|
|
|
|
# 添加nginx域名解析
|
|
need_add_nginx_anal_domain_names = list()
|
|
for l2_name in need_add_nginx_anal_l2_names:
|
|
need_add_nginx_anal_domain_names.append("{}.{}".format(l2_name, domain))
|
|
batch_add_records_ret = npm.batch_add_records(need_add_nginx_anal_domain_names, "172.17.219.45", 3001, cert_id)
|
|
logger.Info("batch_add_records ok, len: {}, domains: {}, ret: {}".format(
|
|
len(need_add_nginx_anal_domain_names), need_add_nginx_anal_domain_names, batch_add_records_ret
|
|
))
|
|
|
|
# 添加mongodb
|
|
docs = list()
|
|
for domain_name in need_add_nginx_anal_domain_names:
|
|
doc = {
|
|
"_id": domain_name,
|
|
"ct": int(time.time()),
|
|
"ut": 0,
|
|
"status": "000",
|
|
"api_res": "",
|
|
"use_cnt": 0,
|
|
"domain": domain,
|
|
"l2_name": domain_name[:domain_name.find(".")],
|
|
}
|
|
docs.append(doc)
|
|
mongo_ret = col_share_url.insert_many(docs)
|
|
logger.Info("len(insert_ids): {}, ids: {}".format(len(mongo_ret.inserted_ids), mongo_ret.inserted_ids))
|
|
|
|
col_share_url.close()
|
|
|
|
|
|
proc()
|