handlers.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package authlogger
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "regexp"
  6. )
  7. //Handle of listing of the logger index (months)
  8. func (l *Logger) HandleIndexListing(w http.ResponseWriter, r *http.Request) {
  9. indexes := l.ListSummary()
  10. js, err := json.Marshal(indexes)
  11. if err != nil {
  12. sendErrorResponse(w, err.Error())
  13. return
  14. }
  15. sendJSONResponse(w, string(js))
  16. }
  17. //Handle of the listing of a given index (month)
  18. func (l *Logger) HandleTableListing(w http.ResponseWriter, r *http.Request) {
  19. //Get the record name request for listing
  20. month, err := mv(r, "record", true)
  21. if err != nil {
  22. sendErrorResponse(w, err.Error())
  23. return
  24. }
  25. records, err := l.ListRecords(month)
  26. if err != nil {
  27. sendErrorResponse(w, err.Error())
  28. return
  29. }
  30. //Filter the records before sending it to web UI
  31. results := []LoginRecord{}
  32. for _, record := range records {
  33. //Replace the username with a regex filtered one
  34. reg, _ := regexp.Compile("[^a-zA-Z0-9]+")
  35. filteredUsername := reg.ReplaceAllString(record.TargetUsername, "░")
  36. record.TargetUsername = filteredUsername
  37. results = append(results, record)
  38. }
  39. js, _ := json.Marshal(results)
  40. sendJSONResponse(w, string(js))
  41. }