;ò g–ñEc@s¨dZdZdkZdkZdkZdkZdkZdkZdkZdk Z dk Z dk Z dk Z dkl Z lZd„Zde ifd„ƒYZdS(s„ msHTTPHandler.py - class for handling HTTP requests (c) by Michael Stroeder This module is distributed under the terms of the GPL (GNU GENERAL PUBLIC LICENSE) Version 2 (see http://www.gnu.org/copyleft/gpl.html) $Id: msHTTPHandler.py,v 1.24 2007/03/09 17:16:23 michael Exp $ The HTTPHandlerClass is derived from class SimpleHTTPServer.SimpleHTTPRequestHandler. s0.2.0N(sstrftimesgmtimecCs–|otii|ƒo/d|GHdk}|i|ƒ}d|d|iid|iƒ|iƒ||fƒ|iiƒdS(sLog error messagess%s - - [%s] %s N(sselfs error_logswritesaddress_stringslog_date_time_stringsformatsargssflush(sselfsformatsargs((s./pylib/msHTTPHandler.pys log_errorUs-cGs>|iid|iƒ|iƒ||fƒ|iiƒdS(sLog all access messagess%s - - [%s] %s N(sselfs access_logswritesaddress_stringslog_date_time_stringsformatsargssflush(sselfsformatsargs((s./pylib/msHTTPHandler.pys log_message]s-s-cCsv|djo.|iiddƒ}|iiddƒ}n d}d}|id|it|ƒt|ƒ||ƒdS(sLog an accepted request.isReferers-s User-Agents"%s" %s %s "%s" "%s"N( scodesselfsheaderss getheadersreferers userAgents log_messages requestlinesstrssize(sselfscodessizesreferers userAgent((s./pylib/msHTTPHandler.pys log_requestes   c CsDd|idf\}}ti|dƒ}|djo"|| ||df\}}nd}ti|dƒ}|djo|| ||f\}}n|df\}}h}|i |i ƒ|i i |d "    O  cCsti|id|iƒSdS(Ni(sipadrsMatchIPAdrListsselfsclient_addresssaccess_allowed(sself((s./pylib/msHTTPHandler.pyscheck_IPAdress¢scCsDtidƒ}|i|ƒ|iddƒ|iid|ƒdS(Nsi“s access denieds©Content-type: text/html 403 Access denied

Access denied

You are not allowed to access URL
%(REQUEST_URI)s
from IP address
%(REMOTE_ADDR)s.
%(SERVER_SIGNATURE)s ( smsbases DefaultDictsdisp_envsupdateshttp_envsselfs send_responseswfileswrite(sselfshttp_envsdisp_env((s./pylib/msHTTPHandler.pys Send403Error¦s cCs‹t|iƒt|iƒjodSna|i|ijodSnF|ii|iƒo |it|iƒddgjodSndSdS(s-Determine if the web application is accessed.iis?s/N(slensselfspaths script_names startswith(sself((s./pylib/msHTTPHandler.pys is_webappÀs9cCs9|iotii||ƒSn|iddƒtSdS(sList directory if allowed.i“sNo permission to list directoryN(sselfsdir_listing_allowedsSimpleHTTPServersSimpleHTTPRequestHandlerslist_directoryspaths send_errorsNone(sselfspath((s./pylib/msHTTPHandler.pyslist_directoryÌs  cCsa|iƒ}|iƒ o|i|ƒdSn|iƒo|i|ƒn|iddƒdS(sServe a POST request.Ni•s&POST only allowed for web application.(sselfs get_http_envshttp_envscheck_IPAdresss Send403Errors is_webappsrun_apps send_error(sselfshttp_env((s./pylib/msHTTPHandler.pysdo_POSTÔs   cCsd|iƒ}|iƒ o|i|ƒdSn|iƒo|iddƒntii |ƒdS(sServe a GET request.Ni•s&HEAD not supported by web application.( sselfs get_http_envshttp_envscheck_IPAdresss Send403Errors is_webapps send_errorsSimpleHTTPServersSimpleHTTPRequestHandlersdo_HEAD(sselfshttp_env((s./pylib/msHTTPHandler.pysdo_HEADßs   cCsa|iƒ}|iƒ o|i|ƒdSn|iƒo|i|ƒntii |ƒdS(sServe a GET request.N( sselfs get_http_envshttp_envscheck_IPAdresss Send403Errors is_webappsrun_appsSimpleHTTPServersSimpleHTTPRequestHandlersdo_GET(sselfshttp_env((s./pylib/msHTTPHandler.pysdo_GETês   cCs#|idd|idƒdSdS(sStart web application itselfiÈs%s output followssSERVER_SOFTWAREN(sselfs send_responses server_env(sselfshttp_env((s./pylib/msHTTPHandler.pysrun_appõscCsš|i|iƒ}t}ytii|ƒ}Wn'tj o|i ddƒtSnX|o[xXddfD]9}tii ||ƒ}tii |ƒo |}PqlqlW|i |ƒSn|i|ƒ}|idƒo d}nd}yt||ƒ}Wn'tj o|i dd ƒtSnX|id ƒ|id |ƒ|id d ƒ|idtdtti|iƒƒtiƒƒƒ|iƒ|SdS(soCommon code for GET and HEAD commands. This sends the response code and MIME headers. Return value is either a file object (which has to be copied to the outputfile by the caller unless the command was HEAD, and must be closed by the caller under all circumstances), or None, in which case the caller has nothing further to do. is Bad requests index.htmls index.htmstext/srsrbi”sFile not foundiÈs Content-typesPragmascaches Last-modifieds%a, %d %b %Y %H:%M:%S GMTN(sselfstranslate_pathspathsNonesfsossisdirsos_path_isdir_paths TypeErrors send_errorsindexsjoinsexistsslist_directorys guess_typesctypes startswithsmodesopensIOErrors send_responses send_headersstrftimesgmtimesfstatsfilenosstatsST_MTIMEs end_headers(sselfsindexsfsos_path_isdir_pathsctypesmodespath((s./pylib/msHTTPHandler.pys send_headþs@       & ('s__name__s __module__s__doc__sNones script_names __version__sossseps server_envsdir_listing_allowedsmapsipadrsAddrMask_Str2Tuplesaccess_allowedssyssstdouts access_logsstderrs error_logs debug_logsgetExtensionMapsextensions_mapsreverse_lookupssfinishstranslate_pathsaddress_strings log_errors log_messages log_requests get_http_envscheck_IPAdresss Send403Errors is_webappslist_directorysdo_POSTsdo_HEADsdo_GETsrun_apps send_head(((s./pylib/msHTTPHandler.pysHTTPHandlerClass.s4           1    (s__doc__s __version__ssyssoss posixpathsstatssocketsstringstimesSimpleHTTPServersurllibsmsbasesipadrsstrftimesgmtimesgetExtensionMapsSimpleHTTPRequestHandlersHTTPHandlerClass(sgetExtensionMapsstatsipadrs posixpathsSimpleHTTPServersHTTPHandlerClasssgmtimesurllibssyssmsbasesstrftimestimes __version__sossstringssocket((s./pylib/msHTTPHandler.pys? s c