iro/xmlrpc/AuthentificateXMLRPCServer.py
branchdevel
changeset 240 3406d3bf05d4
parent 239 4cf5e664c847
child 241 546316b0b09c
--- a/iro/xmlrpc/AuthentificateXMLRPCServer.py	Wed Mar 21 19:41:55 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-# Server code
-import SimpleXMLRPCServer
-import string,base64
-
-class AuthentificateXMLRPCRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
-    def do_POST(self):
-        try:
-            header =  self.headers['Authorization']
-            type, user_passwd = header.split()
-            username, password = string.split(base64.decodestring(user_passwd), ':')
-            if self.testUser(username,password):
-                SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.do_POST(self)
-            else:
-                self.report_error(401)  
-        except:
-            self.report_error(401)
-
-    def report_error (self,code):
-        '''
-        Send back an errorcode
-        '''
-        #it is important to read out the complete sended request , 
-        # but throw the data away, because an error should be send back
-        try:
-            max_chunk_size = 10*1024*1024
-            size_remaining = int(self.headers["content-length"])
-            while size_remaining:
-                chunk_size = min(size_remaining, max_chunk_size)
-                size_remaining -= len(self.rfile.read(chunk_size))
-        except:
-            pass
-
-        #now just send the error back
-        special_errors={401:self.report_401, 
-                                    404:self.report_404}
-        if special_errors.has_key(code):
-             special_errors[code]()
-        else:
-            self.send_response(code)
-            self.end_headers()
-            self.connection.shutdown(1)
-    
-    def report_401(self):
-        self.send_response(401)
-        self.send_header("WWW-Authenticate", 'Basic realm="%s"'% self.server.relam)
-        response = 'Unauthorised'
-        self.send_header("Content-type", "text/plain")
-        self.send_header("Content-length", str(len(response)))
-        self.end_headers()
-        self.wfile.write(response)
-        # shut down the connection
-        self.wfile.flush()
-        self.connection.shutdown(1)
-        
-    def testUser(self,username,password):
-        """
-        Function for testing authentification
-        """
-        if username=="test" and password=="test":
-                return True
-
-        return False
-
-
-
-def test():
-    server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8000),AuthentificateXMLRPCRequestHandler)
-    server.relam="xmlrpc"
-    server.register_introspection_functions()
-    server.register_function(lambda x: x*x, 'square')
-    server.serve_forever()
-
-if __name__ == '__main__':
-    test()
-
-