Example #1
0
 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
Example #2
0
 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")
Example #3
0
 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)