From 1f35939bcbff131cca0d5542ceb6a0e108b95684 Mon Sep 17 00:00:00 2001 From: TeejMcSteez Date: Fri, 31 Oct 2025 04:10:17 -0400 Subject: [PATCH] Undo make fmt, will break a lot of code --- hscontrol/app.go | 65 ++++++------------------------------------------ 1 file changed, 8 insertions(+), 57 deletions(-) diff --git a/hscontrol/app.go b/hscontrol/app.go index 5f245ad1..4ce98719 100644 --- a/hscontrol/app.go +++ b/hscontrol/app.go @@ -114,7 +114,6 @@ var ( func NewHeadscale(cfg *types.Config) (*Headscale, error) { var err error - if profilingEnabled { runtime.SetBlockProfileRate(1) } @@ -142,7 +141,6 @@ func NewHeadscale(cfg *types.Config) (*Headscale, error) { if !ok { log.Error().Uint64("node.id", ni.Uint64()).Msg("Ephemeral node deletion failed") log.Debug().Caller().Uint64("node.id", ni.Uint64()).Msg("Ephemeral node deletion failed because node not found in NodeStore") - return } @@ -158,12 +156,10 @@ func NewHeadscale(cfg *types.Config) (*Headscale, error) { app.ephemeralGC = ephemeralGC var authProvider AuthProvider - authProvider = NewAuthProviderWeb(cfg.ServerURL) if cfg.OIDC.Issuer != "" { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - oidcProvider, err := NewAuthProviderOIDC( ctx, &app, @@ -180,18 +176,17 @@ func NewHeadscale(cfg *types.Config) (*Headscale, error) { authProvider = oidcProvider } } - app.authProvider = authProvider if app.cfg.TailcfgDNSConfig != nil && app.cfg.TailcfgDNSConfig.Proxied { // if MagicDNS // TODO(kradalby): revisit why this takes a list. + var magicDNSDomains []dnsname.FQDN if cfg.PrefixV4 != nil { magicDNSDomains = append( magicDNSDomains, util.GenerateIPv4DNSRootDomain(*cfg.PrefixV4)...) } - if cfg.PrefixV6 != nil { magicDNSDomains = append( magicDNSDomains, @@ -202,7 +197,6 @@ func NewHeadscale(cfg *types.Config) (*Headscale, error) { if app.cfg.TailcfgDNSConfig.Routes == nil { app.cfg.TailcfgDNSConfig.Routes = make(map[string][]*dnstype.Resolver) } - for _, d := range magicDNSDomains { app.cfg.TailcfgDNSConfig.Routes[d.WithoutTrailingDot()] = nil } @@ -237,7 +231,6 @@ func NewHeadscale(cfg *types.Config) (*Headscale, error) { if err != nil { return nil, err } - app.DERPServer = embeddedDERPServer } @@ -260,7 +253,6 @@ func (h *Headscale) scheduledTasks(ctx context.Context) { if h.cfg.DERP.AutoUpdate && h.cfg.DERP.UpdateFrequency != 0 { derpTicker := time.NewTicker(h.cfg.DERP.UpdateFrequency) defer derpTicker.Stop() - derpTickerChan = derpTicker.C } @@ -278,10 +270,8 @@ func (h *Headscale) scheduledTasks(ctx context.Context) { return case <-expireTicker.C: - var ( - expiredNodeChanges []change.ChangeSet - changed bool - ) + var expiredNodeChanges []change.ChangeSet + var changed bool lastExpiryCheck, expiredNodeChanges, changed = h.state.ExpireExpiredNodes(lastExpiryCheck) @@ -296,13 +286,11 @@ func (h *Headscale) scheduledTasks(ctx context.Context) { case <-derpTickerChan: log.Info().Msg("Fetching DERPMap updates") - derpMap, err := backoff.Retry(ctx, func() (*tailcfg.DERPMap, error) { derpMap, err := derp.GetDERPMap(h.cfg.DERP) if err != nil { return nil, err } - if h.cfg.DERP.ServerEnabled && h.cfg.DERP.AutomaticallyAddEmbeddedDerpRegion { region, _ := h.DERPServer.GenerateRegion() derpMap.Regions[region.RegionID] = ®ion @@ -314,7 +302,6 @@ func (h *Headscale) scheduledTasks(ctx context.Context) { log.Error().Err(err).Msg("failed to build new DERPMap, retrying later") continue } - h.state.SetDERPMap(derpMap) h.Change(change.DERPSet) @@ -323,7 +310,6 @@ func (h *Headscale) scheduledTasks(ctx context.Context) { if !ok { continue } - h.cfg.TailcfgDNSConfig.ExtraRecords = records h.Change(change.ExtraRecordsSet) @@ -403,7 +389,6 @@ func (h *Headscale) httpAuthenticationMiddleware(next http.Handler) http.Handler writeUnauthorized := func(statusCode int) { writer.WriteHeader(statusCode) - if _, err := writer.Write([]byte("Unauthorized")); err != nil { log.Error().Err(err).Msg("writing HTTP response failed") } @@ -415,7 +400,6 @@ func (h *Headscale) httpAuthenticationMiddleware(next http.Handler) http.Handler Str("client_address", req.RemoteAddr). Msg(`missing "Bearer " prefix in "Authorization" header`) writeUnauthorized(http.StatusUnauthorized) - return } @@ -427,7 +411,6 @@ func (h *Headscale) httpAuthenticationMiddleware(next http.Handler) http.Handler Str("client_address", req.RemoteAddr). Msg("failed to validate token") writeUnauthorized(http.StatusUnauthorized) - return } @@ -436,7 +419,6 @@ func (h *Headscale) httpAuthenticationMiddleware(next http.Handler) http.Handler Str("client_address", req.RemoteAddr). Msg("invalid token") writeUnauthorized(http.StatusUnauthorized) - return } @@ -472,7 +454,6 @@ func (h *Headscale) createRouter(grpcMux *grpcRuntime.ServeMux) *mux.Router { if provider, ok := h.authProvider.(*AuthProviderOIDC); ok { router.HandleFunc("/oidc/callback", provider.OIDCCallbackHandler).Methods(http.MethodGet) } - router.HandleFunc("/apple", h.AppleConfigMessage).Methods(http.MethodGet) router.HandleFunc("/apple/{platform}", h.ApplePlatformConfig). Methods(http.MethodGet) @@ -504,7 +485,6 @@ func (h *Headscale) createRouter(grpcMux *grpcRuntime.ServeMux) *mux.Router { // Serve launches the HTTP and gRPC server service Headscale and the API. func (h *Headscale) Serve() error { var err error - capver.CanOldCodeBeCleanedUp() if profilingEnabled { @@ -531,7 +511,6 @@ func (h *Headscale) Serve() error { Msg("Clients with a lower minimum version will be rejected") h.mapBatcher = mapper.NewBatcherAndMapper(h.cfg, h.state) - h.mapBatcher.Start() defer h.mapBatcher.Close() @@ -565,7 +544,6 @@ func (h *Headscale) Serve() error { // around between restarts, they will reconnect and the GC will // be cancelled. go h.ephemeralGC.Start() - ephmNodes := h.state.ListEphemeralNodes() for _, node := range ephmNodes.All() { h.ephemeralGC.Schedule(node.ID(), h.cfg.EphemeralNodeInactivityTimeout) @@ -576,9 +554,7 @@ func (h *Headscale) Serve() error { if err != nil { return fmt.Errorf("setting up extrarecord manager: %w", err) } - h.cfg.TailcfgDNSConfig.ExtraRecords = h.extraRecordMan.Records() - go h.extraRecordMan.Run() defer h.extraRecordMan.Close() } @@ -587,7 +563,6 @@ func (h *Headscale) Serve() error { // records updates scheduleCtx, scheduleCancel := context.WithCancel(context.Background()) defer scheduleCancel() - go h.scheduledTasks(scheduleCtx) if zl.GlobalLevel() == zl.TraceLevel { @@ -600,7 +575,6 @@ func (h *Headscale) Serve() error { errorGroup := new(errgroup.Group) ctx := context.Background() - ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -615,7 +589,6 @@ func (h *Headscale) Serve() error { } socketDir := filepath.Dir(h.cfg.UnixSocket) - err = util.EnsureDir(socketDir) if err != nil { return fmt.Errorf("setting up unix socket: %w", err) @@ -685,11 +658,8 @@ func (h *Headscale) Serve() error { // https://github.com/soheilhy/cmux/issues/68 // https://github.com/soheilhy/cmux/issues/91 - var ( - grpcServer *grpc.Server - grpcListener net.Listener - ) - + var grpcServer *grpc.Server + var grpcListener net.Listener if tlsConfig != nil || h.cfg.GRPCAllowInsecure { log.Info().Msgf("Enabling remote gRPC at %s", h.cfg.GRPCAddr) @@ -744,14 +714,12 @@ func (h *Headscale) Serve() error { } var httpListener net.Listener - if tlsConfig != nil { httpServer.TLSConfig = tlsConfig httpListener, err = tls.Listen("tcp", h.cfg.Addr, tlsConfig) } else { httpListener, err = net.Listen("tcp", h.cfg.Addr) } - if err != nil { return fmt.Errorf("failed to bind to TCP address: %w", err) } @@ -767,27 +735,22 @@ func (h *Headscale) Serve() error { } debugHTTPServer := h.debugHTTPServer() - errorGroup.Go(func() error { return debugHTTPServer.Serve(debugHTTPListener) }) log.Info(). Msgf("listening and serving debug and metrics on: %s", h.cfg.MetricsAddr) var tailsqlContext context.Context - if tailsqlEnabled { if h.cfg.Database.Type != types.DatabaseSqlite { log.Fatal(). Str("type", h.cfg.Database.Type). Msgf("tailsql only support %q", types.DatabaseSqlite) } - if tailsqlTSKey == "" { log.Fatal().Msg("tailsql requires TS_AUTHKEY to be set") } - tailsqlContext = context.Background() - go runTailSQLService(ctx, util.TSLogfWrapper(), tailsqlStateDir, h.cfg.Database.Sqlite.Path) } @@ -799,7 +762,6 @@ func (h *Headscale) Serve() error { syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGHUP) - sigFunc := func(c chan os.Signal) { // Wait for a SIGINT or SIGKILL: for { @@ -824,7 +786,6 @@ func (h *Headscale) Serve() error { default: info := func(msg string) { log.Info().Msg(msg) } - log.Info(). Str("signal", sig.String()). Msg("Received signal to stop, shutting down gracefully") @@ -837,18 +798,12 @@ func (h *Headscale) Serve() error { context.Background(), types.HTTPShutdownTimeout, ) - info("shutting down debug http server") - - err := debugHTTPServer.Shutdown(ctx) - if err != nil { + if err := debugHTTPServer.Shutdown(ctx); err != nil { log.Error().Err(err).Msg("failed to shutdown prometheus http") } - info("shutting down main http server") - - err := httpServer.Shutdown(ctx) - if err != nil { + if err := httpServer.Shutdown(ctx); err != nil { log.Error().Err(err).Msg("failed to shutdown http") } @@ -884,7 +839,6 @@ func (h *Headscale) Serve() error { // Close state connections info("closing state and database") - err = h.state.Close() if err != nil { log.Error().Err(err).Msg("failed to close state") @@ -900,7 +854,6 @@ func (h *Headscale) Serve() error { } } } - errorGroup.Go(func() error { sigFunc(sigc) @@ -912,7 +865,6 @@ func (h *Headscale) Serve() error { func (h *Headscale) getTLSSettings() (*tls.Config, error) { var err error - if h.cfg.TLS.LetsEncrypt.Hostname != "" { if !strings.HasPrefix(h.cfg.ServerURL, "https://") { log.Warn(). @@ -940,6 +892,7 @@ func (h *Headscale) getTLSSettings() (*tls.Config, error) { // Configuration via autocert with HTTP-01. This requires listening on // port 80 for the certificate validation in addition to the headscale // service, which can be configured to run on any other port. + server := &http.Server{ Addr: h.cfg.TLS.LetsEncrypt.Listen, Handler: certManager.HTTPHandler(http.HandlerFunc(h.redirect)), @@ -996,7 +949,6 @@ func notFoundHandler( func readOrCreatePrivateKey(path string) (*key.MachinePrivate, error) { dir := filepath.Dir(path) - err := util.EnsureDir(dir) if err != nil { return nil, fmt.Errorf("ensuring private key directory: %w", err) @@ -1015,7 +967,6 @@ func readOrCreatePrivateKey(path string) (*key.MachinePrivate, error) { err, ) } - err = os.WriteFile(path, machineKeyStr, privateKeyFileMode) if err != nil { return nil, fmt.Errorf(