working prototype

This commit is contained in:
Xavier Henner
2019-08-16 17:23:19 +02:00
parent a82131c8c8
commit 9eff9ce803
23 changed files with 1029 additions and 303 deletions

View File

@@ -7,6 +7,9 @@ import (
"io/ioutil"
"log"
"net/http"
_ "git.euclide.org/euclide/openvpn-mgt/statik"
"github.com/rakyll/statik/fs"
)
type jsonInput struct {
@@ -71,6 +74,7 @@ func (h *HttpServer) ajaxHandler(w http.ResponseWriter, r *http.Request) {
http.Error(w, "Invalid request", 500)
return
}
h.ovpn.Debug(req)
switch req.Action {
case "get-remotes":
@@ -78,6 +82,8 @@ func (h *HttpServer) ajaxHandler(w http.ResponseWriter, r *http.Request) {
case "set-remote":
err = h.ovpn.SetRemote(req.Params.Server, req.Params.Session)
jsonStr = []byte("{\"status\": \"ok\"}")
case "get-sessions":
jsonStr, err = json.Marshal(h.ovpn)
case "version":
err, version := h.ovpn.Version()
if err != nil {
@@ -85,7 +91,12 @@ func (h *HttpServer) ajaxHandler(w http.ResponseWriter, r *http.Request) {
}
jsonStr, err = json.Marshal(version)
case "stats":
case "restart":
err = h.ovpn.Restart(req.Params.Session)
jsonStr = []byte("{\"status\": \"ok\"}")
case "kill":
err = h.ovpn.Kill(req.Params.Session)
jsonStr = []byte("{\"status\": \"ok\"}")
default:
err = errors.New("Invalid request")
}
@@ -105,8 +116,13 @@ func NewHTTPServer(port string, s *OpenVpnMgt) {
ovpn: s,
}
statikFS, err := fs.New()
if err != nil {
log.Fatal(err)
}
http.HandleFunc("/ajax", h.ajaxHandler)
http.HandleFunc("/", h.handler)
http.Handle("/", http.FileServer(statikFS))
log.Fatal(http.ListenAndServe(port, nil))
}