1
0
forked from 0ad/0ad

Send rating related requests directly to EcheLOn.

Patch By: Dunedan
Differential Revision: https://code.wildfiregames.com/D1177
This was SVN commit r21719.
This commit is contained in:
Nicolas Auvray 2018-04-14 12:50:54 +00:00
parent 1d158a25ea
commit e6106afc05
4 changed files with 17 additions and 8 deletions

View File

@ -413,7 +413,8 @@ extended = true ; Whether to display the chat history
history = 0 ; Number of past messages to display on join
room = "arena23" ; Default MUC room to join
server = "lobby.wildfiregames.com" ; Address of lobby server
xpartamupp = "wfgbot23" ; Name of the server-side xmpp client that manage games
xpartamupp = "wfgbot23" ; Name of the server-side XMPP-account that manage games
echelon = "echelon23" ; Name of the server-side XMPP-account that manages ratings
buddies = "," ; Comma separated list of playernames that the current user has marked as buddies
rememberpassword = true ; Whether to store the encrypted password in the user config
secureauth = true ; Secure Lobby Authentication: This prevents the impersonation of other players. The lobby server confirms the identity of the player before they join.

View File

@ -79,10 +79,13 @@ XmppClient::XmppClient(const std::string& sUsername, const std::string& sPasswor
{
// Read lobby configuration from default.cfg
std::string sXpartamupp;
std::string sEchelon;
CFG_GET_VAL("lobby.server", m_server);
CFG_GET_VAL("lobby.xpartamupp", sXpartamupp);
CFG_GET_VAL("lobby.echelon", sEchelon);
m_xpartamuppId = sXpartamupp + "@" + m_server + "/CC";
m_echelonId = sEchelon + "@" + m_server + "/CC";
glooxwrapper::JID clientJid(sUsername + "@" + m_server + "/0ad");
glooxwrapper::JID roomJid(m_room + "@conference." + m_server + "/" + sNick);
@ -279,12 +282,12 @@ void XmppClient::handleMUCError(glooxwrapper::MUCRoom*, gloox::StanzaError err)
*/
void XmppClient::SendIqGetBoardList()
{
glooxwrapper::JID xpartamuppJid(m_xpartamuppId);
glooxwrapper::JID echelonJid(m_echelonId);
// Send IQ
BoardListQuery* b = new BoardListQuery();
b->m_Command = "getleaderboard";
glooxwrapper::IQ iq(gloox::IQ::Get, xpartamuppJid, m_client->getID());
glooxwrapper::IQ iq(gloox::IQ::Get, echelonJid, m_client->getID());
iq.addExtension(b);
DbgXMPP("SendIqGetBoardList [" << tag_xml(iq) << "]");
m_client->send(iq);
@ -295,12 +298,12 @@ void XmppClient::SendIqGetBoardList()
*/
void XmppClient::SendIqGetProfile(const std::string& player)
{
glooxwrapper::JID xpartamuppJid(m_xpartamuppId);
glooxwrapper::JID echelonJid(m_echelonId);
// Send IQ
ProfileQuery* b = new ProfileQuery();
b->m_Command = player;
glooxwrapper::IQ iq(gloox::IQ::Get, xpartamuppJid, m_client->getID());
glooxwrapper::IQ iq(gloox::IQ::Get, echelonJid, m_client->getID());
iq.addExtension(b);
DbgXMPP("SendIqGetProfile [" << tag_xml(iq) << "]");
m_client->send(iq);
@ -313,7 +316,7 @@ void XmppClient::SendIqGetProfile(const std::string& player)
*/
void XmppClient::SendIqGameReport(const ScriptInterface& scriptInterface, JS::HandleValue data)
{
glooxwrapper::JID xpartamuppJid(m_xpartamuppId);
glooxwrapper::JID echelonJid(m_echelonId);
// Setup some base stanza attributes
GameReport* game = new GameReport();
@ -333,7 +336,7 @@ void XmppClient::SendIqGameReport(const ScriptInterface& scriptInterface, JS::Ha
game->m_GameReport.emplace_back(report);
// Send IQ
glooxwrapper::IQ iq(gloox::IQ::Set, xpartamuppJid, m_client->getID());
glooxwrapper::IQ iq(gloox::IQ::Set, echelonJid, m_client->getID());
iq.addExtension(game);
DbgXMPP("SendGameReport [" << tag_xml(iq) << "]");
m_client->send(iq);

View File

@ -51,6 +51,7 @@ private:
std::string m_room;
std::string m_nick;
std::string m_xpartamuppId;
std::string m_echelonId;
// State
bool m_initialLoadComplete;

View File

@ -572,9 +572,13 @@ class EcheLOn(sleekxmpp.ClientXMPP):
"""
Client is reporting end of game statistics
"""
if iq['gamereport']['sender']:
sender = iq['gamereport']['sender']
else:
sender = iq['from']
try:
self.leaderboard.getOrCreatePlayer(iq['gamereport']['sender'])
self.reportManager.addReport(iq['gamereport']['sender'], iq['gamereport']['game'])
self.reportManager.addReport(sender, iq['gamereport']['game'])
if self.leaderboard.getLastRatedMessage() != "":
self.ratingCacheReload = True
self.boardCacheReload = True