def treat_command(self, cmd): """Send the awaiting commands to the server. Used in the pymumble thread.""" if cmd.cmd == PYMUMBLE_CMD_MOVE: userstate = mumble_pb2.UserState() userstate.session = cmd.parameters["session"] userstate.channel_id = cmd.parameters["channel_id"] self.Log.debug("Moving to channel") self.send_message(PYMUMBLE_MSG_TYPES_USERSTATE, userstate) cmd.response = True self.commands.answer(cmd) elif cmd.cmd == PYMUMBLE_CMD_TEXTMESSAGE: textmessage = mumble_pb2.TextMessage() textmessage.session.append(cmd.parameters["session"]) textmessage.channel_id.append(cmd.parameters["channel_id"]) textmessage.message = cmd.parameters["message"] self.send_message(PYMUMBLE_MSG_TYPES_TEXTMESSAGE, textmessage) cmd.response = True self.commands.answer(cmd) elif cmd.cmd == PYMUMBLE_CMD_TEXTPRIVATEMESSAGE: textprivatemessage = mumble_pb2.TextMessage() textprivatemessage.session.append(cmd.parameters["session"]) textprivatemessage.message = cmd.parameters["message"] self.send_message(PYMUMBLE_MSG_TYPES_TEXTMESSAGE, textprivatemessage) cmd.response = True self.commands.answer(cmd) elif cmd.cmd == PYMUMBLE_CMD_MODUSERSTATE: userstate = mumble_pb2.UserState() userstate.session = cmd.parameters["session"] if "mute" in cmd.parameters: userstate.mute = cmd.parameters["mute"] if "self_mute" in cmd.parameters: userstate.self_mute = cmd.parameters["self_mute"] if "deaf" in cmd.parameters: userstate.deaf = cmd.parameters["deaf"] if "self_deaf" in cmd.parameters: userstate.self_deaf = cmd.parameters["self_deaf"] if "suppress" in cmd.parameters: userstate.suppress = cmd.parameters["suppress"] if "recording" in cmd.parameters: userstate.recording = cmd.parameters["recording"] if "comment" in cmd.parameters: userstate.comment = cmd.parameters["comment"] if "texture" in cmd.parameters: userstate.texture = cmd.parameters["texture"] self.send_message(PYMUMBLE_MSG_TYPES_USERSTATE, userstate) cmd.response = True self.commands.answer(cmd)
def text_message(actor=None, session=None, channels=None, tree=None, message=None): msg = mumble_pb2.TextMessage() if actor: msg.actor = actor if session: msg.session.extend(session) if channels: msg.channel_id.extend(channels) if tree: msg.tree_id.extend(tree) if message: msg.message = message return serialize_(msg)
def dispatch_control_message(self, type, message): """Dispatch control messages based on their type""" self.Log.debug("dispatch control message") if type == PYMUMBLE_MSG_TYPES_UDPTUNNEL: # audio encapsulated in control message self.sound_received(message) elif type == PYMUMBLE_MSG_TYPES_VERSION: mess = mumble_pb2.Version() mess.ParseFromString(message) self.Log.debug("message: Version : %s", mess) elif type == PYMUMBLE_MSG_TYPES_AUTHENTICATE: mess = mumble_pb2.Authenticate() mess.ParseFromString(message) self.Log.debug("message: Authenticate : %s", mess) elif type == PYMUMBLE_MSG_TYPES_PING: mess = mumble_pb2.Ping() mess.ParseFromString(message) self.Log.debug("message: Ping : %s", mess) elif type == PYMUMBLE_MSG_TYPES_REJECT: mess = mumble_pb2.Reject() mess.ParseFromString(message) self.Log.debug("message: reject : %s", mess) self.ready_lock.release() raise ConnectionRejectedError(mess.reason) elif type == PYMUMBLE_MSG_TYPES_SERVERSYNC: # this message finish the connection process mess = mumble_pb2.ServerSync() mess.ParseFromString(message) self.Log.debug("message: serversync : %s", mess) self.users.set_myself(mess.session) self.server_max_bandwidth = mess.max_bandwidth self.set_bandwidth(mess.max_bandwidth) if self.connected == PYMUMBLE_CONN_STATE_AUTHENTICATING: self.connected = PYMUMBLE_CONN_STATE_CONNECTED self.callbacks(PYMUMBLE_CLBK_CONNECTED) self.ready_lock.release() # release the ready-lock elif type == PYMUMBLE_MSG_TYPES_CHANNELREMOVE: mess = mumble_pb2.ChannelRemove() mess.ParseFromString(message) self.Log.debug("message: ChannelRemove : %s", mess) self.channels.remove(mess.channel_id) elif type == PYMUMBLE_MSG_TYPES_CHANNELSTATE: mess = mumble_pb2.ChannelState() mess.ParseFromString(message) self.Log.debug("message: channelstate : %s", mess) self.channels.update(mess) elif type == PYMUMBLE_MSG_TYPES_USERREMOVE: mess = mumble_pb2.UserRemove() mess.ParseFromString(message) self.Log.debug("message: UserRemove : %s", mess) self.users.remove(mess) elif type == PYMUMBLE_MSG_TYPES_USERSTATE: mess = mumble_pb2.UserState() mess.ParseFromString(message) self.Log.debug("message: userstate : %s", mess) self.users.update(mess) elif type == PYMUMBLE_MSG_TYPES_BANLIST: mess = mumble_pb2.BanList() mess.ParseFromString(message) self.Log.debug("message: BanList : %s", mess) elif type == PYMUMBLE_MSG_TYPES_TEXTMESSAGE: mess = mumble_pb2.TextMessage() mess.ParseFromString(message) self.Log.debug("message: TextMessage : %s", mess) self.callbacks(PYMUMBLE_CLBK_TEXTMESSAGERECEIVED, mess.message) elif type == PYMUMBLE_MSG_TYPES_PERMISSIONDENIED: mess = mumble_pb2.PermissionDenied() mess.ParseFromString(message) self.Log.debug("message: PermissionDenied : %s", mess) elif type == PYMUMBLE_MSG_TYPES_ACL: mess = mumble_pb2.ACL() mess.ParseFromString(message) self.Log.debug("message: ACL : %s", mess) elif type == PYMUMBLE_MSG_TYPES_QUERYUSERS: mess = mumble_pb2.QueryUsers() mess.ParseFromString(message) self.Log.debug("message: QueryUsers : %s", mess) elif type == PYMUMBLE_MSG_TYPES_CRYPTSETUP: mess = mumble_pb2.CryptSetup() mess.ParseFromString(message) self.Log.debug("message: CryptSetup : %s", mess) elif type == PYMUMBLE_MSG_TYPES_CONTEXTACTIONADD: mess = mumble_pb2.ContextActionAdd() mess.ParseFromString(message) self.Log.debug("message: ContextActionAdd : %s", mess) elif type == PYMUMBLE_MSG_TYPES_CONTEXTACTION: mess = mumble_pb2.ContextActionAdd() mess.ParseFromString(message) self.Log.debug("message: ContextActionAdd : %s", mess) elif type == PYMUMBLE_MSG_TYPES_USERLIST: mess = mumble_pb2.UserList() mess.ParseFromString(message) self.Log.debug("message: UserList : %s", mess) elif type == PYMUMBLE_MSG_TYPES_VOICETARGET: mess = mumble_pb2.VoiceTarget() mess.ParseFromString(message) self.Log.debug("message: VoiceTarget : %s", mess) elif type == PYMUMBLE_MSG_TYPES_PERMISSIONQUERY: mess = mumble_pb2.PermissionQuery() mess.ParseFromString(message) self.Log.debug("message: PermissionQuery : %s", mess) elif type == PYMUMBLE_MSG_TYPES_CODECVERSION: mess = mumble_pb2.CodecVersion() mess.ParseFromString(message) self.Log.debug("message: CodecVersion : %s", mess) self.sound_output.set_default_codec(mess) elif type == PYMUMBLE_MSG_TYPES_USERSTATS: mess = mumble_pb2.UserStats() mess.ParseFromString(message) self.Log.debug("message: UserStats : %s", mess) elif type == PYMUMBLE_MSG_TYPES_REQUESTBLOB: mess = mumble_pb2.RequestBlob() mess.ParseFromString(message) self.Log.debug("message: RequestBlob : %s", mess) elif type == PYMUMBLE_MSG_TYPES_SERVERCONFIG: mess = mumble_pb2.ServerConfig() mess.ParseFromString(message) self.Log.debug("message: ServerConfig : %s", mess)