mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Clean pointer list in app.go, add grpc logging and simplify naming
This commit is contained in:
		
							parent
							
								
									c2eb3f4d36
								
							
						
					
					
						commit
						706ff59d70
					
				
							
								
								
									
										23
									
								
								app.go
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								app.go
									
									
									
									
									
								
							@ -22,8 +22,10 @@ import (
 | 
				
			|||||||
	"golang.org/x/oauth2"
 | 
						"golang.org/x/oauth2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/gin-gonic/gin"
 | 
						"github.com/gin-gonic/gin"
 | 
				
			||||||
 | 
						"github.com/grpc-ecosystem/go-grpc-middleware"
 | 
				
			||||||
	"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
 | 
						"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
 | 
				
			||||||
	apiV1 "github.com/juanfont/headscale/gen/go/headscale/v1"
 | 
						v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
 | 
				
			||||||
 | 
						"github.com/philip-bui/grpc-zerolog"
 | 
				
			||||||
	"github.com/rs/zerolog/log"
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
	"github.com/soheilhy/cmux"
 | 
						"github.com/soheilhy/cmux"
 | 
				
			||||||
	ginprometheus "github.com/zsais/go-gin-prometheus"
 | 
						ginprometheus "github.com/zsais/go-gin-prometheus"
 | 
				
			||||||
@ -115,7 +117,7 @@ type Headscale struct {
 | 
				
			|||||||
	DERPMap *tailcfg.DERPMap
 | 
						DERPMap *tailcfg.DERPMap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	aclPolicy *ACLPolicy
 | 
						aclPolicy *ACLPolicy
 | 
				
			||||||
	aclRules  *[]tailcfg.FilterRule
 | 
						aclRules  []tailcfg.FilterRule
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	lastStateChange sync.Map
 | 
						lastStateChange sync.Map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -154,7 +156,7 @@ func NewHeadscale(cfg Config) (*Headscale, error) {
 | 
				
			|||||||
		dbString:   dbString,
 | 
							dbString:   dbString,
 | 
				
			||||||
		privateKey: privKey,
 | 
							privateKey: privKey,
 | 
				
			||||||
		publicKey:  &pubKey,
 | 
							publicKey:  &pubKey,
 | 
				
			||||||
		aclRules:   &tailcfg.FilterAllowAll, // default allowall
 | 
							aclRules:   tailcfg.FilterAllowAll, // default allowall
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = h.initDB()
 | 
						err = h.initDB()
 | 
				
			||||||
@ -209,7 +211,7 @@ func (h *Headscale) expireEphemeralNodesWorker() {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, ns := range *namespaces {
 | 
						for _, ns := range namespaces {
 | 
				
			||||||
		machines, err := h.ListMachinesInNamespace(ns.Name)
 | 
							machines, err := h.ListMachinesInNamespace(ns.Name)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			log.Error().Err(err).Str("namespace", ns.Name).Msg("Error listing machines in namespace")
 | 
								log.Error().Err(err).Str("namespace", ns.Name).Msg("Error listing machines in namespace")
 | 
				
			||||||
@ -217,7 +219,7 @@ func (h *Headscale) expireEphemeralNodesWorker() {
 | 
				
			|||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for _, m := range *machines {
 | 
							for _, m := range machines {
 | 
				
			||||||
			if m.AuthKey != nil && m.LastSeen != nil && m.AuthKey.Ephemeral &&
 | 
								if m.AuthKey != nil && m.LastSeen != nil && m.AuthKey.Ephemeral &&
 | 
				
			||||||
				time.Now().After(m.LastSeen.Add(h.cfg.EphemeralNodeInactivityTimeout)) {
 | 
									time.Now().After(m.LastSeen.Add(h.cfg.EphemeralNodeInactivityTimeout)) {
 | 
				
			||||||
				log.Info().Str("machine", m.Name).Msg("Ephemeral client removed from database")
 | 
									log.Info().Str("machine", m.Name).Msg("Ephemeral client removed from database")
 | 
				
			||||||
@ -399,7 +401,7 @@ func (h *Headscale) Serve() error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Connect to the gRPC server over localhost to skip
 | 
						// Connect to the gRPC server over localhost to skip
 | 
				
			||||||
	// the authentication.
 | 
						// the authentication.
 | 
				
			||||||
	err = apiV1.RegisterHeadscaleServiceHandler(ctx, grpcGatewayMux, grpcGatewayConn)
 | 
						err = v1.RegisterHeadscaleServiceHandler(ctx, grpcGatewayMux, grpcGatewayConn)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -456,7 +458,10 @@ func (h *Headscale) Serve() error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	grpcOptions := []grpc.ServerOption{
 | 
						grpcOptions := []grpc.ServerOption{
 | 
				
			||||||
		grpc.UnaryInterceptor(
 | 
							grpc.UnaryInterceptor(
 | 
				
			||||||
 | 
								grpc_middleware.ChainUnaryServer(
 | 
				
			||||||
				h.grpcAuthenticationInterceptor,
 | 
									h.grpcAuthenticationInterceptor,
 | 
				
			||||||
 | 
									zerolog.NewUnaryServerInterceptor(),
 | 
				
			||||||
 | 
								),
 | 
				
			||||||
		),
 | 
							),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -476,10 +481,10 @@ func (h *Headscale) Serve() error {
 | 
				
			|||||||
	grpcServer := grpc.NewServer(grpcOptions...)
 | 
						grpcServer := grpc.NewServer(grpcOptions...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Start the local gRPC server without TLS and without authentication
 | 
						// Start the local gRPC server without TLS and without authentication
 | 
				
			||||||
	grpcSocket := grpc.NewServer()
 | 
						grpcSocket := grpc.NewServer(zerolog.UnaryInterceptor())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apiV1.RegisterHeadscaleServiceServer(grpcServer, newHeadscaleV1APIServer(h))
 | 
						v1.RegisterHeadscaleServiceServer(grpcServer, newHeadscaleV1APIServer(h))
 | 
				
			||||||
	apiV1.RegisterHeadscaleServiceServer(grpcSocket, newHeadscaleV1APIServer(h))
 | 
						v1.RegisterHeadscaleServiceServer(grpcSocket, newHeadscaleV1APIServer(h))
 | 
				
			||||||
	reflection.Register(grpcServer)
 | 
						reflection.Register(grpcServer)
 | 
				
			||||||
	reflection.Register(grpcSocket)
 | 
						reflection.Register(grpcSocket)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user