【修复】修复部署到阿里云waf失败导致panic

【调整】https监控禁止重定向
【调整】https监控增加失败重试3次
1.0.7
v-me-50 2025-07-30 09:46:10 +08:00
parent e2d0986616
commit 533df1b4b7
5 changed files with 88 additions and 42 deletions

View File

@ -243,7 +243,7 @@ func BtPanelSiteList(providerID string) ([]response.AccessSiteList, error) {
data.Set("cert_list", "") data.Set("cert_list", "")
siteList, err := RequestBt(&data, "POST", providerID, "ssl?action=GetSiteDomain") siteList, err := RequestBt(&data, "POST", providerID, "ssl?action=GetSiteDomain")
if err != nil { if err != nil {
fmt.Println("获取网站列表失败:", err) //fmt.Println("获取网站列表失败:", err)
return nil, err return nil, err
} }

View File

@ -88,6 +88,9 @@ func (client *AliyunWafClient) IGetInstanceId() (instanceId *string, _err error)
RegionId: tea.String(client.region), RegionId: tea.String(client.region),
} }
response, _err := client.DescribeInstance(req) response, _err := client.DescribeInstance(req)
if _err != nil {
return nil, _err
}
instanceId = response.Body.InstanceId instanceId = response.Body.InstanceId
return instanceId, _err return instanceId, _err
@ -100,6 +103,9 @@ func (client *AliyunWafClient) IDescribeDomainDetail(instanceId, domain string)
Domain: tea.String(domain), Domain: tea.String(domain),
} }
response, _err := client.DescribeDomainDetail(req) response, _err := client.DescribeDomainDetail(req)
if _err != nil {
return nil, _err
}
describeDomainDetailResponseBody = response.Body describeDomainDetailResponseBody = response.Body
return describeDomainDetailResponseBody, _err return describeDomainDetailResponseBody, _err

View File

@ -132,19 +132,35 @@ func CheckHttps(target string, advanceDay int) (result *CertInfo, err error) {
// 构建 HTTP 客户端 // 构建 HTTP 客户端
client := &http.Client{ client := &http.Client{
// 禁止重定向,确保获取到原始证书链
CheckRedirect: func(req *http.Request, via []*http.Request) error {
// 返回错误以阻止重定向
return http.ErrUseLastResponse
},
Transport: &http.Transport{ Transport: &http.Transport{
TLSClientConfig: &tls.Config{ TLSClientConfig: &tls.Config{
InsecureSkipVerify: true, InsecureSkipVerify: true,
}, },
}, },
Timeout: 5 * time.Second, //Timeout: 5 * time.Second,
} }
// 发送请求 // 发送请求
resp, err := client.Get(url) resp, err := client.Get(url)
if err != nil {
// 如果无法建立 HTTPS 连接重试3次
retryCount := 3
for i := 0; i < retryCount; i++ {
resp, err = client.Get(url)
if err == nil {
break // 成功则退出重试
}
time.Sleep(1 * time.Second) // 等待1秒后重试
}
if err != nil { if err != nil {
return nil, fmt.Errorf("无法建立 HTTPS 连接:%v", err) return nil, fmt.Errorf("无法建立 HTTPS 连接:%v", err)
} }
}
defer resp.Body.Close() defer resp.Body.Close()
// 获取证书链 // 获取证书链

View File

@ -108,7 +108,7 @@ func Save(setting *Setting) error {
public.TimeOut = setting.Timeout public.TimeOut = setting.Timeout
restart = true restart = true
} }
if setting.Https != "" && setting.Https != public.GetSettingIgnoreError("https") { if setting.Https != "" {
if setting.Https == "1" { if setting.Https == "1" {
if setting.Key == "" || setting.Cert == "" { if setting.Key == "" || setting.Cert == "" {
return fmt.Errorf("key or cert is empty") return fmt.Errorf("key or cert is empty")

View File

@ -28,6 +28,30 @@ var envVars = map[string]string{
"scheduler": "start", "scheduler": "start",
} }
/*
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . ___
."" '< `.___\_<|>_/___.' >' "".
| | : `- \`.;`\ _ /`;.`/ -` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
=====`-.____`-.___\_____/___.-`____.-'======
`=---=' `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
BUG
*/
func main() { func main() {
if len(os.Args) < 2 { if len(os.Args) < 2 {
//fmt.Println(`请不要直接运行本程序`) //fmt.Println(`请不要直接运行本程序`)