Add support for XEP-0279: Server IP Check
This commit is contained in:
		
							
								
								
									
										1
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								setup.py
									
									
									
									
									
								
							@@ -100,6 +100,7 @@ packages     = [ 'sleekxmpp',
 | 
			
		||||
                 'sleekxmpp/plugins/xep_0235',
 | 
			
		||||
                 'sleekxmpp/plugins/xep_0249',
 | 
			
		||||
                 'sleekxmpp/plugins/xep_0258',
 | 
			
		||||
                 'sleekxmpp/plugins/xep_0279',
 | 
			
		||||
                 'sleekxmpp/features',
 | 
			
		||||
                 'sleekxmpp/features/feature_mechanisms',
 | 
			
		||||
                 'sleekxmpp/features/feature_mechanisms/stanza',
 | 
			
		||||
 
 | 
			
		||||
@@ -66,5 +66,6 @@ __all__ = [
 | 
			
		||||
    'xep_0256',  # Last Activity in Presence
 | 
			
		||||
    'xep_0258',  # Security Labels in XMPP
 | 
			
		||||
    'xep_0270',  # XMPP Compliance Suites 2010
 | 
			
		||||
    'xep_0279',  # Server IP Check
 | 
			
		||||
    'xep_0302',  # XMPP Compliance Suites 2012
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								sleekxmpp/plugins/xep_0279/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								sleekxmpp/plugins/xep_0279/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
"""
 | 
			
		||||
    SleekXMPP: The Sleek XMPP Library
 | 
			
		||||
    Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
 | 
			
		||||
    This file is part of SleekXMPP.
 | 
			
		||||
 | 
			
		||||
    See the file LICENSE for copying permission.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
from sleekxmpp.plugins.base import register_plugin
 | 
			
		||||
 | 
			
		||||
from sleekxmpp.plugins.xep_0279 import stanza
 | 
			
		||||
from sleekxmpp.plugins.xep_0279.stanza import IPCheck
 | 
			
		||||
from sleekxmpp.plugins.xep_0279.ipcheck import XEP_0279
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
register_plugin(XEP_0279)
 | 
			
		||||
							
								
								
									
										39
									
								
								sleekxmpp/plugins/xep_0279/ipcheck.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								sleekxmpp/plugins/xep_0279/ipcheck.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
"""
 | 
			
		||||
    SleekXMPP: The Sleek XMPP Library
 | 
			
		||||
    Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
 | 
			
		||||
    This file is part of SleekXMPP.
 | 
			
		||||
 | 
			
		||||
    See the file LICENSE for copying permission.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import logging
 | 
			
		||||
 | 
			
		||||
from sleekxmpp import Iq
 | 
			
		||||
from sleekxmpp.plugins import BasePlugin
 | 
			
		||||
from sleekxmpp.xmlstream import register_stanza_plugin
 | 
			
		||||
from sleekxmpp.plugins.xep_0279 import stanza, IPCheck
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class XEP_0279(BasePlugin):
 | 
			
		||||
 | 
			
		||||
    name = 'xep_0279'
 | 
			
		||||
    description = 'XEP-0279: Server IP Check'
 | 
			
		||||
    dependencies = set(['xep_0030'])
 | 
			
		||||
    stanza = stanza
 | 
			
		||||
 | 
			
		||||
    def plugin_init(self):
 | 
			
		||||
        register_stanza_plugin(Iq, IPCheck)
 | 
			
		||||
 | 
			
		||||
    def session_bind(self, jid):
 | 
			
		||||
        self.xmpp['xep_0030'].add_feature('urn:xmpp:sic:0')
 | 
			
		||||
 | 
			
		||||
    def plugin_end(self):
 | 
			
		||||
        self.xmpp['xep_0030'].del_feature(feature='urn:xmpp:sic:0')
 | 
			
		||||
 | 
			
		||||
    def check_ip(self, ifrom=None, block=True, timeout=None, callback=None):
 | 
			
		||||
        iq = self.xmpp.Iq()
 | 
			
		||||
        iq['type'] = 'get'
 | 
			
		||||
        iq['from'] = ifrom
 | 
			
		||||
        iq.enable('ip_check')
 | 
			
		||||
        return iq.send(block=block, timeout=timeout, callback=callback)
 | 
			
		||||
							
								
								
									
										30
									
								
								sleekxmpp/plugins/xep_0279/stanza.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								sleekxmpp/plugins/xep_0279/stanza.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
"""
 | 
			
		||||
    SleekXMPP: The Sleek XMPP Library
 | 
			
		||||
    Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
 | 
			
		||||
    This file is part of SleekXMPP.
 | 
			
		||||
 | 
			
		||||
    See the file LICENSE for copying permission.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
from sleekxmpp.xmlstream import ElementBase
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class IPCheck(ElementBase):
 | 
			
		||||
 | 
			
		||||
    name = 'ip'
 | 
			
		||||
    namespace = 'urn:xmpp:sic:0'
 | 
			
		||||
    plugin_attrib = 'ip_check'
 | 
			
		||||
    interfaces = set(['ip_check'])
 | 
			
		||||
    is_extension = True
 | 
			
		||||
 | 
			
		||||
    def get_ip_check(self):
 | 
			
		||||
        return self.xml.text
 | 
			
		||||
 | 
			
		||||
    def set_ip_check(self, value):
 | 
			
		||||
        if value:
 | 
			
		||||
            self.xml.text = value
 | 
			
		||||
        else:
 | 
			
		||||
            self.xml.text = ''
 | 
			
		||||
 | 
			
		||||
    def del_ip_check(self):
 | 
			
		||||
        self.xml.text = ''
 | 
			
		||||
		Reference in New Issue
	
	Block a user