diff --git a/pkg/login.go b/pkg/login.go index 2347d57..562670c 100644 --- a/pkg/login.go +++ b/pkg/login.go @@ -1,7 +1,11 @@ package upl import ( + "errors" "fmt" + "net/http" + "net/http/httputil" + "net/url" "os/exec" "regexp" "runtime" @@ -54,3 +58,53 @@ func (t *Task) parseCookie(in string) (string, error) { ans := re.FindAllStringSubmatch(in, -1) return ans[0][1], nil } + +// ログインが成功しない +func (t *Task) login2() (string, error) { + form := url.Values{} + form.Add("fm_usr", "admin") + form.Add("fm_pwd", "admin@123") + body := strings.NewReader(form.Encode()) + req, err := http.NewRequest("POST", t.baseurl, body) + if err != nil { + return "", err + } + req.Header.Set("User-Agent", "Go/1.20") + req.Header.Set("Accept", "*/*") + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + client := &http.Client{} + + // クッキーの処理: クッキーを格納するためのジャーを作成 + // jar, _ := cookiejar.New(nil) + // client.Jar = jar + + resp, err := client.Do(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + + cookies := resp.Cookies() + var c string + for _, cookie := range cookies { + if cookie.Name == "filemanager" { + c = cookie.Value + } + } + // ログインに失敗するとトップページを返す + if len(c) == 0 { + return "", errors.New("クッキーを取得できなかった") + } + if resp.Status != "302 Found" { + return "", errors.New("ログインが成功しなかった") + } + + dump, _ := httputil.DumpRequest(req, true) + fmt.Printf("%s", dump) + dump2, _ := httputil.DumpResponse(resp, true) + fmt.Printf("%s", dump2) + + // ログインが成功してない + return c, nil +} diff --git a/pkg/login_test.go b/pkg/login_test.go index cfb2a9e..cc0121b 100644 --- a/pkg/login_test.go +++ b/pkg/login_test.go @@ -22,3 +22,14 @@ func TestLogin(t *testing.T) { } assert.Equal(t, 26, len(cookie)) } + +// できない +// func TestLogin2(t *testing.T) { +// buf := &bytes.Buffer{} +// task := NewTask(buf) +// cookie, err := task.login2() +// if err != nil { +// t.Error(err) +// } +// assert.Equal(t, 26, len(cookie)) +// } diff --git a/pkg/upl_test.go b/pkg/upl_test.go index 7a70c38..736e6f2 100644 --- a/pkg/upl_test.go +++ b/pkg/upl_test.go @@ -32,3 +32,23 @@ func TestUpload(t *testing.T) { assert.Equal(t, `{"status":"success","info":"file upload successful"}`, resp) } + +// func TestUpload2(t *testing.T) { +// file, err := os.Create(UPLOAD_TARGET) +// if err != nil { +// t.Error(err) +// } +// defer os.Remove(file.Name()) + +// b := &bytes.Buffer{} +// task := NewTask(b) +// cookie, err := task.login2() +// if err != nil { +// t.Error(err) +// } +// resp, err := task.upload(cookie) +// if err != nil { +// t.Error(err) +// } +// assert.Equal(t, `{"status":"success","info":"file upload successful"}`, resp) +// }