From 2c8c2228c014c207b7aa7ef4cd167843c6fbdc18 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Wed, 15 Mar 2006 23:19:00 +0000 Subject: [PATCH] ZSI-services git-svn-id: file:///home/www/usr01/svn/gnuviechadmin/gnuviech.info/gnuviechadmin/trunk@181 a67ec6bc-e5d5-0310-a910-815c51eb3124 --- backend/src/BusinessMethods.py | 8 + backend/src/SOAPServer.py | 14 +- backend/src/gnuviechadmin_services_server.py | 74 ++++++ common/src/data/gnuviechadmin.wsdl | 184 ++++----------- .../gnuviechadmin_services.py | 107 +-------- .../gnuviechadmin_services_server.py | 172 -------------- .../gnuviechadmin_services_types.py | 217 +----------------- gnome-frontend/src/soapclient/soapclient.py | 19 +- 8 files changed, 159 insertions(+), 636 deletions(-) create mode 100644 backend/src/BusinessMethods.py create mode 100644 backend/src/gnuviechadmin_services_server.py delete mode 100644 common/src/gnuviechadminCommon/gnuviechadmin_services_server.py diff --git a/backend/src/BusinessMethods.py b/backend/src/BusinessMethods.py new file mode 100644 index 0000000..841d231 --- /dev/null +++ b/backend/src/BusinessMethods.py @@ -0,0 +1,8 @@ +# +# Business methoden +# +def login(login, password): + if (('jan' == login) and ('jan' == password)): + return 'XXX' + else: + return None \ No newline at end of file diff --git a/backend/src/SOAPServer.py b/backend/src/SOAPServer.py index 95eb947..3d076cc 100644 --- a/backend/src/SOAPServer.py +++ b/backend/src/SOAPServer.py @@ -6,9 +6,7 @@ from ZSI.ServiceContainer import ServiceContainer from ZSI.dispatch import SOAPRequestHandler -from gnuviechadminCommon.gnuviechadmin_services_server import * - -service = gnuviechadmin() +from gnuviechadmin_services_server import * class mySOAPRequestHandler(SOAPRequestHandler): ''' @@ -20,7 +18,13 @@ class mySOAPRequestHandler(SOAPRequestHandler): ''' self.send_xml(service._wsdl) -def AsServer(iporhost='', port=80, services=(), RequestHandlerClass=SOAPRequestHandler): +def AsServer(iporhost='', port=80, services=(), + RequestHandlerClass=SOAPRequestHandler): + """ + iporhost -- IP address or hostname to bind to + port -- TCP port + services -- list of service instances + """ address = (iporhost, port) sc = ServiceContainer(address, RequestHandlerClass=RequestHandlerClass) for service in services: @@ -28,6 +32,8 @@ def AsServer(iporhost='', port=80, services=(), RequestHandlerClass=SOAPRequestH sc.setNode(service, path) sc.serve_forever() +service = gnuviechadmin() + if __name__ == '__main__': AsServer(iporhost='localhost', port=8080, services=[service], RequestHandlerClass=mySOAPRequestHandler) diff --git a/backend/src/gnuviechadmin_services_server.py b/backend/src/gnuviechadmin_services_server.py new file mode 100644 index 0000000..5e7bc27 --- /dev/null +++ b/backend/src/gnuviechadmin_services_server.py @@ -0,0 +1,74 @@ +from gnuviechadminCommon.gnuviechadmin_services import * +from ZSI.ServiceContainer import ServiceSOAPBinding +import BusinessMethods + +class gnuviechadmin(ServiceSOAPBinding): + soapAction = { + 'https://ssl.gnuviech.info/gnuviechadmin/Authenticate': 'soap_Authenticate', + } + _wsdl = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +""" + + def __init__(self, post='/gnuviechadmin', **kw): + ServiceSOAPBinding.__init__(self, post) + + + def soap_Authenticate(self, ps): + # input vals in request object + args = ps.Parse( AuthRequestWrapper ) + + # assign return values to response object + class SimpleTypeWrapper(str): typecode = AuthResponseWrapper() + + # WARNING specify value eg. SimpleTypeWrapper(1) + response = SimpleTypeWrapper(BusinessMethods.login(login=args._login, password=args._password)) + + # Return the response + return response diff --git a/common/src/data/gnuviechadmin.wsdl b/common/src/data/gnuviechadmin.wsdl index 15b2225..293581c 100644 --- a/common/src/data/gnuviechadmin.wsdl +++ b/common/src/data/gnuviechadmin.wsdl @@ -5,141 +5,51 @@ Version: $Id$ --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + targetNamespace="https://ssl.gnuviech.info/gnuviechadmin/" + xmlns:tns="https://ssl.gnuviech.info/gnuviechadmin/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/src/gnuviechadminCommon/gnuviechadmin_services.py b/common/src/gnuviechadminCommon/gnuviechadmin_services.py index ee5c931..fc241a1 100644 --- a/common/src/gnuviechadminCommon/gnuviechadmin_services.py +++ b/common/src/gnuviechadminCommon/gnuviechadmin_services.py @@ -1,5 +1,5 @@ ################################################## -# gnuviechadmin-common/gnuviechadmin_services.py +# src/gnuviechadminCommon/gnuviechadmin_services.py # generated by ZSI.wsdl2python # # @@ -44,7 +44,8 @@ class gnuviechadminSOAPSOAP: def Authenticate(self, request): """ @param: request to AuthRequest:: - _LoginInfo: ns1.LoginInfo_Def + _login: str + _password: str @return: response is str """ @@ -61,52 +62,6 @@ class gnuviechadminSOAPSOAP: return response - def ListDomains(self, request): - """ - @param: request is str - - @return: response from ListDomainsResponse:: - _DomainList: ns1.DomainList_Def - """ - - if not isinstance(request, basestring): - raise TypeError, "%s incorrect request type" %(request.__class__) - kw = {'requestclass': ListDomainsRequestWrapper} - response = self.binding.Send(None, None, request, soapaction="https://ssl.gnuviech.info/gnuviechadmin/ListDomains", **kw) - response = self.binding.Receive(ListDomainsResponseWrapper()) - - if not isinstance(response, ListDomainsResponse) and\ - not issubclass(ListDomainsResponse, response.__class__): - raise TypeError, "%s incorrect response type" %(response.__class__) - return response - - - def ListMailAliases(self, request): - """ - @param: request to ListMailAliasesRequest:: - _AuthCode: str - _DomainName: str - - @return: response from ListMailAliasesResponse:: - _ListMailAliasesResponse: ns1.MailAliasList_Def - _alias: ns1.MailAlias_Def - _alias: str - _target: str - """ - - if not isinstance(request, ListMailAliasesRequest) and\ - not issubclass(ListMailAliasesRequest, request.__class__): - raise TypeError, "%s incorrect request type" %(request.__class__) - kw = {} - response = self.binding.Send(None, None, request, soapaction="https://ssl.gnuviech.info/gnuviechadmin/ListMailAliases", **kw) - response = self.binding.Receive(ListMailAliasesResponseWrapper()) - - if not isinstance(response, ListMailAliasesResponse) and\ - not issubclass(ListMailAliasesResponse, response.__class__): - raise TypeError, "%s incorrect response type" %(response.__class__) - return response - - class AuthRequest(ns1.LoginInfo_Dec): if not hasattr( ns1.LoginInfo_Dec(), "typecode" ): @@ -135,59 +90,3 @@ class AuthResponseWrapper(AuthResponse): typecode = AuthResponse( name=None, ns=None ).typecode def __init__( self, name=None, ns=None, **kw ): AuthResponse.__init__( self, name=None, ns=None ) - -class ListDomainsRequest(ns1.AuthCode_Dec): - if not hasattr( ns1.AuthCode_Dec(), "typecode" ): - typecode = ns1.AuthCode_Dec() - - def __init__(self, name=None, ns=None): - ns1.AuthCode_Dec.__init__(self, name=None, ns=None) - -class ListDomainsRequestWrapper(ListDomainsRequest): - """wrapper for document:literal message""" - - typecode = ListDomainsRequest( name=None, ns=None ).typecode - def __init__( self, name=None, ns=None, **kw ): - ListDomainsRequest.__init__( self, name=None, ns=None ) - -class ListDomainsResponse(ns1.DomainList_Dec): - if not hasattr( ns1.DomainList_Dec(), "typecode" ): - typecode = ns1.DomainList_Dec() - - def __init__(self, name=None, ns=None): - ns1.DomainList_Dec.__init__(self, name=None, ns=None) - -class ListDomainsResponseWrapper(ListDomainsResponse): - """wrapper for document:literal message""" - - typecode = ListDomainsResponse( name=None, ns=None ).typecode - def __init__( self, name=None, ns=None, **kw ): - ListDomainsResponse.__init__( self, name=None, ns=None ) - -class ListMailAliasesRequest(ns1.ListMailAliasesRequest_Dec): - if not hasattr( ns1.ListMailAliasesRequest_Dec(), "typecode" ): - typecode = ns1.ListMailAliasesRequest_Dec() - - def __init__(self, name=None, ns=None): - ns1.ListMailAliasesRequest_Dec.__init__(self, name=None, ns=None) - -class ListMailAliasesRequestWrapper(ListMailAliasesRequest): - """wrapper for document:literal message""" - - typecode = ListMailAliasesRequest( name=None, ns=None ).typecode - def __init__( self, name=None, ns=None, **kw ): - ListMailAliasesRequest.__init__( self, name=None, ns=None ) - -class ListMailAliasesResponse(ns1.ListMailAliasesResponse_Dec): - if not hasattr( ns1.ListMailAliasesResponse_Dec(), "typecode" ): - typecode = ns1.ListMailAliasesResponse_Dec() - - def __init__(self, name=None, ns=None): - ns1.ListMailAliasesResponse_Dec.__init__(self, name=None, ns=None) - -class ListMailAliasesResponseWrapper(ListMailAliasesResponse): - """wrapper for document:literal message""" - - typecode = ListMailAliasesResponse( name=None, ns=None ).typecode - def __init__( self, name=None, ns=None, **kw ): - ListMailAliasesResponse.__init__( self, name=None, ns=None ) diff --git a/common/src/gnuviechadminCommon/gnuviechadmin_services_server.py b/common/src/gnuviechadminCommon/gnuviechadmin_services_server.py deleted file mode 100644 index 99372f9..0000000 --- a/common/src/gnuviechadminCommon/gnuviechadmin_services_server.py +++ /dev/null @@ -1,172 +0,0 @@ -from gnuviechadmin_services import * -from ZSI.ServiceContainer import ServiceSOAPBinding - -class gnuviechadmin(ServiceSOAPBinding): - soapAction = { - 'https://ssl.gnuviech.info/gnuviechadmin/Authenticate': 'soap_Authenticate', - 'https://ssl.gnuviech.info/gnuviechadmin/ListDomains': 'soap_ListDomains', - 'https://ssl.gnuviech.info/gnuviechadmin/ListMailAliases': 'soap_ListMailAliases', - } - _wsdl = """ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -""" - - def __init__(self, post='/gnuviechadmin', **kw): - ServiceSOAPBinding.__init__(self, post) - - - def soap_Authenticate(self, ps): - # input vals in request object - args = ps.Parse( AuthRequestWrapper ) - - # assign return values to response object - class SimpleTypeWrapper(str): typecode = AuthResponseWrapper() - - # WARNING specify value eg. SimpleTypeWrapper(1) - response = SimpleTypeWrapper() - - # Return the response - return response - - def soap_ListDomains(self, ps): - # input vals in request object - args = ps.Parse( ListDomainsRequestWrapper ) - - # assign return values to response object - response = ListDomainsResponseWrapper() - - # Return the response - return response - - def soap_ListMailAliases(self, ps): - # input vals in request object - args = ps.Parse( ListMailAliasesRequestWrapper ) - - # assign return values to response object - response = ListMailAliasesResponseWrapper() - - # Return the response - return response diff --git a/common/src/gnuviechadminCommon/gnuviechadmin_services_types.py b/common/src/gnuviechadminCommon/gnuviechadmin_services_types.py index 43c7fd9..fff4cf0 100644 --- a/common/src/gnuviechadminCommon/gnuviechadmin_services_types.py +++ b/common/src/gnuviechadminCommon/gnuviechadmin_services_types.py @@ -1,5 +1,5 @@ ################################################## -# gnuviechadmin-common/gnuviechadmin_services_types.py +# src/gnuviechadminCommon/gnuviechadmin_services_types.py # generated by ZSI.wsdl2python # # @@ -20,43 +20,14 @@ from ZSI.TCcompound import Struct class https___ssl_gnuviech_info_gnuviechadmin: targetNamespace = 'https://ssl.gnuviech.info/gnuviechadmin/' - class Domain_Def(ZSI.TCcompound.Struct): + class LoginInfo_Dec(ZSI.TCcompound.Struct): schema = 'https://ssl.gnuviech.info/gnuviechadmin/' - type = 'Domain' + literal = 'LoginInfo' def __init__(self, name=None, ns=None, **kw): - # internal vars - self._domainName = None + name = name or self.__class__.literal + ns = ns or self.__class__.schema - TClist = [ZSI.TC.String(pname="domainName",aname="_domainName"), ] - - oname = name - - if name: - aname = '_%s' % name - if ns: - oname += ' xmlns="%s"' % ns - else: - oname += ' xmlns="%s"' % self.__class__.schema - else: - aname = None - - ZSI.TCcompound.Struct.__init__(self, self.__class__, TClist, - pname=name, inorder=0, - aname=aname, oname=oname, - **kw) - def Get_domainName(self): - return self._domainName - - def Set_domainName(self,_domainName): - self._domainName = _domainName - - - class LoginInfo_Def(ZSI.TCcompound.Struct): - schema = 'https://ssl.gnuviech.info/gnuviechadmin/' - type = 'LoginInfo' - - def __init__(self, name=None, ns=None, **kw): # internal vars self._login = None self._password = None @@ -91,184 +62,6 @@ class https___ssl_gnuviech_info_gnuviechadmin: self._password = _password - class MailAlias_Def(ZSI.TCcompound.Struct): - schema = 'https://ssl.gnuviech.info/gnuviechadmin/' - type = 'MailAlias' - - def __init__(self, name=None, ns=None, **kw): - # internal vars - self._alias = None - self._target = None - - TClist = [ZSI.TC.String(pname="alias",aname="_alias"), ZSI.TC.String(pname="target",aname="_target"), ] - - oname = name - - if name: - aname = '_%s' % name - if ns: - oname += ' xmlns="%s"' % ns - else: - oname += ' xmlns="%s"' % self.__class__.schema - else: - aname = None - - ZSI.TCcompound.Struct.__init__(self, self.__class__, TClist, - pname=name, inorder=0, - aname=aname, oname=oname, - **kw) - def Get_alias(self): - return self._alias - - def Set_alias(self,_alias): - self._alias = _alias - - def Get_target(self): - return self._target - - def Set_target(self,_target): - self._target = _target - - - class ListMailAliasesRequest_Dec(ZSI.TCcompound.Struct): - schema = 'https://ssl.gnuviech.info/gnuviechadmin/' - literal = 'ListMailAliasesRequest' - - def __init__(self, name=None, ns=None, **kw): - name = name or self.__class__.literal - ns = ns or self.__class__.schema - - # internal vars - self._AuthCode = None - self._DomainName = None - - TClist = [ZSI.TC.String(pname="AuthCode",aname="_AuthCode"), ZSI.TC.String(pname="DomainName",aname="_DomainName"), ] - - oname = name - - if name: - aname = '_%s' % name - if ns: - oname += ' xmlns="%s"' % ns - else: - oname += ' xmlns="%s"' % self.__class__.schema - else: - aname = None - - ZSI.TCcompound.Struct.__init__(self, self.__class__, TClist, - pname=name, inorder=0, - aname=aname, oname=oname, - **kw) - def Get_AuthCode(self): - return self._AuthCode - - def Set_AuthCode(self,_AuthCode): - self._AuthCode = _AuthCode - - def Get_DomainName(self): - return self._DomainName - - def Set_DomainName(self,_DomainName): - self._DomainName = _DomainName - - - class DomainList_Def(ZSI.TCcompound.Struct): - schema = 'https://ssl.gnuviech.info/gnuviechadmin/' - type = 'DomainList' - - def __init__(self, name=None, ns=None, **kw): - # internal vars - self._domain = None - - TClist = [ns1.Domain_Def(name="domain", ns=ns), ] - - oname = name - - if name: - aname = '_%s' % name - if ns: - oname += ' xmlns="%s"' % ns - else: - oname += ' xmlns="%s"' % self.__class__.schema - else: - aname = None - - ZSI.TCcompound.Struct.__init__(self, self.__class__, TClist, - pname=name, inorder=0, - aname=aname, oname=oname, - **kw) - def Get_domain(self): - return self._domain - - def Set_domain(self,_domain): - self._domain = _domain - - - class LoginInfo_Dec(LoginInfo_Def): - literal = "LoginInfo" - schema = "https://ssl.gnuviech.info/gnuviechadmin/" - - def __init__(self, name=None, ns=None, **kw): - name = name or self.__class__.literal - ns = ns or self.__class__.schema - - ns1.LoginInfo_Def.__init__(self, name=name, ns=ns, **kw) - self.typecode = ns1.LoginInfo_Def(name=name, ns=ns, **kw) - - class MailAliasList_Def(ZSI.TCcompound.Struct): - schema = 'https://ssl.gnuviech.info/gnuviechadmin/' - type = 'MailAliasList' - - def __init__(self, name=None, ns=None, **kw): - # internal vars - self._alias = None - - TClist = [ns1.MailAlias_Def(name="alias", ns=ns), ] - - oname = name - - if name: - aname = '_%s' % name - if ns: - oname += ' xmlns="%s"' % ns - else: - oname += ' xmlns="%s"' % self.__class__.schema - else: - aname = None - - ZSI.TCcompound.Struct.__init__(self, self.__class__, TClist, - pname=name, inorder=0, - aname=aname, oname=oname, - **kw) - def Get_alias(self): - return self._alias - - def Set_alias(self,_alias): - self._alias = _alias - - - class DomainList_Dec(DomainList_Def): - literal = "DomainList" - schema = "https://ssl.gnuviech.info/gnuviechadmin/" - - def __init__(self, name=None, ns=None, **kw): - name = name or self.__class__.literal - ns = ns or self.__class__.schema - - ns1.DomainList_Def.__init__(self, name=name, ns=ns, **kw) - self.typecode = ns1.DomainList_Def(name=name, ns=ns, **kw) - - class ListMailAliasesResponse_Dec(MailAliasList_Def): - literal = "ListMailAliasesResponse" - schema = "https://ssl.gnuviech.info/gnuviechadmin/" - - def __init__(self, name=None, ns=None, **kw): - name = name or self.__class__.literal - ns = ns or self.__class__.schema - - ns1.MailAliasList_Def.__init__(self, name=name, ns=ns, **kw) - self.typecode = ns1.MailAliasList_Def(name=name, ns=ns, **kw) - class AuthCode_Dec(ZSI.TC.String): literal = "AuthCode" schema = "https://ssl.gnuviech.info/gnuviechadmin/" diff --git a/gnome-frontend/src/soapclient/soapclient.py b/gnome-frontend/src/soapclient/soapclient.py index 8a5579a..2e9bcaf 100644 --- a/gnome-frontend/src/soapclient/soapclient.py +++ b/gnome-frontend/src/soapclient/soapclient.py @@ -1,18 +1,23 @@ #!/usr/bin/python -from SOAPpy import SOAPProxy +import sys import socket +from ZSI import ServiceProxy class SOAPClient: def __init__(self): - self.server = SOAPProxy('http://localhost:8080/', - namespace = 'urn:gnuviech-admin-services') + url = 'http://localhost:8080/gnuviechadmin' + self.service = ServiceProxy(url, use_wsdl=True, + tracefile=sys.stdout) + print 'service is ', self.service + print self.service.__dict__ - def echo(self, value): + def authenticate(self, login, password): try: - return self.server.echo(value); + response = self.service.Authenticate(login=login, password=password) + print response except socket.error: return "couldn't connect" -if __name__ == "__main__": +if __name__ == "__main__": client = SOAPClient() - print client.echo("Ein Test ") \ No newline at end of file + print client.authenticate("jan", "jan") \ No newline at end of file