ZCGI.py
上传用户:gyjinxi
上传日期:2007-01-04
资源大小:159k
文件大小:6k
源码类别:

WEB邮件程序

开发平台:

Python

  1. ##############################################################################
  2. # Zope Public License (ZPL) Version 0.9.5
  3. # ---------------------------------------
  4. # Copyright (c) Digital Creations.  All rights reserved.
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions are
  7. # met:
  8. # 1. Redistributions in source code must retain the above copyright
  9. #    notice, this list of conditions, and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions, and the following disclaimer in
  12. #    the documentation and/or other materials provided with the
  13. #    distribution.
  14. # 3. Any use, including use of the Zope software to operate a website,
  15. #    must either comply with the terms described below under
  16. #    "Attribution" or alternatively secure a separate license from
  17. #    Digital Creations.  Digital Creations will not unreasonably
  18. #    deny such a separate license in the event that the request
  19. #    explains in detail a valid reason for withholding attribution.
  20. # 4. All advertising materials and documentation mentioning
  21. #    features derived from or use of this software must display
  22. #    the following acknowledgement:
  23. #      "This product includes software developed by Digital Creations
  24. #      for use in the Z Object Publishing Environment
  25. #      (http://www.zope.org/)."
  26. #    In the event that the product being advertised includes an
  27. #    intact Zope distribution (with copyright and license included)
  28. #    then this clause is waived.
  29. # 5. Names associated with Zope or Digital Creations must not be used to
  30. #    endorse or promote products derived from this software without
  31. #    prior written permission from Digital Creations.
  32. # 6. Modified redistributions of any form whatsoever must retain
  33. #    the following acknowledgment:
  34. #      "This product includes software developed by Digital Creations
  35. #      for use in the Z Object Publishing Environment
  36. #      (http://www.zope.org/)."
  37. #    Intact (re-)distributions of any official Zope release do not
  38. #    require an external acknowledgement.
  39. # 7. Modifications are encouraged but must be packaged separately as
  40. #    patches to official Zope releases.  Distributions that do not
  41. #    clearly separate the patches from the original work must be clearly
  42. #    labeled as unofficial distributions.  Modifications which do not
  43. #    carry the name Zope may be packaged in any form, as long as they
  44. #    conform to all of the clauses above.
  45. # Disclaimer
  46. #   THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
  47. #   EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  48. #   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  49. #   PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
  50. #   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  51. #   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  52. #   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  53. #   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  54. #   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  55. #   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  56. #   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  57. #   SUCH DAMAGE.
  58. # Attribution
  59. #   Individuals or organizations using this software as a web site must
  60. #   provide attribution by placing the accompanying "button" and a link
  61. #   to the accompanying "credits page" on the website's main entry
  62. #   point.  In cases where this placement of attribution is not
  63. #   feasible, a separate arrangment must be concluded with Digital
  64. #   Creations.  Those using the software for purposes other than web
  65. #   sites must provide a corresponding attribution in locations that
  66. #   include a copyright using a manner best suited to the application
  67. #   environment.  Where attribution is not possible, or is considered
  68. #   to be onerous for some other reason, a request should be made to
  69. #   Digital Creations to waive this requirement in writing.  As stated
  70. #   above, for valid requests, Digital Creations will not unreasonably
  71. #   deny such requests.
  72. # This software consists of contributions made by Digital Creations and
  73. # many individuals on behalf of Digital Creations.  Specific
  74. # attributions are listed in the accompanying credits file.
  75. ##############################################################################
  76. """
  77. New Zope CGI Publisher, partially based on code by Phillip Eby
  78. This program allows you to publish modules with Zope
  79. using a web server that supports CGI.
  80. see README.txt for more details.
  81. """
  82. import sys, os
  83. from string import upper, split, strip, join 
  84. variables = sys.modules['__main__'].__dict__
  85. # PATH_INFO includes the path to the script under IIS 
  86. # IIS_HACK directive tells the publisher to work around this problem
  87. if variables.has_key('IIS_HACK') and variables['IIS_HACK']:
  88.     script = filter(None,split(strip(os.environ['SCRIPT_NAME']),'/'))
  89.     path = filter(None,split(strip(os.environ['PATH_INFO']),'/'))
  90.     os.environ['PATH_INFO'] = join(path[len(script):],'/')
  91. # get publisher
  92. try:
  93.     from ZPublisher.Publish import publish_module
  94. except ImportError:
  95.     try:
  96.         from cgi_module_publisher import publish_module
  97.         import CGIResponse
  98.     except ImportError:
  99.         print 'Content-type: text/htmlnn' 
  100.             '<html><h1>An error occurred</h1>n' 
  101.             '<p>Python cannot publish your module because it ' 
  102.             'cannot find the Zope Publisher package.</p>n' 
  103.             '<p>Either move the ZPublisher package to somewhere ' 
  104.             'in your PYTHON PATH or fix your PYTHON PATH ' 
  105.             'with the INCLUDE_PATHS directive.<p>n' 
  106.             '<p>Your PYTHON PATH is currently set to: %s </p>n' 
  107.             '</html>'  % sys.path
  108.         sys.exit()
  109. # set environment
  110. for k,v in variables.items():
  111.     if upper(k)==k and not os.environ.has_key(k):
  112.         os.environ[k]=str(v)
  113.     
  114. publish_module(variables['PUBLISHED_MODULE'])