diff --git a/internal/tasks/health_check_executor.go b/internal/tasks/health_check_executor.go index 8fd5be64..6fdeed55 100644 --- a/internal/tasks/health_check_executor.go +++ b/internal/tasks/health_check_executor.go @@ -10,8 +10,10 @@ import ( "github.com/TeaOSLab/EdgeAPI/internal/utils" "github.com/TeaOSLab/EdgeCommon/pkg/configutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/nodeutils" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/iwind/TeaGo/lists" + "github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/types" "net" "net/http" @@ -167,11 +169,28 @@ func (this *HealthCheckExecutor) checkNode(healthCheckConfig *serverconfigs.Heal result.NodeAddr = "[" + result.NodeAddr + "]" } + if len(healthCheckConfig.URL) == 0 { + healthCheckConfig.URL = "http://${host}/" + } + url := strings.ReplaceAll(healthCheckConfig.URL, "${host}", result.NodeAddr) req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { return err } + if len(healthCheckConfig.UserAgent) > 0 { + req.Header.Set("User-Agent", healthCheckConfig.UserAgent) + } else { + req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36") + } + + key, err := nodeutils.EncryptData(result.Node.UniqueId, result.Node.Secret, maps.Map{ + "onlyBasicRequest": healthCheckConfig.OnlyBasicRequest, + }, 300) + if err != nil { + return err + } + req.Header.Set(serverconfigs.HealthCheckHeaderName, key) timeout := 5 * time.Second if healthCheckConfig.Timeout != nil {