commit 2e02e951df8b4bb89560d1fdc0116d9231290d63
parent 4f05f88997bce535ef0cc782633172330ac16c11
Author: parazyd <parazyd@dyne.org>
Date:   Sun, 10 Dec 2017 13:50:27 +0100
More robustness in dam-dir
Diffstat:
3 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/cmd/dam-client/main.go b/cmd/dam-client/main.go
@@ -38,9 +38,9 @@ func announce(dir string, vals map[string]string, privkey *rsa.PrivateKey) (bool
 		return false, err
 	}
 
-	if dir == "localhost" {
+	if dir == "localhost" || dir == "127.0.0.1" {
 		// Modify the string if we are authenticating to ourself.
-		dir = "localhost:49371"
+		dir += ":49371"
 	}
 
 	log.Println("Announcing keypair to:", dir)
@@ -180,7 +180,7 @@ func main() {
 
 	var ann = 0 // Track of how many successful authentications
 
-	dirs := []string{"qvhgzxjkdchj2jl5.onion", "localhost"}
+	dirs := []string{"3mb6b3exknytbqdg.onion", "localhost"}
 
 	var wg sync.WaitGroup
 	for _, i := range dirs {
diff --git a/cmd/dam-dir/main.go b/cmd/dam-dir/main.go
@@ -45,7 +45,7 @@ type nodeStruct struct {
 }
 
 func startRedis() {
-	log.Println("Staring up redis-server...")
+	log.Println("Starting up redis-server...")
 	cmd := exec.Command("redis-server", "/usr/local/share/tor-dam/redis.conf")
 	err := cmd.Start()
 	lib.CheckError(err)
@@ -57,14 +57,24 @@ func startRedis() {
 }
 
 func handlePost(rw http.ResponseWriter, request *http.Request) {
+	if request.Method != "POST" || request.Header["Content-Type"][0] != "application/json" {
+		return
+	}
+
 	decoder := json.NewDecoder(request.Body)
 
 	var n nodeStruct
 	err := decoder.Decode(&n)
-	lib.CheckError(err)
+	if err != nil {
+		log.Println("Failed decoding request:", err)
+		return
+	}
 
 	decSig, err := base64.StdEncoding.DecodeString(n.Signature)
-	lib.CheckError(err)
+	if err != nil {
+		log.Println("Failed decoding signature:", err)
+		return
+	}
 
 	req := map[string]string{
 		"nodetype":  n.Nodetype,
@@ -86,7 +96,14 @@ func handlePost(rw http.ResponseWriter, request *http.Request) {
 
 	pkey, valid := lib.ValidateReq(req, pub)
 	if !(valid) && pkey == nil {
-		log.Fatalln("Request is not valid.")
+		ret := map[string]string{
+			"secret": "Request is not valid.",
+		}
+		jsonVal, err := json.Marshal(ret)
+		lib.CheckError(err)
+		rw.Header().Set("Content-Type", "application/json")
+		rw.Write(jsonVal)
+		return
 	} else if !(valid) && pkey != nil {
 		// We couldn't get a descriptor.
 		ret := map[string]string{
@@ -213,6 +230,11 @@ func handlePost(rw http.ResponseWriter, request *http.Request) {
 	}
 }
 
+func handleElse(rw http.ResponseWriter, request *http.Request) {
+	// noop for anything that isn't /announce.
+	return
+}
+
 func main() {
 	var wg sync.WaitGroup
 
@@ -220,7 +242,6 @@ func main() {
 		err := os.Mkdir(Cwd, 0700)
 		lib.CheckError(err)
 	}
-	log.Println("Chdir to", Cwd)
 	err := os.Chdir(Cwd)
 	lib.CheckError(err)
 
@@ -230,6 +251,7 @@ func main() {
 	}
 
 	http.HandleFunc("/announce", handlePost)
+	http.HandleFunc("/", handleElse)
 
 	wg.Add(1)
 	go http.ListenAndServe(ListenAddress, nil)
diff --git a/pkg/lib/helpers.go b/pkg/lib/helpers.go
@@ -36,7 +36,7 @@ func FetchHSPubkey(addr string) string {
 
 	log.Println("Fetching pubkey for:", addr)
 
-	cmd := exec.Command("dirauth.py", addr)
+	cmd := exec.Command("damauth.py", addr)
 	cmd.Stdout = &outb
 	cmd.Stderr = &errb
 	err := cmd.Start()