def __init__(self, jid, password, configuration, name, auto_register=True, auto_reconnect=True): """ The constructor of the class. @type jid: string @param jid: the jid of the client. @type password: string @param password: the password of the JID account. """ self.name = name self.xmppstatus = None self.xmppstatusshow = None self.xmppclient = None self.vCard = None self.password = password self.jid = jid self.resource = self.jid.getResource() self.roster = None self.roster_retreived = False self.configuration = configuration self.auto_register = auto_register self.auto_reconnect = auto_reconnect self.messages_registrar = [] self.isAuth = False self.loop_status = ARCHIPEL_XMPP_LOOP_OFF self.pubsubserver = self.configuration.get("GLOBAL", "xmpp_pubsub_server") self.log = TNArchipelLogger(self) self.pubSubNodeEvent = None self.pubSubNodeLog = None self.entity_type = "not-defined" self.permission_center = None self.plugins = []; if isinstance(self, TNHookableEntity): TNHookableEntity.__init__(self, self.log) if isinstance(self, TNAvatarControllableEntity): TNAvatarControllableEntity.__init__(self, configuration, self.permission_center, self.xmppclient, self.log) if isinstance(self, TNTaggableEntity): TNTaggableEntity.__init__(self, self.pubsubserver, self.jid, self.xmppclient, self.permission_center, self.log) if self.name == "auto": self.name = self.resource if isinstance(self, TNHookableEntity): self.create_hook("HOOK_ARCHIPELENTITY_XMPP_CONNECTED") self.create_hook("HOOK_ARCHIPELENTITY_XMPP_DISCONNECTED") self.create_hook("HOOK_ARCHIPELENTITY_XMPP_AUTHENTICATED") self.create_hook("HOOK_ARCHIPELENTITY_XMPP_LOOP_STARTED") self.create_hook("HOOK_ARCHIPELENTITY_XMPP_LOOP_STOPPED") ## recover/create pubsub after connection self.register_hook("HOOK_ARCHIPELENTITY_XMPP_AUTHENTICATED", self.recover_pubsubs) self.log.info("jid defined as %s" % (str(self.jid))) ip_conf = self.configuration.get("GLOBAL", "machine_ip") if ip_conf == "auto": self.ipaddr = socket.gethostbyname(socket.gethostname()) else: self.ipaddr = ip_conf
def register_handler(self): """ this method have to be overloaded in order to register handler for XMPP events """ if isinstance(self, TNTaggableEntity): TNTaggableEntity.register_handler(self) if isinstance(self, TNAvatarControllableEntity): TNAvatarControllableEntity.register_handler(self) self.xmppclient.RegisterHandler('presence', self.process_presence) self.xmppclient.RegisterHandler('message', self.process_message, typ="chat") self.xmppclient.RegisterHandler('iq', self.process_permission_iq, ns=ARCHIPEL_NS_PERMISSIONS) self.xmppclient.RegisterHandler('iq', self.process_subscription_iq, ns=ARCHIPEL_NS_SUBSCRIPTION) for plugin in self.plugins: self.log.info("PLUGIN: registering stanza handler for plugin %s" % plugin["info"]["identifier"]) plugin["plugin"].register_for_stanza() self.log.info("handlers registred")
def init_permissions(self): """ Initializes the permissions overrides this to add custom permissions """ self.log.info("initializing permissions of %s" % self.jid) if isinstance(self, TNTaggableEntity): TNTaggableEntity.init_permissions(self) if isinstance(self, TNAvatarControllableEntity): TNAvatarControllableEntity.init_permissions(self) self.permission_center.create_permission("all", "All permissions are granted", False) self.permission_center.create_permission("presence", "Authorizes users to request presences", False) self.permission_center.create_permission("message", "Authorizes users to send messages", False) self.permission_center.create_permission("permission_get", "Authorizes users to get all permissions", True) self.permission_center.create_permission("permission_getown", "Authorizes users to get only own permissions", False) self.permission_center.create_permission("permission_list", "Authorizes users to list existing", False) self.permission_center.create_permission("permission_set", "Authorizes users to set all permissions", False) self.permission_center.create_permission("permission_setown", "Authorizes users to set only own permissions", False) self.permission_center.create_permission("subscription_add", "Authorizes users add others in entity roster", False) self.permission_center.create_permission("subscription_remove", "Authorizes users remove others in entity roster", False) self.log.info("permissions of %s initialized" % self.jid)