init: 自 zomaintain/backend/zonat 平移独立成库; module path 改为 git.zeroonesoft.cn/golib/zonat; 内部 import 同步重写
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
// zonat 节点入口:TCP 桥接监听 + 隧道注册表 + 纯 TCP 隧道监听。
|
||||
// 无管理 API、无数据库;隧道由 agent 经桥接控制流注册。
|
||||
// agent 登录用 JWT 校验(HS256);token 正式部署由 cloud 签发,
|
||||
// 手工/测试场景可用 -print-token 现场签发。
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"git.zeroonesoft.cn/golib/zonat/internal/node"
|
||||
)
|
||||
|
||||
func main() {
|
||||
addr := flag.String("addr", ":5212", "桥接监听地址")
|
||||
tunnelBind := flag.String("tunnel-bind", "0.0.0.0", "隧道监听绑定地址")
|
||||
jwtSecret := flag.String("jwt-secret", "", "agent 登录 JWT 校验密钥(HS256)")
|
||||
sweep := flag.Duration("sweep", 30*time.Second, "TTL 清扫间隔")
|
||||
// 便捷签发:node -jwt-secret s3cret -print-token -agent a1 -ttl 24h
|
||||
printToken := flag.Bool("print-token", false, "用 -jwt-secret 签发一张 agent 登录 token 后退出")
|
||||
tokenAgent := flag.String("agent", "", "print-token 时写入 agentId claim")
|
||||
tokenTTL := flag.Duration("ttl", 24*time.Hour, "print-token 签发的有效期")
|
||||
flag.Parse()
|
||||
|
||||
if *printToken {
|
||||
if *jwtSecret == "" || *tokenTTL <= 0 {
|
||||
slog.Error("print-token 需要 -jwt-secret 与正的 -ttl")
|
||||
os.Exit(1)
|
||||
}
|
||||
tok, err := node.SignToken(*jwtSecret, *tokenAgent, *tokenTTL)
|
||||
if err != nil {
|
||||
slog.Error("签发失败", "err", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Println(tok)
|
||||
return
|
||||
}
|
||||
|
||||
if *jwtSecret == "" {
|
||||
slog.Error("缺少 -jwt-secret(agent 登录 JWT 校验密钥)")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
n := node.New()
|
||||
n.JwtSecret = *jwtSecret
|
||||
n.BindTunnel = *tunnelBind
|
||||
n.SweepInterval = *sweep
|
||||
if err := n.Start(*addr); err != nil {
|
||||
slog.Error("节点启动失败", "err", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
quit := make(chan os.Signal, 1)
|
||||
signal.Notify(quit, os.Interrupt, syscall.SIGTERM)
|
||||
<-quit
|
||||
n.Stop()
|
||||
}
|
||||
Reference in New Issue
Block a user