// WebServer starts the web server and serves GET & POST requests func (u *Uchiwa) WebServer(publicPath *string, auth auth.Config) { // private endpoints http.Handle("/delete_client", auth.Authenticate(http.HandlerFunc(u.deleteClientHandler))) http.Handle("/get_aggregate", auth.Authenticate(http.HandlerFunc(u.getAggregateHandler))) http.Handle("/get_aggregate_by_issued", auth.Authenticate(http.HandlerFunc(u.getAggregateByIssuedHandler))) http.Handle("/get_client", auth.Authenticate(http.HandlerFunc(u.getClientHandler))) http.Handle("/get_config", auth.Authenticate(http.HandlerFunc(u.getConfigHandler))) http.Handle("/get_sensu", auth.Authenticate(http.HandlerFunc(u.getSensuHandler))) http.Handle("/post_event", auth.Authenticate(http.HandlerFunc(u.postEventHandler))) http.Handle("/stashes", auth.Authenticate(http.HandlerFunc(u.stashHandler))) http.Handle("/stashes/delete", auth.Authenticate(http.HandlerFunc(u.stashDeleteHandler))) // static files http.Handle("/", http.FileServer(http.Dir(*publicPath))) // public endpoints http.Handle("/config/auth", http.HandlerFunc(u.configAuthHandler)) http.Handle("/health", http.HandlerFunc(u.healthHandler)) http.Handle("/health/", http.HandlerFunc(u.healthHandler)) http.Handle("/login", auth.GetIdentification()) listen := fmt.Sprintf("%s:%d", u.Config.Uchiwa.Host, u.Config.Uchiwa.Port) logger.Infof("Uchiwa is now listening on %s", listen) logger.Fatal(http.ListenAndServe(listen, nil)) }
func main() { configFile := flag.String("c", "./config.json", "Full or relative path to the configuration file") publicPath := flag.String("p", "public", "Full or relative path to the public directory") flag.Parse() config, err := config.Load(*configFile) if err != nil { logger.Fatal(err) } logger.Debug("Debug mode enabled") u := uchiwa.Init(config) authentication := auth.New() if config.Uchiwa.Auth == "simple" { authentication.Simple(config.Uchiwa.Users) } else { authentication.None() } uchiwa.FilterGetRequest = filters.GetRequest uchiwa.FilterPostRequest = filters.PostRequest uchiwa.FilterSensuData = filters.SensuData u.WebServer(publicPath, authentication) }
func main() { configFile := flag.String("c", "./config.json", "Full or relative path to the configuration file") publicPath := flag.String("p", "public", "Full or relative path to the public directory") flag.Parse() config, err := uchiwa.LoadConfig(*configFile) if err != nil { logger.Fatal(err) } uchiwa.New(config) go uchiwa.Fetch(config.Uchiwa.Refresh) uchiwa.WebServer(config, publicPath) }