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_0235',
 | 
				
			||||||
                 'sleekxmpp/plugins/xep_0249',
 | 
					                 'sleekxmpp/plugins/xep_0249',
 | 
				
			||||||
                 'sleekxmpp/plugins/xep_0258',
 | 
					                 'sleekxmpp/plugins/xep_0258',
 | 
				
			||||||
 | 
					                 'sleekxmpp/plugins/xep_0279',
 | 
				
			||||||
                 'sleekxmpp/features',
 | 
					                 'sleekxmpp/features',
 | 
				
			||||||
                 'sleekxmpp/features/feature_mechanisms',
 | 
					                 'sleekxmpp/features/feature_mechanisms',
 | 
				
			||||||
                 'sleekxmpp/features/feature_mechanisms/stanza',
 | 
					                 'sleekxmpp/features/feature_mechanisms/stanza',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,5 +66,6 @@ __all__ = [
 | 
				
			|||||||
    'xep_0256',  # Last Activity in Presence
 | 
					    'xep_0256',  # Last Activity in Presence
 | 
				
			||||||
    'xep_0258',  # Security Labels in XMPP
 | 
					    'xep_0258',  # Security Labels in XMPP
 | 
				
			||||||
    'xep_0270',  # XMPP Compliance Suites 2010
 | 
					    'xep_0270',  # XMPP Compliance Suites 2010
 | 
				
			||||||
 | 
					    'xep_0279',  # Server IP Check
 | 
				
			||||||
    'xep_0302',  # XMPP Compliance Suites 2012
 | 
					    '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