ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ aNc@sdZddlZyddlmZWnnXddlmZdefdYZdefdYZd Z d efd YZ da da iad ZdS( sWSGI Paste wrapper for mod_python. Requires Python 2.2 or greater. Example httpd.conf section for a Paste app with an ini file:: SetHandler python-program PythonHandler paste.modpython PythonOption paste.ini /some/location/your/pasteconfig.ini Or if you want to load a WSGI application under /your/homedir in the module ``startup`` and the WSGI app is ``app``:: SetHandler python-program PythonHandler paste.modpython PythonPath "['/virtual/project/directory'] + sys.path" PythonOption wsgi.application startup::app If you'd like to use a virtual installation, make sure to add it in the path like so:: SetHandler python-program PythonHandler paste.modpython PythonPath "['/virtual/project/directory', '/virtual/lib/python2.4/'] + sys.path" PythonOption paste.ini /virtual/project/directory/pasteconfig.ini Some WSGI implementations assume that the SCRIPT_NAME environ variable will always be equal to "the root URL of the app"; Apache probably won't act as you expect in that case. You can add another PythonOption directive to tell modpython_gateway to force that behavior: PythonOption SCRIPT_NAME /mcontrol Some WSGI applications need to be cleaned up when Apache exits. You can register a cleanup handler with yet another PythonOption directive: PythonOption wsgi.cleanup module::function The module.function will be called with no arguments on server shutdown, once for each child process or thread. This module highly based on Robert Brewer's, here: http://projects.amor.org/misc/svn/modpython_gateway.py iN(tapache(tloadappt InputWrappercBsGeZdZdZddZddZddZdZRS(cCs ||_dS(N(treq(tselfR((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyt__init__>scCsdS(N((R((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pytcloseAsicCs|jj|S(N(Rtread(Rtsize((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyRDscCs|jj|S(N(Rtreadline(RR((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyR GscCs|jj|S(N(Rt readlines(Rthint((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyR Jsccs.|j}x|r)|V|j}qWdS(N(R (Rtline((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyt__iter__Ms  (t__name__t __module__RRRR R R (((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyR<s      t ErrorWrappercBs,eZdZdZdZdZRS(cCs ||_dS(N(R(RR((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyRXscCsdS(N((R((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pytflush[scCs|jj|dS(N(Rt log_error(Rtmsg((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pytwrite^scCs|jdj|dS(Nt(Rtjoin(Rtseq((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyt writelinesas(RRRRRR(((s@/opt/alt/python27/lib/python2.7/site-packages/paste/modpython.pyRVs   sfYou must provide a PythonOption '%s', either 'on' or 'off', when running a version of mod_python < 3.1tHandlercBs/eZdZdZddZdZRS(cCst|_|j}y+tj}|tj}|tj}Wntk r|jddj }|dkr}t }n%|dkrt}nt t d|jddj }|dkrt }q|dkrt}qt t dnXt tj|}|_d|krL|d|d<|jt|d|d2s `