Apache-ASP

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

    Apache::ASP has some powerful administrative email extensions that let you
    sleep at night, knowing full well that if an error occurs at the web site,
    you will know about it immediately. With these features already enabled, it
    was also easy to provide the $Server->Mail(\%mail) API extension which you
    can read up about in the OBJECTS section.

    MailHost
        The mail host is the smtp server that the below Mail* config directives
        will use when sending their emails. By default Net::SMTP uses smtp mail
        hosts configured in Net::Config, which is set up at install time, but
        this setting can be used to override this config.

        The mail hosts specified in the Net::Config file will be used as backup
        smtp servers to the MailHost specified here, should this primary server
        not be working.

          PerlSetVar MailHost smtp.yourdomain.com.foobar

    MailFrom
        Default NONE, set this to specify the default mail address placed in the
        From: mail header for the $Server->Mail() API extension, as well as
        MailErrorsTo and MailAlertTo.

          PerlSetVar MailFrom youremail@yourdomain.com.foobar

    MailErrorsTo
        No default, if set, ASP server errors, error code 500, that result while
        compiling or running scripts under Apache::ASP will automatically be
        emailed to the email address set for this config. This allows an
        administrator to have a rapid response to user generated server errors
        resulting from bugs in production ASP scripts. Other errors, such as 404
        not found will be handled by Apache directly.

        An easy way to see this config in action is to have an ASP script which
        calls a die(), which generates an internal ASP 500 server error.

        The Debug config of value 2 and this setting are mutually exclusive, as
        Debug 2 is a development setting where errors are displayed in the
        browser, and MailErrorsTo is a production setting so that errors are
        silently logged and sent via email to the web admin.

          PerlSetVar MailErrorsTo youremail@yourdomain.com

    MailAlertTo
        The address configured will have an email sent on any ASP server error
        500, and the message will be short enough to fit on a text based pager.
        This config setting would be used to give an administrator a heads up
        that a www server error occurred, as opposed to MailErrorsTo would be
        used for debugging that server error.

        This config does not work when Debug 2 is set, as it is a setting for
        use in production only, where Debug 2 is for development use.

          PerlSetVar MailAlertTo youremail@yourdomain.com

    MailAlertPeriod
        Default 20 minutes, this config specifies the time in minutes over which
        there may be only one alert email generated by MailAlertTo. The purpose
        of MailAlertTo is to give the admin a heads up that there is an error at
        the www server. MailErrorsTo is for to aid in speedy debugging of the
        incident.

          PerlSetVar MailAlertPeriod 20

  File Uploads
    FileUploadMax
        default 0, if set will limit file uploads to this size in bytes. This is
        currently implemented by setting $CGI::POST_MAX before handling the file
        upload. Prior to this, a developer would have to hardcode a value for
        $CGI::POST_MAX to get this to work.

          PerlSetVar 100000

    FileUploadTemp
        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 other users on the operating system 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}. Please see the CGI section for more
        information on file uploads, and the $Request section in OBJECTS.

          PerlSetVar FileUploadTemp 0

SYNTAX
  General
    ASP embedding syntax allows one to embed code in html in 2 simple ways. The
    first is the <% xxx %> tag in which xxx is any valid perl code. The second
    is <%= xxx %> where xxx is some scalar value that will be inserted into the
    html directly. An easy print.

      A simple asp page would look like:
  
      <!-- sample here -->
      <html>
      <body>
      For loop incrementing font size: <p>
      <% for(1..5) { %>
            <!-- iterated html text -->
            <font size="<%=$_%>" > Size = <%=$_%> </font> <br>
      <% } %>
      </body>
      </html>
      <!-- end sample here -->

    Notice that your perl code blocks can span any html. The for loop above
    iterates over the html without any special syntax.

  XMLSubs
    XMLSubs allows a developer to define custom handlers for HTML & XML tags,
    which can extend the natural syntax of the ASP environment. Configured like:

      PerlSetVar XMLSubsMatch site:\w+

    A simple tag like:

      <site:header title="Page Title" />

README  view on Meta::CPAN

          error messaging.

    $VERSION = 0.12; $DATE="07/01/1999";
         -Compiles are now 10 +times faster for scripts with lots of big
          embedded perl blocks <% #perl %>

          Compiles were slow because of an old PerlScript compatibility
          parsing trick where $Request->QueryString('hi')->{item}
          would be parsed to $Request->QueryString('hi') which works.
          I think the regexp that I was using had O(n^2) characteristics
          and it took a really big perl block to 10 +seconds to parse
          to understand there was a problem :(

          I doubt anyone needed this compatibility, I don't even see
          any code that looks like this in the online PerlScript examples,
          so I've commented out this parsing trick for now.  If you 
          need me to bring back this functionality, it will be in the 
          form of a config setting.

          For information on PerlScript compatibility, see the PerlScript
          section in the ASP docs.

         -Added UniquePackages config option, that if set brings back 
          the old method of compiling each ASP script into its own
          separate package.  As of v.10, scripts are compiled by default
          into the same package, so that scripts, dynamic includes & global.asa
          can share globals.  This BROKE scripts in the same ASP Application
          that defined the same sub routines, as their subs would redefine
          each other.  

          UniquePackages has scripts compiled into separate perl packages,
          so they may define subs with the same name, w/o fear of overlap.
          Under this settings, scripts will not be able to share globals.  

         -Secure field for cookies in $Response->Cookies() must be TRUE to 
          force cookie to be secure.  Before, it just had to be defined, 
          which gave wrong behavior for Secure => 0. 

         +$Response->{IsClientConnected} set to one by default.  Will
          work out a real value when I upgrade to apache 1.3.6.  This
          value has no meaning before, as apache aborts the perl code
          when a client drops its connection in earlier versions.

         +better compile time debugging of dynamic includes, with 
          Debug 2 setting

         +"use strict" friendly handling of compiling dynamic includes
          with errors

    $VERSION = 0.11; $DATE="06/24/1999";
         +Lots of documentation updates

         +The MailHost config option is the smtp server used for 
          relay emails for the Mail* config options.

         +MailAlertTo config option used for sending a short administrative
          alert for an internal ASP error, server code 500.  This is the 
          compliment to MailErrorsTo, but is suited for sending a to a
          small text based pager.  The email sent by MailErrorsTo would
          then be checked by the web admin for quick response & debugging
          for the incident. 

          The MailAlertPeriod config specifies the time in minutes during 
          which only one alert will be sent, which defaults to 20.

         +MailErrorsTo config options sends the results of a 500 error
          to the email address specified as if Debug were set to 2.
          If Debug 2 is set, this config will not be on, as it is
          for production use only.  Debug settings less than 2 only 
          log errors to the apache server error log.

         -StatINCMatch / StatINC can be used in production and work
          even after a server graceful restart, which is essential for 
          a production server.

         -Content-Length header is set again, if BufferingOn is set, and
          haven't $Response->Flush()'d.  This broke when I introduce
          the Script_OnEnd event handler.

         +Optimized reloading of the GlobalPackage perl module upon changes, 
          so that scripts and dynamic includes don't have to be recompiled.  
          The global.asa will still have to be though.  Since we started
          compiling all routines into a package that can be named with
          GlobalPackage, we've been undeffing compiled scripts and includes
          when the real GlobalPackage changed on disk, as we do a full sweep
          through the namespace.  Now, we skip those subs that we know to 
          be includes or scripts. 

         -Using Apache::Symbol::undef() to undefine precompiled scripts
          and includes when reloading those scripts.  Doing just an undef() 
          would sometimes result in an "active subroutine undef" error.
          This bug came out when I started thrashing the StatINC system
          for production use.

         +StatINCMatch setting created for production use reloading of
          perl modules.  StatINCMatch allows StatINC reloading of a
          subset of all the modules defined in %INC, those that match
          $module =~ /$StatINCMatch/, where module is some module name
          like Class/Struct.pm

         +Reoptimized pod comment parsing.  I slowed it down to sync
          lines numbers in the last version, but found another corner I could cut.

    $VERSION = 0.10; $DATE="05/24/1999";
         += improvement; - = bug fix

         +Added index.html file to ./eg to help people wade through
          the examples.  This one has been long overdue.

         +Clean config option, or setting $Response->{Clean} to 1 - 9,
          uses HTML::Clean to compress text/html output of ASP scripts.
          I like the Clean 1 setting which is lightweight, stripping 
          white space for about 10% compression, at a cost of less than
          a 5% performance penalty.

         +Using pod style commenting no longer confuses the line
          numbering.  ASP script line numbers are almost exactly match
          their compiled perl version, except that normal inline includes
          (not dynamic) insert extra text which can confuse line numbering.
          If you want perl error line numbers to entirely sync with your 
          ASP scripts, I would suggest learning how to use dynamic includes,



( run in 1.866 second using v1.01-cache-2.11-cpan-39bf76dae61 )