From 0e7ed65e04d77cd4b5354a292daaf1770e5a6ea9 Mon Sep 17 00:00:00 2001 From: Mr Chen Date: Sat, 14 Sep 2024 19:22:10 +0800 Subject: [PATCH] update --- class/core/mw.py | 3 + .../acme_pandominassl_apply/hooks/goedge.py | 91 ++++++++++++++----- plugins/acme_pandominassl_apply/index.py | 2 +- 3 files changed, 73 insertions(+), 23 deletions(-) diff --git a/class/core/mw.py b/class/core/mw.py index 10f1ab04d..529e58cb5 100755 --- a/class/core/mw.py +++ b/class/core/mw.py @@ -472,6 +472,9 @@ def getJson(data): import json return json.dumps(data) +def getObjectByJson(data): + import json + return json.loads(data) def returnData(status, msg, data=None): return {'status': status, 'msg': msg, 'data': data} diff --git a/plugins/acme_pandominassl_apply/hooks/goedge.py b/plugins/acme_pandominassl_apply/hooks/goedge.py index 72e91eec1..eb168ea4f 100644 --- a/plugins/acme_pandominassl_apply/hooks/goedge.py +++ b/plugins/acme_pandominassl_apply/hooks/goedge.py @@ -14,6 +14,9 @@ goedge_addr = 'http://127.0.0.2:8009' access_keyid = "xxx" access_key = "xxx" +# 指定用户 +userId = 1 + sys.path.append(os.getcwd() + "/class/core") import mw @@ -43,16 +46,39 @@ def commonReq(url, data): headers = { 'X-Edge-Access-Token': token } - api_url = goedge_addr+'/'+url - - json_data = mw.getJson(data) - print(json_data) - resp_data = requests.post(api_url,json=json_data, headers=headers) + api_url = goedge_addr+url + resp_data = requests.post(api_url,json=data, headers=headers) return resp_data.json() +def listSSLCerts(domain): + request_data = { + "userId":userId, + "isCA":False, + "keyword": "ACME泛域名自动上传", + "domains":[domain,"*."+domain], + "size":1 + } + # print(request_data) + response_data = commonReq('/SSLCertService/listSSLCerts', request_data) + + data = response_data['data']['sslCertsJSON'] + data = mw.base64StrDecode(data) + data = mw.getObjectByJson(data) + # print(data) + return data + + + +# createSSLCert(domain) +def createSSLCert(domain, did=0): -def createSSLCert(domain): ssl_cer_file = ssl_path + '/'+domain+'.cer' + + if not os.path.exists(ssl_cer_file): + print("没有有效证书!") + return '' + # print(ssl_cer_file) + ssl_info = mw.getCertName(ssl_cer_file) cer_data = mw.readFile(ssl_cer_file) cer_data = mw.base64StrEncode(cer_data) # print('cer',cer_data) @@ -60,28 +86,49 @@ def createSSLCert(domain): ssl_key_file = ssl_path + '/'+domain+'.key' key_data = mw.readFile(ssl_key_file) key_data = mw.base64StrEncode(key_data) - # print('key',key_data) + # print('ssl_info',ssl_info) - return '' + timeBeginAt = int(time.mktime(time.strptime(ssl_info['notBefore'], "%Y-%m-%d"))) + timeEndAt = int(time.mktime(time.strptime(ssl_info['notAfter'], "%Y-%m-%d"))) request_data = { - "isOn":False, - # "userId":"0", - "name":"test", - "isCA":True, - "description":domain, - "serverName":domain, - "certData":cer_data, - 'keyData':key_data, - 'dnsNames':[domain,"*."+domain], - 'commonNames':[domain,"*."+domain] + "isOn":True, + "userId":userId, + "name": "ACME泛域名自动上传", + "isCA":False, + "description":domain, + "serverName":domain, + "certData":cer_data, + 'keyData':key_data, + "timeBeginAt":timeBeginAt, + "timeEndAt": timeEndAt, + 'dnsNames':[domain,"*."+domain], + 'commonNames':[ssl_info['issuer']] } - print(request_data) - response_data = commonReq('/SSLCertService/createSSLCert', request_data) - # print(response_data) + + + if did>0: + request_data['sslCertId'] = did + # print(request_data) + response_data = commonReq('/SSLCertService/updateSSLCert', request_data) + print('更新成功',response_data) + return response_data + else: + # print(request_data) + response_data = commonReq('/SSLCertService/createSSLCert', request_data) + print('创建成功',response_data) + return response_data return response_data -createSSLCert(domain) +def autoSyncDomain(domain): + data = listSSLCerts(domain) + if len(data) > 0 : + did = data[0]['id'] + createSSLCert(domain,did) + else: + createSSLCert(domain) + print(data) +autoSyncDomain(domain) print(domain,ssl_path) \ No newline at end of file diff --git a/plugins/acme_pandominassl_apply/index.py b/plugins/acme_pandominassl_apply/index.py index 5c0c63b18..319eabb67 100755 --- a/plugins/acme_pandominassl_apply/index.py +++ b/plugins/acme_pandominassl_apply/index.py @@ -557,7 +557,7 @@ def runHook(): run_log = runLog() cmd += ' >> '+ run_log - # print(cmd) + print(cmd) os.system(cmd) hookWriteLog('结束申请【'+domain+'】SSL证书') isok, path = domainApplyPathJudge(domain)