|
6 | 6 | "errors"
|
7 | 7 | "fmt"
|
8 | 8 | "net"
|
| 9 | + "strconv" |
9 | 10 | "strings"
|
10 | 11 |
|
11 | 12 | "github.com/mk6i/retro-aim-server/config"
|
@@ -81,7 +82,7 @@ type bosCookie struct {
|
81 | 82 | ScreenName state.DisplayScreenName `oscar:"len_prefix=uint8"`
|
82 | 83 | }
|
83 | 84 |
|
84 |
| -// RegisterBOSSession creates and returns a user's session. |
| 85 | +// RegisterBOSSession adds a new session to the session registry. |
85 | 86 | func (s AuthService) RegisterBOSSession(authCookie []byte) (*state.Session, error) {
|
86 | 87 | buf, err := s.cookieBaker.Crack(authCookie)
|
87 | 88 | if err != nil {
|
@@ -109,6 +110,16 @@ func (s AuthService) RegisterBOSSession(authCookie []byte) (*state.Session, erro
|
109 | 110 | sess.SetUserInfoFlag(wire.OServiceUserFlagUnconfirmed)
|
110 | 111 | }
|
111 | 112 |
|
| 113 | + if c.ICQ == 1 { |
| 114 | + sess.SetUserInfoFlag(wire.OServiceUserFlagICQ) |
| 115 | + |
| 116 | + uin, err := strconv.Atoi(u.IdentScreenName.String()) |
| 117 | + if err != nil { |
| 118 | + return nil, fmt.Errorf("error converting username to UIN: %w", err) |
| 119 | + } |
| 120 | + sess.SetUIN(uint32(uin)) |
| 121 | + } |
| 122 | + |
112 | 123 | return sess, nil
|
113 | 124 | }
|
114 | 125 |
|
@@ -322,7 +333,7 @@ func (s AuthService) loginSuccessResponse(screenName string, isICQ bool, err err
|
322 | 333 | }
|
323 | 334 | cookie, err := s.cookieBaker.Issue(buf.Bytes())
|
324 | 335 | if err != nil {
|
325 |
| - return wire.TLVRestBlock{}, fmt.Errorf("failed to make auth cookie: %w", err) |
| 336 | + return wire.TLVRestBlock{}, fmt.Errorf("failed to issue auth cookie: %w", err) |
326 | 337 | }
|
327 | 338 |
|
328 | 339 | return wire.TLVRestBlock{
|
|
0 commit comments