mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Add HTTPS support for the web endpoint with manually configured
certificate/key files.
This commit is contained in:
		
							parent
							
								
									c5a3d0b01c
								
							
						
					
					
						commit
						252c68c50a
					
				
							
								
								
									
										17
									
								
								app.go
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								app.go
									
									
									
									
									
								
							@ -3,6 +3,7 @@ package headscale
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
@ -22,6 +23,9 @@ type Config struct {
 | 
			
		||||
	DBname string
 | 
			
		||||
	DBuser string
 | 
			
		||||
	DBpass string
 | 
			
		||||
 | 
			
		||||
	TLSCertPath string
 | 
			
		||||
	TLSKeyPath  string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Headscale represents the base app of the service
 | 
			
		||||
@ -68,6 +72,17 @@ func (h *Headscale) Serve() error {
 | 
			
		||||
	r.GET("/register", h.RegisterWebAPI)
 | 
			
		||||
	r.POST("/machine/:id/map", h.PollNetMapHandler)
 | 
			
		||||
	r.POST("/machine/:id", h.RegistrationHandler)
 | 
			
		||||
	err := r.Run(h.cfg.Addr)
 | 
			
		||||
	var err error
 | 
			
		||||
	if h.cfg.TLSCertPath == "" {
 | 
			
		||||
		if !strings.HasPrefix(h.cfg.ServerURL, "http://") {
 | 
			
		||||
			fmt.Println("WARNING: listening without TLS but ServerURL does not start with http://")
 | 
			
		||||
		}
 | 
			
		||||
		err = r.Run(h.cfg.Addr)
 | 
			
		||||
	} else {
 | 
			
		||||
		if !strings.HasPrefix(h.cfg.ServerURL, "https://") {
 | 
			
		||||
			fmt.Println("WARNING: listening with TLS but ServerURL does not start with https://")
 | 
			
		||||
		}
 | 
			
		||||
		err = r.RunTLS(h.cfg.Addr, h.cfg.TLSCertPath, h.cfg.TLSKeyPath)
 | 
			
		||||
	}
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -311,7 +311,11 @@ func getHeadscaleApp() (*headscale.Headscale, error) {
 | 
			
		||||
		DBname: viper.GetString("db_name"),
 | 
			
		||||
		DBuser: viper.GetString("db_user"),
 | 
			
		||||
		DBpass: viper.GetString("db_pass"),
 | 
			
		||||
 | 
			
		||||
		TLSCertPath: absPath(viper.GetString("tls_cert_path")),
 | 
			
		||||
		TLSKeyPath:  absPath(viper.GetString("tls_key_path")),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	h, err := headscale.NewHeadscale(cfg)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
 | 
			
		||||
@ -7,5 +7,7 @@
 | 
			
		||||
    "db_port": 5432,
 | 
			
		||||
    "db_name": "headscale",
 | 
			
		||||
    "db_user": "foo",
 | 
			
		||||
    "db_pass": "bar"
 | 
			
		||||
    "db_pass": "bar",
 | 
			
		||||
    "tls_cert_path": "",
 | 
			
		||||
    "tls_key_path": ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user