def status(self, client, appName, channelName): from log.logger import Log from commons.session import Session master = False if self.chanExists(channelName=channelName, appName=appName): channel = self.Channel(channelName, appName) if channel and client.unique_key in channel.masters(): master = True key = client.unique_key name = client.getName() to_send = {"name": name, "key": key, "status": 'offline'} if master == False: masters = channel.masters() for master in masters: m = Session().get(master) if m is not None: Log().add("[+] Client (room.py) : envoie du status de " + name + " vers l'utilisateur : " + m.getName()) json = Protocol.forgeJSON('status', simplejson.JSONEncoder().encode(to_send), {'channel': channel.name}) m.addResponse(json) else: users = channel.users() for user in users: u = Session().get(user) if u is not None: Log().add("[+] Client (room.py) : envoie du status master vers l'utilisateur : " + u.getName()) json = Protocol.forgeJSON('status', simplejson.JSONEncoder().encode(to_send), {'channel': channel.name}) u.addResponse(json)
def __sendMessage(self, channelName, appName, sender, to, message): """Fromate le json, et envoie le message a l'utilisateur""" from commons.session import Session sender = Session().get(sender) receiver = Session().get(to) json = Protocol.forgeJSON('message', '["' + sender.getName() + '", "' + message + '"]', {'channel': channelName, 'app': appName}) if receiver is not None: receiver.addResponse(json)
def __cmd_httpSendMessage(self, args): params = args.get('args', None) if params is not None: password = params.get('adminPwd', None) if password == SETTINGS.MASTER_PASSWORD: from commons.session import Session for item in params.get('to'): sess = Session().get(str(item)) if sess: json = Protocol.forgeJSON('message', '["system", "%s"]' % (params.get('message', '')), {'channel': 'system', 'app': 'system'}) sess.addResponse(json) return ('true') return ('false')
def status(self, client, appName, master=False): """ Envoie le status aux clients lors d'une action ( join / part ... connect ...) """ from commons.session import Session if client.room_name: channel = client.room.Channel(channelName=client.room_name, appName=appName) if channel and client.unique_key in channel.masters(): master = True if channel and master == False: masters = channel.masters() for master in masters: if client.room_name: channel = client.room_name else: channel = "none" master = Session().get(master) if master is not None: status = client.status key = client.unique_key name = client.getName() to_send = {"name": name, "key": key, "status": status} Log().add("[+] Client: envoie du status de %s vers l'utilisateur: %s" % (name, master.getName()), 'yellow') json = Protocol.forgeJSON('status', simplejson.JSONEncoder().encode(to_send), {'channel': channel}) master.addResponse(json) elif channel is not None: for u in channel.users(): user = Session().get(u) if user is not None: status = client.status key = client.unique_key name = client.getName() to_send = {"name": name, "key": key, "status": status} Log().add("[+] Client: envoie du status master vers l'utilisateur: %s" % name, 'yellow') json = Protocol.forgeJSON('status', simplejson.JSONEncoder().encode(to_send), {'channel': client.room_name}) if user is not None: user.addResponse(json)
def forward(self, channelName, appName, commande, uid, app): """Return : Envoie une commande a tous les utilisateurs d'une application -> bool """ from commons.session import Session from log.logger import Log if self.chanExists(channelName=channelName, appName=appName): channel = self.Channel(channelName=channelName, appName=appName) if uid in channel.masters(): users = channel.users() master = Session().get(uid) json = Protocol.forgeJSON('forward', '["' + master.getName() + '", "' + commande + '"]', {'channel': channelName, 'app': appName}) if self.filter.RunIn(json) == True: channel.history.add(uid, json) for u in users: user = Session().get(u) if user is not None: user.addResponse(json) if len(users) > 0: return True return False