gop2p est une bibliothèque Golang permettant une communication peer-to-peer extrêmement simple basée sur UDP entre les clients logiciels. L'objectif est de pouvoir contrôler à distance une variété de nœuds en émettant des commandes signées RSA. Les pairs conservent la clé publique par rapport à la clé privée que seul le client possède.
C'est mon premier grand projet, donc ce n'est peut-être pas joli, mais il fonctionne très vite.
Le dossier client contient tout le code nécessaire à l'exécution d'un client qui émet des commandes.
Le dossier peer contient tout le code nécessaire à l'exécution d'un nœud.
Après avoir généré les clés RSA publiques et privées, placez-les dans les fichiers cryptotext.go pour le client et le homologue.
Après avoir placé les clés au bon endroit, créez le client et le homologue.
Exécutez le client avec :
./p2pclient < IP ADDRESS OF PEER HERE >
Exécutez le homologue initial comme ceci :
./p2ppeer -p < port >
Et exécutez tous les nouveaux pairs comme ceci :
./p2ppeer -p < port > -b < ANY OTHER PEER IP >
Les homologues partageront automatiquement des informations sur les homologues actuellement présents sur le réseau, de sorte que l'homologue d'amorçage ne doit pas nécessairement être le même pour tous les homologues suivants. Les pairs sont eux-mêmes des pairs bootstrap.
Les pairs ne font actuellement rien avec les commandes qui leur sont envoyées. Ils n'impriment que la tranche d'octets brute des données. Je n'étais intéressé que par la communication p2p implémentée dans Golang, il n'y a donc pas de commandes par défaut. Cependant, l'implémentation de certaines commandes pour les pairs nécessite uniquement de modifier la fonction "executeCommand" dans le fichier commands.go. Le tampon contient uniquement le tableau de commandes, alors faites-en ce que vous voulez. J'ai commenté du code qui exécuterait la commande en tant que shell (mais cela peut avoir des conséquences désastreuses sur la sécurité si vous tapez une commande malveillante. Vous avez été prévenu).
Les demandes de tirage sont les bienvenues. Pour les changements majeurs, veuillez d'abord ouvrir un ticket pour discuter de ce que vous souhaitez changer.
N'hésitez pas à inclure le code dans tous vos projets. Je vous demande seulement d'attribuer ce projet et de créer un lien vers la page github. Vous n’êtes pas non plus obligé d’utiliser le projet dans son intégralité. Vous pouvez utiliser tous les extraits de votre choix. Attribuez-le simplement via un commentaire quelque part dans votre code source et ne prétendez pas être l'auteur original.
MIT