-í
”‚É<c       sÑ     d  Z    d Z  d g Z  d k Z  d k Z  d k Z  d k Z  d k Z  d e i f d „  ƒ  YZ	 e
 a d „  Z #d „  Z ,e	 e i d „ Z 1e d j o 2e ƒ  n d S(	   sr  CGI-savvy HTTP Server.

This module builds on SimpleHTTPServer by implementing GET and POST
requests to cgi-bin scripts.

If the os.fork() function is not present (e.g. on Windows),
os.popen2() is used as a fallback, with slightly altered semantics; if
that function is not present either (e.g. on Macintosh), only Python
scripts are supported, and they are executed by the current process.

In all cases, the implementation is intentionally naive -- all
requests are executed sychronously.

SECURITY WARNING: DON'T USE THIS CODE UNLESS YOU ARE INSIDE A FIREWALL
-- it may execute arbitrary Python code or external programs.

s   0.4s   CGIHTTPRequestHandlerNc      s’    d  Z  ' * e e d ƒ Z + e e d ƒ Z / d Z 1 d „  Z = d „  Z D d „  Z [ d d g Z	 ] d	 „  Z
 a d
 „  Z f d „  Z RS(   s­   Complete HTTP server with GET, HEAD and POST commands.

    GET and HEAD also support running CGI scripts.

    The POST command is *only* implemented for CGI scripts.

    s   forks   popen2i    c    s>   1 6 8 |  i ƒ  o 9 |  i ƒ  n ; |  i d d ƒ d S(   sR   Serve a POST request.

        This is only implemented for CGI scripts.

        iõ  s   Can only POST to CGI scriptsN(   s   selfs   is_cgis   run_cgis
   send_error(   s   self(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys   do_POST1 s   c    s>   = > ? |  i ƒ  o @ |  i ƒ  Sn B t i i |  ƒ Sd S(   s-   Version of send_head that support CGI scriptsN(   s   selfs   is_cgis   run_cgis   SimpleHTTPServers   SimpleHTTPRequestHandlers	   send_head(   s   self(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys	   send_head= s   c    s    D P R |  i } T x} |  i DT ]o } U t | ƒ } V | |  | j o | | p | | d j o) W | |  | | d f |  _ X d Sn q WY d Sd S(   s±  Test whether self.path corresponds to a CGI script.

        Return a tuple (dir, rest) if self.path requires running a
        CGI script, None if not.  Note that rest begins with a
        slash if it is not empty.

        The default implementation tests whether the path
        begins with one of the strings in the list
        self.cgi_directories (and the next character is a '/'
        or the end of the string).

        s   /i   i    N(   s   selfs   paths   cgi_directoriess   xs   lens   is   cgi_info(   s   selfs   is   paths   x(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys   is_cgiD s    	1s   /cgi-bins   /htbinc    s   ] ^ _ t  | ƒ Sd S(   s1   Test whether argument path is an executable file.N(   s
   executables   path(   s   selfs   path(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys   is_executable] s   c    s>   a b c t  i i | ƒ \ } } d | i ƒ  d d f j Sd S(   s.   Test whether argument path is a Python script.s   .pys   .pywN(   s   oss   paths   splitexts   heads   tails   lower(   s   selfs   paths   tails   head(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys	   is_pythona s   c "   s›	  f g h |  i \ }! } i | i d ƒ } j | d j o% k | |  | | d f \ } }	 n
 m d }	 n | i d ƒ } o | d j o! p | |  | | f \ } } n r | d f \ } } s |! d | } t |  i
 | ƒ } u t i i | ƒ o# v |  i d d | ƒ w d Sn x t i i | ƒ o# y |  i d	 d
 | ƒ { d Sn | |  i | ƒ } } | ov ~ |  i p |  i o#  |  i d	 d | ƒ  d Sn ‚ |  i | ƒ o# ƒ |  i d	 d | ƒ … d Sn n ‰ h  } Š |  i ƒ  | d <‹ |  i i | d <Œ d | d < |  i | d <Ž t |  i i ƒ | d < |  i | d < t i | ƒ } ‘ | | d <’ |  i
 | ƒ | d <“ | | d <” |	 o • |	 | d <n – |  i! ƒ  } — | |  i# d j o ˜ | | d <n ™ |  i# d | d < |  i$ i% t& j o ž |  i$ i' | d <n   |  i$ i% | d <¡ |  i$ i( d ƒ } ¢ | o £ | | d <n ¤ g  } ¥ xe |  i$ i+ d ƒ D¥ ]N } ¦ | d  d j o § | i- | i. ƒ  ƒ n © | | d i/ d  ƒ } q–Wª d  i0 | ƒ | d! <« |  i$ i( d" ƒ } ¬ | o ­ | | d# <n ® t2 t& |  i$ i3 d$ ƒ ƒ } ¯ | o ° d% i0 | ƒ | d& <n ² |  i o= µ x3 d d d d# d& f Dµ ] } · | i6 | d ƒ qšWn ¹ |  i7 d' d( ƒ » |	 i8 d) d* ƒ } ½ |  i oŠ¿ | g } À d+ | j o Á | i- | ƒ n Â t; ƒ  } Ã |  i= i> ƒ  Ä |  i? i> ƒ  Å t i@ ƒ  } Æ | d j oG È t iB | d ƒ \ } }  É |  o Ê |  iD d, |  ƒ n Ë d Sn Í yˆ Î y Ï t iE | ƒ Wn Ð t iF j
 o
 Ñ n XÒ t iG |  i= iH ƒ  d ƒ Ó t iG |  i? iH ƒ  d ƒ Ô t iI | | | ƒ Wn6 Õ Ö |  i iJ |  iK |  i# ƒ × t iL d- ƒ n XnÙ |  i oÔÛ d kM }
 Ü t iN iO | ƒ Ý | } Þ |  i | ƒ oU ß tQ iR } à | iT ƒ  iU d. ƒ o â | d/  | d0 } n ã d1 | | f } n ä d+ |	 j o
 d2 |	 j o å d3 | |	 f } n æ |  iV d4 | ƒ ç y è tW | ƒ } Wn é ê d } n Xë t iY | d5 ƒ \ } } ì |  i iT ƒ  d6 j o
 | d j o) í |  i= i\ | ƒ } î | i^ | ƒ n ï | i_ ƒ  ð |
 i` | |  i? ƒ ñ | i_ ƒ  }  ò |  o ó |  iD d, |  ƒ n õ |  iV d7 ƒ n:ù t iN iO | ƒ ú tQ ia } û tQ ic } ü tQ ie } ý tQ ig } þ y¯ ÿ zq  | g tQ _a d+ | j o tQ ia i- | ƒ n |  i? tQ _e |  i= tQ _c ti | h  d8 d9 <ƒ Wd | tQ _a | tQ _c 	| tQ _e 
| tQ _g XWn1 tj j
 o" }  |  iD d: t |  ƒ ƒ n X|  iV d7 ƒ d S(;   s   Execute a CGI script.s   ?i    i   s    s   /i”  s   No such CGI script (%s)Ni“  s#   CGI script is not a plain file (%s)s&   CGI script is not a Python script (%s)s!   CGI script is not executable (%s)s   SERVER_SOFTWAREs   SERVER_NAMEs   CGI/1.1s   GATEWAY_INTERFACEs   SERVER_PROTOCOLs   SERVER_PORTs   REQUEST_METHODs	   PATH_INFOs   PATH_TRANSLATEDs   SCRIPT_NAMEs   QUERY_STRINGs   REMOTE_HOSTs   REMOTE_ADDRs   CONTENT_TYPEs   content-lengths   CONTENT_LENGTHs   accepts   	
 i   s   ,s   HTTP_ACCEPTs
   user-agents   HTTP_USER_AGENTs   cookies   , s   HTTP_COOKIEiÈ   s   Script output followss   +s    s   =s   CGI script exit status %#xi   s   w.exeiûÿÿÿiüÿÿÿs   %s -u %ss   "s   %s "%s"s   command: %ss   bs   posts   CGI script exited OKs   __main__s   __name__s   CGI script exit status %s(k   s   selfs   cgi_infos   dirs   rests   rfinds   is   querys   finds   scripts
   scriptnames   translate_paths
   scriptfiles   oss   paths   existss
   send_errors   isfiles	   is_pythons   ispys	   have_forks   have_popen2s   is_executables   envs   version_strings   servers   server_names   protocol_versions   strs   server_ports   commands   urllibs   unquotes   uqrests   address_strings   hosts   client_addresss   headerss
   typeheaders   Nones   types	   getheaders   lengths   accepts   getallmatchingheaderss   lines   appends   strips   splits   joins   uas   filters
   getheaderss   cos   ks
   setdefaults   send_responses   replaces   decoded_querys   argss
   nobody_uids   nobodys   rfiles   flushs   wfiles   forks   pids   waitpids   stss	   log_errors   setuids   errors   dup2s   filenos   execves   handle_errors   requests   _exits   shutils   environs   updates   cmdlines   syss
   executables   interps   lowers   endswiths   log_messages   ints   nbytess   popen2s   fis   fos   reads   datas   writes   closes   copyfileobjs   argvs	   save_argvs   stdins
   save_stdins   stdouts   save_stdouts   stderrs   save_stderrs   execfiles
   SystemExit("   s   selfs   save_stdouts   cos	   save_argvs   interps   uqrests   cmdlines
   scriptnames
   save_stdins   querys   shutils   decoded_querys   scripts   accepts   envs   nbytess   argss   ispys   pids   nobodys   hosts   rests   fis   lines   datas   save_stderrs   fos   is   uas   ks   lengths
   scriptfiles   stss   dir(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys   run_cgif s  %	!	

	 	

 	
	&
(   s   __doc__s   hasattrs   oss	   have_forks   have_popen2s   rbufsizes   do_POSTs	   send_heads   is_cgis   cgi_directoriess   is_executables	   is_pythons   run_cgi(    (    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys   CGIHTTPRequestHandler s   		c     s·   t  o t  Sn y d k }  Wn t j
 o d Sn Xy |  i d ƒ d a  Wn; t j
 o, d t t d „  |  i ƒ  ƒ ƒ a  n X t  Sd S(   s$   Internal routine to get nobody's uidNiÿÿÿÿs   nobodyi   i   c    s   |  d S(   Ni   (   s   x(   s   x(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys   <lambda>s    (   s   nobodys   pwds   ImportErrors   getpwnams   KeyErrors   maxs   maps   getpwall(   s   pwd(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys
   nobody_uids   
*c    s[   #$%y &t  i |  ƒ } Wn  't  i j
 o (d Sn X)| d d @d j Sd S(   s   Test for executable file.i    iI   N(   s   oss   stats   paths   sts   error(   s   paths   st(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys
   executable#s   c    s   ,.t  i |  | ƒ d  S(   N(   s   SimpleHTTPServers   tests   HandlerClasss   ServerClass(   s   HandlerClasss   ServerClass(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys   test,s   s   __main__(   s   __doc__s   __version__s   __all__s   oss   syss   urllibs   BaseHTTPServers   SimpleHTTPServers   SimpleHTTPRequestHandlers   CGIHTTPRequestHandlers   Nones   nobodys
   nobody_uids
   executables
   HTTPServers   tests   __name__(   s   __all__s   SimpleHTTPServers
   executables   urllibs   CGIHTTPRequestHandlers   syss   tests
   nobody_uids   BaseHTTPServers   __version__s   os(    (    s-   /usr/local/twc/lib/python2.2/CGIHTTPServer.pys   ? s   	ò		