From 4a2a1a80bc29ec2dc13e8dd053671431eb36fe2a Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 15 Jun 2023 19:18:04 +0300 Subject: Steam: complete login sequence (though always gives us "Invalid password" error) --- protocols/Steam/src/steam_utils.cpp | 39 ++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 'protocols/Steam/src/steam_utils.cpp') diff --git a/protocols/Steam/src/steam_utils.cpp b/protocols/Steam/src/steam_utils.cpp index 90b892b355..1faf408f5d 100644 --- a/protocols/Steam/src/steam_utils.cpp +++ b/protocols/Steam/src/steam_utils.cpp @@ -29,12 +29,12 @@ void CSteamProto::WSSend(EMsg msgType, const ProtobufCppMessage &msg) void CSteamProto::WSSendHeader(EMsg msgType, const CMsgProtoBufHeader &hdr, const ProtobufCppMessage &msg) { - unsigned hdrLen = (unsigned)protobuf_c_message_get_packed_size(&hdr); + uint32_t hdrLen = (uint32_t)protobuf_c_message_get_packed_size(&hdr); MBinBuffer hdrbuf(hdrLen); protobuf_c_message_pack(&hdr, (uint8_t *)hdrbuf.data()); hdrbuf.appendBefore(&hdrLen, sizeof(hdrLen)); - unsigned type = (unsigned)msgType; + uint32_t type = (uint32_t)msgType; type |= STEAM_PROTOCOL_MASK; hdrbuf.appendBefore(&type, sizeof(type)); Netlib_Dump(m_hServerConn, hdrbuf.data(), hdrbuf.length(), true, 0); @@ -47,7 +47,7 @@ void CSteamProto::WSSendHeader(EMsg msgType, const CMsgProtoBufHeader &hdr, cons WebSocket_SendBinary(m_hServerConn, hdrbuf.data(), hdrbuf.length()); } -void CSteamProto::WSSendService(const char *pszServiceName, const ProtobufCppMessage &msg) +void CSteamProto::WSSendService(const char *pszServiceName, const ProtobufCppMessage &msg, MsgCallback pCallback) { CMsgProtoBufHeader hdr; hdr.has_client_sessionid = hdr.has_steamid = hdr.has_jobid_source = hdr.has_jobid_target = true; @@ -56,11 +56,44 @@ void CSteamProto::WSSendService(const char *pszServiceName, const ProtobufCppMes hdr.target_job_name = (char*)pszServiceName; hdr.realm = 1; hdr.has_realm = true; + if (pCallback) { + mir_cslock lck(m_csRequests); + m_arRequests.insert(new ProtoRequest(hdr.jobid_source, pCallback)); + } + WSSendHeader(EMsg::ServiceMethodCallFromClientNonAuthed, hdr, msg); } ///////////////////////////////////////////////////////////////////////////////////////// +int64_t CSteamProto::GetId(MCONTACT hContact, const char *pszSetting) +{ + return _atoi64(getMStringA(hContact, pszSetting)); +} + +void CSteamProto::SetId(MCONTACT hContact, const char *pszSetting, int64_t id) +{ + char szId[100]; + _i64toa(id, szId, 10); + setString(hContact, pszSetting, szId); +} + +///////////////////////////////////////////////////////////////////////////////////////// + +int64_t CSteamProto::GetId(const char *pszSetting) +{ + return _atoi64(getMStringA(pszSetting)); +} + +void CSteamProto::SetId(const char *pszSetting, int64_t id) +{ + char szId[100]; + _i64toa(id, szId, 10); + setString(pszSetting, szId); +} + +///////////////////////////////////////////////////////////////////////////////////////// + uint16_t CSteamProto::SteamToMirandaStatus(PersonaState state) { switch (state) { -- cgit v1.2.3