diff --git a/.gitignore b/.gitignore index 11041c7..66dbf51 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.egg-info +*.pyc diff --git a/RELEASE_INFO b/CHANGES.txt similarity index 86% rename from RELEASE_INFO rename to CHANGES.txt index 3597f36..b6e9af7 100644 --- a/RELEASE_INFO +++ b/CHANGES.txt @@ -1,13 +1,17 @@ -Release 0.12.1 of SOAPpy ------------------------- +CHANGELOG +================== + +0.12.1 - (unreleased) +---------------------------------------- - Forked intially from https://github.com/pelletier/SOAPpy - main interresting enhancements grabbed: - - from __future__ imports must occur at the beginning of the file - - try install requires + - from __future__ imports must occur at the beginning of the file + - try install requires -- Grabbed others changeset from -- Depend directly on wstools not to bundle a duplicated version. +- Grabbed others changeset from https://bitbucket.org/cmclaughlin/soappy-0.12.0/ (fpconst) +- Grabbed others changeset from https://bitbucket.org/zeus/soappy (ssl key support) +- Depend directly on wstools not to bundle a duplicated version. - Grabbed from original svn: - rpm spec file @@ -15,7 +19,7 @@ Release 0.12.1 of SOAPpy - zope/ - bid/ - .cvsignore files - - + - Make it proper packaged, specially toward setuptools. Release 0.12.0 of SOAPpy @@ -30,7 +34,7 @@ This release primarily foces on bug fixes. Primary changes: [ 925077] "SOAPpy prints out SOAP fault" (even when Config.debug is off). [1001646] "SOAPpy stomps headers when sending multirefs" [1001646] "SOAPpy stomps headers when sending multirefs. - [1064233] "Bug fixes for complex types" + [1064233] "Bug fixes for complex types" [1064248] "Bugs in _asdict() and _asarray() in Types.py" [1078051] "Arrays of complex types (doc/lit)" [1096971] "Parse error: missing HTTP header 'Content-length'" @@ -63,19 +67,19 @@ Release 0.11.5 of SOAPpy Release 0.11.4 of SOAPpy ------------------------ -- Bug fixes: +- Bug fixes - SOAPpy/Server.py: Check if header information contains SOAPAction key before checking its value. - Fixes for generating SOAP from complexType arrays, contributed by - antonio.beamud@linkend.com + antonio.beamud@linkend.com - Fixed bug that caused typedArrayTypes to lose their type - information when rendered to SOAP and added corresponding - test case. + information when rendered to SOAP and added corresponding + test case. -- New Features +- New Features - Enhancements to fault handling: The faultType Faultstring is now a non-variable string (i.e. no nsmethod in it) so that it can be @@ -88,7 +92,6 @@ Release 0.11.4 of SOAPpy - SOAPpy/Server.py: Added an unregisterObject function - - Changes to allow SOAPBuilder so it can handle a 'raw' Python object. @@ -96,7 +99,7 @@ Release 0.11.4 of SOAPpy Release 0.11.2 of SOAPpy ------------------------ -- News: +- News: Ivan R. Judson has joined the SOAPpy team. He is focused on Globus support but is also responsible for a lot of other work for @@ -116,14 +119,14 @@ Release 0.11.2 of SOAPpy - Fix bug when content-length is not present in parsed SOAP message. - Fix bug #888345: Python 2.3 boolean type serialized as int - + - Fix bug #875977: no escaping of bad tagnames for NoneTypes - New features: - Improved Globus support and documentation. Thanks Ivan! - + - Added context handling - Changed the use of SOAPAction, it used to default to setting it @@ -147,33 +150,33 @@ Release 0.11.1 of SOAPpy - Bug fixes: - Fixed bug [ 792258 ] "SOAPBuilder.SOAPBuilder.dump can catch - wrong exceptions" in SOAPBuilder.dump() submitted by Greg Chapman - (glchapman). + wrong exceptions" in SOAPBuilder.dump() submitted by Greg Chapman + (glchapman). - Changes suggested by Richard Au (richardau) to fix ssl support. - See bug report [ 752882 ] "SSL SOAP Server no longer working." + See bug report [ 752882 ] "SSL SOAP Server no longer working." - Remove call to gentag from 'dump' and add to 'dump_float', per - bug report [ 792600 ] "SOAPBuilder.SOAPBuilder.dump possibly should - not call gentag" by Greg Chapman (glchapman). + bug report [ 792600 ] "SOAPBuilder.SOAPBuilder.dump possibly should + not call gentag" by Greg Chapman (glchapman). - Add a tests for handling of nil="true" and nil="false". This - fixes bug [ pywebsvcs-Bugs-858168 ] 'xsi:nil="true" causes - exception' reported by Robert Zimmermann (robertzett): + fixes bug [ pywebsvcs-Bugs-858168 ] 'xsi:nil="true" causes + exception' reported by Robert Zimmermann (robertzett): - testClient1.py now works properly. It had been failing to start the -server thread on the second unit test. It turned out that the -variable 'quit' needed to be reset to zero after the SOAP server -thread for the first unit test exited. With the solution of this -problem testClient1 can now be extended to run unit tests of both -client and server components. + server thread on the second unit test. It turned out that the + variable 'quit' needed to be reset to zero after the SOAP server + thread for the first unit test exited. With the solution of this + problem testClient1 can now be extended to run unit tests of both + client and server components. - Added 'strict' option to the WSDL class. If strict is true, a -RuntimeException will be raised if an unrecogned message is recieved. -If strict is false, a warning will be printed to the console, the -message type will be added to the WSDL schema, and processing will -continue. This is in response to the second half of bug report [ -817331 ] "Some WSDL.py changes", submitted by Rudolf Ruland. + RuntimeException will be raised if an unrecogned message is recieved. + If strict is false, a warning will be printed to the console, the + message type will be added to the WSDL schema, and processing will + continue. This is in response to the second half of bug report [ + 817331 ] "Some WSDL.py changes", submitted by Rudolf Ruland. Release 0.11.0 of SOAPpy @@ -182,24 +185,24 @@ Release 0.11.0 of SOAPpy - New/Changed configuration settings: - Config.simplify_objects=1 now converts all SOAPpy objects into basic - Python types (list, dictionary, tuple, double, float, etc.). By default, - Config.simplify_objects=0 for backward compatibility. + Python types (list, dictionary, tuple, double, float, etc.). By default, + Config.simplify_objects=0 for backward compatibility. - Config.dict_encoding='ascii' converts the keys of dictionaries - (e.g. created when Config.simplify_objects=1) to ascii == plain python - strings instead of unicode strings. This variable can be set to any - encoding known to string.encode(). + (e.g. created when Config.simplify_objects=1) to ascii == plain python + strings instead of unicode strings. This variable can be set to any + encoding known to string.encode(). - Config.strict_range=1 forces the SOAP parsing routines to perform - range checks on recieved SOAP float and double objects. When - Config.strict_range=0, the default, parsing does not perform range - checking (except for detecting overflows, which always occurs). In - either case, range checking is performed when - generating SOAP float and double objects. + range checks on recieved SOAP float and double objects. When + Config.strict_range=0, the default, parsing does not perform range + checking (except for detecting overflows, which always occurs). In + either case, range checking is performed when + generating SOAP float and double objects. - Fixes for WSDLProxy. -- Scripts in the test/ directory +- Scripts in the test/ directory - Verbose debugging messages have been turned off.. @@ -213,12 +216,12 @@ Release 0.11.0 of SOAPpy - Initial support for Globus via pyGlobus contributed by Ivan R. Judson . -Release 0.10.4 of SOAPpy +Release 0.10.4 of SOAPpy ------------------------ Dramatic performance improvements for large data transfers. -Release 0.10.1 of SOAPpy +Release 0.10.1 of SOAPpy ------------------------ only minor changes @@ -230,12 +233,12 @@ only minor changes 3) All test scripts now use the local SOAPpy source instead of the globally installed version. -Release 0.10.0 of SOAPpy +Release 0.10.0 of SOAPpy ------------------------ Enhancements: -1) The new name handling mechanism has been enabled by default. +1) The new name handling mechanism has been enabled by default. The primary purpose of this release is to allow users to test this to see if it causes problems. Please take the time to do so. If @@ -246,7 +249,7 @@ Enhancements: server under this release will be likely to generate errors due to the different name handling mechanisms. -2) MS-Windows systems should now be fully supported. +2) MS-Windows systems should now be fully supported. This required implementing a new module, ieee754, which provides functions for detecting and generating IEEE 754 special floating @@ -284,7 +287,7 @@ VERSION 0.10.3 -------------- - Removed import of obsoleted ieee753.py. Now use the fpconst module - proposed by PEP 754, available from + proposed by PEP 754, available from - SOAPpy should no longer depend on pyXML. @@ -315,25 +318,27 @@ VERSION 0.10.0 CHANGES SINCE VERSION 0.9.9-pre5 - Major Change: The huge file SOAPpy/SOAP.py (4,122 lines, 131K) has - been split into 10 separate files: + been split into 10 separate files:: + Client.py NS.py SOAPBuilder.py Utilities.py - Config.py Parser.py Server.py - Errors.py SOAP.py Types.py + Config.py Parser.py Server.py + Errors.py SOAP.py Types.py + This should ease navigation and maintenance. - A new CVS module 'wstools' was created to hold code which is used by both ZSI and SOAPpy. While this module is stored separately in CVS, it will be distributed as an integral part of both ZSI and SOAPpy, and will be included as an 'internal' module by both. In the SOAPpy - source, it lives in the directory SOAPpy/wstools. + source, it lives in the directory SOAPpy/wstools. - The files XMLname.py, ieee754.py, have been moved into SOAPpy/wstools. - Added TODO file - Fix bug in getNS that caused loss of namespace by using better - pattern matching to find the namespace in the SOAP message. Fixes bug - 678239 + pattern matching to find the namespace in the SOAP message. Fixes bug + 678239 - Added Mark Bucciarelli's patch to provide wsdl code on properly structured .GET requests to the server. @@ -383,13 +388,13 @@ CHANGES SINCE VERSION 0.9.8 --------------------------- - IEEE 754 floating point specials (Inf, -Inf, NaN) should now be - properly and consistently handled on all platforms. + properly and consistently handled on all platforms. Added code to explicitly check for and handle IEEE 754 floating - point specials (Inf, -Inf, NaN). This replaces an ugly hack for + point specials (Inf, -Inf, NaN). This replaces an ugly hack for systems whose python float() doesn't understand the strings "Inf", "NaN", etc. Floating point specials should now be properly handled - on all operating systems. + on all operating systems. ***SOAPpy should now work properly on all versions of Microsoft Windows.*** @@ -410,8 +415,8 @@ CHANGES SINCE VERSION 0.9.7 --------------------------- - Modified structure to allow installation using Python distutils - (i.e. setup.py). Access to the SOAPpy library now requires: - from SOAPpy import SOAP + (i.e. setup.py). Access to the SOAPpy library now requires: + from SOAPpy import SOAP - I (Gregory R. Warnes) have implemented an experimental and non-standard method of handling named and unnamed arguments. This @@ -424,7 +429,7 @@ CHANGES SINCE VERSION 0.9.7 are assumed to be named and are passed using the xml tag id as the parameter name. Outgoing SOAP method calls now always generate names in this way--whether or not specialArgs is enabled--instead of - using the pattern v#####. + using the pattern v#####. See the file README.MethodParameterNaming for more details. @@ -476,7 +481,7 @@ VERSION 0.9.7 (6/27/01) - Fixed the unamed ordered parameters bug - Added the ability to specify a http_proxy - Added a patch provided by Tim MiddelKoop to allow printing of proxy objects -- Added the contrib directory and included a medusa implementation of a +- Added the contrib directory and included a medusa implementation of a SOAP.py server by Ng Pheng Siong @@ -531,7 +536,7 @@ VERSION 0.9.5 (5/16/01) - Now assumes that any type that isn't in a schema could be a struct. - Added the Config object, now config options can be set globally or on an individual call level. -- Deprecated the DateTime, Binary and Boolean types, should now +- Deprecated the DateTime, Binary and Boolean types, should now use dateTimeType, binaryType and booleanType. - Includes N+I interop suite. - Various bug fixes and improvements. @@ -572,7 +577,7 @@ VERSION 0.8 (4/23/01) - Fixed the zero-length array problem - Made indentation uniform (spaces not tabs) - Made Header and Body work more like real structs -- Changed the parseSOAP api, now returns the body structure, +- Changed the parseSOAP api, now returns the body structure, instead of a list of body elements - Changed the soapaction and namespaces for the interop server - New silabclient options diff --git a/README b/README deleted file mode 100644 index 9735243..0000000 --- a/README +++ /dev/null @@ -1,244 +0,0 @@ -============================================== -SOAPpy - Simple to use SOAP library for Python -============================================== - -Current Maintainer: - - Gregory R. Warnes - -Original Authors: - - Cayce Ullman - Brian Matthews - -Contributions by: - - Christopher Blunck - Brad Knotwell - Mark Bucciarelli (ported WSDL - client from ZSI) - Ivan R. Judson (Globus support) - Kirk Strauser - Antonio Beamud Montero (patches - for integrating SOAPpy into Zope) - And others. - -Copyright (c) 2002-2005, Pfizer, Inc. -Copyright (c) 2001, Cayce Ullman. -Copyright (c) 2001, Brian Matthews. -All rights reserved, see the file LICENSE for conditions of use. - -INTRODUCTION -============ - - The goal of the SOAPpy team is to provide a full-featured SOAP library - for Python that is very simple to use and that fully supports dynamic - interaction between clients and servers. - - INCLUDED - -------- - - - General SOAP Parser based on sax.xml - - General SOAP Builder - - SOAP Proxy for RPC client code - - SOAP Server framework for RPC server code - - FEATURES - -------- - - - Handles all SOAP 1.0 types - - Handles faults - - Allows namespace specification - - Allows SOAPAction specification - - Homogeneous typed arrays - - Supports multiple schemas - - Header support (mustUnderstand and actor) - - XML attribute support - - Multi-referencing support (Parser/Builder) - - Understands SOAP-ENC:root attribute - - Good interop, passes all client tests for Frontier, SOAP::LITE, SOAPRMI - - Encodings - - SSL clients (with Python compiled with OpenSSL support) - - SSL servers (with Python compiled with OpenSSL support and M2Crypto - installed) - - Encodes XML tags per SOAP 1.2 name mangling specification (Gregory Warnes) - - Automatic stateful SOAP server support (Apache v2.x) (blunck2) - - WSDL client support - - WSDL server support - - TODO (See RELEASE_INFO and CHANGELOG for recent changes) - ---- - - - Timeout on method calls - - Advanced arrays (sparse, multidimensional and partial) - - Attachments - - mod_python example - - medusa example - - Improved documentation - - MANIFEST - -------- - - Files - - - README This file - RELEASE_NOTES General information about each release - ChangeLog Detailed list of changes - TODO List of tasks that need to be done - - setup.py Python installation control files - MANIFEST - MANIFEST.in - - SOAPpy.spec* RPM package control file - - Directories - - SOAPpy/* Source code for the package - SOAPpy/wstools/* Source code for WSDL tools - tests/* unit tests and examples - validate/* interop client and servers - bid/* N+I interop client and server - doc/* Documentation - contrib/ Contributed examples (also see test/) - docs/ Documentation - tools/ Misc tools useful for the SOAPpy developers - zope/ Patches to Zope allowing it to provide SOAP services - - -INSTALLATION -============ - - USING GITHUB - ------------ - - You can install SOAPpy and its dependencies directly from GitHub using PIP: - - pip install -e "git+http://github.com/pelletier/SOAPpy.git@develop#egg=SOAPpy" - - REQUIRED PACKAGES: - ----------------- - - - fpconst 0.6.0 or later, - - - - pyXML 0.8.3 or later, - - OPTIONAL PACKAGES - ----------------- - - - pyGlobus, optional support for Globus, - - - - M2Crypto.SSL, optional support for server-side SSL - - - - If Python is compiled with SSL support (Python 2.3 does so by - default), client-side use of SSL is supported - - INSTALLATION STEPS - ------------------ - - As of version 0.9.8 SOAPpy can be installed using the standard python - package installation tools. - - To install: - - 1) Unpack the distribution package: - - On Windows, use your favorite zip file uncompression tool. - - On Unix: - - $ tar -xvzf SOAPpy-$VERSION$.tar.gz - - if you have gnu tar, otherwise - - $ gzcat SOAPpy-$VERSION$.tar.gz | tar -xvf - - - 2) Change into the source directory - - $ cd SOAPpy-$VERSION$ - - 3) Compile the package - - $ python setup.py build - - 4) Install the package - - On Windows: - - $ python setup.py install - - On Unix install as the owner of the python directories - (usally root): - - $ su root - Password: XXXXXX - $ python setup.py install - - -DOCUMENTATION -============= - - QUICK START - ----------- - - A simple "Hello World" http SOAP server: - - import SOAPpy - def hello(): - return "Hello World" - - server = SOAPpy.SOAPServer(("localhost", 8080)) - server.registerFunction(hello) - server.serve_forever() - - And the corresponding client: - - import SOAPpy - server = SOAPpy.SOAPProxy("http://localhost:8080/") - print server.hello() - - BASIC TUTORIAL - -------------- - - Mark Pilgrims' _Dive Into Python_, published in printed form by - Apress and online at at http://diveintopython.org provides a - nice tutorial for SOAPpy in Chapter 12, "SOAP Web Services". - See http://diveintopython.org/soap_web_services . - - OTHER DOCUMENTATION - ------------------- - - For further information see the files in the docs/ directory. - - Note that documentation is one of SOAPpy's current weak points. - Please help us out! - - -GETTING HELP -============ - - REPORTING BUGS - -------------- - - Please submit bug reports, feature requests, patches, etc at the - Python Web Services web site: http://pywebsvcs.sourceforge.net. - - MAILING LIST - ============ - - Please address questions and general discussion to the - pywebsvcs-talk mailing list, pywebsvcs-talk@lists.sourceforge.net. - - For subscription information visit - http://lists.sourceforge.net/lists/listinfo/pywebsvcs-talk. - List archives are available at - http://sourceforge.net/mailarchive/forum.php?forum=pywebsvcs-talk - - Please remember that the authors do have day jobs, so please try - the mailing list before contacting them directy. - -$Id: README,v 1.18 2005/02/22 15:58:35 warnes Exp $ diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..c3c87d3 --- /dev/null +++ b/README.txt @@ -0,0 +1,232 @@ +============================================== +SOAPpy - Simple to use SOAP library for Python +============================================== + +Current Maintainers: + + - Gregory R. Warnes + - Mathieu Le Marec - Pasquet + +Original Authors: + + - Cayce Ullman + - Brian Matthews + +Contributions by: + + - Christopher Blunck + - Brad Knotwell + - Mark Bucciarelli (ported WSDL client from ZSI) + - Ivan R. Judson (Globus support) + - Kirk Strauser + - Antonio Beamud Montero (patches for integrating SOAPpy into Zope) + - And others. + +Copyright (c) 2002-2005, Pfizer, Inc. +Copyright (c) 2001, Cayce Ullman. +Copyright (c) 2001, Brian Matthews. +All rights reserved, see the file LICENSE for conditions of use. + +INTRODUCTION +============== + +The goal of the SOAPpy team is to provide a full-featured SOAP library +for Python that is very simple to use and that fully supports dynamic +interaction between clients and servers. + +INCLUDED +-------- +- General SOAP Parser based on sax.xml +- General SOAP Builder +- SOAP Proxy for RPC client code +- SOAP Server framework for RPC server code + +FEATURES +-------- +- Handles all SOAP 1.0 types +- Handles faults +- Allows namespace specification +- Allows SOAPAction specification +- Homogeneous typed arrays +- Supports multiple schemas +- Header support (mustUnderstand and actor) +- XML attribute support +- Multi-referencing support (Parser/Builder) +- Understands SOAP-ENC:root attribute +- Good interop, passes all client tests for Frontier, SOAP::LITE, SOAPRMI +- Encodings +- SSL clients (with Python compiled with OpenSSL support) +- SSL servers (with Python compiled with OpenSSL support and M2Crypto installed) +- Encodes XML tags per SOAP 1.2 name mangling specification (Gregory Warnes) +- Automatic stateful SOAP server support (Apache v2.x) (blunck2) +- WSDL client support +- WSDL server support + +TODO (See RELEASE_INFO and CHANGELOG for recent changes) +---------------------------------------------------------- +- Timeout on method calls +- Advanced arrays (sparse, multidimensional and partial) +- Attachments +- mod_python example +- medusa example +- Improved documentation + +MANIFEST +-------- +:: + + Files + + README This file + RELEASE_NOTES General information about each release + ChangeLog Detailed list of changes + TODO List of tasks that need to be done + setup.py Python installation control files + SOAPpy.spec RPM package control file + + Directories + + SOAPpy/ Source code for the package + SOAPpy/wstools/ Source code for WSDL tools + tests/ unit tests and examples + validate/ interop client and servers + bid/ N+I interop client and server + contrib/ Contributed examples (also see test/) + docs/ Documentation + tools/ Misc tools useful for the SOAPpy developers + zope/ Patches to Zope allowing it to provide SOAP services + + +INSTALLATION +============ + +USING GITHUB +------------ + + You can install SOAPpy and its dependencies directly from GitHub using PIP: + + pip install -e "git+http://github.com/pelletier/SOAPpy.git@develop#egg=SOAPpy" + +REQUIRED PACKAGES +------------------ + + - fpconst 0.6.0 or later, + + - wstools + + +OPTIONAL PACKAGES +----------------- + + - pyGlobus, optional support for Globus, + + + - M2Crypto.SSL, optional support for server-side SSL + + + - If Python is compiled with SSL support (Python 2.3 does so by + default), client-side use of SSL is supported + +INSTALLATION STEPS +------------------ + + As of version 0.9.8 SOAPpy can be installed using the standard python + package installation tools. + + To install: + + 1) Unpack the distribution package: + + On Windows, use your favorite zip file uncompression tool. + + On Unix:: + + $ tar -xvzf SOAPpy-$VERSION$.tar.gz + + If you have gnu tar, otherwise + :: + + $ gzcat SOAPpy-$VERSION$.tar.gz | tar -xvf - + + 2) Change into the source directory + :: + + cd SOAPpy-$VERSION$ + + 3) Compile the package:: + + $ python setup.py build + + 4) Install the package + + On Windows:: + + $ python setup.py install + + On Unix install as the owner of the python directories + (usally root):: + + $ su root + Password: XXXXXX + $ python setup.py install + + +DOCUMENTATION +============= +QUICK START +----------- + +A simple "Hello World" http SOAP server:: + + import SOAPpy + def hello(): + return "Hello World" + server = SOAPpy.SOAPServer(("localhost", 8080)) + server.registerFunction(hello) + server.serve_forever() + +And the corresponding client:: + + import SOAPpy + server = SOAPpy.SOAPProxy("http://localhost:8080/") + print server.hello() + +BASIC TUTORIAL +-------------- +Mark Pilgrims _Dive Into Python, published in printed form by +Apress and online at at http://diveintopython.org provides a +nice tutorial for SOAPpy in Chapter 12, "SOAP Web Services". +See http://diveintopython.org/soap_web_services . + +OTHER DOCUMENTATION +------------------- + +For further information see the files in the docs/ directory. + +Note that documentation is one of SOAPpy's current weak points. +Please help us out! + + +GETTING HELP +============ + +REPORTING BUGS +-------------- + +Please submit bug reports, feature requests, patches, etc at the +Python Web Services web site: http://pywebsvcs.sourceforge.net. + +MAILING LIST +============ + +Please address questions and general discussion to the +pywebsvcs-talk mailing list, pywebsvcs-talk@lists.sourceforge.net. + +For subscription information visit +http://lists.sourceforge.net/lists/listinfo/pywebsvcs-talk. +List archives are available at +http://sourceforge.net/mailarchive/forum.php?forum=pywebsvcs-talk + +Please remember that the authors do have day jobs, so please try +the mailing list before contacting them directy. + diff --git a/setup.py b/setup.py index 2f7b49a..8bb3ac7 100644 --- a/setup.py +++ b/setup.py @@ -5,6 +5,13 @@ CVS=0 from setuptools import setup, find_packages +import os + +def read(*rnames): + return "\n"+ open( + os.path.join('.', *rnames) + ).read() + def load_version(): @@ -23,13 +30,13 @@ def load_version(): filename = path.join(path.dirname(__file__), 'src', 'SOAPpy', 'version.py') d = imp.new_module('version') d.__file__ = filename - + try: execfile(filename, d.__dict__) except IOError, e: e.strerror = 'Unable to load the version number (%s)' % e.strerror raise - + return d.__version__ @@ -38,8 +45,9 @@ __version__ = load_version() url="http://pywebsvcs.sf.net/" -long_description="SOAPpy provides tools for building SOAP clients and servers. For more information see " + url - +long_description="SOAPpy provides tools for building SOAP clients and servers. For more information see " + url\ + +'\n'+read('README.txt')\ + +'\n'+read('CHANGES.txt')\ if CVS: import time @@ -56,7 +64,7 @@ setup( long_description=long_description, packages=find_packages('src'), package_dir = {'': 'src'}, - include_package_data=True, + include_package_data=True, install_requires=[ 'fpconst', 'wstools', diff --git a/src/SOAPpy/Client.py b/src/SOAPpy/Client.py index eee8fad..3749879 100644 --- a/src/SOAPpy/Client.py +++ b/src/SOAPpy/Client.py @@ -202,7 +202,7 @@ class HTTPTransport: from pyGlobus.io import GSIHTTP r = GSIHTTP(real_addr, tcpAttr = config.tcpAttr) elif addr.proto == 'https': - r = httplib.HTTPS(real_addr) + r = httplib.HTTPS(real_addr, key_file=config.SSL.key_file, cert_file=config.SSL.cert_file) else: r = HTTPWithTimeout(real_addr, timeout=timeout) diff --git a/src/SOAPpy/Config.py b/src/SOAPpy/Config.py index 7f17a57..deafa59 100644 --- a/src/SOAPpy/Config.py +++ b/src/SOAPpy/Config.py @@ -39,14 +39,19 @@ from version import __version__ import socket from types import * -from NS import NS +from NS import NS ################################################################################ # Configuration class ################################################################################ + class SOAPConfig: __readonly = ('SSLserver', 'SSLclient', 'GSIserver', 'GSIclient') + class SSLconfig: + __slots__ = ('key_file', 'cert_file') + key_file = None + cert_file = None def __init__(self, config = None, **kw): d = self.__dict__ @@ -62,7 +67,7 @@ class SOAPConfig: if k[0] != '_': d[k] = v else: - # Setting debug also sets returnFaultInfo, + # Setting debug also sets returnFaultInfo, # dumpHeadersIn, dumpHeadersOut, dumpSOAPIn, and dumpSOAPOut self.debug = 0 self.dumpFaultInfo = 1 @@ -118,7 +123,7 @@ class SOAPConfig: except: d['GSIserver'] = 0 d['GSIclient'] = 0 - + # Server SSL support if M2Crypto.SSL available try: @@ -134,6 +139,10 @@ class SOAPConfig: except: d['SSLclient'] = 0 + # Cert support + if d['SSLclient'] or d['SSLserver']: + d['SSL'] = self.SSLconfig() + for k, v in kw.items(): if k[0] != '_': setattr(self, k, v) @@ -194,7 +203,7 @@ class SOAPConfig: d['dumpHeadersOut'] = \ d['dumpSOAPIn'] = \ d['dumpSOAPOut'] = value - + else: d[name] = value diff --git a/src/SOAPpy/WSDL.py b/src/SOAPpy/WSDL.py index 91c86ac..84f7d3f 100644 --- a/src/SOAPpy/WSDL.py +++ b/src/SOAPpy/WSDL.py @@ -45,7 +45,7 @@ class Proxy: try: self.wsdl = reader.loadFromStream(wsdlsource) except xml.parsers.expat.ExpatError, e: - newstream = urllib.urlopen(wsdlsource) + newstream = urllib.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) buf = newstream.readlines() raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ (wsdlsource, "\t".join(buf)) @@ -71,7 +71,7 @@ class Proxy: if self.wsdl is None: try: - stream = urllib.urlopen(wsdlsource) + stream = urllib.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) self.wsdl = reader.loadFromStream(stream, wsdlsource) except (IOError, OSError): pass except xml.parsers.expat.ExpatError, e: diff --git a/src/SOAPpy/version.py b/src/SOAPpy/version.py index 17a0a3e..aeaf211 100644 --- a/src/SOAPpy/version.py +++ b/src/SOAPpy/version.py @@ -1,2 +1,2 @@ -__version__="0.12.0" +__version__="0.12.1"