代码拉取完成,页面将自动刷新
同步操作将从 李俊鹏/SSL_check 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/env python
from urllib3.contrib import pyopenssl
from datetime import datetime
from sys import argv
import idna
from socket import socket
import re
class SSL_Check:
def __init__(self, url):
self.url = url
@property
def get_cert(self):
sock = socket()
sock.setblocking(True)
sock.connect((self.url, 443),)
ctx = pyopenssl.OpenSSL.SSL.Context(pyopenssl.OpenSSL.SSL.TLSv1_METHOD)
ctx.check_hostname = False
ctx.verify_mode = pyopenssl.OpenSSL.SSL.VERIFY_NONE
sock_ssl = pyopenssl.OpenSSL.SSL.Connection(ctx, sock)
sock_ssl.set_tlsext_host_name(idna.encode(self.url))
sock_ssl.set_connect_state()
sock_ssl.do_handshake()
cert = sock_ssl.get_peer_certificate()
sock_ssl.close()
sock.close()
return cert
@property
def get_str_time(self):
cert = self.get_cert
return cert.get_notAfter().decode()[0:-1]
@property
def get_ssl_time(self):
ssl_time = datetime.strptime(self.get_str_time, '%Y%m%d%H%M%S')
return (ssl_time-datetime.now()).days
def get_servername():
regEx = re.compile((r'.*(<VirtualHost \*:443>([\s\S]*?)</VirtualHost>).*'))
regName = re.compile(r'ServerName.*')
with open('vhost.conf', 'r') as f:
conf_list = f.readlines()
conf_s = "".join(conf_list)
result = regEx.findall(conf_s)
ServerNames = []
for i in range(len(result)):
vhost = result[i]
vhost = ''.join(vhost)
if regName.search(vhost).group():
ServerName = regName.search(vhost).group()
ServerName = ServerName[10:].strip()
ServerNames.append(ServerName)
return ServerNames
if __name__ == '__main__':
try:
#url = argv[1]
print(get_servername())
ssl_check=SSL_Check(get_servername())
print(ssl_check.get_ssl_time)
except Exception as e:
print(e)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。