Make a working version

This commit is contained in:
HackerNCoder 2021-09-29 22:29:38 +00:00
parent b8b975dc4e
commit 87210b2e74

View file

@ -12,36 +12,63 @@ url = "https://onionoo.torproject.org/details"
r = requests.get(url) r = requests.get(url)
relays = json.loads(r.content)["relays"] relays = json.loads(r.content)["relays"]
old_text = open(old_file, "r").read() #sorted_relays = sorted(relays, key=lambda x : x['nickname'], reverse=True)
old_text = json.loads(old_text)["relays"]
diff1 = diff(old_text, relays, syntax='symmetric') #old_text = open(old_file, "r").read()
#old_text = json.loads(old_text)["relays"]
status = """From: relay status <relaystatus@encryptionin.space> #sorted_old = sorted(old_text, key=lambda x : x['nickname'], reverse=True)
To: relaystatus@lists.encryptionin.space
Subject: Relay Status """ + datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H') + """\n\n"""
for new_relay in diff1[jd.insert]: #email = "From: relay status <relaystatus@encryptionin.space>\nTo: relaystatus@lists.encryptionin.space\nSubject: Relay Status " + datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H') + "\n\n"
exit = "no"
if new_relay[1]["exit_policy"][0] != "reject *:*":
exit = "yes"
status = status + "New relay: \"" + new_relay[1]["nickname"], "\", fingerpint: " + new_relay[1]["fingerprint"] + ", potential exit: " + exit + ", effective family size: " + str(len(new_relay[1]["effective_family"])) + "\n"
for updated_relay in diff1: status = ""
if updated_relay != jd.insert and updated_relay != jd.delete:
if "flags" in diff1[updated_relay]:
if "Exit" in diff1[updated_relay]["flags"][jd.insert]:
relay = old_text[updated_relay]
new_flags = ""
for flag in diff1[updated_relay]["flags"][jd.insert]:
new_flags = new_flags+flag[1]+","
status = status + "\"" + relay["nickname"] + "\" (" + relay["fingerprint"] + ") got new flag(s): \"" + new_flags + "\"\n"
with open(old_file, "w") as output: #diff takes too long
output.write(r.text) #print("beginning diff " + datetime.datetime.now().strftime("%H-%M-%S"))
#diff1 = diff(old_text, relays, syntax='symmetric')
#print("done diffing " + datetime.datetime.now().strftime("%H-%M-%S"))
try: #print("starting diff")
smtp = smtplib.SMTP('localhost') for new_relay in relays:
smtp.sendmail('relaystatus@encryptionin.space', ['relaystatus@lists.encryptionin.space'], status) if datetime.datetime.strptime(new_relay["first_seen"], "%Y-%m-%d %H:%M:%S") > (datetime.datetime.now() - datetime.timedelta(hours=2)):
except SMTPException: #added_relays += new_relay[1]["fingerprint"] + "\n"
print("couldn't send") exit = "no"
if new_relay["exit_policy"][0] != "reject *:*":
exit = "yes"
#print("New relay: \"" + new_relay[1]["nickname"] + "\", fingerpint: " + new_relay[1]["fingerprint"] + ", potential exit: " + exit + ", effective family size: " + str(len(new_relay[1]["effective_family"])) + ", first seen: " + new_relay[1]["first_seen"] + "\n")
status += "New relay: \"" + new_relay["nickname"] + "\", fingerpint: " + new_relay["fingerprint"] + ", potential exit: " + exit + ", effective family size: " + str(len(new_relay["effective_family"])) + "\n"
#if jd.delete in diff1:
# for deleted_relay in diff1[jd.delete]:
# #deleted_relays += deleted_relay[1]["fingerprint"] + "\n"
# print("Deleted relay: \"" + deleted_relay[1]["nickname"] + "\", fingerpint: " + deleted_relay[1]["fingerprint"] + "\n")
# status += "Deleted relay: \"" + deleted_relay[1]["nickname"] + "\", fingerpint: " + deleted_relay[1]["fingerprint"] + "\n"
#for updated_relay in diff1:
# if updated_relay != jd.insert and updated_relay != jd.delete:
# try:
# if "flags" in diff1[updated_relay]:
# if jd.insert in diff1[updated_relay]["flags"]:
# if "Exit" in diff1[updated_relay]["flags"][jd.insert]:
# relay = old_text[updated_relay]
# new_flags = ""
# for flag in diff1[updated_relay]["flags"][jd.insert]:
# new_flags = new_flags+flag[1]+","
# status += "\"" + relay["nickname"] + "\" (" + relay["fingerprint"] + ") got new flag(s): \"" + new_flags + "\"\n"
# except:
# print(diff1[updated_relay])
#print(status)
#with open("status.txt", "a") as output:
# output.write(status)
#with open(old_file, "w") as output:
# output.write(r.text)
if status:
email += status
try:
smtp = smtplib.SMTP('localhost')
smtp.sendmail('relaystatus@encryptionin.space', ['relaystatus@lists.encryptionin.space'], status)
except SMTPException:
print("couldn't send")