Browse Source

added certificate date check

master
Domagoj Zecevic 3 years ago
parent
commit
68f2c07b89
  1. 28
      ping_engine.py
  2. 2
      requirements.txt

28
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/<name>/')
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)

2
requirements.txt

@ -1,2 +1,4 @@
Flask==2.2.2
requests==2.25.1
pyOpenSSL==22.0.0
pytz==2022.6
Loading…
Cancel
Save