Opened 4 years ago

Closed 4 years ago

#5615 closed defect (fixed)

JS lobby hides some public messages misleading mods to use it as a private channel

Reported by: elexis Owned by: elexis
Priority: Should Have Milestone: Alpha 24
Component: Multiplayer lobby Keywords:
Cc: Patch: Phab:D2412

Description

The fgod mod uses the following chat format to send 'private' messages:

fpre: /private faction02 I buddied you.

However these are not private at all, they are broadcasted to all clients and it's only due to broken JS GUI code that they are getting hidden.

These chat messages might be noisy, sometimes people add 20 buddies in a row.

Depending on the jurisdiction of the lobby service provider, the fgod users might be granted to send these messages, but it must be rectified that this information is everything but private.

So the command should use /buddy or something, and then the fgod users could consider this a GUI event to be parsed, and the regular clients would display it as text.

(A more appropriate implementation might be via stanzas, but that's not an option for a JS mod).

So the purpose of this ticket is to fix the 0ad JS GUI client to not hide public messages, making it clear to everyone that these messages are not private.

Change History (2)

comment:1 by elexis, 4 years ago

Component: UI & SimulationMultiplayer lobby
Milestone: BacklogAlpha 24
Patch: Phab:D2412

comment:2 by elexis, 4 years ago

Owner: set to elexis
Resolution: fixed
Status: newclosed

In 23172:

Rewrite lobby page to use class semantics, add more gamedetails labels, improve performance using batch processing and caching and gain possibility for game creation/player-join/leave events, refs #5387.

Game selection details features:

  • Display victory conditions following their sending but missing display following rP14098, refs rP19642.
  • Display the host of the match and the game name in the selected game details following rP19703, refs D1666.
  • Display mods if the mods differ (without having to attempt to join the game prior) following rP21301.

Performance features:

  • Implement batch message processing in the XmppClient to rebuild GUI objects only once when receiving backlog or returning from a match.
  • Implement Game class to cache gamelist, filter and sorting values, as they rarely change but are accessed often.
  • Cache sprintf objects.

Security fixes:

  • Add escapeText in lobby/ to avoid players breaking the lobby for every participant, supersedes D720, comments by bb.
  • Do not hide broadcasted unrecognized chat commands that mods used as leaking private channels, fixes #5615.

Defect fixes:

  • Fix XmppClient.cpp storing unused historic message types resulting in memory waste and unintentional replay of for instance disconnect/announcements messages following both rP20070/D819 and rP22855/D2265, refs #3306.
  • Fix XmppClient.cpp victoryCondition -> victoryConditions gamesetup.js change from rP21474/D1240.
  • Fix leaderboard/profile page cancel hotkey closing the lobby dialog as well and removes cancel hotkey note from lobby_panels.xml from rP20886/D817 since the described issue was fixed by rP22200/D1701.
  • Fix lobby playing menu sound in a running game after having closed the lobby dialog following introduction in rP20886/D817.
  • Fix GUI on nick change by updating g_Username.
  • Update profile panel only with data matching the player requested.

Hack erasure:

  • Object semantics make it cheap to add state and cache values, storing literals in properties while removing globals, adding events while decoupling components and gaining moddability.
  • Erase comments and translation comments stating that this would be IRC!!, supersedes D1136.
  • Introduce Status chat message type to supersede "/special" chat command + "isSpecial" property from rP14098 (formerly g_specialKey rP17360) deluxe hack.
  • Introduce System chat message type to supersede system errors disguising as chat from a mock user called "system".

Code cleanups:

  • Move code from XML to JS.
  • Move size values from JS to XML, especially following rP20886/D817 and rP21003/D1051.
  • Rename "user" to "player".
  • Fix lobby/ eslint warnings, refs D2261.
  • Remove message.nick emptiness check from rP20064/D835, since XEP-0045 dictates that it is non-empty.
  • Add translated string for deleted subjects.
  • Add TODOs for some evident COList issues, refs #5638.

Differential Revision: https://code.wildfiregames.com/D2412

Note: See TracTickets for help on using tickets.