diff --git a/ping_engine.py b/ping_engine.py index 8a520dc..b06d837 100644 --- a/ping_engine.py +++ b/ping_engine.py @@ -3,6 +3,9 @@ import os import requests import datetime import json +import OpenSSL +import ssl +import pytz app = Flask(__name__) @@ -110,5 +113,30 @@ def api(): # time = now, # status = status_string) +@app.route('/certdate//') +def cert(name): + apiToken = request.args.get('token') + now = str(datetime.datetime.now()) + now_date=datetime.datetime.now() + if apiToken == token: + cert=ssl.get_server_certificate((name, 443)) + x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert) + bytes=x509.get_notAfter() + timestamp_str = str(bytes.decode('utf-8')) + date_string = str(datetime.datetime.strptime(timestamp_str, '%Y%m%d%H%M%S%z')) + date = datetime.datetime.strptime(timestamp_str, '%Y%m%d%H%M%S%z') + if date.replace(tzinfo=pytz.utc) > now_date.replace(tzinfo=pytz.utc): + status_string = "OK" + else: + status_string = "Expired" + else: + status_string = ' wrong token' + ip_addr = request.remote_addr + out = '%s - Unauthorized from IP: %s' %(now, ip_addr) + print (out) + return jsonify ( + time = now, + date_valid = date_string, + status = status_string) if __name__ == '__main__': app.run(debug=True) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index c7787f9..08e5969 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,4 @@ Flask==2.2.2 requests==2.25.1 +pyOpenSSL==22.0.0 +pytz==2022.6 \ No newline at end of file