Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
# -*- coding:utf-8 -*-
# 作者仓库:https://jihulab.com/spiritlhl/qinglong_auto_tools.git
#觉得不错麻烦点个star谢谢
# 频道:https://t.me/qinglong_auto_tools
'''
cron: 1
new Env('多容器 二叉树合并ck');
'''
#在脚本管理里修改这个文件的配置,然后保存,然后禁用 二叉树合并ck 这个任务,有需要再点运行
# 主青龙,合并结果存储的容器,事先需要在容器里创建应用,给所有权限,然后重启容器,应用设置才会生效,
# 本脚本不含转ck功能,只合并ck,默认合并的环境变量名为JD_COOKIE,其他变量名自己按照下面注释改
# 被合并ck的分容器,事先需要在分容器里创建应用,给所有权限,然后重启容器,应用设置才会生效
# 按照格式有几个写几个,没有的空的删除
'''
# ec_config.txt中填写如下设置
# 二叉树合并ck
### 主青龙
cks_merge_alql_cilent_id1="xxxxxxxx"
cks_merge_alql_cilent_secret1="xxxxxxxxxx"
cks_merge_alql_url1="http://xxxxxxxx:xxxx/"
### 副青龙
cks_merge_alql_client_ids=["",""]
cks_merge_alql_client_secrets=["",""]
cks_merge_alql_urllist=["http://xxxxxxxxx:xxxx/",""]
'''
#merge_id = ""
#merge_secret = ""
#merge_url = ""
#client_ids=['','','','']
#client_secrets=['','','','']
#urllist = ["http://xxxx:xxxx/","","",'']
import time
import json
import re
try:
import requests
except Exception as e:
print(e, "\n缺少requests 模块,请执行命令安装:python3 -m pip install requests")
exit(3)
try:
with open("ec_config.txt", "r", encoding="utf-8") as fp:
t = fp.readlines()
try:
for i in t:
try:
temp = re.findall(r"cks_merge_alql_cilent_id1=\"(.*?)\"", i)[0]
merge_id = temp
if merge_id == "":
print("cks_merge_alql_cilent_id1 未填写")
except:
pass
except:
print("cks_merge_alql_cilent_id1 未创建")
exit(3)
try:
for i in t:
try:
temp = re.findall(r"cks_merge_alql_cilent_secret1=\"(.*?)\"", i)[0]
merge_secret = temp
if merge_secret == "":
print("cks_merge_alql_cilent_secret1 未填写")
except:
pass
except:
print("cks_merge_alql_cilent_secret1 未创建")
exit(3)
try:
for i in t:
try:
temp = re.findall(r"cks_merge_alql_url1=\"(.*?)\"", i)[0]
merge_url = temp
if merge_url == "":
print("cks_merge_alql_url1 未填写")
except:
pass
except:
print("cks_merge_alql_url1 未创建")
exit(3)
except:
print("找不到配置文件或配置文件有错误, 请填写ec_config.txt")
try:
try:
for i in t:
try:
temp = "["+re.findall(r"cks_merge_alql_client_ids=\[(.*?)\]", i)[0]+"]"
try:
client_ids = json.loads(temp)
except:
print("cks_merge_alql_client_ids 填写有误")
if client_ids == []:
print("cks_merge_alql_client_ids 未填写")
except:
pass
except:
print("cks_merge_alql_client_ids 未创建")
exit(3)
try:
for i in t:
try:
temp = "["+re.findall(r"cks_merge_alql_client_secrets=\[(.*?)\]", i)[0]+"]"
try:
client_secrets = json.loads(temp)
except:
print("cks_merge_alql_client_secrets 填写有误")
if client_secrets == []:
print("cks_merge_alql_client_secrets 未填写")
except:
pass
except:
print("cks_merge_alql_client_secrets 未创建")
exit(3)
try:
for i in t:
try:
temp = "["+re.findall(r"cks_merge_alql_urllist=\[(.*?)\]", i)[0]+"]"
try:
urllist = json.loads(temp)
except:
print("cks_merge_alql_urllist 填写有误")
if urllist == []:
print("cks_merge_alql_urllist 未填写")
except:
pass
except:
print("cks_merge_alql_urllist 未创建")
exit(3)
except:
print("找不到配置文件或配置文件有错误, 请填写ec_config.txt")
requests.packages.urllib3.disable_warnings()
def gettimestamp():
return str(int(time.time() * 1000))
def gettoken(self,url_token):
r = requests.get(url_token).text
res = json.loads(r)["data"]["token"]
self.headers.update({"Authorization": "Bearer "+res})
def login(self, baseurl, cilent_id_temp, cilent_secret_temp):
url_token = baseurl+'open/auth/token?client_id='+cilent_id_temp+'&client_secret='+cilent_secret_temp
gettoken(self, url_token)
def getitem(self, baseurl, key , typ):
url = baseurl + typ + "/envs?searchValue=%s&t=%s" % (key, gettimestamp())
r = self.get(url)
item = json.loads(r.text)["data"]
return item
def getckitem(self, baseurl, key, typ):
url = baseurl + typ + "/envs?searchValue=JD_COOKIE&t=%s" % gettimestamp() # 获取ck的变量名为JD_COOKIE
r = self.get(url)
for i in json.loads(r.text)["data"]:
if key in i["value"]:
return i
return []
def update(self, baseurl, typ, text, qlid):
url = baseurl + typ + "/envs?t=%s" % gettimestamp()
self.headers.update({"Content-Type": "application/json;charset=UTF-8", 'Connection': 'close'})
data = {
"name": "JD_COOKIE", # 更新ck的变量名为JD_COOKIE
"value": text,
"_id": qlid
}
r = self.put(url, data=json.dumps(data))
if json.loads(r.text)["code"] == 200:
return True
else:
return False
def insert(self, baseurl, typ, text):
url = baseurl + typ + "/envs?t=%s" % gettimestamp()
self.headers.update({"Content-Type": "application/json;charset=UTF-8", 'Connection': 'close'})
data = []
data_json = {
"value": text,
"name": "JD_COOKIE" # 插入ck的变量名为JD_COOKIE
}
data.append(data_json)
r = self.post(url, json.dumps(data))
if json.loads(r.text)["code"] == 200:
return True
else:
return False
if __name__ == '__main__':
s = requests.session()
login(s, merge_url, merge_id, merge_secret)
c_list = []
count = 0
for i in urllist:
a = requests.session()
login(a, urllist[count], client_ids[count], client_secrets[count])
cks = getitem(a, urllist[count], "JD_COOKIE", "open") # 获取ck的变量名为JD_COOKIE
for i in cks:
tp = i['value']
ptpin = re.findall(r"pt_pin=(.*?);", tp)[0]
ptpin = "pt_pin=" + ptpin + ';'
ptkey = re.findall(r"pt_key=(.*?);", tp)[0]
ptkey = "pt_key=" + ptkey + ';'
c = ptkey + ptpin
c_list.append(c)
count += 1
print("分容器{}的所有ck获取完毕\n".format(count))
print("合并ck中\n")
result_list = list(set(c_list))
co = 0
for k in c_list:
co += 1
ptpin = re.findall(r"pt_pin=(.*?);", k)[0]
ptpin = "pt_pin=" + ptpin
item = getckitem(s, merge_url, ptpin, "open")
if item != []:
try:
qlid = item["_id"]
except:
qlid = item["id"]
if update(s, merge_url, "open", k, qlid):
print("第%s个JD_COOKIE更新成功,pin为%s" % (co, ptpin[7:]))
else:
print("第%s个JD_COOKIE更新失败,pin为%s" % (co, ptpin[7:]))
else:
if insert(s, merge_url, "open", k):
print("第%s个JD_COOKIE添加成功,pin为%s" % (co, ptpin[7:]))
else:
print("第%s个JD_COOKIE添加失败,pin为%s" % (co, ptpin[7:]))
print("")
print("合并ck完毕")