diff options
Diffstat (limited to 'client/main.go')
-rw-r--r-- | client/main.go | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/client/main.go b/client/main.go index 5397384..150e160 100644 --- a/client/main.go +++ b/client/main.go @@ -4,6 +4,7 @@ import ( "bytes" "crypto/ed25519" "encoding/base64" + "encoding/binary" "flag" "fmt" "net/http" @@ -19,10 +20,25 @@ var servers []string // Post new server list to DHT func dhtPost(s string) { - message := []byte(fmt.Sprint(time.Now().Unix()) + "\n" + strings.Join(servers, "\n")) - fmt.Print(message) - message = append(message, ed25519.Sign(privKey, message)...) - http.Post(s+"/dht/"+id, "application/octet-stream", bytes.NewBuffer(message)) + buf := new(bytes.Buffer) + err := binary.Write(buf, binary.LittleEndian, time.Now().Unix()) + if err != nil { + panic(err) + } + _, err = buf.WriteString(strings.Join(servers, "\n")) + if err != nil { + panic(err) + } + var message []byte + _, err = buf.Read(message) + if err != nil { + panic(err) + } + _, err = buf.Write(ed25519.Sign(privKey, message)) + if err != nil { + panic(err) + } + fmt.Println(http.Post(s+"/dht/"+id, "application/octet-stream", buf)) } func main() { @@ -55,19 +71,22 @@ func main() { if err != nil { panic(err) } - pubKey := ed25519.PublicKey(pubKeyBytes) + pubKey = ed25519.PublicKey(pubKeyBytes) privKeyBytes, err := os.ReadFile("privkey") if err != nil { panic(err) } - privKey := ed25519.PublicKey(privKeyBytes) + privKey = ed25519.PrivateKey(privKeyBytes) serversBytes, err := os.ReadFile("servers") if err != nil { panic(err) } id = base64.RawURLEncoding.EncodeToString(pubKey) - servers := strings.Split(string(serversBytes), "\n") - fmt.Println(pubKey, privKey, servers) + servers = strings.Split(string(serversBytes), "\n") + if servers[0] == "" { + servers = servers[1:] + } + fmt.Println(id, servers) if flag.Arg(0) == "add" { // Add server |