From d12ace7f372a374a3273460077b10b6cec2c864e Mon Sep 17 00:00:00 2001 From: Gregory Eremin Date: Sat, 29 Aug 2015 16:56:19 +0300 Subject: [PATCH] Implement basic server --- secondly.go | 6 ++++++ server.go | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 server.go diff --git a/secondly.go b/secondly.go index 0e14cc9..0baa09c 100644 --- a/secondly.go +++ b/secondly.go @@ -3,6 +3,7 @@ package secondly import ( "encoding/json" "flag" + "fmt" "log" "os" "os/signal" @@ -37,6 +38,11 @@ func Manage(target interface{}) { bootstrap() } +// StartServer will start an HTTP server with web interface to edit config. +func StartServer(host string, port int) { + go startServer(fmt.Sprintf("%s:%d", host, port)) +} + // HandleSIGHUP waits a SIGHUP system call and reloads configuration when // receives one. func HandleSIGHUP() { diff --git a/server.go b/server.go new file mode 100644 index 0000000..709b404 --- /dev/null +++ b/server.go @@ -0,0 +1,21 @@ +package secondly + +import ( + "encoding/json" + "log" + "net/http" +) + +func startServer(addr string) { + mux := http.NewServeMux() + mux.HandleFunc("/fields.json", fieldsHandler) + + log.Println("Starting configuration server on", addr) + go http.ListenAndServe(addr, mux) +} + +func fieldsHandler(rw http.ResponseWriter, req *http.Request) { + fields := extractFields(config, "") + body, _ := json.Marshal(fields) + rw.Write(body) +}