gop2p es una biblioteca de Golang que permite una comunicación de igual a igual basada en UDP muy simple entre clientes de software. El objetivo es poder controlar de forma remota una variedad de nodos mediante la emisión de comandos firmados por RSA. Los pares mantienen la clave pública de la clave privada que solo tiene el cliente.
Es mi primer proyecto importante, por lo que puede que no sea bonito, pero funciona muy rápido.
La carpeta del cliente contiene todo el código necesario para ejecutar un cliente que emite comandos.
La carpeta del mismo nivel contiene todo el código necesario para ejecutar un nodo.
Después de generar claves RSA públicas y privadas, colóquelas en los archivos cryptotext.go para el cliente y el par.
Después de colocar las claves en la ubicación correcta, cree el cliente y el peer.
Ejecute el cliente con:
./p2pclient < IP ADDRESS OF PEER HERE >
Ejecute el par inicial así:
./p2ppeer -p < port >
Y ejecute nuevos pares como este:
./p2ppeer -p < port > -b < ANY OTHER PEER IP >
Los pares compartirán automáticamente información sobre los pares que se encuentran actualmente en la red, por lo que el par de arranque no tiene que ser el mismo para todos los pares posteriores. Los pares son en sí mismos pares de arranque.
Actualmente, los pares no hacen nada con los comandos que se les envían. Solo imprimen el segmento de bytes sin procesar de los datos. Solo estaba interesado en la comunicación p2p implementada en Golang, por lo que no hay comandos predeterminados. Sin embargo, implementar algunos comandos para que los realicen los pares solo requiere modificar la función "executeCommand" en el archivo commands.go. El búfer contiene solo la matriz de comandos, así que haz con él lo que quieras. Tengo un código comentado que ejecutaría el comando como un shell (pero esto puede tener consecuencias nefastas para la seguridad si escribe un comando malicioso. Ha sido advertido).
Las solicitudes de extracción son bienvenidas. Para cambios importantes, primero abra un problema para discutir lo que le gustaría cambiar.
No dudes en incluir el código en cualquier proyecto que tengas. Solo le pido que atribuya este proyecto y lo vincule a la página de github. Tampoco es necesario utilizar el proyecto en su totalidad. Puede utilizar cualquier fragmento que desee. Simplemente atribuyalo a través de un comentario en algún lugar de su código fuente y no pretenda ser el autor original.
MIT