Ocean/Log/Web/HandlerLog.go

107 lines
3.1 KiB
Go
Raw Normal View History

package Web
import (
2015-06-22 12:08:29 +00:00
"github.com/SommerEngineering/Ocean/Admin"
"github.com/SommerEngineering/Ocean/Admin/Scheme"
"github.com/SommerEngineering/Ocean/Log"
"github.com/SommerEngineering/Ocean/Log/DeviceDatabase"
LM "github.com/SommerEngineering/Ocean/Log/Meta"
"github.com/SommerEngineering/Ocean/MimeTypes"
"github.com/SommerEngineering/Ocean/Shutdown"
"net/http"
"strings"
)
2015-06-17 15:44:52 +00:00
// Handler for accessing the web logging.
func HandlerWebLog(response http.ResponseWriter, request *http.Request) {
2015-06-17 15:44:52 +00:00
// Case: The system goes down now.
if Shutdown.IsDown() {
http.NotFound(response, request)
return
}
2015-06-17 15:44:52 +00:00
// Execute the HTTP form:
request.ParseForm()
countParameters := len(request.Form)
2015-06-17 15:44:52 +00:00
// Setup the data for the HTML template:
data := Scheme.Viewer{}
2015-06-22 12:08:29 +00:00
data.Title = `Logging Viewer`
data.Sender = DeviceDatabase.ReadSenderNames()
data.MessageNames = DeviceDatabase.ReadMessageNames()
2015-06-17 15:44:52 +00:00
// To less parameters?
if countParameters < 9 {
// Initial view => refresh & first page (latest logs)
data.Events = readLatest()
data.SetLiveView = true
} else {
2015-06-17 15:44:52 +00:00
// Case: Custom view
currentLevel := request.FormValue(`Level`)
currentTimeRange := request.FormValue(`timeRange`)
currentCategory := request.FormValue(`Category`)
currentImpact := request.FormValue(`Impact`)
currentSeverity := request.FormValue(`Severity`)
currentMessageName := request.FormValue(`MSGName`)
currentSender := request.FormValue(`Sender`)
currentPage := request.FormValue(`CurrentPage`)
currentLiveView := request.FormValue(`LiveView`)
2015-06-17 15:44:52 +00:00
// Store the events for the template:
data.Events = readCustom(currentTimeRange, currentLevel, currentCategory, currentImpact, currentSeverity, currentMessageName, currentSender, currentPage)
if strings.ToLower(currentLiveView) == `true` {
data.SetLiveView = true
}
if currentLevel != `` {
data.CurrentLevel = currentLevel
} else {
data.CurrentLevel = `*`
}
if currentTimeRange != `` {
data.CurrentTimeRange = currentTimeRange
} else {
data.CurrentTimeRange = `*`
}
if currentCategory != `` {
data.CurrentCategory = currentCategory
} else {
data.CurrentCategory = `*`
}
if currentImpact != `` {
data.CurrentImpact = currentImpact
} else {
data.CurrentImpact = `*`
}
if currentSeverity != `` {
data.CurrentSeverity = currentSeverity
} else {
data.CurrentSeverity = `*`
}
if currentMessageName != `` {
data.CurrentMessageName = currentMessageName
} else {
data.CurrentMessageName = `*`
}
if currentSender != `` {
data.CurrentSender = currentSender
} else {
data.CurrentSender = `*`
}
}
2015-06-17 15:44:52 +00:00
// Write the MIME type and execute the template:
MimeTypes.Write2HTTP(response, MimeTypes.TypeWebHTML)
2015-06-22 12:08:29 +00:00
if executeError := Admin.AdminTemplates.ExecuteTemplate(response, `WebLog`, data); executeError != nil {
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameEXECUTE, `Was not able to execute the web log viewer template.`, executeError.Error())
}
}