gop2p é uma biblioteca Golang para permitir comunicação ponto a ponto baseada em UDP extremamente simples entre clientes de software. O objetivo é ser capaz de controlar remotamente uma variedade de nós, emitindo comandos assinados por RSA. Os pares mantêm a chave pública para a chave privada que somente o cliente possui.
É meu primeiro grande projeto, então pode não ser bonito, mas funciona muito rápido.
A pasta do cliente contém todo o código necessário para executar um cliente que emite comandos.
A pasta peer contém todo o código necessário para executar um nó.
Após gerar as chaves RSA públicas e privadas, coloque-as nos arquivos cryptotext.go do cliente e do peer.
Depois de colocar as chaves no local correto, construa o cliente e o peer.
Execute o cliente com:
./p2pclient < IP ADDRESS OF PEER HERE >
Execute o par inicial assim:
./p2ppeer -p < port >
E execute quaisquer novos pares assim:
./p2ppeer -p < port > -b < ANY OTHER PEER IP >
Os peers compartilharão automaticamente informações sobre os peers atualmente na rede, de modo que o peer de inicialização não precise ser o mesmo para todos os peers subsequentes. Os pares são eles próprios pares de bootstrap.
Os peers atualmente não fazem nada com os comandos enviados a eles. Eles imprimem apenas a fatia de bytes brutos dos dados. Eu estava interessado apenas na comunicação p2p implementada em Golang, portanto não há comandos padrão. No entanto, a implementação de alguns comandos para os pares requer apenas a modificação da função "executeCommand" no arquivo comments.go. O buffer contém apenas a matriz de comando, então faça o que quiser com ele. Eu tenho um código comentado que executaria o comando como um shell (mas isso pode ter consequências terríveis para a segurança caso você digite um comando malicioso. Você foi avisado).
Solicitações pull são bem-vindas. Para mudanças importantes, abra primeiro uma edição para discutir o que você gostaria de mudar.
Sinta-se à vontade para incluir o código em qualquer projeto que você tenha. Peço apenas que você atribua este projeto e faça um link de volta para a página do github. Você também não precisa usar o projeto em sua totalidade. Você pode usar os trechos que desejar. Basta atribuí-lo através de um comentário em algum lugar do seu código-fonte e não reivindicar ser o autor original.
MIT