wgcl/cmd/main.go
2025-11-20 11:47:00 +08:00

52 lines
1.2 KiB
Go

package main
import (
"time"
"git.jasinco.work/wgcl/api/auth"
"git.jasinco.work/wgcl/api/vpn"
"git.jasinco.work/wgcl/internal/federate"
"git.jasinco.work/wgcl/internal/logger"
"github.com/fvbock/endless"
//"github.com/gin-contrib/pprof"
ginzap "github.com/gin-contrib/zap"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.Use(ginzap.Ginzap(logger.Logger, time.RFC3339, true))
// r.Use(ginzap.RecoveryWithZap(logger.Logger, true))
defer logger.Flush()
l := federate.FedLDAP{
Base_dn: "dc=example,dc=com",
User_filter: "(&(objectClass=person)(uid=%s))",
Group_wg_filter: "(&(dn=%s)(memberof=cn=wgopr,ou=groups,dc=example,dc=com))",
}
l.Init("ldap://localhost:3890")
if err := l.AuthBind("uid=admin,ou=people,dc=example,dc=com", "recrecrec"); err != nil {
logger.Logger.Fatal(err.Error())
}
auth.Driver = &l
vpn.StartWG()
defer vpn.StopWG()
// pprof.Register(r)
r.POST("/api/auth", auth.IssueJWT)
{
g := r.Group("/api", auth.AuthMiddleware())
v := g.Group("/vpn")
v.GET("/peers", vpn.GETPeers)
v.POST("/peer", vpn.NewPeer)
v.GET("/peer", vpn.SearchPeer)
v.DELETE("/peer", vpn.DeletePeer)
}
endless.ListenAndServe("0.0.0.0:8080", r)
}