Import existing project
This commit is contained in:
parent
7887817595
commit
80b0cc4939
125 changed files with 16980 additions and 0 deletions
66
checkpoint_service/main.go
Normal file
66
checkpoint_service/main.go
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"checkpoint_service/middleware"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/middleware/compress"
|
||||
"github.com/gofiber/fiber/v2/middleware/logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Parse command-line flags
|
||||
port := flag.String("port", "8080", "Port to listen on")
|
||||
skipCheckpoint := flag.Bool("skip-checkpoint", false, "Skip the checkpoint middleware")
|
||||
flag.Parse()
|
||||
|
||||
// Create Fiber app
|
||||
app := fiber.New()
|
||||
|
||||
// Request logging
|
||||
app.Use(logger.New())
|
||||
|
||||
// Response compression
|
||||
app.Use(compress.New())
|
||||
|
||||
// Load and apply middleware plugins
|
||||
for _, handler := range middleware.LoadPlugins(*skipCheckpoint) {
|
||||
app.Use(handler)
|
||||
}
|
||||
log.Println("Loaded middleware plugins")
|
||||
|
||||
// API group for proof-of-work endpoints
|
||||
api := app.Group("/api")
|
||||
api.Get("/pow/challenge", middleware.GetCheckpointChallengeHandler)
|
||||
api.Post("/pow/verify", middleware.VerifyCheckpointHandler)
|
||||
api.Get("/verify", middleware.VerifyCheckpointHandler)
|
||||
|
||||
// Start the server in a goroutine
|
||||
go func() {
|
||||
addr := ":" + *port
|
||||
log.Printf("Checkpoint service starting on %s", addr)
|
||||
if err := app.Listen(addr); err != nil {
|
||||
log.Fatalf("Server error: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// Graceful shutdown on SIGINT/SIGTERM
|
||||
quit := make(chan os.Signal, 1)
|
||||
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||
<-quit
|
||||
log.Println("Shutting down server...")
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
if err := app.ShutdownWithContext(ctx); err != nil {
|
||||
log.Fatalf("Server forced to shutdown: %v", err)
|
||||
}
|
||||
log.Println("Server exiting")
|
||||
}
|
||||
Reference in a new issue