feat: disable nat
Some checks are pending
CodeQL / Analyze (go) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
Contributors / contributors (push) Waiting to run
Sync / sync-to-jihulab (push) Waiting to run
Run Tests / tests (macos) (push) Waiting to run
Run Tests / tests (ubuntu) (push) Waiting to run
Run Tests / tests (windows) (push) Waiting to run

This commit is contained in:
naiba 2025-01-21 22:23:15 +08:00
parent 9791c81a03
commit 7831e2d1f8
5 changed files with 12 additions and 1 deletions

View File

@ -64,6 +64,7 @@ func createNAT(c *gin.Context) (uint64, error) {
uid := getUid(c) uid := getUid(c)
n.UserID = uid n.UserID = uid
n.Enabled = nf.Enabled
n.Name = nf.Name n.Name = nf.Name
n.Domain = nf.Domain n.Domain = nf.Domain
n.Host = nf.Host n.Host = nf.Host
@ -121,6 +122,7 @@ func updateNAT(c *gin.Context) (any, error) {
return nil, singleton.Localizer.ErrorT("permission denied") return nil, singleton.Localizer.ErrorT("permission denied")
} }
n.Enabled = nf.Enabled
n.Name = nf.Name n.Name = nf.Name
n.Domain = nf.Domain n.Domain = nf.Domain
n.Host = nf.Host n.Host = nf.Host

View File

@ -13,12 +13,14 @@ import (
"time" "time"
_ "time/tzdata" _ "time/tzdata"
"github.com/gin-gonic/gin"
"github.com/ory/graceful" "github.com/ory/graceful"
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
"golang.org/x/net/http2" "golang.org/x/net/http2"
"golang.org/x/net/http2/h2c" "golang.org/x/net/http2/h2c"
"github.com/nezhahq/nezha/cmd/dashboard/controller" "github.com/nezhahq/nezha/cmd/dashboard/controller"
"github.com/nezhahq/nezha/cmd/dashboard/controller/waf"
"github.com/nezhahq/nezha/cmd/dashboard/rpc" "github.com/nezhahq/nezha/cmd/dashboard/rpc"
"github.com/nezhahq/nezha/model" "github.com/nezhahq/nezha/model"
"github.com/nezhahq/nezha/proto" "github.com/nezhahq/nezha/proto"
@ -147,6 +149,11 @@ func newHTTPandGRPCMux(httpHandler http.Handler, grpcHandler http.Handler) http.
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
natConfig := singleton.GetNATConfigByDomain(r.Host) natConfig := singleton.GetNATConfigByDomain(r.Host)
if natConfig != nil { if natConfig != nil {
if !natConfig.Enabled {
c, _ := gin.CreateTestContext(w)
waf.ShowBlockPage(c, fmt.Errorf("nat host %s is disabled", natConfig.Domain))
return
}
rpc.ServeNAT(w, r, natConfig) rpc.ServeNAT(w, r, natConfig)
return return
} }

View File

@ -2,6 +2,7 @@ package model
type NAT struct { type NAT struct {
Common Common
Enabled bool `json:"enabled"`
Name string `json:"name"` Name string `json:"name"`
ServerID uint64 `json:"server_id"` ServerID uint64 `json:"server_id"`
Host string `json:"host"` Host string `json:"host"`

View File

@ -2,6 +2,7 @@ package model
type NATForm struct { type NATForm struct {
Name string `json:"name,omitempty" minLength:"1"` Name string `json:"name,omitempty" minLength:"1"`
Enabled bool `json:"enabled,omitempty"`
ServerID uint64 `json:"server_id,omitempty"` ServerID uint64 `json:"server_id,omitempty"`
Host string `json:"host,omitempty"` Host string `json:"host,omitempty"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain,omitempty"`

View File

@ -2,7 +2,7 @@
name: "OfficialAdmin" name: "OfficialAdmin"
repository: "https://github.com/nezhahq/admin-frontend" repository: "https://github.com/nezhahq/admin-frontend"
author: "nezhahq" author: "nezhahq"
version: "v1.6.1" version: "v1.6.2"
isadmin: true isadmin: true
isofficial: true isofficial: true
- path: "user-dist" - path: "user-dist"