|
- #!/usr/bin/env python
-
- # Copyright (c) 2001 actzero, inc. All rights reserved.
-
- # This is a server for the XMethods matrix
- # (http://jake.soapware.org/currentXmethodsResults).
-
- import getopt
- import sys
-
- sys.path.insert (1, '..')
-
- from SOAPpy import SOAP
-
- if SOAP.Config.SSLserver:
- from M2Crypto import SSL
-
- ident = '$Id: silabserver.py 98 2003-03-08 05:10:01Z warnes $'
-
- def echoFloat (inputFloat):
- return inputFloat
-
- def echoFloatArray (inputFloatArray):
- return inputFloatArray
-
- def echoInteger (inputInteger):
- return inputInteger
-
- def echoIntegerArray (inputIntegerArray):
- return inputIntegerArray
-
- def echoString (inputString):
- return inputString
-
- def echoStringArray (inputStringArray):
- return inputStringArray
-
- def echoStruct (inputStruct):
- return inputStruct
-
- def echoStructArray (inputStructArray):
- return inputStructArray
-
- def echoVoid ():
- return SOAP.voidType()
-
- def echoDate (inputDate):
- return SOAP.dateTimeType (inputDate)
-
- def echoBase64 (inputBase64):
- return SOAP.binaryType (inputBase64)
-
- namespace = 'http://soapinterop.org/'
-
- DEFAULT_HOST = 'localhost'
- DEFAULT_HTTP_PORT = 8080
- DEFAULT_HTTPS_PORT = 8443
-
- def usage (error = None):
- sys.stdout = sys.stderr
-
- if error != None:
- print error
-
- print """usage: %s [options]
- If a long option shows an argument is mandatory, it's mandatory for the
- equivalent short option also. The default (if any) is shown in brackets.
-
- -?, --help display this usage
- -h, --host=HOST use HOST in the address to listen on [%s]
- -p, --port=PORT listen on PORT [%d]
- """ % (sys.argv[0], DEFAULT_HOST, DEFAULT_HTTP_PORT),
-
- if SOAP.Config.SSLserver:
- print " -s, --ssl serve using SSL"
-
- sys.exit (0)
-
- def main ():
- host = DEFAULT_HOST
- port = None
- ssl = 0
-
- try:
- opts = '?h:p:'
- args = ['help', 'host', 'port']
-
- if SOAP.Config.SSLserver:
- opts += 's'
- args += ['ssl']
-
- opts, args = getopt.getopt (sys.argv[1:], opts, args)
-
- for opt, arg in opts:
- if opt in ('-?', '--help'):
- usage ()
- elif opt in ('-h', '--host'):
- host = arg
- elif opt in ('-p', '--port'):
- port = int (arg)
- elif opt in ('-s', '--ssl'):
- ssl = 1
- else:
- raise AttributeError, \
- "Recognized but unimplemented option `%s'" % opt
- except SystemExit:
- raise
- except:
- usage (sys.exc_info ()[1])
-
- if port == None:
- port = [DEFAULT_HTTP_PORT, DEFAULT_HTTPS_PORT][ssl]
-
- if ssl:
- ssl_context = SSL.Context()
- ssl_context.load_cert('server.pem')
- else:
- ssl_context = None
-
- server = SOAP.SOAPServer ((host, port), namespace = namespace,
- ssl_context = ssl_context)
-
- server.registerFunction (echoFloat)
- server.registerFunction (echoFloatArray)
- server.registerFunction (echoInteger)
- server.registerFunction (echoIntegerArray)
- server.registerFunction (echoString)
- server.registerFunction (echoStringArray)
- server.registerFunction (echoStruct)
- server.registerFunction (echoStructArray)
- server.registerFunction (echoVoid)
- server.registerFunction (echoDate)
- server.registerFunction (echoBase64)
-
- server.serve_forever()
-
- if __name__ == '__main__':
- try:
- sys.exit (main ())
- except KeyboardInterrupt:
- sys.exit (0)
|