Ocean/Log/Web/HandlerLog.go

155 lines
4.5 KiB
Go
Raw Normal View History

package Web
import (
2015-06-22 18:54:38 +00:00
"fmt"
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"
2015-06-22 18:54:38 +00:00
"strconv"
"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-22 18:54:38 +00:00
// The current page as number:
currentPageNumber := 1
// The max. page as number:
lastPageNumber := 1
2015-06-17 15:44:52 +00:00
// Setup the data for the HTML template:
2015-06-22 15:38:55 +00:00
data := Scheme.LoggingViewer{}
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 {
2015-06-22 15:38:55 +00:00
// Initial view => first page (latest logs)
2015-06-23 05:49:59 +00:00
data.Events, lastPageNumber = readLatest()
data.SetLiveView = true
2015-06-22 18:54:38 +00:00
data.CurrentPage = `1`
data.LastPage = fmt.Sprintf("%d", lastPageNumber)
if currentPageNumber+1 > lastPageNumber {
data.NextPage = fmt.Sprintf("%d", lastPageNumber)
} else {
data.NextPage = `2`
}
data.PreviousPage = `1`
} else {
2015-06-17 15:44:52 +00:00
// Case: Custom view
currentLevel := request.FormValue(`Level`)
2015-06-22 15:38:55 +00:00
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-06-23 05:49:59 +00:00
data.Events, lastPageNumber = 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-22 15:38:55 +00:00
if currentPage != `` {
2015-06-22 18:54:38 +00:00
if number, err := strconv.Atoi(currentPage); err != nil {
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityNone, LM.ImpactNone, LM.MessageNameEXECUTE, `Was not able to parse the page number.`, err.Error())
} else {
currentPageNumber = number
data.CurrentPage = fmt.Sprintf("%d", currentPageNumber)
data.LastPage = fmt.Sprintf("%d", lastPageNumber)
if currentPageNumber+1 > lastPageNumber {
data.NextPage = fmt.Sprintf("%d", lastPageNumber)
} else {
data.NextPage = fmt.Sprintf("%d", currentPageNumber+1)
}
if currentPageNumber > 1 {
data.PreviousPage = fmt.Sprintf("%d", currentPageNumber-1)
} else {
data.PreviousPage = `1`
}
}
2015-06-22 15:38:55 +00:00
data.CurrentPage = currentPage
} else {
2015-06-22 18:54:38 +00:00
data.CurrentPage = `1`
data.LastPage = fmt.Sprintf("%d", lastPageNumber)
if currentPageNumber+1 > lastPageNumber {
data.NextPage = fmt.Sprintf("%d", lastPageNumber)
} else {
data.NextPage = `2`
}
data.PreviousPage = `1`
2015-06-22 15:38:55 +00:00
}
}
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())
}
}