# coding:utf-8 import sys import io import os import time import re import requests import base64 # 8001 / 7788 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 domain = sys.argv[1] ssl_path = sys.argv[2] def getToken(): api_url = goedge_addr+'/APIAccessTokenService/getAPIAccessToken' # print(api_url) post_data = { "type": "admin", "accessKeyId": access_keyid, "accessKey": access_key } # json_data = mw.getJson(post_data) # print(json_data) data = requests.post(api_url,json=post_data) data_obj = data.json() return data_obj['data']['token'] token = getToken() def commonReq(url, data): headers = { 'X-Edge-Access-Token': token } 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): 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) ssl_key_file = ssl_path + '/'+domain+'.key' key_data = mw.readFile(ssl_key_file) key_data = mw.base64StrEncode(key_data) # print('ssl_info',ssl_info) 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":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']] } 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 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)