Rewrite
This commit is contained in:
@@ -1,84 +1,35 @@
|
||||
package control
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
type ControlServer struct {
|
||||
bindAddr string
|
||||
ctrlMux *mux.Router
|
||||
traceChannel chan string
|
||||
useTLS bool
|
||||
certfile string
|
||||
keyfile string
|
||||
bindAddr string
|
||||
ctrlMux *mux.Router
|
||||
}
|
||||
|
||||
var server *ControlServer
|
||||
var Server *ControlServer
|
||||
|
||||
func NewControlServer(bindAddr string, listenPort int, certfile, keyfile string) (*ControlServer, error) {
|
||||
func (srv *ControlServer) Run(bindAddr string) {
|
||||
|
||||
if server == nil {
|
||||
var useTLS bool
|
||||
Server = &ControlServer{bindAddr, mux.NewRouter()}
|
||||
|
||||
if certfile == "" && keyfile != "" {
|
||||
return nil, errors.New("No keyfile provided")
|
||||
} else if certfile != "" && keyfile == "" {
|
||||
return nil, errors.New("No certfile provided")
|
||||
} else if certfile != "" && keyfile != "" {
|
||||
useTLS = true
|
||||
} else {
|
||||
useTLS = false
|
||||
}
|
||||
|
||||
server = &ControlServer{
|
||||
bindAddr: fmt.Sprintf("%s:%d", bindAddr, listenPort),
|
||||
useTLS: useTLS,
|
||||
certfile: certfile,
|
||||
keyfile: keyfile,
|
||||
ctrlMux: mux.NewRouter(),
|
||||
}
|
||||
|
||||
server.ctrlMux.HandleFunc("/routes/{id}", server.removeRoute).Methods("DELETE")
|
||||
server.ctrlMux.HandleFunc("/routes", server.listRoutes).Methods("GET")
|
||||
server.ctrlMux.HandleFunc("/routes", server.addRoute).Methods("POST")
|
||||
}
|
||||
|
||||
return server, nil
|
||||
}
|
||||
|
||||
func (srv *ControlServer) Start(traceChannel chan string) {
|
||||
|
||||
srv.traceChannel = traceChannel
|
||||
|
||||
// Start the server
|
||||
var err error
|
||||
if srv.useTLS {
|
||||
err = http.ListenAndServeTLS(srv.bindAddr, srv.certfile, srv.keyfile, srv.ctrlMux)
|
||||
} else {
|
||||
err = http.ListenAndServe(srv.bindAddr, srv.ctrlMux)
|
||||
}
|
||||
|
||||
srv.traceChannel <- err.Error()
|
||||
Server.ctrlMux.HandleFunc("/routes/{id}", Server.removeRoute).Methods("DELETE")
|
||||
Server.ctrlMux.HandleFunc("/routes", Server.listRoutes).Methods("GET")
|
||||
Server.ctrlMux.HandleFunc("/routes", Server.addRoute).Methods("POST")
|
||||
}
|
||||
|
||||
func (srv *ControlServer) removeRoute(http.ResponseWriter, *http.Request) {
|
||||
var logRecord string
|
||||
defer func() { srv.traceChannel <- logRecord }()
|
||||
|
||||
}
|
||||
|
||||
func (srv *ControlServer) listRoutes(http.ResponseWriter, *http.Request) {
|
||||
var logRecord string
|
||||
defer func() { srv.traceChannel <- logRecord }()
|
||||
|
||||
}
|
||||
|
||||
func (srv *ControlServer) addRoute(http.ResponseWriter, *http.Request) {
|
||||
var logRecord string
|
||||
defer func() { srv.traceChannel <- logRecord }()
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user