Apache-ASP

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

         "09 Feb 1994"     -- proposed new HTTP format  

         "Feb  3  1994"    -- Unix 'ls -l' format
         "Feb  3 17:03"    -- Unix 'ls -l' format

    $Response->{FormFill} = 0|1
        If true, HTML forms generated by the script output will be auto filled
        with data from $Request->Form. This feature requires HTML::FillInForm to
        be installed. Please see the FormFill CONFIG for more information.

        This setting overrides the FormFill config at runtime for the script
        execution only.

    $Response->{IsClientConnected}
        1 if web client is connected, 0 if not. This value starts set to 1, and
        will be updated whenever a $Response->Flush() is called. If BufferingOn
        is set, by default $Response->Flush() will only be called at the end of
        the HTML output.

        As of version 2.23 this value is updated correctly before global.asa
        Script_OnStart is called, so global script termination may be correctly
        handled during that event, which one might want to do with excessive
        user STOP/RELOADS when the web server is very busy.

        An API extension $Response->IsClientConnected may be called for
        refreshed connection status without calling first a $Response->Flush

    $Response->{PICS}
        If this property has been set, a PICS-Label HTTP header will be sent
        with its value. For those that do not know, PICS is a header that is
        useful in rating the internet. It stands for Platform for Internet
        Content Selection, and you can find more info about it at:
        http://www.w3.org

    $Response->{Status} = $status
        Sets the status code returned by the server. Can be used to set messages
        like 500, internal server error

    $Response->AddHeader($name, $value)
        Adds a custom header to a web page. Headers are sent only before any
        text from the main page is sent, so if you want to set a header after
        some text on a page, you must turn BufferingOn.

    $Response->AppendToLog($message)
        Adds $message to the server log. Useful for debugging.

    $Response->BinaryWrite($data)
        Writes binary data to the client. The only difference from
        $Response->Write() is that $Response->Flush() is called internally
        first, so the data cannot be parsed as an html header. Flushing flushes
        the header if has not already been written.

        If you have set the $Response->{ContentType} to something other than
        text/html, cgi header parsing (see CGI notes), will be automatically be
        turned off, so you will not necessarily need to use BinaryWrite for
        writing binary data.

        For an example of BinaryWrite, see the binary_write.htm example in
        ./site/eg/binary_write.htm

        Please note that if you are on Win32, you will need to call binmode on a
        file handle before reading, if its data is binary.

    $Response->Clear()
        Erases buffered ASP output.

    $Response->Cookies($name, [$key,] $value)
        Sets the key or attribute of cookie with name $name to the value $value.
        If $key is not defined, the Value of the cookie is set. ASP CookiePath
        is assumed to be / in these examples.

         $Response->Cookies('name', 'value'); 
          --> Set-Cookie: name=value; path=/

         $Response->Cookies("Test", "data1", "test value");     
         $Response->Cookies("Test", "data2", "more test");      
         $Response->Cookies(
                "Test", "Expires", 
                &HTTP::Date::time2str(time+86400)
                ); 
         $Response->Cookies("Test", "Secure", 1);               
         $Response->Cookies("Test", "Path", "/");
         $Response->Cookies("Test", "Domain", "host.com");
          -->   Set-Cookie:Test=data1=test%20value&data2=more%20test;   \
                        expires=Fri, 23 Apr 1999 07:19:52 GMT;          \
                        path=/; domain=host.com; secure

        The latter use of $key in the cookies not only sets cookie attributes
        such as Expires, but also treats the cookie as a hash of key value pairs
        which can later be accesses by

         $Request->Cookies('Test', 'data1');
         $Request->Cookies('Test', 'data2');

        Because this is perl, you can (NOT PORTABLE) reference the cookies
        directly through hash notation. The same 5 commands above could be
        compressed to:

         $Response->{Cookies}{Test} = 
                { 
                        Secure  => 1, 
                        Value   =>      
                                {
                                        data1 => 'test value', 
                                        data2 => 'more test'
                                },
                        Expires => 86400, # not portable, see above
                        Domain  => 'host.com',
                        Path    => '/'
                };

        and the first command would be:

         # you don't need to use hash notation when you are only setting 
         # a simple value
         $Response->{Cookies}{'Test Name'} = 'Test Value';

        I prefer the hash notation for cookies, as this looks nice, and is quite
        perlish. It is here to stay. The Cookie() routine is very complex and
        does its best to allow access to the underlying hash structure of the
        data. This is the best emulation I could write trying to match the

README  view on Meta::CPAN

       allows, maybe via Apache::Session.

CHANGES
    Apache::ASP has been in development since 1998, and was production ready
    since its .02 release. Releases are always used in a production setting
    before being made publically available.

    In July 2000, the version numbers of releases went from .19 to 1.9 which is
    more relevant to software development outside the perl community. Where a
    .10 perl module usually means first production ready release, this would be
    the equivalent of a 1.0 release for other kinds of software.

     + = improvement   - = bug fix    (d) = documentations

    $VERSION = 2.63; $DATE="03/14/2018"
         + Added section ``raw'' to MailErrors.inc to debug POSTs without
           form fields

         - MailErrorsHTML now uses monospaced fonts for errors. Easier on
           the eyes and more informative

    $VERSION = 2.62; $DATE="08/16/2011"
         - Fixed 'application/x-www-form-urlencoded' for AJAX POSTs post
           Firefox 3.x

         + First sourceforge.net hosted version

         + Incremented version number to actually match SVN branch tag

    $VERSION = 2.61; $DATE="05/24/2008"
         - updated for more recent mod_perl 2 environment to trigger correct loading of modules

         + loads modules in a backwards compatible way for older versions of mod_perl 1.99_07 to 1.99_09

         + license changes from GPL to Perl Artistic License

    $VERSION = 2.59; $DATE="05/23/2005"
         + added "use bytes" to Response object to calculate Content-Length
           correctly for UTF8 data, which should require therefore at least
           perl version 5.6 installed

         + updated to work with latest mod_perl 2.0 module naming convention,
           thanks to Randy Kobes for patch

         + examples now exclude usage of Apache::Filter & Apache::SSI under mod_perl 2.0

    $VERSION = 2.57; $DATE="01/29/2004"
         - $Server->Transfer will update $0 correctly

         - return 0 for mod_perl handler to work with latest mod_perl 2 release
           when we were returning 200 ( HTTP_OK ) before

         - fixed bug in $Server->URL when called like $Server->URL($url)
           without parameters.  Its not clear which perl versions this bug 
           affected.

    $VERSION = 2.55; $DATE="08/09/2003"
         - Bug fixes for running on standalone CGI mode on Win32 submitted
           by Francesco Pasqualini

         + Added Apache::ASP::Request::BINMODE for binmode() being
           called on STDIN after STDIN is tied to $Request object

         + New RequestBinaryRead configuration created, may be turned off
           to prevent $Request object from reading POST data

         ++ mod_perl 2 optmizations, there was a large code impact on this,
           as much code was restructured to reduce the differences between
           mod_perl 1 and mod_perl 2, most importantly, Apache::compat is
           no longer used

         + preloaded CGI for file uploads in the mod_perl environment

         - When XSLT config is set, $Response->Redirect() should work now
           Thanks to Marcus Zoller for pointing problem out

         + Added CookieDomain setting, documented, and added test to cover 
           it in t/cookies.t . Setting suggested by Uwe Riehm, who nicely 
           submitted some code for this.

    $VERSION = 2.53; $DATE="04/10/2003"
         + XMLSubs tags with "-" in them will have "-" replaced with "_" or underscore, so a
           tag like <my:render-table /> will be translated to &my::render_table() ... tags with
           - in them are common in extended XML syntaxes, but perl subs cannot have - in them only.

         + Clean setting now works on output when $Response->{ContentType} begins with text/html;
           like "text/html; charset=iso-8859-2" ... before Clean would only work on output marked
           with ContentType text/html.  Thanks to Szymon Juraszczyk for recommending fix.

         --Fixed a bug which would cause Session_OnEnd to be called twice on sessions in a certain case,
           particularly when an old expired session gets reused by and web browser... this bug was
           a result of a incomplete session cleanup method in this case.  Thanks to Oleg Kobyakovskiy 
           for reporting this bug.  Added test in t/session_events.t to cover this problem going forward.

         - Compile errors from Apache::ASP->Loader() were not being reported.  They will
           be reported again now.  Thanks to Thanos Chatziathanassiou for discovering and
           documenting this bug.  Added test in t/load.t to cover this problem going forward.

         + use of chr(hex($1)) to decode URI encoded parameters instead of pack("c",hex($1))
           faster & more correct, thanks to Nikolay Melekhin for pointing out this need.

         (d) Added old perlmonth.com articles to ./site/articles in distribution
           and linked to them from the docs RESOURCES section

         (d) Updated documention for the $Application->SessionCount API

         + Scripts with named subroutines, which is warned against in the style guide,
           will not be cached to help prevent my closure problems that often
           hurt new developers working in mod_perl environments.  The downside
           is that these script will have a performance penalty having to be
           recompiled each invocation, but this will kill many closure caching 
           bugs that are hard to detect.

         - $Request->FileUpload('upload_file', 'BrowserFile') would return
           a glob before that would be the file name in scalar form.  However
           this would be interpreted as a reference incorrectly.  The fix
           is to make sure this is always a scalar by stringifying 
           this data internally.  Thanks to Richard Curtis for pointing
           out this bug.

    $VERSION = 2.51; $DATE="02/10/2003"

README  view on Meta::CPAN


         +MailFrom config option that defaults the From: field for 
          mails sent via the Mail* configs and $Server->Mail()

         +$Server->Mail(\%mail, %smtp_args) API extension

         +MailErrorsTo & MailAlertTo now can take comma
          separated email addresses for multiple recipients.

         -tracking of subroutines defined in scripts and includes so 
          StatINC won't undefine them when reloading the GlobalPackage, 
          and so an warning will be logged when another script redefines 
          the same subroutine name, which has been the bane of at least
          a few developers.

         -Loader() will now recompile dynamic includes that 
          have changed, even if main including script has not.
          This is useful if you are using Loader() in a 
          PerlRestartHandler, for reloading scripts when
          gracefully restarting apache.

         -Apache::ASP used to always set the status to 200 by 
          default explicitly with $r->status().  This would be 
          a problem if a script was being used to as a 404 
          ErrorDocument, because it would always return a 200 error
          code, which is just wrong.  $Response->{Status} is now 
          undefined by default and will only be used if set by 
          the developer.  

          Note that by default a script will still return a 200 status, 
          but $Response->{Status} may be used to override this behavior.

         +$Server->Config($setting) API extension that allows developer
          to access config settings like Global, StateDir, etc., and is a 
          wrapper around Apache->dir_config($setting)

         +Loader() will log the number of scripts
          recompiled and the number of scripts checked, instead
          of just the number of scripts recompiled, which is
          misleading as it reports 0 for child httpds after
          a parent fork that used Loader() upon startup.        

         -Apache::ASP->Loader() would have a bad error if it didn't load 
          any scripts when given a directory, prints "loaded 0 scripts" now

    $VERSION = 0.18; $DATE="02/03/2000";
         +Documented SessionQuery* & $Server->URL() and 
          cleaned up formatting some, as well as redoing
          some of the sections ordering for better readability.
          Document the cookieless session functionality more
          in a new SESSIONS section.  Also documented new 
          FileUpload configs and $Request->FileUpload collection.
          Documented StatScripts.

         +StatScripts setting which if set to 0 will not reload
          includes, global.asa, or scripts when changed.

         +FileUpload file handles cleanup at garbage collection
          time so developer does not have to worry about lazy coding
          and undeffing filehandles used in code.  Also set 
          uploaded filehandles to binmode automatically on Win32 
          platforms, saving the developer yet more typing.

         +FileUploadTemp setting, default 0, if set will leave
          a temp file on disk during the request, which may be 
          helpful for processing by other programs, but is also
          a security risk in that others could potentially read 
          this file while the script is running. 

          The path to the temp file will be available at
          $Request->{FileUpload}{$form_field}{TempFile}.
          The regular use of file uploads remains the same
          with the <$filehandle> to the upload at 
          $Request->{Form}{$form_field}.

         +FileUploadMax setting, default 0, currently an 
          alias for $CGI::POST_MAX, which determines the 
          max size for a file upload in bytes.  

         +SessionQueryParse only auto parses session-ids
          into links when a session-id COOKIE is NOT found.
          This feature is only enabled then when a user has
          disabled cookies, so the runtime penalty of this
          feature won't drag down the whole site, since most
          users will have cookies turned on.   

         -StatINC & StatINCMatch will not undef Fnctl.pm flock 
          functions constants like O_RDWR, because the code references
          are not well trackable.  This would result in sporadic 500 server
          errors when a changed module was reloaded that imported O_* flock 
          functions from Fnctl.

         +SessionQueryParse & SessionQueryParseMatch
          settings that enable auto parsing session ids into 
          URLs for cookieless sessions.  Will pick up URLs in 
          <a href>, <area href>, <form action>, <frame src>,
          <iframe src>, <img src>, <input src>, <link href>
          $Response->Redirect($URL) and the first URL in 
          script tags like <script>*.location.href=$URL</script>

          These settings require that buffering be enabled, as
          Apache::ASP will parse through the buffer to parse the URLs.

          With SessionQueryParse on, it will just parse non-absolute
          URLs, but with SessionQueryParseMatch set to some server
          url regexp, like ^http://localhost , will also parse
          in the session id for URLs that match that.

          When testing, the performance hit from this parsing
          a script dropped from 12.5 hits/sec on my WinNT box
          to 11.7 hits per second for 1K of buffered output.
          The difference is .007 of my PII300's processing power
          per second.

          For 10K of output then, my guess is that this speed
          of script, would be slowed to 6.8 hits per second.
          This kind of performance hit would also slow a
          script running at 40 hits per second on a UNIX box
          to 31 hits/sec for 1K, and to 11 hits/sec for 10K parsed.

          Your mileage may vary and you will have to test the difference



( run in 0.757 second using v1.01-cache-2.11-cpan-d8267643d1d )