()
| 33 | } |
| 34 | |
| 35 | func (b *Bsteam) handleEvents() { |
| 36 | myLoginInfo := &steam.LogOnDetails{ |
| 37 | Username: b.GetString("Login"), |
| 38 | Password: b.GetString("Password"), |
| 39 | AuthCode: b.GetString("AuthCode"), |
| 40 | } |
| 41 | // TODO Attempt to read existing auth hash to avoid steam guard. |
| 42 | // Maybe works |
| 43 | //myLoginInfo.SentryFileHash, _ = ioutil.ReadFile("sentry") |
| 44 | for event := range b.c.Events() { |
| 45 | switch e := event.(type) { |
| 46 | case *steam.ChatMsgEvent: |
| 47 | b.handleChatMsg(e) |
| 48 | case *steam.PersonaStateEvent: |
| 49 | b.Log.Debugf("PersonaStateEvent: %#v\n", e) |
| 50 | b.Lock() |
| 51 | b.userMap[e.FriendId] = e.Name |
| 52 | b.Unlock() |
| 53 | case *steam.ConnectedEvent: |
| 54 | b.c.Auth.LogOn(myLoginInfo) |
| 55 | case *steam.MachineAuthUpdateEvent: |
| 56 | // TODO sentry files for 2 auth |
| 57 | /* |
| 58 | b.Log.Info("authupdate", e) |
| 59 | b.Log.Info("hash", e.Hash) |
| 60 | ioutil.WriteFile("sentry", e.Hash, 0666) |
| 61 | */ |
| 62 | case *steam.LogOnFailedEvent: |
| 63 | b.Log.Info("Logon failed", e) |
| 64 | err := b.handleLogOnFailed(e, myLoginInfo) |
| 65 | if err != nil { |
| 66 | b.Log.Error(err) |
| 67 | return |
| 68 | } |
| 69 | case *steam.LoggedOnEvent: |
| 70 | b.Log.Debugf("LoggedOnEvent: %#v", e) |
| 71 | b.connected <- struct{}{} |
| 72 | b.Log.Debugf("setting online") |
| 73 | b.c.Social.SetPersonaState(steamlang.EPersonaState_Online) |
| 74 | case *steam.DisconnectedEvent: |
| 75 | b.Log.Info("Disconnected") |
| 76 | b.Log.Info("Attempting to reconnect...") |
| 77 | b.c.Connect() |
| 78 | case steam.FatalErrorEvent: |
| 79 | b.Log.Errorf("steam FatalErrorEvent: %#v", e) |
| 80 | default: |
| 81 | b.Log.Debugf("unknown event %#v", e) |
| 82 | } |
| 83 | } |
| 84 | } |
| 85 | |
| 86 | func (b *Bsteam) handleLogOnFailed(e *steam.LogOnFailedEvent, myLoginInfo *steam.LogOnDetails) error { |
| 87 | switch e.Result { |
no test coverage detected