moved server main to cmd/server
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (s *Server) handlerRefresh(w http.ResponseWriter, req *http.Request) {
|
||||
if req.Header.Get("Authorization") != "Bearer "+s.cfg.Auth.Token {
|
||||
ip := req.Header.Get("X-Real-IP")
|
||||
if ip == "" {
|
||||
ip = req.RemoteAddr
|
||||
}
|
||||
slog.Warn("unauthorized request", "ip", ip, "path", req.URL.Path, "method", req.Method)
|
||||
respondWithError(w, http.StatusUnauthorized, "unauthorized")
|
||||
return
|
||||
}
|
||||
|
||||
if err := s.c.Refresh(); err != nil {
|
||||
slog.Error("refresh failed", "err", err)
|
||||
http.Error(w, "refresh failed", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
|
||||
func (s *Server) handlerLogLevel(w http.ResponseWriter, req *http.Request) {
|
||||
if req.Header.Get("Authorization") != "Bearer "+s.cfg.Auth.Token {
|
||||
ip := req.Header.Get("X-Real-IP")
|
||||
if ip == "" {
|
||||
ip = req.RemoteAddr
|
||||
}
|
||||
slog.Warn("unauthorized request", "ip", ip, "path", req.URL.Path, "method", req.Method)
|
||||
respondWithError(w, http.StatusUnauthorized, "unauthorized")
|
||||
return
|
||||
}
|
||||
|
||||
type reqParameters struct {
|
||||
NewLevel string `json:"loglevel"`
|
||||
}
|
||||
|
||||
decoder := json.NewDecoder(req.Body)
|
||||
reqParams := reqParameters{}
|
||||
err := decoder.Decode(&reqParams)
|
||||
if err != nil {
|
||||
slog.Debug("json decode erro", "err", err)
|
||||
respondWithError(w, http.StatusBadRequest, "invalid request")
|
||||
return
|
||||
}
|
||||
|
||||
switch strings.ToLower(reqParams.NewLevel) {
|
||||
case "debug":
|
||||
s.logLevel.Set(slog.LevelDebug)
|
||||
case "info":
|
||||
s.logLevel.Set(slog.LevelInfo)
|
||||
case "warn":
|
||||
s.logLevel.Set(slog.LevelWarn)
|
||||
case "error":
|
||||
s.logLevel.Set(slog.LevelError)
|
||||
default:
|
||||
respondWithError(w, http.StatusBadRequest, "invalid log level")
|
||||
return
|
||||
}
|
||||
|
||||
slog.Info("log level changed", "level", reqParams.NewLevel)
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
Reference in New Issue
Block a user