package main import ( "encoding/json" "fmt" "io/ioutil" "log" "net/http" ) func cmdFollow(w http.ResponseWriter, r *http.Request) { body, err := ioutil.ReadAll(r.Body) if err != nil { fmt.Println(err) return } defer r.Body.Close() var followtarget interface{} err = json.Unmarshal(body, &followtarget) if err != nil { fmt.Println(err) return } myMap := followtarget.(map[string]interface{}) followInbox(myMap["follow"].(string)) fmt.Fprintf(w, "{}") } func cmdAdd(w http.ResponseWriter, r *http.Request) { body, err := ioutil.ReadAll(r.Body) if err != nil { fmt.Println(err) return } defer r.Body.Close() var addtarget interface{} err = json.Unmarshal(body, &addtarget) if err != nil { fmt.Println(err) return } myMap := addtarget.(map[string]interface{}) go StartInstance(myMap["host"].(string)) fmt.Fprintf(w, "{}") } func cmdStatus(w http.ResponseWriter, r *http.Request) { ri_mutex.Lock() bytes, err := json.Marshal(runninginstances) if err != nil { fmt.Println("Error happened", err) } ri_mutex.Unlock() fmt.Fprintf(w, (string(bytes))) } func startctl() { ctlweb := http.NewServeMux() ctlweb.HandleFunc("/follow", cmdFollow) ctlweb.HandleFunc("/status", cmdStatus) ctlweb.HandleFunc("/add", cmdAdd) log.Print("Starting HTTP inbox on port 127.0.0.1:5555") log.Fatal(http.ListenAndServe("127.0.0.1:5555", ctlweb)) }