51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
// Package webdebug provides a http server for local debugging.
|
|
// The server is explicitly for localhost only as it offers
|
|
// a lot more control and access than the public one.
|
|
// Additionally, there is no guarantee for functional authentication
|
|
// and authorisation of requests.
|
|
// Using it can be considered a security risk.
|
|
//
|
|
// There is no guarantee for API stability. It might change drastically
|
|
// across versions or even commits and doesn't need announcements
|
|
package webdebug
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
webutils "git.mstar.dev/mstar/goutils/http"
|
|
)
|
|
|
|
type Server struct {
|
|
server *http.Server
|
|
}
|
|
|
|
func New(addr string) *Server {
|
|
handler := http.NewServeMux()
|
|
handler.HandleFunc("GET /non-deleted", getNonDeletedUsers)
|
|
handler.HandleFunc("POST /local-user", createLocalUser)
|
|
handler.HandleFunc("GET /delete", deleteUser)
|
|
handler.HandleFunc("POST /post-as", postAs)
|
|
handler.HandleFunc("GET /notes-for", notesFrom)
|
|
handler.HandleFunc("GET /import", issueUserImport)
|
|
handler.HandleFunc("GET /keys-for", returnKeypair)
|
|
web := http.Server{
|
|
Addr: addr,
|
|
Handler: webutils.ChainMiddlewares(
|
|
handler,
|
|
webutils.BuildLoggingMiddleware(map[string]string{"server": "debug"}),
|
|
),
|
|
}
|
|
return &Server{&web}
|
|
}
|
|
|
|
func (s *Server) Start() error {
|
|
if err := s.server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *Server) Stop() error {
|
|
return s.server.Shutdown(context.Background())
|
|
}
|