gop2p は、ソフトウェア クライアント間の極めて単純な UDP ベースのピアツーピア通信を可能にする Golang ライブラリです。目的は、RSA 署名付きのコマンドを発行して、さまざまなノードをリモート制御できるようにすることです。ピアは、クライアントのみが持つ秘密鍵に対する公開鍵を維持します。
これは私にとって初めての主要な Go プロジェクトなので、あまりきれいではないかもしれませんが、非常に高速に実行されます。
client フォルダーには、コマンドを発行するクライアントを実行するために必要なコードがすべて含まれています。
ピア フォルダーには、ノードの実行に必要なすべてのコードが含まれています。
RSA 公開キーと秘密キーを生成したら、それらをクライアントとピアの cryptotext.go ファイルに置きます。
キーを正しい場所に配置した後、クライアントとピアを構築します。
以下を使用してクライアントを実行します。
./p2pclient < IP ADDRESS OF PEER HERE >
次のように初期ピアを実行します。
./p2ppeer -p < port >
そして、次のように新しいピアを実行します。
./p2ppeer -p < port > -b < ANY OTHER PEER IP >
ピアは現在ネットワーク内にあるピアに関する情報を自動的に共有するため、ブートストラップ ピアは後続のすべてのピアで同じである必要はありません。ピア自体がブートストラップ ピアです。
ピアは現在、送信されたコマンドに対して何も実行しません。データの生のバイト スライスのみを出力します。私は Golang で実装された p2p 通信にしか興味がなかったので、デフォルトのコマンドはありません。ただし、ピアが実行できるいくつかのコマンドを実装するには、commands.go ファイル内の「executeCommand」関数を変更するだけで済みます。バッファにはコマンド配列のみが含まれるため、必要に応じて使用してください。コマンドをシェルとして実行するコードをコメントアウトしています (ただし、悪意のあるコマンドを入力すると、セキュリティに悲惨な結果が生じる可能性があります。警告されています)。
プルリクエストは大歓迎です。大きな変更の場合は、まず問題を開いて、変更したい内容について話し合ってください。
所有しているプロジェクトに自由にコードを含めてください。このプロジェクトの帰属を明記し、github ページにリンクバックすることだけをお願いします。また、プロジェクト全体を使用する必要もありません。必要なスニペットを使用できます。ソースコード内のどこかのコメントを通じてそれを特定するだけであり、オリジナルの作成者であると主張する必要はありません。
マサチューセッツ工科大学