diff --git a/clients/ltsdb_report.py b/clients/ltsdb_report.py new file mode 100644 index 0000000..09b8057 --- /dev/null +++ b/clients/ltsdb_report.py @@ -0,0 +1,39 @@ +import hmac +import json +import os +import random +import socket +import time + +import requests + +def send_report(report): + node = socket.gethostbyaddr(socket.gethostname())[0] + for dir in (".", os.environ["HOME"] + "/.config/ltsdb", "/etc/ltsdb"): + try: + with open(dir + "/config.json") as fh: + client_config = json.load(fh) + baseurl = client_config["server"] + break + except FileNotFoundError: + pass + while True: + for r in report: + timestamp = time.time() + msg = (node + " " + str(timestamp)).encode("UTF-8") + digest = hmac.new(client_config["key"].encode("UTF-8"), msg, "SHA256").hexdigest() + r["auth"] = { + "node": node, + "timestamp": timestamp, + "hmac": digest, + } + r = requests.post(baseurl + "report", json=report) + print(r) + if r.status_code == 200: + return True + elif r.status_code == 409: + time.sleep(0.5 + random.random()) + continue + else: + return False +