Mercurial > openrpg
changeset 536:5f38cd163edf
Convert all <msg..>text</msg> messages to proper chat messages
author | digitalxero |
---|---|
date | Mon, 22 Mar 2010 23:30:27 -0600 |
parents | e4b5be14a8ea |
children | 63b7f7839475 |
files | orpg/chat/chat_msg.py orpg/main.py orpg/networking/mplay_messaging.py orpg/networking/mplay_server.py |
diffstat | 4 files changed, 151 insertions(+), 93 deletions(-) [+] |
line wrap: on
line diff
--- a/orpg/chat/chat_msg.py Mon Mar 22 21:22:55 2010 -0600 +++ b/orpg/chat/chat_msg.py Mon Mar 22 23:30:27 2010 -0600 @@ -29,6 +29,8 @@ __version__ = "$Id: chat_msg.py,v 1.15 2006/11/04 21:24:19 digitalxero Exp $" +from orpg.tools.orpg_log import logger + from orpg.external.etree.ElementTree import ElementTree, Element from orpg.external.etree.ElementTree import fromstring, tostring @@ -66,7 +68,7 @@ chat_node = xml_dom if chat_node.tag != 'chat': - print "Warning: no <chat/> elements found in DOM." + logger.general("Warning: no <chat/> elements found in DOM.") else: self.takedom(chat_node)
--- a/orpg/main.py Mon Mar 22 21:22:55 2010 -0600 +++ b/orpg/main.py Mon Mar 22 23:30:27 2010 -0600 @@ -53,7 +53,7 @@ from orpg.tools.settings import settings from orpg.tools.orpg_log import logger from orpg.tools.validate import validate -from orpg.tools.decorators import debugging +from orpg.tools.decorators import debugging, pending_deprecation from orpg.tools.metamenus import MenuBarEx from orpg.external.etree.ElementTree import ElementTree, Element @@ -1061,17 +1061,19 @@ elif id == orpg.networking.mplay_client.GROUP_UPDATE: self.gs.update_room(data) + @debugging def on_receive(self, etreeEl, player): #recvSound = "RecvSound" # this will be the default sound. Whisper will change this below if player: display_name = self.chat.chat_display_name(player) + display_name = '<b>' + display_name + '</b>: ' else: - display_name = "Server Administrator" + display_name = "<b><i><u>Server Administrator</u>-></i></b> " if etreeEl.text: - self.chat.Post(etreeEl.text) + self.chat.Post(display_name + etreeEl.text) for child in etreeEl.getchildren(): if child.tag == 'tree':
--- a/orpg/networking/mplay_messaging.py Mon Mar 22 21:22:55 2010 -0600 +++ b/orpg/networking/mplay_messaging.py Mon Mar 22 23:30:27 2010 -0600 @@ -49,12 +49,15 @@ try: el = fromstring(raw_msg) except ExpatError: + #Backwards compatibility crap end = raw_msg.find(">") head = raw_msg[:end+1] msg = raw_msg[end+1:] el = fromstring(head) try: el1 = fromstring(msg) + if el1.tag == 'font': + raise ExpatError("") el.append(el1) except ExpatError: el.text = msg
--- a/orpg/networking/mplay_server.py Mon Mar 22 21:22:55 2010 -0600 +++ b/orpg/networking/mplay_server.py Mon Mar 22 23:30:27 2010 -0600 @@ -218,7 +218,9 @@ el1 = fromstring(msg) el.append(el1) except ExpatError: - el.text = msg + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = msg + el.append(chatel) self.outbox.put(el) @@ -968,9 +970,10 @@ logger.info('', True) def broadcast(self, msg): - msg = '<font color="#FF0000">' + msg + '</font>' - el = messaging.build('msg', msg, to='all', _from='0', - group_id='1') + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = '<font color="#FF0000">' + msg + '</font>' + el = messaging.build('msg', to='all', _from='0', group_id='1') + el.append(chatel) self.send_to_all(0, el) def console_log(self): @@ -1210,18 +1213,22 @@ # send confirmation data = self.recvMsg(newsock, new_stub.useCompression, new_stub.compressionType) + + chatEl = messaging.build('chat', version='1.0', _type='1') try: incEl = messaging.parse(data) except ExpatError: (remote_host, remote_port) = newsock.getpeername() - el = messaging.build('msg', "Your client sent an illegal message", - "to the server and will be disconnected.", - "Please report this bug to the development", - "Team at:<br />", - '<a href="http://sourceforge.net/tracker/?group_id=2237&atid=102237">OpenRPG bugs', - "(http://sourceforge.net/tracker/?group_id=2237&atid=102237)</a><br />", - to=props['id'], _from=props['id'], + msg = ['Your client sent an illegal message to the server and', + 'will be disconnected. Please report this bug to the', + 'development Team at:<br />', + '<a href="http://sourceforge.net/tracker/?group_id=2237&atid=102237">OpenRPG bugs', + '(http://sourceforge.net/tracker/?group_id=2237&atid=102237)</a><br />',] + + chatEl.text = ' '.join(msg) + el = messaging.build('msg', to=props['id'], _from=props['id'], group_id=LOBBY_ID) + el.append(chatEl) self.sendMsg(newsock, el, new_stub.useCompression, new_stub.compressionType) @@ -1251,11 +1258,13 @@ version_string += ' Please go to <a href="http://openrpg.digitalxero.net">http://openrpg.digitalxero.net</a> to find a compatible client.<br />' version_string += "If you can't find a compatible client on the website, chances are that the server is running an unreleased development version for testing purposes.<br />" - el = messaging.build('msg', version_string, to=props['id'], - _from='0', group_id='0') + chatEl.text = version_string + el = messaging.build('msg', to=props['id'], _from='0', + group_id='0') + el.append(chatEl) self.sendMsg(newsock, el, new_stub.useCompression, new_stub.compressionType) - # Give messages time to flow + # Give messages time to flow time.sleep(1) self.log_msg("Connection terminating due to version incompatibility with client (ver: " + props['version'] + " protocol: " + props['protocol_version'] + ")" ) newsock.close() @@ -1268,11 +1277,13 @@ self.log_msg(cmsg) allowed = False - el = messaging.build('msg', banmsg, to=props['id'], - _from='0', group_id='0') + chatEl.text = banmsg + el = messaging.build('msg', to=props['id'], _from='0', + group_id='0') + el.append(chatEl) self.sendMsg(newsock, el, new_stub.useCompression, new_stub.compressionType) - # Give messages time to flow + # Give messages time to flow time.sleep(1) newsock.close() return None @@ -1323,11 +1334,13 @@ err_string += "This error may represent a problem with the server. If you continue to get this message " err_string += "please contact the servers administrator to correct the issue.</center> " - el = messaging.build('msg', err_string, to=props['id'], - _from=props['id'],group_id='0') + chatEl.text = err_string + el = messaging.build('msg', to=props['id'], _from=props['id'], + group_id='0') + el.append(chatEl) self.sendMsg(newsock, el, new_stub.useCompression, new_stub.compressionType ) - time.sleep(2) + time.sleep(1) newsock.close() return @@ -1379,8 +1392,10 @@ with open(self.userPath + "LobbyMessage.html", "r") as f: lobbyMsg += f.read() - el = messaging.build('msg', lobbyMsg, to=player_id, _from='0', - group_id='0') + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = lobbyMsg + el = messaging.build('msg', to=player_id, _from='0', group_id='0') + el.append(chatel) # Send the server's lobby message to the client no matter what self.sendMsg(socket, el, self.players[player_id].useCompression, @@ -1429,8 +1444,6 @@ self.log_msg("server socket listening thread exiting...") self.listen_event.set() - - def acceptedNewConnectionThread(self, newsock, addr): """ Once a new connection comes in and is accepted, @@ -1525,8 +1538,6 @@ self.log_msg("message handler thread exiting...") self.incoming_event.set() - - def parse_incoming_dom(self, data): try: el = fromstring(data) @@ -1561,30 +1572,32 @@ boot_pwd = etreeEL.get("bpw") actual_boot_pwd = self.groups[group_id].boot_pwd + chatEl = messaging.build('chat', _type='1', version='1.0') + if not self.allow_room_passwords: - el = messaging.build('msg', "Room passwords have been disabled", - "by the server administrator.", to=player, - _from=0, group_id=0) + chatEl.text = 'Room passwords have been disabled by the server administrator.' + el = messaging.build('msg', to=player, _from=0, group_id=0) + el.append(chatEl) self.players[player].outbox.put(el) return elif boot_pwd == actual_boot_pwd: if target == "pwd": lmessage = "Room password changed to from \"" + self.groups[group_id].pwd + "\" to \"" + value + "\" by " + player self.groups[group_id].pwd = value - el = messaging.build('msg', 'Room password changed to', value, - to=player, _from=0, group_id=0) + chatEl.text = 'Room password changed to {v}'.format(v=value) + el = messaging.build('msg', to=player, _from=0, group_id=0) + el.append(chatEl) self.players[player].outbox.put(el) self.log_msg(lmessage) self.send_to_all('0', self.groups[group_id].toxml('update')) elif target == "name": - el = messaging.build('msg', self.change_group_name(group_id, - value, - player), - to=player, _from=0, group_id=0) + chatEl.text = self.change_group_name(group_id, value, player) + el = messaging.build('msg', to=player, _from=0, group_id=0) + el.append(chatEl) self.players[player].outbox.put(el) else: - el = messaging.build('msg', "Invalid Administrator Password.", - to=player, _from=0, group_id=0) + chatEl.text = "Invalid Administrator Password." + el = messaging.build('msg', to=player, _from=0, group_id=0) self.players[player].outbox.put(el) @@ -1611,8 +1624,11 @@ #because a time was sent return a ping response el = messaging.build('ping', time=sent_time) else: - el = messaging.build('msg', '<font color="#FF0000">PONG!?!</font>', - to=player, _from=player, group_id=group_id) + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = '<font color="#FF0000">PONG!?!</font>', + el = messaging.build('msg', to=player, _from=player, + group_id=group_id) + el.append(chatel) self.players[player].outbox.put(el) @@ -1754,8 +1770,11 @@ self.log_msg(str(e)) # Spit that darn message out now! - el = messaging.build('msg', roomMsg, to=from_id, _from=0, + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = roomMsg + el = messaging.build('msg', to=from_id, _from=0, group_id=group_id) + el.append(chatel) self.players[from_id].outbox.put(el) if self.sendLobbySound and group_id == '0': @@ -1880,8 +1899,11 @@ roomMsg = f.read() # Send the rooms message to the client no matter what - el = messaging.build('msg', roomMsg, to=from_id, _from=0, + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = roomMsg + el = messaging.build('msg', to=from_id, _from=0, group_id=group_id) + el.append(chatel) self.players[from_id].outbox.put(el) except Exception, e: @@ -2073,8 +2095,10 @@ msg.append(self.players[m].role) msg.append(self.players[m].name) msg.append("<br />") - el = messaging.build('msg', ' '.join(msg), to=player, _from=0, - group_id=group_id) + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = ' '.join(msg) + el = messaging.build('msg', to=player, _from=0, group_id=group_id) + el.append(chatel) self.send(el, player, group_id) elif act == "set": try: @@ -2122,8 +2146,11 @@ msg = ['<font color="#FF0000">Booting', '(%s)' % to_id, self.players[to_id].name, 'from server...</font>'] - el = messaging.build('msg', ' '.join(msg), to='all', - _from=from_id, group_id=group_id) + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = ' '.join(msg) + el = messaging.build('msg', to='all', _from=from_id, + group_id=group_id) + el.append(chatel) self.log_msg("boot_msg:" + ' '.join(msg)) @@ -2146,13 +2173,15 @@ msg = ['<font color="#FF0000">Booting', '(%s)' % to_id, self.players[to_id].name, 'from room...</font>'] - el = messaging.build('msg', ' '.join(msg), to='all', - _from=from_id, group_id=group_id) + chatel.text = ' '.join(msg) + el = messaging.build('msg', to='all', _from=from_id, + group_id=group_id) + el.append(chatel) self.log_msg("boot_msg:" + ' '.join(msg)) self.send_to_group("0", group_id, el) - time.sleep(0.025) + time.sleep(0.0025) #dump player into the lobby self.move_player(to_id, "0") @@ -2179,8 +2208,10 @@ # Send a message to everyone in the victim's room, letting them know someone has been booted msg = ['<font color="#FF0000">Kicking', '(%s)' % (id), self.players[id].name, 'from server...', str(message)] - el = messaging.build('msg', ' '.join(msg), to='all', _from=0, - group_id=group_id) + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = ' '.join(msg) + el = messaging.build('msg', to='all', _from=0, group_id=group_id) + el.append(chatel) self.log_msg("boot_msg:" + ' '.join(msg)) if (silent == 0): self.send_to_group("0", group_id, el) @@ -2229,8 +2260,10 @@ # Send a message to everyone in the victim's room, letting them know someone has been booted msg = ['<font color="#FF0000">Banning', '(%s)' % (id), self.players[id].name, 'from server...', str(message)] - el = messaging.build('msg', ' '.join(msg), to='all', _from=0, - group_id=group_id) + chatel = messaging.build('chat', _type='1', version='1.0') + chatel.text = ' '.join(msg) + el = messaging.build('msg', to='all', _from=0, group_id=group_id) + el.append(chatel) self.log_msg("ban_msg:" + ' '.join(msg)) if (silent == 0): self.send_to_group("0", group_id, el) @@ -2439,64 +2472,73 @@ #message now deemed 'authentic' #determine action to take based on command (cmd) + chatel = messaging.build('chat', _type='1', version='1.0') if cmd == "list": #return player list to this user. - msg = messaging.build('msg', self.player_list_remote(), to=pid, - _from=0, group_id=gid) + chatel.text = self.player_list_remote() + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "banip": ip = etreeEl.get("bip") name = etreeEl.get("bname") - msg = messaging.build('msg', 'Banned:', ip, to=pid, _from=0, - group_id=gid) + chatel.text = 'Banned: {ip}'.format(ip=ip) + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.admin_banip(ip, name) self.players[pid].outbox.put(msg) elif cmd == "ban": id = etreeEl.get("bid") - msg = messaging.build('msg', 'Banned!', to=id, _from=0, - group_id=gid) + chatel.text = 'Banned!' + msg = messaging.build('msg', to=id, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) self.admin_ban(id, "") elif cmd == "unban": ip = etreeEl.get("ip") self.admin_unban(ip) - msg = messaging.build('msg', 'Unbanned:', ip, to=pid, _from=0, - group_id=gid) + chatel.text = 'Unbanned {ip}'.format(ip=ip) + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "banlist": - msg = messaging.build('msg', self.admin_banlist(), to=pid, - _from=0, group_id=gid) + chatel.text = self.admin_banlist() + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "killgroup": ugid = etreeEl.get("gid") if ugid == "0": - msg = messaging.build('msg', 'Cannot Remove Lobby! Remote', - 'administrator request denied!', - to=pid, _from=0, group_id=gid) + chatel.text = 'Cannot Remove Lobby! Remote administrator request denied!' + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(m) else: result = self.prune_room(ugid) - msg = messaging.build('msg', str(result), to=pid, _from=0, - group_id=gid) + chatel.text = str(result) + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "message": tuid = etreeEl.get("to_id") msg = etreeEl.get("msg") - pmsg = messaging.build('msg', msg, to=tuid, _from=0, + chatel.text = msg + pmsg = messaging.build('msg', to=tuid, _from=0, group_id=self.players[tuid].group_id) + pmsg.append(chatel) try: self.players[tuid].outbox.put(pmsg) except: - msg = messaging.build('msg', 'Unknown Player ID:', - 'No message sent.', to=pid, _from=0, - group_id=gid) + chatel.text = 'Unknown Player ID: No message sent.' + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "broadcast": @@ -2508,19 +2550,22 @@ self.kill_server() elif cmd == "uptime": - msg = messaging.build('msg', self.uptime(1), to=pid, _from=0, - group_id=gid) + chatel.text = self.uptime(1) + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "help": - msg = messaging.build('msg', self.AdminHelpMessage(), to=pid, - _from=0, group_id=gid) + chatel.text = self.AdminHelpMessage() + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "roompasswords": # Toggle if room passwords are allowed on this server - msg = messaging.build('msg', self.RoomPasswords(), to=pid, - _from=0, group_id=gid) + chatel.text = self.RoomPasswords() + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put( msg) elif cmd == "createroom": @@ -2530,8 +2575,9 @@ result = self.create_temporary_persistant_room(rm_name, rm_boot, rm_pass) - msg = messaging.build('msg', result, to=pid, _from=0, - group_id=gid) + chatel.text = result + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "nameroom": @@ -2539,23 +2585,26 @@ rm_name = xml_dom.getAttribute("name") result = self.change_group_name(rm_id,rm_name,pid) - msg = messaging.build('msg', result, to=pid, _from=0, group_id=gid) + chatel.text = result + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) elif cmd == "passwd": tgid = xml_dom.getAttribute("gid") npwd = xml_dom.getAttribute("pass") if tgid == "0": - msg = messaging.build('msg', 'Server password may not' - 'be changed remotely!', to=pid, - _from=0, group_id=gid) + chatel.text = 'Server password may not be changed remotely!' + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) else: try: self.groups[tgid].boot_pwd = npwd - msg = messaging.build('msg', 'Password changed for room', - tgid, to=pid, _from=0, + chatel.text = 'Password changed for room ' + tgid + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) except: pass @@ -2563,14 +2612,16 @@ for g in self.groups.itervalues(): g.save_map() - msg = messaging.build('msg', 'Persistent room maps saved', to=pid, _from=0, group_id=gid) + chatel.text = 'Persistent room maps saved' + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg) else: - msg = messaging.build('msg', '<i>[Unknown Remote' - 'Administration Command]</i>', to=pid, - _from=0, group_id=gid) + chatel.text = '<i>[Unknown Remote Administration Command]</i>' + msg = messaging.build('msg', to=pid, _from=0, group_id=gid) + msg.append(chatel) self.players[pid].outbox.put(msg)