Skip to content

Commit

Permalink
Reply with which cookies are missing (ref #2)
Browse files Browse the repository at this point in the history
[skip cd]
  • Loading branch information
tulir committed Jan 25, 2024
1 parent fbc2016 commit eac62d6
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 8 deletions.
9 changes: 7 additions & 2 deletions commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"sync"
"time"

"golang.org/x/exp/maps"
"maunium.net/go/mautrix"
"maunium.net/go/mautrix/bridge/commands"
"maunium.net/go/mautrix/id"
Expand Down Expand Up @@ -269,8 +270,12 @@ func fnLoginEnterCookies(ce *WrappedCommandEvent) {
return
}
}
if !newCookies.AllCookiesPresent() {
ce.Reply("Missing some cookies")
missingRequiredCookies := newCookies.RequiredCookies()
maps.DeleteFunc(missingRequiredCookies, func(key, value string) bool {
return len(value) > 0
})
if len(missingRequiredCookies) > 0 {
ce.Reply("Missing some cookies: %v", maps.Keys(missingRequiredCookies))
return
}
err := ce.User.Login(ce.Ctx, newCookies)
Expand Down
2 changes: 1 addition & 1 deletion messagix/cookies/cookies.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ type Cookies interface {
IsLoggedIn() bool
ToJSON() ([]byte, error)
GetUserID() int64
AllCookiesPresent() bool
RequiredCookies() map[string]string
}

func UpdateValue(cookieStruct Cookies, name, val string) {
Expand Down
9 changes: 7 additions & 2 deletions messagix/cookies/facebook.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ func (fb *FacebookCookies) GetUserID() int64 {
return userID
}

func (fb *FacebookCookies) AllCookiesPresent() bool {
return fb.Datr != "" && fb.Sb != "" && fb.AccountId != "" && fb.Xs != ""
func (fb *FacebookCookies) RequiredCookies() map[string]string {
return map[string]string{
"datr": fb.Datr,
"sb": fb.Sb,
"c_user": fb.AccountId,
"xs": fb.Xs,
}
}
10 changes: 8 additions & 2 deletions messagix/cookies/instagram.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ func (ig *InstagramCookies) GetUserID() int64 {
return userID
}

func (ig *InstagramCookies) AllCookiesPresent() bool {
return ig.SessionId != "" && ig.CsrfToken != "" && ig.MachineId != "" && ig.IgDeviceId != "" && ig.UserId != ""
func (ig *InstagramCookies) RequiredCookies() map[string]string {
return map[string]string{
"sessionid": ig.SessionId,
"csrftoken": ig.CsrfToken,
"mid": ig.MachineId,
"ig_did": ig.IgDeviceId,
"ds_user_id": ig.UserId,
}
}
9 changes: 8 additions & 1 deletion provisioning.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"github.com/beeper/libserv/pkg/requestlog"
"github.com/rs/zerolog"
"github.com/rs/zerolog/hlog"
"golang.org/x/exp/maps"
"maunium.net/go/mautrix"
"maunium.net/go/mautrix/id"

Expand Down Expand Up @@ -106,7 +107,13 @@ func (prov *ProvisioningAPI) Login(w http.ResponseWriter, r *http.Request) {
if err != nil {
jsonResponse(w, http.StatusBadRequest, Error{ErrCode: mautrix.MBadJSON.ErrCode, Error: err.Error()})
return
} else if !cookies.AllCookiesPresent() {
}
missingRequiredCookies := cookies.RequiredCookies()
maps.DeleteFunc(missingRequiredCookies, func(key, value string) bool {
return len(value) > 0
})
if len(missingRequiredCookies) > 0 {
log.Debug().Strs("missing_cookies", maps.Keys(missingRequiredCookies)).Msg("Missing cookies in login request")
jsonResponse(w, http.StatusBadRequest, Error{ErrCode: mautrix.MBadJSON.ErrCode, Error: "Missing some cookies"})
return
}
Expand Down

0 comments on commit eac62d6

Please sign in to comment.