Initial commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"context"
|
||||
fmt2 "fmt"
|
||||
"log/slog"
|
||||
|
||||
"tailscale.com/ipn"
|
||||
|
||||
"tailscale.com/tsnet"
|
||||
)
|
||||
|
||||
func InitTsNet(ctx context.Context, cfg *Core, logger *slog.Logger) (*tsnet.Server, error) {
|
||||
srv := &tsnet.Server{
|
||||
Hostname: "tslink-" + cfg.Hostname,
|
||||
AuthKey: cfg.AuthKey,
|
||||
Ephemeral: cfg.Ephemeral,
|
||||
Logf: func(fmt string, args ...interface{}) {
|
||||
logger.With(slog.String("from", "tsnet")).Debug(fmt2.Sprintf(fmt, args...))
|
||||
},
|
||||
UserLogf: func(fmt string, args ...interface{}) {
|
||||
logger.With(slog.String("from", "tsnet")).Info(fmt2.Sprintf(fmt, args...))
|
||||
},
|
||||
RunWebClient: true,
|
||||
}
|
||||
|
||||
if cfg.ControlURL != "" {
|
||||
srv.ControlURL = cfg.ControlURL
|
||||
}
|
||||
|
||||
logger.Debug("starting tsnet server")
|
||||
if err := srv.Start(); err != nil {
|
||||
logger.With(slog.String("error", err.Error())).Error("starting tsnet server failed")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
status, err := srv.Up(ctx)
|
||||
if err != nil {
|
||||
logger.With(slog.String("error", err.Error())).Error("bring up tsnet server failed")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, ip := range status.TailscaleIPs {
|
||||
logger.With(slog.String("ip", ip.String())).Info("ip got from tsnet")
|
||||
}
|
||||
|
||||
if cfg.AcceptRoutes {
|
||||
lc, err := srv.LocalClient()
|
||||
if err != nil {
|
||||
logger.With(slog.String("error", err.Error())).Error("error from getting local client")
|
||||
} else {
|
||||
_, err = lc.EditPrefs(ctx, &ipn.MaskedPrefs{
|
||||
Prefs: ipn.Prefs{RouteAll: true},
|
||||
RouteAllSet: true,
|
||||
})
|
||||
if err != nil {
|
||||
logger.With(slog.String("error", err.Error())).Error("error from editing prefs")
|
||||
} else {
|
||||
logger.Debug("subnet route accepted")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return srv, nil
|
||||
}
|
||||
Reference in New Issue
Block a user