From 669c9ff35228d19d1a3b48667bd3c8a0303b7641 Mon Sep 17 00:00:00 2001 From: 4ndr3 Date: Sun, 17 Jan 2016 13:48:21 +0100 Subject: [PATCH] erster commit --- .gitignore | 6 ++ README.md | 1 + ausserhalb/a.py | 102 ++++++++++++++++++++++ ausserhalb/get_nodes_outside_community.py | 48 ++++++++++ 4 files changed, 157 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 ausserhalb/a.py create mode 100755 ausserhalb/get_nodes_outside_community.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e6c9024 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +fastdkeys +fastdkeys/* +ausserhalb/Nachricht.txt +ausserhalb/ausserhalb_hh.txt +!.gitignore diff --git a/README.md b/README.md new file mode 100644 index 0000000..25c530f --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Formularskripte diff --git a/ausserhalb/a.py b/ausserhalb/a.py new file mode 100755 index 0000000..428af2a --- /dev/null +++ b/ausserhalb/a.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 + +import os +import time +import smtplib +from email.mime.text import MIMEText + +Pfad_Formulardaten = '/home/fastdform/fastdkeys/' +Knotenliste = "./ausserhalb_hh.txt" +Nachrichtdateiname = "./Nachricht.txt" +Betreff = "Wechsel zu ffnord, Pinneberg, Stormarn & Lauenburg" +Absender = 'kontakt@hamburg.freifunk.net' +Hat_schon_eine_Nachricht_bekommen = [] + +#Inhalt der Nachricht lesen +Nachrichtdatei = open(Nachrichtdateiname) +Nachricht = Nachrichtdatei.read() +Nachrichtdatei.close() + +Adresse = '' +Ansprechpartner = '' +Knotenname = '' +Token = '' +Koordinaten = '' + + +def Knotendaten_lesen(Dateiname): + #Variblen zuruecksetzen + global Adresse + Adresse = '' + global Ansprechpartner + Ansprechpartner = '' + global Knotenname + Knotenname = '' + global Token + Token = '' + + Koordinaten = '' + + with open(Dateiname) as Datei: + + #Datei Zeilweise einlesen + Zeilen = Datei.readlines() + + for Zeile in Zeilen: + + #Zeile in Wortliste aufspalten + Wortliste = Zeile.split() + + if len(Wortliste) > 0: + if Wortliste[1] == 'Kontakt:': + Adresse = Wortliste[2] + elif Wortliste[1] == 'Knotenname:': + Knotenname = Wortliste[2] + elif Wortliste[1] == 'Ansprechpartner:': + Ansprechpartner = Wortliste[2:] + elif Wortliste[1] == 'Token:': + Token = Wortliste[2] + elif Wortliste[1] == 'Koordinaten:': + Koordinaten = Wortliste[2:] + Datei.close() + + +with open(Knotenliste) as Datei: + + #Datei Zeilweise einlesen + Zeilen = Datei.readlines() + for Zeile in Zeilen: + + #Den Zeilenumbruch '\n' abschneiden + Zeile=Zeile[0:len(Zeile)-1] + + for Datei in os.listdir(Pfad_Formulardaten): + if Datei.startswith(Zeile.lower() + '@'): + Knotendaten_lesen(Pfad_Formulardaten + Datei) + Adresse = Adresse.lower() + + #falsche Adressen aussortieren + if Adresse == "": + print("Falsche Adresse für Knoten: "+Knotenname) + + #Nur schicken, falls Adressat noch nichts bekommen hat + elif Adresse not in Hat_schon_eine_Nachricht_bekommen: + + #In die Liste der bisherigen Adressaten aufnehmen + Hat_schon_eine_Nachricht_bekommen.append(Adresse) + + #email zusammenbauen + email = MIMEText(Nachricht, 'plain', 'UTF-8') + email['Subject'] = Betreff + email['From'] = Absender + #email['To'] = Adresse + email['To'] = 'andre@hamburg.freifunk.net' + + #mail server Nachricht verschicken lassen + s = smtplib.SMTP('localhost') + s.sendmail(Absender, email['To'], email.as_string()) + s.quit() + + #Adressat der letzten versendeten Nachricht ausgeben und 1s warten, um nicht auf spam-Listen zu landen + print(Adresse) + time.sleep(1) diff --git a/ausserhalb/get_nodes_outside_community.py b/ausserhalb/get_nodes_outside_community.py new file mode 100755 index 0000000..5ca4c3f --- /dev/null +++ b/ausserhalb/get_nodes_outside_community.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python2 + +import os +import sys +import json + +import shapely.geometry as s + +if len(sys.argv) != 3: + print('usage: ' + sys.argv[0] + ' /path/to/config.json /path/to/peers') + sys.exit(1) + +configFile = sys.argv[1] +peersDir = sys.argv[2] + +config = json.loads(open(configFile).read()) + +gpsPoly = config['client']['otherCommunityInfo']['localCommunityPolygon'] +poly = s.Polygon(map(lambda point: (point['lng'], point['lat']), gpsPoly)) + +for filename in os.listdir(peersDir): + if len(filename) == 0 or filename[0] == '.': + continue + + absFilename = peersDir + '/' + filename + if os.path.isfile(absFilename): + peerFile = open(absFilename, 'r') + try: + peerLines = peerFile.readlines() + peer = {} + mac = None + for line in peerLines: + parts = line.split() + + if len(parts) > 0: + if parts[1] == 'Knotenname:': + peer['name'] = parts[2].lower() + elif parts[1] == 'Koordinaten:' and len(parts) == 4: + peer['gps'] = s.Point((float(parts[3]), float(parts[2]))) + + if 'gps' in peer and not peer['gps'].within(poly): + print peer['name'] + + except Exception as e: + print('Error in %s, ignoring peer: %s' % (absFilename, e)); + finally: + peerFile.close() +