func StartHandler(w http.ResponseWriter, req *http.Request) { var myjail *jail.Jail myjail = nil vars := mux.Vars(req) if _, ok := vars["uuid"]; ok { myjail = jail.GetJail(db, map[string]interface{}{"uuid": vars["uuid"]}) } if myjail == nil { w.WriteHeader(http.StatusNotFound) return } w.Header().Add("Content-Type", "application/json") status := ActionStatus{} if err := myjail.PrepareHostNetworking(); err == nil { if err = myjail.Start(); err == nil { if err = myjail.PrepareGuestNetworking(); err != nil { w.WriteHeader(http.StatusInternalServerError) status.Result = "Error" status.ErrorMessage = err.Error() } else { if err = myjail.PostStart(); err != nil { w.WriteHeader(http.StatusInternalServerError) status.Result = "Error" status.ErrorMessage = err.Error() } } } else { w.WriteHeader(http.StatusInternalServerError) status.Result = "Error" status.ErrorMessage = err.Error() } } else { w.WriteHeader(http.StatusInternalServerError) status.Result = "Error" status.ErrorMessage = err.Error() } if len(status.Result) == 0 { status.Result = "Okay" w.WriteHeader(http.StatusOK) } if bytes, err := json.Marshal(&status); err == nil { w.Write(bytes) } else { fmt.Printf("Could not marshal status object: %s\n", err.Error()) } }