Files
NTrace-core/pow/pow.go
tsosunchia a6848f8f23 仓库用途变更
要提交的变更:
	修改:     .github/workflows/build.yml
	修改:     .github/workflows/publishNewFormula.yml
	修改:     README.md
	修改:     README_zh_CN.md
	修改:     fast_trace/fast_trace_test.go
	修改:     go.mod
	修改:     go.sum
	修改:     pow/pow.go
	修改:     printer/basic.go
	修改:     util/latency.go
	修改:     util/latency_test.go
	修改:     util/util.go
	修改:     wshandle/client.go
2023-10-08 17:15:29 +08:00

46 lines
1.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package pow
import (
"fmt"
"github.com/nxtrace/NTrace-core/util"
"github.com/tsosunchia/powclient"
"net/url"
"os"
)
const (
baseURL = "/v3/challenge"
)
func GetToken(fastIp string, host string, port string) (string, error) {
getTokenParams := powclient.NewGetTokenParams()
u := url.URL{Scheme: "https", Host: fastIp + ":" + port, Path: baseURL}
getTokenParams.BaseUrl = u.String()
getTokenParams.SNI = host
getTokenParams.Host = host
getTokenParams.UserAgent = util.UserAgent
proxyUrl := util.GetProxy()
if proxyUrl != nil {
getTokenParams.Proxy = proxyUrl
}
var (
token string
err error
)
// 尝试三次RetToken如果都失败了异常退出
for i := 0; i < 3; i++ {
token, err = powclient.RetToken(getTokenParams)
if err != nil {
continue
}
//fmt.Println("GetToken success", token, getTokenParams.UserAgent)
return token, nil
}
if err != nil {
fmt.Println(err)
}
fmt.Println("RetToken failed 3 times, please try again after a while, exit")
os.Exit(1)
return "", err
}