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
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)
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
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)
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
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)
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)
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
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
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
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]
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)
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) ####################################################################
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")
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)
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)
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"])
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)
def _voipAuthenticate(self,ras_msg): try: user_main.getOnline().voipAuthenticate(ras_msg) return True except IBSError: return False
def _planStop(self,ras_msg): user_main.getOnline().persistentLanStop(ras_msg)
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())
def _internetUpdate(self,ras_msg): user_main.getOnline().updateUser(ras_msg)
def _internetStop(self,ras_msg): user_main.getOnline().internetStop(ras_msg)
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"))
def _voipStop(self, ras_msg): getLogConsole().logStopRasMsg(ras_msg) return user_main.getOnline().voipStop(ras_msg)
def getCredit(self): user_obj = user_main.getOnline().getUserObj(self.getUserID()) if user_obj == None: return self.getInitialCredit() else: return user_obj.calcCurrentCredit()
def update(self): self.add(user_main.getOnline().getOnlinesCount())
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))
def _planStop(self, ras_msg): getLogConsole().logStopRasMsg(ras_msg) return user_main.getOnline().persistentLanStop(ras_msg)
def run(self): user_main.getOnline().checkOnlines()
def _voipStop(self,ras_msg): user_main.getOnline().voipStop(ras_msg)
def _internetUpdate(self, ras_msg): getLogConsole().logUpdateRasMsg(ras_msg) return user_main.getOnline().updateUser(ras_msg)
def _voipUpdate(self,ras_msg): user_main.getOnline().updateUser(ras_msg)
def __getUserObj(self, ras_msg): return user_main.getOnline().getUserObjByUniqueID( ras_msg.getRasID(), ras_msg.getUniqueIDValue())
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())
def getCredit(self): user_obj=user_main.getOnline().getUserObj(self.getUserID()) if user_obj==None: return self.getInitialCredit() else: return user_obj.calcCurrentCredit()
def _internetStop(self, ras_msg): getLogConsole().logStopRasMsg(ras_msg) return user_main.getOnline().internetStop(ras_msg)