52 lines
1.2 KiB
Go
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)
|
|
}
|