mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-02-04 12:40:07 +00:00
fix agent connect
This commit is contained in:
@@ -23,7 +23,7 @@ import (
|
||||
"github.com/naiba/nezha/service/singleton"
|
||||
)
|
||||
|
||||
func ServeWeb() *http.Server {
|
||||
func ServeWeb() http.Handler {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
r := gin.Default()
|
||||
docs.SwaggerInfo.BasePath = "/api/v1"
|
||||
@@ -39,10 +39,7 @@ func ServeWeb() *http.Server {
|
||||
r.Use(recordPath)
|
||||
routers(r)
|
||||
|
||||
return &http.Server{
|
||||
ReadHeaderTimeout: time.Second * 5,
|
||||
Handler: r,
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func routers(r *gin.Engine) {
|
||||
|
||||
@@ -5,13 +5,16 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
_ "time/tzdata"
|
||||
|
||||
"github.com/ory/graceful"
|
||||
"github.com/soheilhy/cmux"
|
||||
flag "github.com/spf13/pflag"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"golang.org/x/net/http2"
|
||||
"golang.org/x/net/http2/h2c"
|
||||
|
||||
"github.com/naiba/nezha/cmd/dashboard/controller"
|
||||
"github.com/naiba/nezha/cmd/dashboard/rpc"
|
||||
@@ -110,37 +113,33 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
m := cmux.New(l)
|
||||
grpcL := m.Match(cmux.HTTP2HeaderField("content-type", "application/grpc"))
|
||||
httpL := m.Match(cmux.HTTP1Fast())
|
||||
|
||||
singleton.CleanMonitorHistory()
|
||||
go rpc.ServeRPC(grpcL)
|
||||
serviceSentinelDispatchBus := make(chan model.Monitor) // 用于传递服务监控任务信息的channel
|
||||
go rpc.DispatchTask(serviceSentinelDispatchBus)
|
||||
go rpc.DispatchKeepalive()
|
||||
go singleton.AlertSentinelStart()
|
||||
singleton.NewServiceSentinel(serviceSentinelDispatchBus)
|
||||
srv := controller.ServeWeb()
|
||||
|
||||
grpcHandler := rpc.ServeRPC()
|
||||
httpHandler := controller.ServeWeb()
|
||||
|
||||
mixedHandler := newHTTPandGRPCMux(httpHandler, grpcHandler)
|
||||
http2Server := &http2.Server{}
|
||||
http1Server := &http.Server{Handler: h2c.NewHandler(mixedHandler, http2Server)}
|
||||
|
||||
go dispatchReportInfoTask()
|
||||
|
||||
go func() {
|
||||
if err := graceful.Graceful(func() error {
|
||||
log.Println("NEZHA>> Dashboard::START", singleton.Conf.ListenPort)
|
||||
return srv.Serve(httpL)
|
||||
}, func(c context.Context) error {
|
||||
log.Println("NEZHA>> Graceful::START")
|
||||
singleton.RecordTransferHourlyUsage()
|
||||
log.Println("NEZHA>> Graceful::END")
|
||||
m.Close()
|
||||
return nil
|
||||
}); err != nil {
|
||||
log.Printf("NEZHA>> ERROR: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
m.Serve()
|
||||
if err := graceful.Graceful(func() error {
|
||||
log.Println("NEZHA>> Dashboard::START", singleton.Conf.ListenPort)
|
||||
return http1Server.Serve(l)
|
||||
}, func(c context.Context) error {
|
||||
log.Println("NEZHA>> Graceful::START")
|
||||
singleton.RecordTransferHourlyUsage()
|
||||
log.Println("NEZHA>> Graceful::END")
|
||||
return l.Close()
|
||||
}); err != nil {
|
||||
log.Printf("NEZHA>> ERROR: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func dispatchReportInfoTask() {
|
||||
@@ -157,3 +156,13 @@ func dispatchReportInfoTask() {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func newHTTPandGRPCMux(httpHandler http.Handler, grpcHandler http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.ProtoMajor == 2 && strings.HasPrefix(r.Header.Get("content-type"), "application/grpc") {
|
||||
grpcHandler.ServeHTTP(w, r)
|
||||
return
|
||||
}
|
||||
httpHandler.ServeHTTP(w, r)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
|
||||
@@ -11,11 +11,11 @@ import (
|
||||
"github.com/naiba/nezha/service/singleton"
|
||||
)
|
||||
|
||||
func ServeRPC(l net.Listener) {
|
||||
func ServeRPC() http.Handler {
|
||||
server := grpc.NewServer()
|
||||
rpcService.NezhaHandlerSingleton = rpcService.NewNezhaHandler()
|
||||
pb.RegisterNezhaServiceServer(server, rpcService.NezhaHandlerSingleton)
|
||||
server.Serve(l)
|
||||
return server
|
||||
}
|
||||
|
||||
func DispatchTask(serviceSentinelDispatchBus <-chan model.Monitor) {
|
||||
|
||||
Reference in New Issue
Block a user