예제 #1
0
    def _internetAuthenticate(self,ras_msg):
	try:
	    user_main.getOnline().internetAuthenticate(ras_msg)
	    return True
	except IBSError:
#	    logException(LOG_DEBUG,"Authenticate for user %s"%ras_msg["username"])
	    return False
예제 #2
0
 def killAllUsers(self, kill, kill_reason):
     """
         kill all online users
         kill(boolean): if set to true, kill the users, else, clear the users
         kill_reason(str): kill reason that will be submitted for user kill
     """
     user_main.getOnline().killAllUsers(kill, kill_reason)
예제 #3
0
    def _planAuthenticate(self,ras_msg):
	try:
	    user_main.getOnline().persistentLanAuthenticate(ras_msg)
	    return True
	except IBSError:
#	    logException(LOG_DEBUG,"Authenticate for user %s"%ras_msg["mac"])
	    return False
예제 #4
0
    def _voipUpdate(self, ras_msg):
        getLogConsole().logUpdateRasMsg(ras_msg)

        try:
            user_main.getOnline().updateUser(ras_msg)
            user_main.getVoIPErrors().applySuccess(ras_msg)
        except IBSError, e:
            user_main.getVoIPErrors().applyFailure(ras_msg, e)
예제 #5
0
    def _planAuthenticate(self, ras_msg):
        getLogConsole().logAuthRasMsg(ras_msg)
        try:

            user_main.getOnline().persistentLanAuthenticate(ras_msg)

            getLogConsole().logAuthRasMsgSuccess(ras_msg)

            return True
        except IBSError, e:
            getLogConsole().logAuthRasMsgFailure(ras_msg, e)

            return False
예제 #6
0
    def _voipAuthenticate(self, ras_msg):
        getLogConsole().logAuthRasMsg(ras_msg)

        try:
            user_main.getOnline().voipAuthenticate(ras_msg)

            getLogConsole().logAuthRasMsgSuccess(ras_msg)

            return user_main.getVoIPErrors().applySuccess(ras_msg)
        except IBSError, e:
            getLogConsole().logAuthRasMsgFailure(ras_msg, e)

            return user_main.getVoIPErrors().applyFailure(ras_msg, e)
예제 #7
0
 def killUser(self, user_id, ras_ip, unique_id_val, kill, admin_name):
     """
         kill user on "ras_ip" and "unique_id_val" and check that user is "user_id"
         kill(boolean): either kill, or just clear the user from onlines
     """
     ras_id = ras_main.getLoader().getRasByIP(ras_ip).getRasID()
     if kill:
         user_main.getOnline().killUser(
             user_id, ras_id, unique_id_val,
             errorText("USER_LOGIN", "KILLED_BY_ADMIN", False) % admin_name)
     else:
         user_main.getOnline().clearUser(
             user_id, ras_id, unique_id_val,
             errorText("USER_LOGIN", "CLEARED_BY_ADMIN", False) %
             admin_name)
예제 #8
0
 def isUserOnline(self, ras_msg):
     """
         checks if user that uniqud_id has been set in ras_msg is
         online. Return True if he's online and False otherwise
     """
     return user_main.getOnline().getUserObjByUniqueID(
         self.getRasID(), ras_msg.getUniqueIDValue()) != None
예제 #9
0
파일: online.py 프로젝트: moxwose/freeIBS
def getFormattedOnlineUsers(date_type):
    """
	return a list of online user dics.
	return value is a list to be sortable
    """
    onlines_dic=user_main.getOnline().getOnlineUsersByRas()
    onlines=[]
    for (ras_id,unique_id) in onlines_dic:
	user_obj=onlines_dic[(ras_id,unique_id)]
	try:
		instance=user_obj.getInstanceFromUniqueID(ras_id,unique_id)
		if instance==None:
		    continue
	        instance_info=user_obj.getInstanceInfo(instance)
		report_dic={"user_id":user_obj.getUserID(),
	    	         "service":user_obj.getType(),
	    		 "ras_ip":ras_main.getLoader().getRasByID(instance_info["ras_id"]).getRasIP(),
			 "unique_id":instance_info["unique_id"],
			 "unique_id_val":instance_info["unique_id_val"],
			 "login_time":AbsDateFromEpoch(user_obj.getTypeObj().getLoginTime(instance)).getDate(date_type),
			 "login_time_epoch":user_obj.getTypeObj().getLoginTime(instance),
			 "duration_secs":time.time()-user_obj.getTypeObj().getLoginTime(instance),
			 "attrs":instance_info["attrs"],
			 "owner_id":user_obj.getLoadedUser().getBasicUser().getOwnerObj().getAdminID(),
			 "owner_name":user_obj.getLoadedUser().getBasicUser().getOwnerObj().getUsername(),
			 "current_credit":user_obj.calcCurrentCredit()
    			 }
		report_dic.update(user_obj.getTypeObj().getOnlineReportDic(instance))
	    	onlines.append(report_dic)
	except:
		logException(LOG_DEBUG)
		pass
    return onlines
예제 #10
0
    def _internetAuthenticate(self, ras_msg):
        getLogConsole().logAuthRasMsg(ras_msg)

        try:
            user_main.getOnline().internetAuthenticate(ras_msg)

            getLogConsole().logAuthRasMsgSuccess(ras_msg)

            return True

        except IBSError, e:
            user_main.getDialerErrors().applyToRasMsg(ras_msg, e)

            getLogConsole().logAuthRasMsgFailure(ras_msg, e)

            return False
예제 #11
0
 def __postMessageToUserUpdateLastID(self, user_ids, message_ids):
     if user_ids == None:
         self.last_to_all_message_id = message_ids[0]
     else:
         for i in range(len(user_ids)):
             user_id = user_ids[i]
             user_obj = user_main.getOnline().getUserObj(user_id)
             if user_obj:
                 user_obj.last_message_id = message_ids[i]
예제 #12
0
    def __getUserAndInstance(self, user_id, ras_id, unique_id):
        user_obj = user_main.getOnline().getUserObjByUniqueID(
            ras_id, unique_id)
        if user_obj == None or user_obj.getUserID() != user_id:
            raise GeneralException(
                errorText("GENERAL", "NOT_ONLINE") %
                (user_id, ras_id, unique_id))

        instance = user_obj.getInstanceFromUniqueID(ras_id, unique_id)
        return (user_obj, instance)
예제 #13
0
    def killUser(self,user_id,ras_ip,unique_id_val,kill,admin_name):
	"""
	    kill user on "ras_ip" and "unique_id_val" and check that user is "user_id"
	    kill(boolean): either kill, or just clear the user from onlines
	"""
	ras_id=ras_main.getLoader().getRasByIP(ras_ip).getRasID()
	user_obj=user_main.getOnline().getUserObjByUniqueID(ras_id,unique_id_val)
	if user_obj==None or user_obj.getUserID()!=user_id:
	    raise GeneralException(errorText("GENERAL","NOT_ONLINE")%(user_id,ras_ip,unique_id_val))

	instance=user_obj.getInstanceFromUniqueID(ras_id,unique_id_val)

	if kill:
	    user_obj.setKillReason(instance,errorText("USER_LOGIN","KILLED_BY_ADMIN",False)%admin_name)
	    user_obj.getTypeObj().killInstance(instance)
	else:
	    user_main.getOnline().clearUser(user_obj,instance,errorText("USER_LOGIN","CLEARED_BY_ADMIN",False)%admin_name)
	    
####################################################################
예제 #14
0
    def __doLoop(self, loop_clients):
        """
            actually run the loop on online users
        """
        onlines = user_main.getOnline().getOnlineUsers()
        for user_obj in onlines.itervalues():
            for instance in xrange(1, user_obj.instances + 1):
                self.__runMethod(loop_clients, "processInstance", user_obj,
                                 instance)

        self.__runMethod(loop_clients, "loopEnd")
예제 #15
0
    def shutdownUsers(self):
        kill_reason = errorText("USER_LOGIN", "SYSTEM_SHUTTING_DOWN", False)

        if defs.KILL_USERS_ON_SHUTDOWN:
            self.killAllUsers(True, kill_reason)
            c = 0
            while user_main.getOnline().getOnlinesCount():
                toLog(
                    "shutdownUsers: Loop %s, %s users online" %
                    (c, user_main.getOnline().getOnlinesCount()), LOG_DEBUG)

                if c == defs.KILL_USERS_SHUTDOWN_WAIT_TIME:
                    toLog(
                        "shutdownUsers: Clearing %s online users" %
                        user_main.getOnline().getOnlinesCount(), LOG_DEBUG)
                    self.killAllUsers(False, kill_reason)
                    break

                time.sleep(1)
                c += 1
        else:
            self.killAllUsers(False, kill_reason)
예제 #16
0
파일: online.py 프로젝트: sankopay/IBSng
def getFormattedOnlineUsers(date_type, onlines_filter):
    """
        return a list of online user dics. format is (normal_list, voip_list)
        return value is a tuple of lists to be sortable
    """
    onlines_dic=user_main.getOnline().getOnlineUsersByRas()
    normal_onlines=[]
    voip_onlines=[]
    for (ras_id,unique_id) in onlines_dic:
        user_obj=onlines_dic[(ras_id,unique_id)]
        try:
                instance = user_obj.getInstanceFromUniqueID(ras_id,unique_id)
                if instance == None: #eh?
                    continue
                
                #continue if we are not intreseted in this instance
                if not onlines_filter.filter(user_obj, instance):
                    continue
                
                instance_info=user_obj.getInstanceInfo(instance)
                report_dic={"user_id":user_obj.getUserID(),
                         "service":user_obj.getType(),
                         "ras_ip":ras_main.getLoader().getRasByID(instance_info["ras_id"]).getRasIP(),
                         "ras_description":ras_main.getLoader().getRasByID(instance_info["ras_id"]).getRasDesc(),
                         "unique_id":instance_info["unique_id"],
                         "unique_id_val":instance_info["unique_id_val"],
                         "login_time":AbsDateFromEpoch(user_obj.getTypeObj().getLoginTime(instance)).getDate(date_type),
                         "login_time_epoch":user_obj.getTypeObj().getLoginTime(instance),
                         "duration_secs":time.time()-user_obj.getTypeObj().getLoginTime(instance),
                         "attrs":instance_info["attrs"],
                         "owner_id":user_obj.getLoadedUser().getBasicUser().getOwnerObj().getAdminID(),
                         "owner_name":user_obj.getLoadedUser().getBasicUser().getOwnerObj().getUsername(),
                         "current_credit":user_obj.calcCurrentCredit(),
                         "group_name":user_obj.getLoadedUser().getBasicUser().getGroupObj().getGroupName()
                         }
                report_dic.update(user_obj.getTypeObj().getOnlineReportDic(instance))

                if user_obj.getType() == "VoIP":
                    voip_onlines.append(report_dic)
                else:
                    normal_onlines.append(report_dic)
        except:
                logException(LOG_DEBUG)
                pass

    return (normal_onlines, voip_onlines)
예제 #17
0
파일: asterisk.py 프로젝트: sankopay/IBSng
    def authorize(self, username, destination, caller_id, channel, unique_id):
        ras_msg = self.__createRasMsg(channel, unique_id)
        ras_msg["caller_id"] = caller_id
        ras_msg["voip_username"] = username
        ras_msg["calc_remaining_time"] = True
        ras_msg["start_accounting"] = True
        ras_msg["called_number"] = destination
        ras_msg.setAction("VOIP_AUTHORIZE")

        if ras_msg.send():
            loaded_user = user_main.getUserPool().getUserByVoIPUsername(
                username)
            user_obj = user_main.getOnline().getUserObj(
                loaded_user.getUserID())
            return user_obj.getTypeObj().getRemainingTime(
                user_obj.getInstanceFromRasMsg(ras_msg))
        else:
            raise GeneralException(ras_msg["error_key"])
예제 #18
0
    def getUserLastMessageID(self, user_id):
        """
            return Last Message ID for user with id "user_id"
        """
        self.__getUserLastMessageIDCheckInput(user_id)
        loaded_user = user_main.getUserPool().getUserByID(user_id)
        if loaded_user.isOnline():
            user_obj = user_main.getOnline().getUserObj(user_id)
            if hasattr(user_obj, "last_message_id"):
                return max(user_obj.last_message_id,
                           self.last_to_all_message_id)

        last_message_id = self.__getLastMessageIDForUser(user_id)

        if loaded_user.isOnline() and "user_obj" in locals(
        ):  #prevent a rare race condition
            user_obj.last_message_id = last_message_id

        return max(last_message_id, self.last_to_all_message_id)
예제 #19
0
    def _voipAuthenticate(self,ras_msg):
	try:
	    user_main.getOnline().voipAuthenticate(ras_msg)
	    return True
	except IBSError:
	    return False
예제 #20
0
    def _planStop(self,ras_msg):
	user_main.getOnline().persistentLanStop(ras_msg)
예제 #21
0
파일: user_pool.py 프로젝트: sankopay/IBSng
 def __reloadOnlineUser(self, loaded_user):
     new_loaded_user = user_main.getUserLoader().getLoadedUserByUserIDs(
         (loaded_user.getUserID(), ))[0]
     loaded_user._reload(new_loaded_user)
     user_main.getOnline().reloadUser(loaded_user.getUserID())
예제 #22
0
    def _internetUpdate(self,ras_msg):
	user_main.getOnline().updateUser(ras_msg)
예제 #23
0
    def _internetStop(self,ras_msg):
	user_main.getOnline().internetStop(ras_msg)
예제 #24
0
 def __checkRasOnlines(self, ras_obj):
     """
         check if there's anyone online on ras, and don't allow deactivating if, anyone's online
     """
     if user_main.getOnline().isAnyOneOnlineOnRas(ras_obj.getRasID()):
         raise GeneralException(errorText("RAS", "RAS_HAS_ONLINE_USERS"))
예제 #25
0
    def _voipStop(self, ras_msg):
        getLogConsole().logStopRasMsg(ras_msg)

        return user_main.getOnline().voipStop(ras_msg)
예제 #26
0
 def getCredit(self):
     user_obj = user_main.getOnline().getUserObj(self.getUserID())
     if user_obj == None:
         return self.getInitialCredit()
     else:
         return user_obj.calcCurrentCredit()
예제 #27
0
 def update(self):
     self.add(user_main.getOnline().getOnlinesCount())
예제 #28
0
from core.user import user_main
onlines=user_main.getOnline().getOnlineUsers()
for user_id in onlines:
    print "%s\t%s\t%s"%(user_id,onlines[user_id].calcCurrentCredit(),onlines[user_id].getTypeObj().getInOutBytes(1))
print str(onlines[1].getInstanceInfo(1))
#print str(onlines[1].getInstanceInfo(2))

예제 #29
0
    def _planStop(self, ras_msg):
        getLogConsole().logStopRasMsg(ras_msg)

        return user_main.getOnline().persistentLanStop(ras_msg)
예제 #30
0
 def run(self):
     user_main.getOnline().checkOnlines()
예제 #31
0
    def _voipStop(self,ras_msg):
	user_main.getOnline().voipStop(ras_msg)
예제 #32
0
    def _internetUpdate(self, ras_msg):
        getLogConsole().logUpdateRasMsg(ras_msg)

        return user_main.getOnline().updateUser(ras_msg)
예제 #33
0
    def _voipUpdate(self,ras_msg):
	user_main.getOnline().updateUser(ras_msg)
예제 #34
0
 def __getUserObj(self, ras_msg):
     return user_main.getOnline().getUserObjByUniqueID(
         ras_msg.getRasID(), ras_msg.getUniqueIDValue())
예제 #35
0
    def __reloadOnlineUser(self,loaded_user):
	new_loaded_user=user_main.getUserLoader().getLoadedUserByUserID(loaded_user.getUserID())
	loaded_user._reload(new_loaded_user)
	user_main.getOnline().reloadUser(loaded_user.getUserID())
예제 #36
0
파일: online.py 프로젝트: moxwose/freeIBS
    def run(self):
	user_main.getOnline().checkOnlines()



	
예제 #37
0
    def getCredit(self):
	user_obj=user_main.getOnline().getUserObj(self.getUserID())
	if user_obj==None:
	    return self.getInitialCredit()
	else:
	    return user_obj.calcCurrentCredit()
예제 #38
0
    def _internetStop(self, ras_msg):
        getLogConsole().logStopRasMsg(ras_msg)

        return user_main.getOnline().internetStop(ras_msg)