gop2p ist eine Golang-Bibliothek zur Ermöglichung einer kinderleichten UDP-basierten Peer-to-Peer-Kommunikation zwischen Software-Clients. Ziel ist es, durch die Ausgabe von RSA-signierten Befehlen eine Vielzahl von Knoten fernsteuern zu können. Die Peers verwalten den öffentlichen Schlüssel zum privaten Schlüssel, über den nur der Client verfügt.
Es ist mein erstes großes Go-Projekt, also ist es vielleicht nicht schön, aber es läuft wirklich schnell.
Der Client-Ordner enthält den gesamten Code, der zum Ausführen eines Clients erforderlich ist, der Befehle ausgibt.
Der Peer-Ordner enthält den gesamten Code, der zum Ausführen eines Knotens erforderlich ist.
Nachdem Sie öffentliche und private RSA-Schlüssel generiert haben, fügen Sie diese in die cryptotext.go-Dateien für den Client und den Peer ein.
Nachdem Sie die Schlüssel an der richtigen Stelle platziert haben, erstellen Sie den Client und den Peer.
Führen Sie den Client aus mit:
./p2pclient < IP ADDRESS OF PEER HERE >
Führen Sie den ersten Peer wie folgt aus:
./p2ppeer -p < port >
Und führen Sie alle neuen Peers wie folgt aus:
./p2ppeer -p < port > -b < ANY OTHER PEER IP >
Peers tauschen automatisch Informationen über aktuell im Netzwerk befindliche Peers aus, sodass der Bootstrap-Peer nicht für jeden nachfolgenden Peer derselbe sein muss. Die Peers sind selbst Bootstrap-Peers.
Die Peers machen derzeit nichts mit den an sie gesendeten Befehlen. Sie drucken nur den Rohbyte-Slice der Daten aus. Mich interessierte nur die in Golang implementierte P2P-Kommunikation, daher gibt es keine Standardbefehle. Um einige Befehle für die Peers zu implementieren, muss jedoch lediglich die Funktion „executeCommand“ in der Datei „commands.go“ geändert werden. Der Puffer enthält nur das Befehlsarray, also machen Sie damit, was Sie wollen. Ich habe einen Code auskommentiert, der den Befehl als Shell ausführen würde (dies könnte jedoch schwerwiegende Folgen für die Sicherheit haben, wenn Sie einen böswilligen Befehl eingeben. Sie wurden gewarnt).
Pull-Anfragen sind willkommen. Bei größeren Änderungen öffnen Sie bitte zunächst ein Problem, um zu besprechen, was Sie ändern möchten.
Fühlen Sie sich frei, den Code in Ihre Projekte einzubinden. Ich bitte Sie lediglich, dieses Projekt zuzuordnen und auf die Github-Seite zu verlinken. Sie müssen das Projekt auch nicht vollständig verwenden. Sie können beliebige Snippets verwenden. Ordnen Sie es einfach durch einen Kommentar irgendwo in Ihrem Quellcode zu und geben Sie nicht an, der ursprüngliche Autor zu sein.
MIT