Files
PrivateCaptcha/cmd/viewwidget/main.go
Taras Kushnir 4951055189 Initial commit
2025-05-31 10:56:00 +03:00

55 lines
1.2 KiB
Go

package main
import (
"fmt"
"log/slog"
"net"
"net/http"
"os"
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/monitoring"
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/puzzle"
"github.com/PrivateCaptcha/PrivateCaptcha/web"
"github.com/PrivateCaptcha/PrivateCaptcha/widget"
"github.com/rs/cors"
)
func main() {
opts := &slog.HandlerOptions{
Level: slog.LevelDebug,
}
logger := slog.New(slog.NewJSONHandler(os.Stdout, opts))
slog.SetDefault(logger)
srv := &server{salt: puzzle.NewSalt([]byte("salt"))}
router := http.NewServeMux()
corsDefault := cors.Default()
router.Handle("/", monitoring.Logged(corsDefault.Handler(staticHandler())))
router.Handle("GET "+"/widget/", http.StripPrefix("/widget/", widget.Static()))
router.Handle("GET "+"/assets/", http.StripPrefix("/assets/", web.Static()))
srv.Setup(router)
host := os.Getenv("HOST")
if host == "" {
host = "localhost"
}
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
slog.Info("Starting", "address", fmt.Sprintf("http://%v:%v", host, port))
s := &http.Server{
Addr: net.JoinHostPort(host, port),
Handler: router,
}
err := s.ListenAndServe()
if err != nil && err != http.ErrServerClosed {
slog.Error("Server failed", "error", err)
}
}