1
0
mirror of https://github.com/juanfont/headscale.git synced 2024-12-20 19:09:07 +01:00

Do not expose the general API router over the Noise connection

And do not expose the Noise API over the regular connection. Plus,
there are (more) changes coming to the API... so let's have different
API codebases.
This commit is contained in:
Juan Font Alonso 2022-03-27 21:33:31 +02:00
parent 55ba3021f1
commit 323a7d9c2e
3 changed files with 17 additions and 4 deletions

18
app.go
View File

@ -152,7 +152,7 @@ type Headscale struct {
privateKey *key.MachinePrivate privateKey *key.MachinePrivate
noisePrivateKey *key.MachinePrivate noisePrivateKey *key.MachinePrivate
router *gin.Engine noiseRouter *gin.Engine
DERPMap *tailcfg.DERPMap DERPMap *tailcfg.DERPMap
DERPServer *DERPServer DERPServer *DERPServer
@ -510,6 +510,12 @@ func (h *Headscale) createRouter(grpcMux *runtime.ServeMux) *gin.Engine {
return router return router
} }
func (h *Headscale) createNoiseRouter() *gin.Engine {
router := gin.Default()
return router
}
// Serve launches a GIN server with the Headscale API. // Serve launches a GIN server with the Headscale API.
func (h *Headscale) Serve() error { func (h *Headscale) Serve() error {
var err error var err error
@ -675,11 +681,17 @@ func (h *Headscale) Serve() error {
// HTTP setup // HTTP setup
// //
h.router = h.createRouter(grpcGatewayMux) // This is the regular router that we expose
// over our main Addr. It also serves the legacy Tailcale API
router := h.createRouter(grpcGatewayMux)
// This router is only served over the Noise connection,
// and exposes only the new API
h.noiseRouter = h.createNoiseRouter()
httpServer := &http.Server{ httpServer := &http.Server{
Addr: h.cfg.Addr, Addr: h.cfg.Addr,
Handler: h.router, Handler: router,
ReadTimeout: HTTPReadTimeout, ReadTimeout: HTTPReadTimeout,
// Go does not handle timeouts in HTTP very well, and there is // Go does not handle timeouts in HTTP very well, and there is
// no good way to handle streaming timeouts, therefore we need to // no good way to handle streaming timeouts, therefore we need to

View File

@ -62,7 +62,7 @@ func (h *Headscale) NoiseUpgradeHandler(ctx *gin.Context) {
} }
server := http.Server{} server := http.Server{}
server.Handler = h2c.NewHandler(h.router, &http2.Server{}) server.Handler = h2c.NewHandler(h.noiseRouter, &http2.Server{})
server.Serve(netutil.NewOneConnListener(noiseConn, nil)) server.Serve(netutil.NewOneConnListener(noiseConn, nil))
} }

1
noise_api.go Normal file
View File

@ -0,0 +1 @@
package headscale