2015-02-04 06:58:23 +00:00
package Web
import (
2015-06-22 12:08:29 +00:00
"github.com/SommerEngineering/Ocean/Admin"
"github.com/SommerEngineering/Ocean/Admin/Scheme"
2015-02-04 06:58:23 +00:00
"github.com/SommerEngineering/Ocean/Log"
2015-02-26 15:37:36 +00:00
"github.com/SommerEngineering/Ocean/Log/DeviceDatabase"
2015-02-04 06:58:23 +00:00
LM "github.com/SommerEngineering/Ocean/Log/Meta"
"github.com/SommerEngineering/Ocean/MimeTypes"
"github.com/SommerEngineering/Ocean/Shutdown"
"net/http"
2015-02-26 17:29:42 +00:00
"strings"
2015-02-04 06:58:23 +00:00
)
2015-06-17 15:44:52 +00:00
// Handler for accessing the web logging.
2015-02-04 06:58:23 +00:00
func HandlerWebLog ( response http . ResponseWriter , request * http . Request ) {
2015-06-17 15:44:52 +00:00
// Case: The system goes down now.
2015-02-04 06:58:23 +00:00
if Shutdown . IsDown ( ) {
http . NotFound ( response , request )
return
}
2015-06-17 15:44:52 +00:00
// Execute the HTTP form:
2015-02-05 20:30:32 +00:00
request . ParseForm ( )
countParameters := len ( request . Form )
2015-06-17 15:44:52 +00:00
// Setup the data for the HTML template:
2015-02-04 06:58:23 +00:00
data := Scheme . Viewer { }
2015-06-22 12:08:29 +00:00
data . Title = ` Logging Viewer `
2015-02-26 15:37:36 +00:00
data . Sender = DeviceDatabase . ReadSenderNames ( )
data . MessageNames = DeviceDatabase . ReadMessageNames ( )
2015-02-04 06:58:23 +00:00
2015-06-17 15:44:52 +00:00
// To less parameters?
2015-02-05 20:30:32 +00:00
if countParameters < 9 {
// Initial view => refresh & first page (latest logs)
data . Events = readLatest ( )
2015-02-26 16:30:33 +00:00
data . SetLiveView = true
2015-02-05 20:30:32 +00:00
} else {
2015-06-17 15:44:52 +00:00
// Case: Custom view
2015-02-26 17:29:42 +00:00
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:
2015-02-26 17:29:42 +00:00
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 = ` * `
}
2015-03-01 20:54:15 +00:00
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-02-05 20:30:32 +00:00
}
2015-06-17 15:44:52 +00:00
// Write the MIME type and execute the template:
2015-02-04 06:58:23 +00:00
MimeTypes . Write2HTTP ( response , MimeTypes . TypeWebHTML )
2015-06-22 12:08:29 +00:00
if executeError := Admin . AdminTemplates . ExecuteTemplate ( response , ` WebLog ` , data ) ; executeError != nil {
2015-02-04 06:58:23 +00:00
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 ( ) )
}
}