Author Topic: Steam protocol  (Read 112919 times)

0 Members and 2 Guests are viewing this topic.

Offline Robyer

  • Hero Member
  • *****
  • Posts: 1082
  • Country: cz
  • Karma: 60
    • Robyer.cz website
  • Version Info
Re: Steam protocol
« Reply #180 on: 07 02 2015, 17:05:26 »
No, only receiving. We're using combination of web and mobile API (that's also why users from Miranda are marked as on mobile client). And it is very limited, there is missing many methods and thus features - like sending typing notifications, changing statuses, probably also that loading offline messages.

Right now I can do only what is possible on Steam web chat and there are no such features (at least when I last checked).
I found there exists an alternative, reverse-engineered Steam client, which could be used and could provide more features (maybe all from the classic Steam client), but it would require rewriting whole plugin again and I'm not sure what disadvantages are related to it (except of course using "unofficial"/"hacked" communication base).
I was developing mainly Facebook, Omegle, Steam, Dummy and MobileState plugins. Now I'm retired. Goodbye, everyone. ~ You can still find me on Facebook.
 

Offline Vulpix

  • Beta Tester
  • *****
  • Posts: 618
  • Country: 00
  • Karma: 15
Re: Steam protocol
« Reply #181 on: 02 03 2015, 15:21:31 »
Hello Robyer!

I have one more (or you could say last) issue with the Steam protocol.

If you use the steam client and you start it whilst being logged in from Miranda, the miranda side enters a weird state of limbo where the protocol says it's online, but most contacts will suddenly appear offline, some will be online without status etc. I noticed that mostly users who refresh their status or otherwise do something will re-appear as online again.

If you log off and log back in (just by going offline->online in MIRANDA), then you get the protocol working like normal.

I have my friends section set to not log me in; but for some reason Steam still logs you in initially (I guess to check for offline messages?) and that always messes up Miranda, causing me to have to go offline->online to remedy the situation.

Fixing this would be highly appreciated :)
 

Offline Robyer

  • Hero Member
  • *****
  • Posts: 1082
  • Country: cz
  • Karma: 60
    • Robyer.cz website
  • Version Info
Re: Steam protocol
« Reply #182 on: 02 03 2015, 16:25:51 »
Vulpix, could you post netlog capturing that connection of steam? Maybe there will be some helpful info  ;)
I was developing mainly Facebook, Omegle, Steam, Dummy and MobileState plugins. Now I'm retired. Goodbye, everyone. ~ You can still find me on Facebook.
 

Offline Vulpix

  • Beta Tester
  • *****
  • Posts: 618
  • Country: 00
  • Karma: 15
Re: Steam protocol
« Reply #183 on: 02 03 2015, 17:01:09 »
I checked the network log and it really looks like a generic "login" attempt in a way.... Nothing else specific that I can see.

Once fully logged into miranda, I logged into the steam client and checked the log.

The log has:

Quote (selected)
[17:52:39 1A48] [STEAM_1] (000000000FF09EF8:1540) Data received
HTTP/1.1 200 OK
[17:52:39 1A48] [STEAM_1] (000000000FF09EF8:1540) Data received
Date: Mon, 02 Mar 2015 16:52:33 GMT
expires: Mon, 02 Mar 2015 16:52:33 GMT
content-type: application/json; charset=UTF-8
content-length: 356

[17:52:39 1A48] [STEAM_1] (000000000FF09EF8:1540) Data received
{
   "pollid": 0,
   "messages": [
      {
<censored>
      }
   ]
   ,
   "messagelast": 80,
   "timestamp": 487499785,
   "utc_timestamp": 1425315153,
   "messagebase": 79,
   "sectimeout": 5,
   "error": "OK"
}
[17:52:39 1440] [STEAM_1] CSteamProto::ExecuteRequest: 
[17:52:39 1A48] [STEAM_1] CSteamProto::PollingThread: https://api.steampowered.com/ISteamWebUserPresenceOAuth/Poll/v0001
[17:52:39 1440] [STEAM_1] Connection request to api.steampowered.com:443 (Flags 11)....
[17:52:39 1440] [STEAM_1] (000000000FF09DC8) Connecting to server api.steampowered.com:443....
[17:52:39 1440] [STEAM_1] (000000000FF09DC8) Connecting to ip 208.64.202.85:443 ....
[17:52:39 1440] [STEAM_1] (632) Connected to api.steampowered.com:443
[17:52:39 1440] [STEAM_1] (632 api.steampowered.com) Starting SSL negotiation
[17:52:40 1A48] [STEAM_1] (000000000FF09EF8:1540) Data received
HTTP/1.1 200 OK
[17:52:40 1A48] [STEAM_1] (000000000FF09EF8:1540) Data received
Date: Mon, 02 Mar 2015 16:52:33 GMT
expires: Mon, 02 Mar 2015 16:52:33 GMT
content-type: application/json; charset=UTF-8
content-length: 12060

[17:52:40 1A48] [STEAM_1] (000000000FF09EF8:1540) Data received
{
   "pollid": 0,
   "messages": [
      {
         "type": "personastate",
         "timestamp": 487499785,
         "utc_timestamp": 1425315153,
<censored, but lots and lots of my friends listed here in the same way>

      }
   ]
   ,
   "messagelast": 142,
   "timestamp": 487500378,
   "utc_timestamp": 1425315153,
   "messagebase": 80,
   "sectimeout": 1,
   "error": "OK"
}
[17:52:40 1A48] [STEAM_1] CSteamProto::PollingThread: https://api.steampowered.com/ISteamWebUserPresenceOAuth/Poll/v0001
[17:52:40 1440] [STEAM_1] (632 api.steampowered.com) SSL negotiation successful
[17:52:40 1440] [STEAM_1] (000000000FF09DC8:632) Data received
HTTP/1.1 200 OK
[17:52:40 1440] [STEAM_1] (000000000FF09DC8:632) Data received
Date: Mon, 02 Mar 2015 16:52:34 GMT
expires: Mon, 02 Mar 2015 16:52:34 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 23

[17:52:40 1440] [STEAM_1] (000000000FF09DC8:632) Data received
{
   "players": [

   ]
   
}
[17:52:40 1440] [STEAM_1] (000000000FF09DC8:632) Connection closed internal
[17:52:40 1440] [STEAM_1] (000000000FF09DC8:4294967295) Connection closed
[17:52:40 1440] [STEAM_1] CSteamProto::ExecuteRequest: @
[17:52:40 1440] [STEAM_1] Connection request to api.steampowered.com:443 (Flags 11)....
[17:52:40 1440] [STEAM_1] (000000000FF09DC8) Connecting to server api.steampowered.com:443....
[17:52:40 1440] [STEAM_1] (000000000FF09DC8) Connecting to ip 208.64.202.85:443 ....
[17:52:40 1440] [STEAM_1] (632) Connected to api.steampowered.com:443
[17:52:40 1440] [STEAM_1] (632 api.steampowered.com) Starting SSL negotiation
[17:52:41 1440] [STEAM_1] (632 api.steampowered.com) SSL negotiation successful
[17:52:42 1440] [STEAM_1] (000000000FF09DC8:632) Data received
HTTP/1.1 200 OK
[17:52:42 1440] [STEAM_1] (000000000FF09DC8:632) Data received
Date: Mon, 02 Mar 2015 16:52:35 GMT
expires: Mon, 02 Mar 2015 16:52:35 GMT
content-type: application/json; charset=UTF-8
content-length: 46266

[17:52:42 1440] [STEAM_1] (000000000FF09DC8:632) Data received
{
   "players": [
      {

and again a bunch of my contacts here.

and it finishes with this:

[17:52:42 1440] [STEAM_1] (000000000FF09DC8:632) Connection closed internal
[17:52:42 1440] [STEAM_1] (000000000FF09DC8:4294967295) Connection closed

Afterwards, I see generic log messages like when someone updates their status etc.
 

Offline Vulpix

  • Beta Tester
  • *****
  • Posts: 618
  • Country: 00
  • Karma: 15
Re: Steam protocol
« Reply #184 on: 04 03 2015, 10:45:49 »
Actually I remembered one more thing that's missing. Offline messages; they don't show up for Steam :o To get them, one would need to start steam client too. Is this possible with the web api?
 

Offline Robyer

  • Hero Member
  • *****
  • Posts: 1082
  • Country: cz
  • Karma: 60
    • Robyer.cz website
  • Version Info
Re: Steam protocol
« Reply #185 on: 04 03 2015, 12:04:12 »
Could you compare both 2 things with webpage? I think offline messages aren't possible there.
I was developing mainly Facebook, Omegle, Steam, Dummy and MobileState plugins. Now I'm retired. Goodbye, everyone. ~ You can still find me on Facebook.
 

Offline Vulpix

  • Beta Tester
  • *****
  • Posts: 618
  • Country: 00
  • Karma: 15
Re: Steam protocol
« Reply #186 on: 04 03 2015, 16:08:57 »
Okay, I tested both with the webchat.

The "contacts appear as offline on steam client login" => happens with webchat too, but webchat then properly shows state of all contacts again, within ~10 seconds or so. But effect is exactly the same.

The "offline messages don't work" -> this works with webchat. I left myself some offline messages from a separate steam account, and webchat correctly showed them when I logged in.
 

Offline Robyer

  • Hero Member
  • *****
  • Posts: 1082
  • Country: cz
  • Karma: 60
    • Robyer.cz website
  • Version Info
Re: Steam protocol
« Reply #187 on: 04 03 2015, 16:47:20 »
Okay, then I'll look at both issues when I'll have some time :-)
I was developing mainly Facebook, Omegle, Steam, Dummy and MobileState plugins. Now I'm retired. Goodbye, everyone. ~ You can still find me on Facebook.
 

Offline Vulpix

  • Beta Tester
  • *****
  • Posts: 618
  • Country: 00
  • Karma: 15
Re: Steam protocol
« Reply #188 on: 04 03 2015, 16:52:11 »
Thanks! Lemme know when I can check into it :)
 

Offline Robyer

  • Hero Member
  • *****
  • Posts: 1082
  • Country: cz
  • Karma: 60
    • Robyer.cz website
  • Version Info
Re: Steam protocol
« Reply #189 on: 05 03 2015, 11:43:32 »
If you use the steam client and you start it whilst being logged in from Miranda, the miranda side enters a weird state of limbo where the protocol says it's online, but most contacts will suddenly appear offline, some will be online without status etc. I noticed that mostly users who refresh their status or otherwise do something will re-appear as online again.

I was going to say that I can't reproduce it, but then I checked it once again in my network logs and I found the reason!

I saw how loading of history messages are done (per contact) but determining which contact has some old messages requires more work (probably parsing it from that webpage or maybe find it in some request). I won't do that now.
I was developing mainly Facebook, Omegle, Steam, Dummy and MobileState plugins. Now I'm retired. Goodbye, everyone. ~ You can still find me on Facebook.
 

Offline Vulpix

  • Beta Tester
  • *****
  • Posts: 618
  • Country: 00
  • Karma: 15
Re: Steam protocol
« Reply #190 on: 06 03 2015, 06:27:04 »
Ever since I updated, I cannot log on anymore:

Spoiler
[7:23:35 1BC4] KeepStatus: Setting STEAM_1 offline before making a new connection attempt
[7:23:35 1BC4] [STEAM_1] CSteamProto::SetStatus: changing status from 1 to 40071
[7:23:35 1BC4] [STEAM_1] CSteamProto::StopQueue: https://api.steampowered.com/ISteamWebUserPresenceOAuth/Logoff/v0001
[7:23:35 1BC4] [STEAM_1] Connection request to api.steampowered.com:443 (Flags 11)....
[7:23:35 1BC4] [STEAM_1] (000000000E47A148) Connecting to server api.steampowered.com:443....
[7:23:35 1BC4] [STEAM_1] (000000000E47A148) Connecting to ip 208.64.202.85:443 ....
[7:23:35 1BC4] [STEAM_1] (684) Connected to api.steampowered.com:443
[7:23:35 1BC4] [STEAM_1] (684 api.steampowered.com) Starting SSL negotiation
[7:23:35 1BC4] [STEAM_1] (684 api.steampowered.com) SSL negotiation successful
[7:23:36 1BC4] [STEAM_1] (000000000E47A148:684) Data received
HTTP/1.1 200 OK
[7:23:36 1BC4] [STEAM_1] (000000000E47A148:684) Data received
Date: Fri, 06 Mar 2015 06:23:18 GMT
expires: Fri, 06 Mar 2015 06:23:18 GMT
Content-Type: application/json; charset=UTF-8
content-length: 29

[7:23:36 1BC4] [STEAM_1] (000000000E47A148:684) Data received
{
   "error": "Not Logged On"
}
[7:23:36 1BC4] [STEAM_1] (000000000E47A148:684) Connection closed internal
[7:23:36 1BC4] [STEAM_1] (000000000E47A148:4294967295) Connection closed
[7:23:36 1BC4] KeepStatus: assigning status 40072 to STEAM_1
[7:23:36 1BC4] [STEAM_1] CSteamProto::SetStatus: changing status from 40071 to 40072
[7:23:36 1BC4] [STEAM_1] CSteamProto::SetStatus: changing status from 1 to 40071
[7:23:36 1BC4] [STEAM_1] CSteamProto::StopQueue: https://api.steampowered.com/ISteamWebUserPresenceOAuth/Logoff/v0001
[7:23:36 1BC4] [STEAM_1] Connection request to api.steampowered.com:443 (Flags 11)....
[7:23:36 1BC4] [STEAM_1] (000000000E47A148) Connecting to server api.steampowered.com:443....
[7:23:36 1BC4] [STEAM_1] (000000000E47A148) Connecting to ip 208.64.202.85:443 ....
[7:23:36 1BC4] [STEAM_1] (684) Connected to api.steampowered.com:443
[7:23:36 1BC4] [STEAM_1] (684 api.steampowered.com) Starting SSL negotiation
[7:23:37 1BC4] [STEAM_1] (684 api.steampowered.com) SSL negotiation successful
[7:23:37 1BC4] [STEAM_1] (000000000E47A148:684) Data received
HTTP/1.1 200 OK
[7:23:37 1BC4] [STEAM_1] (000000000E47A148:684) Data received
Date: Fri, 06 Mar 2015 06:23:20 GMT
expires: Fri, 06 Mar 2015 06:23:20 GMT
content-type: application/json; charset=UTF-8
content-length: 29

[7:23:37 1BC4] [STEAM_1] (000000000E47A148:684) Data received
{
   "error": "Not Logged On"
}
[7:23:37 1BC4] [STEAM_1] (000000000E47A148:684) Connection closed internal
[7:23:37 1BC4] [STEAM_1] (000000000E47A148:4294967295) Connection closed
[7:23:37 024C] [STEAM_1] CSteamProto::QueueThread: entering
[7:23:37 024C] [STEAM_1] CSteamProto::QueueThread: leaving

Reverting to the previous version of steam protocol makes it work again
« Last Edit: 06 03 2015, 08:15:34 by Vulpix »
 

Offline Robyer

  • Hero Member
  • *****
  • Posts: 1082
  • Country: cz
  • Karma: 60
    • Robyer.cz website
  • Version Info
Re: Steam protocol
« Reply #191 on: 06 03 2015, 08:42:51 »
Ever since I updated, I cannot log on anymore:

Oops, fixed.
I was developing mainly Facebook, Omegle, Steam, Dummy and MobileState plugins. Now I'm retired. Goodbye, everyone. ~ You can still find me on Facebook.
 

Offline Vulpix

  • Beta Tester
  • *****
  • Posts: 618
  • Country: 00
  • Karma: 15
Re: Steam protocol
« Reply #192 on: 06 03 2015, 11:08:47 »
Thanks! Watcher compiled it for me and I checked it, it works just fine.

And the bug with being DCd after logging in with the official client is fixed too!  :THUMBS UP: It now works just like the webchat :)

The last thing remaining now is the offline messages thing, but as you said that requires more work so it's okay if you do it whenever you have time and mood for that.

Thanks for the updates!
 

Offline Robyer

  • Hero Member
  • *****
  • Posts: 1082
  • Country: cz
  • Karma: 60
    • Robyer.cz website
  • Version Info
Re:Steam protocol
« Reply #193 on: 06 03 2015, 16:18:16 »
Vulpix, damn you! ;D

I said to myself "ok, lets quickly implement the offline messages" but I end up doing other cool stuff as I found repository with different steam plugin for inspiration... and then I had no more time for doing the offline messages. And also I procrastinated my other work by doing this, sigh :D

New version highlights:
 * Support for setting Away and N/A statuses
 * Being marked as connected from website, not from Mobile client anymore
 * FingerprintNG support (especially client overlays - web, mobile)
« Last Edit: 06 03 2015, 16:50:57 by Robyer »
I was developing mainly Facebook, Omegle, Steam, Dummy and MobileState plugins. Now I'm retired. Goodbye, everyone. ~ You can still find me on Facebook.
 

Offline Smiling Spectre

  • Jr. Member
  • **
  • Posts: 64
  • Country: 00
  • Karma: 0
Re: Steam protocol
« Reply #194 on: 07 03 2015, 09:22:26 »
Can I ask for two connected enhancements, please? I believe, it's not very hard to make, but it make me crazy in current state.

1. Just as Steam, your plugin have two levels of sorting. One is "normal" "sort by alphabet", and second is steam-invented "sort by activity". It's crazy! I have 5 different friend statuses, and I have no any idea what is my friend doing in result, because there are, in fact, 5 different lists. :( And when Steam have at least "seek" function, plugin... oh, have it too? Fun, invisible functionality! :D Nevermind, it's still not very handy.

Can you fix it to be in line with every other protocol that I have: one list for "offline" friends, and one list for "online", regardless of other statuses? Please?

2. Sorting by alphabet is good, but only while it not goes to "Capital/non-capital" difference. Because it's _another_ two lists again, and 'acrobat' with 'catwomen' and 'zorro' goes first, while... - ah, sorry, checked it, fortunately, this is only in Steam it's not exist anymore. Good. :)
« Last Edit: 07 03 2015, 09:28:16 by Smiling Spectre »