diff --git a/admin/handlers/json-logs.go b/admin/handlers/json-logs.go index 7565634b..14271b40 100644 --- a/admin/handlers/json-logs.go +++ b/admin/handlers/json-logs.go @@ -75,22 +75,29 @@ func (h *HandlersAdmin) JSONLogsHandler(w http.ResponseWriter, r *http.Request) return } // Extract environment - env, ok := vars["environment"] + envVar, ok := vars["environment"] if !ok { log.Println("environment is missing") h.Inc(metricJSONErr) return } + // Get environment + env, err := h.Envs.Get(envVar) + if err != nil { + log.Printf("error getting environment %s - %v", envVar, err) + h.Inc(metricJSONErr) + return + } // Check if environment is valid - if !h.Envs.Exists(env) { - log.Printf("error unknown environment (%s)", env) + if !h.Envs.Exists(envVar) { + log.Printf("error unknown environment (%s)", envVar) h.Inc(metricJSONErr) return } // Get context data ctx := r.Context().Value(sessions.ContextKey("session")).(sessions.ContextValue) // Check permissions - if !h.Users.CheckPermissions(ctx[sessions.CtxUser], users.EnvLevel, env) { + if !h.Users.CheckPermissions(ctx[sessions.CtxUser], users.EnvLevel, env.Name) { log.Printf("%s has insuficient permissions", ctx[sessions.CtxUser]) h.Inc(metricJSONErr) return @@ -116,7 +123,7 @@ func (h *HandlersAdmin) JSONLogsHandler(w http.ResponseWriter, r *http.Request) // Get logs logJSON := []LogJSON{} if logType == "status" { - statusLogs, err := h.LoggerDB.StatusLogs(UUID, env, secondsBack) + statusLogs, err := h.LoggerDB.StatusLogs(UUID, env.Name, secondsBack) if err != nil { log.Printf("error getting logs %v", err) h.Inc(metricJSONErr) @@ -136,7 +143,7 @@ func (h *HandlersAdmin) JSONLogsHandler(w http.ResponseWriter, r *http.Request) logJSON = append(logJSON, _l) } } else if logType == "result" { - resultLogs, err := h.LoggerDB.ResultLogs(UUID, env, secondsBack) + resultLogs, err := h.LoggerDB.ResultLogs(UUID, env.Name, secondsBack) if err != nil { log.Printf("error getting logs %v", err) h.Inc(metricJSONErr) diff --git a/admin/handlers/json-nodes.go b/admin/handlers/json-nodes.go index 11142471..24a17786 100644 --- a/admin/handlers/json-nodes.go +++ b/admin/handlers/json-nodes.go @@ -45,22 +45,29 @@ func (h *HandlersAdmin) JSONEnvironmentHandler(w http.ResponseWriter, r *http.Re utils.DebugHTTPDump(r, h.Settings.DebugHTTP(settings.ServiceAdmin), false) vars := mux.Vars(r) // Extract environment - env, ok := vars["environment"] + envVar, ok := vars["environment"] if !ok { log.Println("error getting environment") h.Inc(metricJSONErr) return } // Check if environment is valid - if !h.Envs.Exists(env) { - log.Printf("error unknown environment (%s)", env) + if !h.Envs.Exists(envVar) { + log.Printf("error unknown environment (%s)", envVar) + h.Inc(metricJSONErr) + return + } + // Get environment + env, err := h.Envs.Get(envVar) + if err != nil { + log.Printf("error getting environment %s - %v", envVar, err) h.Inc(metricJSONErr) return } // Get context data ctx := r.Context().Value(sessions.ContextKey("session")).(sessions.ContextValue) // Check permissions - if !h.Users.CheckPermissions(ctx[sessions.CtxUser], users.EnvLevel, env) { + if !h.Users.CheckPermissions(ctx[sessions.CtxUser], users.EnvLevel, env.Name) { log.Printf("%s has insuficient permissions", ctx[sessions.CtxUser]) h.Inc(metricJSONErr) return @@ -78,7 +85,7 @@ func (h *HandlersAdmin) JSONEnvironmentHandler(w http.ResponseWriter, r *http.Re h.Inc(metricJSONErr) return } - nodes, err := h.Nodes.GetByEnv(env, target, h.Settings.InactiveHours()) + nodes, err := h.Nodes.GetByEnv(env.Name, target, h.Settings.InactiveHours()) if err != nil { log.Printf("error getting nodes %v", err) h.Inc(metricJSONErr) diff --git a/admin/handlers/post.go b/admin/handlers/post.go index 8e5eb671..5a16d695 100644 --- a/admin/handlers/post.go +++ b/admin/handlers/post.go @@ -712,8 +712,16 @@ func (h *HandlersAdmin) IntervalsPOSTHandler(w http.ResponseWriter, r *http.Requ utils.DebugHTTPDump(r, h.Settings.DebugHTTP(settings.ServiceAdmin), true) vars := mux.Vars(r) // Extract environment and verify - environmentVar, ok := vars["environment"] - if !ok || !h.Envs.Exists(environmentVar) { + envVar, ok := vars["environment"] + if !ok || !h.Envs.Exists(envVar) { + adminErrorResponse(w, "error getting environment", http.StatusInternalServerError, nil) + h.Inc(metricAdminErr) + return + } + // TODO do the exist and get in one step + // Get environment + env, err := h.Envs.Get(envVar) + if err != nil { adminErrorResponse(w, "error getting environment", http.StatusInternalServerError, nil) h.Inc(metricAdminErr) return @@ -722,7 +730,7 @@ func (h *HandlersAdmin) IntervalsPOSTHandler(w http.ResponseWriter, r *http.Requ // Get context data ctx := r.Context().Value(sessions.ContextKey("session")).(sessions.ContextValue) // Check permissions - if !h.Users.CheckPermissions(ctx[sessions.CtxUser], users.EnvLevel, environmentVar) { + if !h.Users.CheckPermissions(ctx[sessions.CtxUser], users.EnvLevel, env.Name) { adminErrorResponse(w, fmt.Sprintf("%s has insuficient permissions", ctx[sessions.CtxUser]), http.StatusForbidden, nil) h.Inc(metricAdminErr) return @@ -742,20 +750,20 @@ func (h *HandlersAdmin) IntervalsPOSTHandler(w http.ResponseWriter, r *http.Requ h.Inc(metricAdminErr) return } - if err := h.Envs.UpdateIntervals(environmentVar, c.ConfigInterval, c.LogInterval, c.QueryInterval); err != nil { + if err := h.Envs.UpdateIntervals(env.Name, c.ConfigInterval, c.LogInterval, c.QueryInterval); err != nil { adminErrorResponse(w, "error updating intervals", http.StatusInternalServerError, err) h.Inc(metricAdminErr) return } // After updating interval, you need to re-generate flags - flags, err := h.Envs.GenerateFlagsEnv(environmentVar, "", "") + flags, err := h.Envs.GenerateFlagsEnv(envVar, "", "") if err != nil { adminErrorResponse(w, "error re-generating flags", http.StatusInternalServerError, err) h.Inc(metricAdminErr) return } // Update flags in the newly created environment - if err := h.Envs.UpdateFlags(environmentVar, flags); err != nil { + if err := h.Envs.UpdateFlags(envVar, flags); err != nil { adminErrorResponse(w, "error updating flags", http.StatusInternalServerError, err) h.Inc(metricAdminErr) return diff --git a/admin/handlers/templates.go b/admin/handlers/templates.go index e3af148e..c60f566b 100644 --- a/admin/handlers/templates.go +++ b/admin/handlers/templates.go @@ -91,22 +91,29 @@ func (h *HandlersAdmin) EnvironmentHandler(w http.ResponseWriter, r *http.Reques utils.DebugHTTPDump(r, h.Settings.DebugHTTP(settings.ServiceAdmin), false) vars := mux.Vars(r) // Extract environment - env, ok := vars["environment"] + envVar, ok := vars["environment"] if !ok { h.Inc(metricAdminErr) log.Println("error getting environment") return } // Check if environment is valid - if !h.Envs.Exists(env) { + if !h.Envs.Exists(envVar) { h.Inc(metricAdminErr) - log.Printf("error unknown environment (%s)", env) + log.Printf("error unknown environment (%s)", envVar) + return + } + // Get environment + env, err := h.Envs.Get(envVar) + if err != nil { + h.Inc(metricAdminErr) + log.Printf("error getting environment: %v", err) return } // Get context data ctx := r.Context().Value(sessions.ContextKey("session")).(sessions.ContextValue) // Check permissions - if !h.Users.CheckPermissions(ctx[sessions.CtxUser], users.EnvLevel, env) { + if !h.Users.CheckPermissions(ctx[sessions.CtxUser], users.EnvLevel, env.Name) { log.Printf("%s has insuficient permissions", ctx[sessions.CtxUser]) h.Inc(metricTokenErr) return @@ -122,7 +129,6 @@ func (h *HandlersAdmin) EnvironmentHandler(w http.ResponseWriter, r *http.Reques // Prepare template tempateFiles := NewTemplateFiles(templatesFilesFolder, "table.html").filepaths t, err := template.ParseFiles(tempateFiles...) - if err != nil { h.Inc(metricAdminErr) log.Printf("error getting table template: %v", err) @@ -151,10 +157,10 @@ func (h *HandlersAdmin) EnvironmentHandler(w http.ResponseWriter, r *http.Reques } // Prepare template data templateData := TableTemplateData{ - Title: "Nodes in " + env, + Title: "Nodes in " + env.Name, Metadata: h.TemplateMetadata(ctx, h.ServiceVersion), Selector: "environment", - SelectorName: env, + SelectorName: env.Name, Target: target, Tags: tags, Environments: h.allowedEnvironments(ctx[sessions.CtxUser], envAll), @@ -743,7 +749,7 @@ func (h *HandlersAdmin) ConfGETHandler(w http.ResponseWriter, r *http.Request) { } // Prepare template data templateData := ConfTemplateData{ - Title: envVar + " Configuration", + Title: env.Name + " Configuration", Metadata: h.TemplateMetadata(ctx, h.ServiceVersion), Environment: env, Environments: h.allowedEnvironments(ctx[sessions.CtxUser], envAll), @@ -821,9 +827,9 @@ func (h *HandlersAdmin) EnrollGETHandler(w http.ResponseWriter, r *http.Request) shellQuickRemove, _ := environments.QuickRemoveOneLinerShell(env) powershellQuickRemove, _ := environments.QuickRemoveOneLinerPowershell(env) templateData := EnrollTemplateData{ - Title: envVar + " Enroll", + Title: env.Name + " Enroll", Metadata: h.TemplateMetadata(ctx, h.ServiceVersion), - EnvName: envVar, + EnvName: env.Name, EnrollExpiry: strings.ToUpper(utils.InFutureTime(env.EnrollExpire)), EnrollExpired: environments.IsItExpired(env.EnrollExpire), RemoveExpiry: strings.ToUpper(utils.InFutureTime(env.RemoveExpire)), diff --git a/admin/static/js/stats.js b/admin/static/js/stats.js index 61f95f5f..194cd6a1 100644 --- a/admin/static/js/stats.js +++ b/admin/static/js/stats.js @@ -1,18 +1,15 @@ -function statsRefresh(_target, _name) { +function statsRefresh(_target, _identifier) { $.ajax({ - url: '/json/stats/' + _target + '/' + _name, + url: '/json/stats/' + _target + '/' + _identifier, dataType: 'json', type: 'GET', contentType: 'application/json', - success: function(data, textStatus, jQxhr){ - $('.stats-' + _target + '-' + _name + '-active').text(data.active); - $('.stats-' + _target + '-' + _name + '-inactive').text(data.inactive); - $('.stats-' + _target + '-' + _name + '-total').text(data.total); - //console.log('Active: ' + data.active); - //console.log('Inactive: ' + data.inactive); - //console.log('Total: ' + data.total); + success: function (data, textStatus, jQxhr) { + $('.stats-' + _target + '-' + _identifier + '-active').text(data.active); + $('.stats-' + _target + '-' + _identifier + '-inactive').text(data.inactive); + $('.stats-' + _target + '-' + _identifier + '-total').text(data.total); }, - error: function(jqXhr, textStatus, errorThrown){ + error: function (jqXhr, textStatus, errorThrown) { var _clientmsg = 'Client: ' + errorThrown; var _serverJSON = $.parseJSON(jqXhr.responseText); var _servermsg = 'Server: ' + _serverJSON.message; @@ -25,9 +22,8 @@ function statsRefresh(_target, _name) { function beginStats() { var _stats = ['environment', 'platform']; - for (var i = 0; i<_stats.length; i++) { - //console.log('Doing ' + _stats[i]); - $('input[type="hidden"].stats-' + _stats[i] + '-value').each(function() { + for (var i = 0; i < _stats.length; i++) { + $('input[type="hidden"].stats-' + _stats[i] + '-value').each(function () { statsRefresh(_stats[i], $(this).val()); }); } diff --git a/admin/templates/components/page-aside-left.html b/admin/templates/components/page-aside-left.html index 64804cca..5a557b35 100644 --- a/admin/templates/components/page-aside-left.html +++ b/admin/templates/components/page-aside-left.html @@ -17,39 +17,39 @@