diff --git a/go.mod b/go.mod index 5b1a612..da21549 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module github.com/fumiama/go-nd-portal go 1.19 require ( - github.com/FloatTech/floatbox v0.0.0-20221121151328-cac4af114b44 github.com/sirupsen/logrus v1.9.0 github.com/stretchr/testify v1.7.0 golang.org/x/term v0.2.0 @@ -11,9 +10,7 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/pretty v0.2.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/sys v0.2.0 // indirect - gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect ) diff --git a/go.sum b/go.sum index 8d69b33..f354ed2 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,6 @@ -github.com/FloatTech/floatbox v0.0.0-20221121151328-cac4af114b44 h1:/Er1NIsb3giFG0rQqA2TO1JkN8TTBDRcmaektAvEfK8= -github.com/FloatTech/floatbox v0.0.0-20221121151328-cac4af114b44/go.mod h1:DUd62cKBBLBK+8HEABQ6hM2bfZ3TMLOAMKaf1R2w7Pw= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= @@ -15,16 +8,12 @@ github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tidwall/gjson v1.14.3 h1:9jvXn7olKEHU1S9vwoMGliaT8jq1vJ7IH/n9zD9Dnlw= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.2.0 h1:z85xZCsEl7bi/KwbNADeBYoOP0++7W1ipu+aGnpwzRM= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/portal/portal.go b/portal/portal.go index 8fc14a4..aacc4de 100644 --- a/portal/portal.go +++ b/portal/portal.go @@ -11,7 +11,6 @@ import ( "net/url" "time" - "github.com/FloatTech/floatbox/web" "github.com/sirupsen/logrus" "github.com/fumiama/go-nd-portal/helper" @@ -48,7 +47,7 @@ func NewPortal(name, password string, ipv4 net.IP) (*Portal, error) { func (p *Portal) GetChallenge() (string, error) { u := fmt.Sprintf(PortalGetChallenge, "gondportal", url.QueryEscape(p.nam), p.ip, time.Now().UnixMilli()) logrus.Debugln("GET", u) - data, err := web.RequestDataWith(web.NewDefaultClient(), u, "GET", "", PortalHeaderUA) + data, err := requestDataWith(u, "GET", PortalHeaderUA) if err != nil { return "", err } @@ -80,7 +79,7 @@ func (p *Portal) Login(challenge string) error { hmd5 := p.PasswordHMd5(challenge) u := fmt.Sprintf(PortalLogin, "gondportal", url.QueryEscape(p.nam), hmd5, p.ip, p.CheckSum(challenge, hmd5, info), url.QueryEscape(info), time.Now().UnixMilli()) logrus.Debugln("GET", u) - data, err := web.RequestDataWith(web.NewDefaultClient(), u, "GET", "", PortalHeaderUA) + data, err := requestDataWith(u, "GET", PortalHeaderUA) if err != nil { return err } diff --git a/portal/web.go b/portal/web.go new file mode 100644 index 0000000..5aa185a --- /dev/null +++ b/portal/web.go @@ -0,0 +1,35 @@ +package portal + +import ( + "errors" + "fmt" + "io" + "net/http" +) + +var client = &http.Client{} + +// requestDataWith 使用自定义请求头获取数据 +func requestDataWith(url, method, ua string) (data []byte, err error) { + // 提交请求 + var request *http.Request + request, err = http.NewRequest(method, url, nil) + if err == nil { + // 增加header选项 + if ua != "" { + request.Header.Add("User-Agent", ua) + } + var response *http.Response + response, err = client.Do(request) + if err == nil { + if response.StatusCode != http.StatusOK { + s := fmt.Sprintf("status code: %d", response.StatusCode) + err = errors.New(s) + return + } + data, err = io.ReadAll(response.Body) + response.Body.Close() + } + } + return +}