| #!/usr/bin/python | |
| # coding: utf-8 | |
| # ----------------------------- | |
| # 自动续签Let's Encrypt证书 | |
| # ----------------------------- | |
| import os,sys, time, re | |
| os.chdir('/www/server/panel') | |
| sys.path.insert(0,'./') | |
| sys.path.insert(1,'class/') | |
| import public | |
| from mailModel import mainModel | |
| from acme_v2 import acme_v2 | |
| acme = acme_v2() | |
| domain_data = mainModel.main().get_domains(public.to_dict_obj({"p": 1, "limit": 99999999}))["msg"] | |
| for domain in domain_data["data"]: | |
| print("正在续签:{}".format(domain['domain'])) | |
| if domain['ssl_info'].get("issuer_O", '') != "Let's Encrypt" or not domain['ssl_status']: | |
| print("证书不符合续签条件,跳过") | |
| continue | |
| if domain['ssl_info']["endtime"] >= 30: | |
| print("证书到期时间大于30天,跳过") | |
| continue | |
| cert = acme.apply_cert(domain['ssl_info']['dns'], "dns", str(domain['ssl_info']['dns'])) | |
| if cert.get("cert") and cert.get("private_key") and cert.get("root"): | |
| mainModel.main().set_mail_certificate_multiple(public.to_dict_obj({"domain": domain["domain"], "key": cert.get("private_key"), "csr": cert.get("cert") + cert.get("root"), "act": "add"})) | |
| print("证书续签成功") | |
| else: | |
| print("证书续签失败") | |