Esempio n. 1
0
	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)
Esempio n. 2
0
    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)
Esempio n. 3
0
	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
Esempio n. 4
0
    def __cmd_list(self, args):
        """
        Retourne la liste d'utilisateurs d'un channel
        """
        from commons.session import Session

        str = []
        channelName = args['channel']
        appName = args['app']
        if args['channel'] is None:
            users = self.client.room.list_users(channelName=args, appName=appName)
        else:
            users = self.client.room.list_users(channelName=channelName, appName=appName)
        
        ruid = args.get('uid')
        channel = self.client.room.Channel(channelName=channelName, appName=appName)
        
        isMaster = False
        if channel:
            isMaster = channel.isMaster( ruid )
        
        for u in users:
            user = Session().get(u)
            if user is not None:
                # if sender isclient and user is client: continue
                key = user.unique_key
                isMaster2 = False
                if channel:
                    isMaster2 = channel.isMaster( key )
                if not isMaster and not isMaster2:
                    continue
                status = user.status
                name = user.getName()
                to_send = {"name": name, "key": key, "status": status}
                str.append(to_send)
        return (simplejson.JSONEncoder().encode(str))
Esempio n. 5
0
	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)