package main import ( "crypto/ed25519" "crypto/sha256" "encoding/base64" "flag" "log" "net/http" "sync" ) type user struct { pubkey []byte servers []string } var mu sync.Mutex var me string var myHash string var myPos int var hashToDomain map[string]string var peerHashes []string var kvstore map[string][]byte func main() { bindAddr := flag.String("b", ":4200", "bind address") publicURL := flag.String("u", "http://localhost:4200", "public URL") peer := flag.String("i", "", "initial peer") flag.Parse() log.Printf("Starting %s %s %s", *bindAddr, *publicURL, *peer) // Record myself me = *publicURL myHash = sha256sum(me) myPos = 0 peerHashes = append(peerHashes, sha256sum(me)) hashToDomain = map[string]string{peerHashes[0]: me} if *peer != "" { go addPeer(*peer) } http.HandleFunc("/peer", peerHandler) http.HandleFunc("/dht", dhtHandler) http.HandleFunc("/storage", storageHandler) http.HandleFunc("/message", messageHandler) log.Fatal(http.ListenAndServe(*bindAddr, nil)) }