diff -Nru libapache-asp-perl-2.62/ASP.pm libapache-asp-perl-2.63/ASP.pm --- libapache-asp-perl-2.62/ASP.pm 2011-10-02 19:11:17.000000000 +0000 +++ libapache-asp-perl-2.63/ASP.pm 2018-03-15 05:09:52.000000000 +0000 @@ -4,7 +4,7 @@ package Apache::ASP; -$VERSION = 2.62; +$VERSION = 2.63; #require DynaLoader; #@ISA = qw(DynaLoader); @@ -2015,7 +2015,7 @@ sub get_dir_config { my $rv = shift->get(shift); - if(lc($rv) eq 'off') { + if(!$rv || lc($rv) eq 'off') { $rv = 0; # Off always becomes 0 } $rv; @@ -2052,6 +2052,8 @@ =pod +=encoding ISO8859-1 + =head1 NAME Apache::ASP - Active Server Pages for Apache with mod_perl @@ -2130,9 +2132,9 @@ Often, installing the mod_perl part of the Apache server can be the hardest part. If this is the case for you, check out the FAQ and SUPPORT sections for further help, -as well as the "Build Apache" notes in this section. +as well as the "Modern Linux Distributions" notes in this section. -Please also see the mod_perl guide at http://perl.apache.org/guide +Please also see the mod_perl site at http://perl.apache.org/ which one ought to give a good read before undertaking a mod_perl project. @@ -2141,8 +2143,8 @@ You may download the latest Apache::ASP from your nearest CPAN, and also: + http://search.cpan.org/dist/Apache-ASP/ http://cpan.org/modules/by-module/Apache/ - ftp://ftp.duke.edu/pub/perl/modules/by-module/Apache/ As a Perl developer, you should make yourself familiar with the CPAN.pm module, and how it may be used to install @@ -2188,84 +2190,22 @@ Please note that you must first have the Apache Web Server & mod_perl installed before using this module in a web server environment. The offline mode for building static html at -./cgi/asp may be used with just perl. - -=head2 Win32 / Windows Install - -If you are on a Win32 platform, like WinNT or Windows 2000, -you can download the win32 binaries linked to from: - - http://perl.apache.org/distributions.html - -From here, I would recommend the mod_perl binary installation at: - - ftp://theoryx5.uwinnipeg.ca/pub/other/ - -and install the latest perl-win32-bin-*.exe file. - -Randy Kobes has graciously provided these, which include -compiled versions perl, mod_perl, apache, mod_ssl, -as well as all the modules required by Apache::ASP -and Apache::ASP itself. - -You may also try the more recent Perl-5.8-win32-bin.exe -distribution which is built on Apache 2. This should be -treated as BETA release software until mod_perl 2.x is -released as stable. Some notes from Randy Kobes about -getting this release to work are here: - - After installing this distribution, in Apache2\conf\perl.conf - (pulled in via Apache2\conf\httpd.conf) there's directives that - have Apache::ASP handle files placed under the Apache2\asp\ - directory. There should be a sample Apache::ASP script there, - printenv.html, accessed as http://127.0.0.1/asp/printenv.html - which, if working, will print out your environment variables. - -=head2 WinME / 98 / 95 flock() workaround - -For those on desktop Windows operation systems, Apache::ASP v2.25 and -later needs a special work around for the lack of flock() support -on these systems. Please add this to your Apache httpd.conf to -fix this problem after mod_perl is installed: - - - *CORE::GLOBAL::flock = sub { 1 }; - - PerlModule Apache::ASP - -Please be sure to add this configuration before Apache::ASP is loaded -via PerlModule, or a PerlRequire statement. - -=head2 Linux DSO Distributions - -If you have a linux distribution, like a RedHat Linux server, -with an RPM style Apache + mod_perl, seriously consider building -a static version of the httpd server yourself, not DSO. -DSO is marked as experimental for mod_perl, and often does -not work, resulting in "no request object" error messages, -and other oddities, and are terrible to debug, because of -the strange kinds of things that can go wrong. +./cgi/asp-perl may be used with just perl. -=head2 Build Apache and mod_perl +=head2 Modern Linux Distributions -For a quick build of apache, there is a script in the distribution at -./make_httpd/build_httpds.sh that can compile a statically linked -Apache with mod_ssl and mod_perl. Just drop the sources into the -make_httpd directory, configure the environments as appropriate, -and execute the script like this: +If you have a modern Linux distribution like CentOS or Ubuntu, +you will likely have the easiest path by using the repository tools to +automatically install mod_perl and Apache before installing Apache::ASP via CPAN. - make_httpd> ./build_httpds.sh +For example for CentOS, this will install mod_perl into your apache httpd, the latter +likely being installed already by default on your server: -You might also find helpful a couple items: + bash> sudo yum install mod_perl-devel.x86_64 - Stas's mod_perl guide install section - http://perl.apache.org/guide/install.html +For Ubuntu this would be done like this: - Apache Toolbox - http://www.apachetoolbox.com/ - -People have been using Apache Toolbox to automate their -complex builds with great success. + bash> sudo apt-get install libapache2-mod-perl2 =head2 Quick Start @@ -2303,6 +2243,63 @@ can run the scripts in ./site/eg/ without any errors. Common problems can be found in the FAQ section. +=head2 Build static Apache and mod_perl for Apache 1.3.x + +For a quick build of apache, there is a script in the distribution at +./make_httpd/build_httpds.sh that can compile a statically linked +Apache with mod_ssl and mod_perl. Just drop the sources into the +make_httpd directory, configure the environments as appropriate, +and execute the script like this: + + make_httpd> ./build_httpds.sh + +You might also find helpful a couple items: + + Stas's mod_perl guide install section + http://perl.apache.org/guide/install.html + + Apache Toolbox + http://www.apachetoolbox.com/ + +People have been using Apache Toolbox to automate their +complex builds of Apache 1.3.x with great success. + +=head2 Win32 / Windows Install + +If you are on a Win32 platform, like WinNT or Windows 2000, +you can download the win32 binaries linked to from: + + http://perl.apache.org/download/binaries.html#Win32 + +and install the latest perl-win32-bin-*.exe file. + +Randy Kobes has graciously provided these, which include +compiled versions perl, mod_perl, apache, mod_ssl, +as well as all the modules required by Apache::ASP +and Apache::ASP itself. + +After installing this distribution, in Apache2\conf\perl.conf +(pulled in via Apache2\conf\httpd.conf) there's directives that +have Apache::ASP handle files placed under the Apache2\asp\ +directory. There should be a sample Apache::ASP script there, +printenv.html, accessed as http://127.0.0.1/asp/printenv.html +which, if working, will print out your environment variables. + +=head2 WinME / 98 / 95 flock() workaround + +For those on desktop Windows operation systems, Apache::ASP v2.25 and +later needs a special work around for the lack of flock() support +on these systems. Please add this to your Apache httpd.conf to +fix this problem after mod_perl is installed: + + + *CORE::GLOBAL::flock = sub { 1 }; + + PerlModule Apache::ASP + +Please be sure to add this configuration before Apache::ASP is loaded +via PerlModule, or a PerlRequire statement. + =head1 CONFIG You may use a directive in your httpd.conf @@ -2590,6 +2587,14 @@ PerlSetVar SecureSession 1 +=item HTTPOnlySession + +default 0. Sets HttpOnly flag to session cookie to mitigate XSS attacks. +Supported by most modern browsers, it only allows access to the +session cookie by the server (ie NOT Javascript) + + PerlSetVar HTTPOnlySession 1 + =item ParanoidSession default 0. When true, stores the user-agent header of the browser @@ -2777,7 +2782,7 @@ the debugging information. For a demo of this functionality, try the -./site/eg/syntax_error.htm script, and turn buffering on. +./site/eg/syntax_error.asp script, and turn buffering on. =item PodComments @@ -3442,8 +3447,6 @@ that mixes HTML & perl modes in a single buffer, check out the editors/mmm-asp-perl.el file in distribution. - * Microsoft Frontpage - * Vim, special syntax support with editors/aasp.vim file in distribution. * UltraEdit32 ( http://www.ultraedit.com/ ) has syntax highlighting, @@ -4893,19 +4896,29 @@ dynamically executed at runtime, turn the DynamicIncludes config option on as documented above. -That is not all! SSI is full featured. One of the -things missing above is the +=head2 Apache::SSI for mod_perl 1.3.x only + +One of the things missing above is the tag. This and many other SSI code extensions are available by filtering Apache::ASP output through Apache::SSI via -the Apache::Filter and the Filter config options. For -more information on how to wire Apache::ASP and Apache::SSI +the Apache::Filter and the Filter config options, available in mod_perl 1.3.x / Apache 1.3.x. +Unfortunately this functionality is not available with mod_perl 2 / Apache 2. + +For more information on how to wire Apache::ASP and Apache::SSI together, please see the Filter config option documented above. Also please see Apache::SSI for further information on the capabilities it offers. +=head2 SSI with mod_filter in Apache 2 + +Apache 2 offers chained filters. It may be possible to chain filters to +Apache::ASP output through mod_filter for SSI processing: + + http://httpd.apache.org/docs/2.1/mod/mod_filter.html + =head1 EXAMPLES Use with Apache. Copy the ./site/eg directory from the ASP installation @@ -4927,8 +4940,8 @@ with that client, the web server sets, and the web client returns a 32 byte session id identifier cookie. This implementation is very secure and may be used in secure HTTPS transactions, -and made stronger with SecureSession and ParanoidSession -settings (see CONFIG ). +and made stronger with SecureSession, HTTPOnlySession and +ParanoidSession settings (see CONFIG ). However good cookies are for this kind of persistent state management between HTTP requests, they have long @@ -5261,7 +5274,7 @@ For more information about CGI.pm, please see the web site - http://stein.cshl.org/WWW/software/CGI/ + http://search.cpan.org/dist/CGI/ =item Query Object Initialization @@ -5329,7 +5342,7 @@ on this topic, and ./site/eg/file_upload.asp for an example of its use. Also, for more details about CGI.pm itself, please see the web site: - http://stein.cshl.org/WWW/software/CGI/ + http://search.cpan.org/dist/CGI/ Occasionally, a newer version of CGI.pm will be released which breaks file upload compatibility with Apache::ASP. If you find this to occur, @@ -5478,7 +5491,7 @@ global.asa, or you may create a perl package or module to share with your scripts. For more on perl objects & modules, please see: - http://www.perldoc.com/perl5.8.0/pod/perlobj.html + http://perldoc.perl.org/perlobj.html =head2 Use global.asa's Script_On* Events @@ -5637,7 +5650,7 @@ more than one level of indirection on the left side of an assignment like: - $Session->{complex}{object} = $data; + BAD: $Session->{complex}{object} = $data; =item How can I keep search engine spiders from killing the session manager? @@ -5696,13 +5709,7 @@ =item VBScript or JScript supported? -Yes, but not with this Perl module. For ASP with other scripting -languages besides Perl, you will need to go with a commercial vendor -in the UNIX world. Sun has such a solution. -Of course on Windows NT and Windows 2000, you get VBScript for free with IIS. - - Sun ONE Active Server Pages (formerly Sun Chili!Soft ASP) - http://www.chilisoft.com +Only Perl scripting is supported with this module. =item How is database connectivity handled? @@ -5800,7 +5807,7 @@ updated to remain current with Apache::ASP v2.29+ Apache::ASP Site Tuning - http://www.chamas.com/asp/articles/perlmonth3_tune.html + http://www.apache-asp.org/articles/perlmonth3_tune.html =head2 Tuning & Benchmarking @@ -5989,7 +5996,9 @@ Other honorable mentions include: - !! Doug MacEachern, for moral support and of course mod_perl + !! Gregory Youngblood, Thanos Chatziathanassiou, & Tsirkin Evgeny for keeping the flame alive! + + :) Doug MacEachern, for moral support and of course mod_perl :) Helmut Zeilinger, Skylos, John Drago, and Warren Young for their help in the community :) Randy Kobes, for the win32 binaries, and for always being the epitome of helpfulness :) Francesco Pasqualini, for bug fixes with stand alone CGI mode on Win32 @@ -6072,8 +6081,7 @@ The mod_perl mailing list archives are located at: - http://forum.swarthmore.edu/epigone/modperl - http://www.egroups.com/group/modperl/ + http://mail-archives.apache.org/mod_mbox/perl-modperl/ =item Mailing List @@ -6090,7 +6098,7 @@ =item Donations -Apache::ASP is freely distributed under the terms of the GPL license +Apache::ASP is freely distributed under the terms of the Perl artistic license ( see the LICENSE section ). If you would like to donate time to the project, please get involved on the Apache::ASP Mailing List, and submit ideas, bug fixes and patches for the core system, @@ -6102,7 +6110,7 @@ If you would like commercial support for Apache::ASP, please check out any of the following listed companies. Note that this is not an endorsement, and if you would like your company -listed here, please email asp-dev [at] chamas.com with your information. +listed here, please email asp[at]perl.apache.org with your information. =item AlterCom @@ -6117,14 +6125,6 @@ http://www.Cyberchute.com -=item GrokThis.net - -Web hosting provider. Specializing in mod_perl and mod_python -hosting, we allow users to edit their own Apache configuration files -and run their own Apache servers. - - http://grokthis.net - =item OmniTI OmniTI supports Apache and mod_perl (including Apache::ASP) and offers competitive pricing for both hourly and project-based jobs. OmniTI has extensive experience managing and maintaining both large and small projects. Our services range from short-term consulting to project-based development, and include ongoing maintenance and hosting. @@ -6147,16 +6147,25 @@ What follows is a list of public sites that are using Apache::ASP. If you use the software for your site, and would like to show your support of the software by being listed, -please send your link to asp-dev [at] chamas.com +please send your link to asp[at]perl.apache.org For a list of testimonials of those using Apache::ASP, please see the TESTIMONIALS section. - Zapisy - Testy - http://www.ch.pwr.wroc.pl/~bruno/testy/ + PERSONiO Match + http://www.personio.com/home.asp + + gutscheinwurst.de - a German voucher community + http://www.gutscheinwurst.de SalesJobs.com http://www.salesjobs.com + hanschur.de + http://www.hanschur.de + + Webtist + http://www.webtist.de + FreeLotto http://www.freelotto.com @@ -6175,12 +6184,6 @@ WebTime http://webtime-project.net - Meet-O-Matic - http://meetomatic.com/about.asp - - Apache Hello World Benchmarks - http://chamas.com/bench/ - AlterCom, Advanced Web Hosting http://altercom.com/ @@ -6190,21 +6193,12 @@ ESSTECwebservices http://www.esstec.be/ - SQLRef - http://comclub.dyndns.org:8081/sqlref/ - - Bouygues Telecom Enterprises - http://www.b2bouygtel.com - Alumni.NET http://www.alumni.net Anime Wallpapers dot com http://www.animewallpapers.com/ - Chamas Enterprises Inc. - http://www.chamas.com - Cine.gr http://www.cine.gr @@ -6223,9 +6217,6 @@ Integra http://www.integra.ru/ - Internetowa Gielda Samochodowa - http://www.gielda.szczecin.pl - Money FM http://www.moneyfm.gr @@ -6247,9 +6238,6 @@ redhat.com | support http://www.redhat.com/apps/support/ - Samara.RU - http://portal.samara.ru/ - Spotlight http://www.spotlight.com.au @@ -6285,6 +6273,20 @@ -- Tom Lancaster, Red Hat +=item Anime Wallpaper at Anime Cubed + +Your suite has got our old CGI implementation beat, hands down. Our site is divided into two main areas, each run by a separate developer, and the Apache::ASP section runs head and shoulders above the other side. Anyone who is still using anything but your product to implement their webpages seriously needs to take a look at how versatile and powerful Apache::ASP is. Thanks again for such great work! + + -- Al from 'Anime Wallpaper at Anime Cubed', http://www.animecubed.com/wallpapers/ + +=item gutscheinwurst.de + +I am the web master of http://www.gutscheinwurst.de , a German voucher community. +We use Apache::Asp to run our backend & administration servers for the system. We started using Apache::ASP to see whether it is a valid alternative to IIS legacy systems. So far all expectations in regard of performance, ease of development and integration have been fulfilled or exceeded. +Thank's for such a great product :) + + -- Johnannes Leimbach + =item D. L. Fox I had programmed in Perl for some time ... but, @@ -6432,11 +6434,6 @@ Embedded Perl ( part of a series on Perl ) http://www.wdvl.com/Authoring/Languages/Perl/PerlfortheWeb/index15.html -=head2 Benchmarking - - Apache Hello World Benchmarks - http://chamas.com/bench/ - =head2 Books mod_perl "Eagle" Book @@ -6448,17 +6445,6 @@ Programming the Perl DBI http://www.oreilly.com/catalog/perldbi/ -=head2 Presentations - - Apache::ASP Tutorial, 2000 Open Source Convention ( PowerPoint ) - http://www.chamas.com/asp/OSS_convention_2000.pps - - Advanced Apache::ASP Tutorial, 2001 Open Source Convention ( Zipped PDF ) - http://www.chamas.com/asp/OSS_convention_2001.zip - - Advanced Apache::ASP Tutorial, 2001 Open Source Convention ( PDF ) - http://www.chamas.com/asp/OSS_convention_2001.pdf - =head2 Reference Cards Apache & mod_perl Reference Cards @@ -6469,7 +6455,7 @@ mod_perl Apache web module http://perl.apache.org - mod_perl Guide + mod_perl 1.x Guide http://perl.apache.org/guide/ Perl Programming Language @@ -6489,16 +6475,6 @@ + Database storage of $Session & $Application, so web clusters may scale better than the current NFS/CIFS StateDir implementation allows, maybe via Apache::Session. - + Sample Apache::ASP applications beyond ./site/eg - + More caching options like $Server->Cache for user cache - and $Response->Cache for page caching - + Caching guide - -=head2 MAY BE DONE - - + VBScript, ECMAScript or JavaScript interpreters - + Dumping state of Apache::ASP during an error, and being - able to go through it with the perl debugger. =head1 CHANGES @@ -6515,7 +6491,15 @@ + = improvement - = bug fix (d) = documentations -=item $VERSION = 2.62; $DATE="2011/08/16" +=item $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 + +=item $VERSION = 2.62; $DATE="08/16/2011" - Fixed 'application/x-www-form-urlencoded' for AJAX POSTs post Firefox 3.x @@ -6524,9 +6508,6 @@ + Incremented version number to actually match SVN branch tag - + Switched to Big-endian date format in the documentation. - Less chance of misunderstandings - =item $VERSION = 2.61; $DATE="05/24/2008" - updated for more recent mod_perl 2 environment to trigger correct loading of modules @@ -6818,7 +6799,7 @@ -Fixed runtime HTML error output when Debug is set to -2/2, so that script correctly again gets rendered in final perl form. - Added compile time error output to ./site/eg/syntax_error.htm + Added compile time error output to ./site/eg/syntax_error.asp when a special link is clicked for a quick visual test. -Cleaned up some bad coding practices in ./site/eg/global.asa @@ -8937,7 +8918,8 @@ =head1 LICENSE -Copyright (c) 1998-2008, Josh Chamas, Chamas Enterprises Inc. +Copyright (c) 1998-2018, Josh Chamas + All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libapache-asp-perl-2.62/build/build_ads.sh libapache-asp-perl-2.63/build/build_ads.sh --- libapache-asp-perl-2.62/build/build_ads.sh 2011-08-15 16:25:30.000000000 +0000 +++ libapache-asp-perl-2.63/build/build_ads.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -#!/bin/bash - -#perl ../cgi/asp -b -o ../site ./*.html -#perl /perl/bin/pod2text -80 < ../ASP.pm > ../README - -#perl ../cgi/asp -b -o ../site ./index.html ads 1 -perl ../asp-perl -b -o ../site ./index.html ads 1 ./*.html -touch ../site/apps/search/index.asp -rsync --delete --stats --exclude=CVS -a ../site/ /usr/local/proj/mlink/site/asp/ diff -Nru libapache-asp-perl-2.62/build/global/ad.inc libapache-asp-perl-2.63/build/global/ad.inc --- libapache-asp-perl-2.62/build/global/ad.inc 2011-08-15 16:25:30.000000000 +0000 +++ libapache-asp-perl-2.63/build/global/ad.inc 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ - - -<% -use vars qw ($Ads $PageCount); -if($Ads && ( $0 !~ /index.html$/ )) { # turn off for now - $PageCount++; - %> - -=pod - - -
-
- - -
- Banner Ad
- - Click!
- - - -
-

- -=cut - -<% } %> - diff -Nru libapache-asp-perl-2.62/build/global/global.asa libapache-asp-perl-2.63/build/global/global.asa --- libapache-asp-perl-2.62/build/global/global.asa 2011-08-15 16:25:30.000000000 +0000 +++ libapache-asp-perl-2.63/build/global/global.asa 2012-02-23 01:05:13.000000000 +0000 @@ -1,7 +1,6 @@ use Data::Dumper; -use vars qw(%FILES %ALIASES %LINKS $ASP $DOCINIT $DUMP $Ads $LINKS_MATCH $VAR1); -use MD5; +use vars qw(%FILES %ALIASES %LINKS $ASP $DOCINIT $DUMP $Site $LINKS_MATCH $VAR1); use Time::HiRes; use Data::Dumper; use Digest::MD5 qw( md5_hex ); @@ -64,8 +63,8 @@ unless ($DOCINIT++) { doc_init(); } - if($Request->QueryString('ads')) { - $Ads = 1; + if($Request->QueryString('site')) { + $Site = 1; } } @@ -104,7 +103,7 @@ close ASP; $data =~ s/^.*\n__END__//s; - my $new_checksum = MD5->hexhash($data.$self_data.(join('', %ALIASES))); + my $new_checksum = md5_hex($data.$self_data.(join('', %ALIASES))); if ($new_checksum eq $dump_data->{checksum}) { $Response->Debug("matched old compiled ASP doc $dump_data->{checksum}"); $ASP = $dump_data->{ASP}; diff -Nru libapache-asp-perl-2.62/build/global/top.inc libapache-asp-perl-2.63/build/global/top.inc --- libapache-asp-perl-2.62/build/global/top.inc 2011-08-15 16:35:30.000000000 +0000 +++ libapache-asp-perl-2.63/build/global/top.inc 2018-03-15 05:05:40.000000000 +0000 @@ -1,9 +1,10 @@ + <% use File::Basename qw(basename); use strict; use vars qw( - $NavColor $LinkColor $NavColSpan $Ads $PageCount $DarkRowColor $VLinkColor + $NavColor $LinkColor $NavColSpan $Site $PageCount $DarkRowColor $VLinkColor $BodyWidth $BodyColSpan ); @@ -72,21 +73,10 @@ --> - alink=#ff5599 vlink=<%=$VLinkColor%> marginheight=0 marginwidth=0 leftMargin=0 topMargin=0> -<% if($Ads) { %> -
- - - -
-
-<% } %> - -
cellspacing=8> diff -Nru libapache-asp-perl-2.62/CHANGES libapache-asp-perl-2.63/CHANGES --- libapache-asp-perl-2.62/CHANGES 2011-10-02 19:11:17.000000000 +0000 +++ libapache-asp-perl-2.63/CHANGES 2014-05-22 15:59:29.000000000 +0000 @@ -1,3 +1,18 @@ +$MODULE=Apache::ASP; $VERSION = 2.63; $DATE="2014/05/20" + + + fixed $r->connection()->remote_ip() to use useragent_ip(), then client_ip() access for Apache 2.4 + + + 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 + + - Added a clumsy regex to avoid header longer than 70 chars + + - removed deprecated "Extra" module references from Makefile.PL and Bundle::Apache::ASP::Extra, + including Apache::Filter, Apache::SSI, Bundle::XML, XML::Sablotron, and Tie::TextDir + $MODULE=Apache::ASP; $VERSION = 2.62; $DATE="2011/08/16" - Fixed 'application/x-www-form-urlencoded' for AJAX POSTs post diff -Nru libapache-asp-perl-2.62/debian/changelog libapache-asp-perl-2.63/debian/changelog --- libapache-asp-perl-2.62/debian/changelog 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/changelog 2018-03-31 22:37:45.000000000 +0000 @@ -1,3 +1,30 @@ +libapache-asp-perl (2.63-1) unstable; urgency=medium + + [ Salvatore Bonaccorso ] + * debian/control: Use HTTPS transport protocol for Vcs-Git URI + + [ gregor herrmann ] + * debian/copyright: change Copyright-Format 1.0 URL to HTTPS. + + [ Salvatore Bonaccorso ] + * Update Vcs-* headers for switch to salsa.debian.org + + [ gregor herrmann ] + * New upstream release. + * Drop silence_test_warnings.patch, fixed upstream. + * Drop debian/patches/pod-encoding.patch, merged upstream. + * Refresh remaining patches. + * Update years of upstream and packaging copyright. + * Mark package as autopkgtest-able. + * Declare compliance with Debian Policy 4.1.3. + * Bump debhelper compatibility level to 10. + * Remove libapache-ssi-perl from Suggests. Apache::SSI is for Apache 1, + and the package was removed from the archive in 2008. + * Fix a bunch of spelling mistakes in the documentation. + * Add patch to adjust tests to autopkgtest. + + -- gregor herrmann Sun, 01 Apr 2018 00:37:45 +0200 + libapache-asp-perl (2.62-2) unstable; urgency=low [ Salvatore Bonaccorso ] diff -Nru libapache-asp-perl-2.62/debian/compat libapache-asp-perl-2.63/debian/compat --- libapache-asp-perl-2.62/debian/compat 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/compat 2018-03-31 22:37:45.000000000 +0000 @@ -1 +1 @@ -9 +10 diff -Nru libapache-asp-perl-2.62/debian/control libapache-asp-perl-2.63/debian/control --- libapache-asp-perl-2.62/debian/control 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/control 2018-03-31 22:37:45.000000000 +0000 @@ -3,15 +3,16 @@ Uploaders: gregor herrmann , Florian Schlichting Section: perl +Testsuite: autopkgtest-pkg-perl Priority: optional -Build-Depends: debhelper (>= 9) +Build-Depends: debhelper (>= 10) Build-Depends-Indep: libcgi-pm-perl | perl (<< 5.19), libmldbm-perl, libmldbm-sync-perl, perl -Standards-Version: 3.9.6 -Vcs-Browser: https://anonscm.debian.org/cgit/pkg-perl/packages/libapache-asp-perl.git -Vcs-Git: git://anonscm.debian.org/pkg-perl/packages/libapache-asp-perl.git +Standards-Version: 4.1.3 +Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/libapache-asp-perl +Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/libapache-asp-perl.git Homepage: https://metacpan.org/release/Apache-ASP Package: libapache-asp-perl @@ -23,8 +24,7 @@ libmldbm-sync-perl, libwww-perl Recommends: libapache2-mod-perl2 -Suggests: libapache-ssi-perl, - libdevel-symdump-perl, +Suggests: libdevel-symdump-perl, libhtml-clean-perl, libhtml-fillinform-perl, libxml-libxslt-perl | libxml-xslt-perl diff -Nru libapache-asp-perl-2.62/debian/copyright libapache-asp-perl-2.63/debian/copyright --- libapache-asp-perl-2.62/debian/copyright 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/copyright 2018-03-31 22:37:45.000000000 +0000 @@ -1,10 +1,10 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Contact: Joshua Chamas Source: https://metacpan.org/release/Apache-ASP Upstream-Name: Apache-ASP Files: * -Copyright: 1998-2008, Josh Chamas, Chamas Enterprises Inc. +Copyright: 1998-2018, Josh Chamas License: Artistic or GPL-1+ Files: lib/Apache/ASP/Date.pm @@ -21,7 +21,7 @@ 2005, Stephen Quinney 2005, Víctor Pérez Pereira 2008, Stephen Gran - 2011-2015, gregor herrmann + 2011-2018, gregor herrmann 2012, Florian Schlichting License: Artistic or GPL-1+ diff -Nru libapache-asp-perl-2.62/debian/patches/autopkgtests.patch libapache-asp-perl-2.63/debian/patches/autopkgtests.patch --- libapache-asp-perl-2.62/debian/patches/autopkgtests.patch 1970-01-01 00:00:00.000000000 +0000 +++ libapache-asp-perl-2.63/debian/patches/autopkgtests.patch 2018-03-31 22:37:45.000000000 +0000 @@ -0,0 +1,24 @@ +Description: asp-perl is in a different place when tests are run under autopkgtest +Origin: vendor +Forwarded: not-needed +Author: gregor herrmann +Last-Update: 2018-04-01 + +--- a/t/asp-perl1.t ++++ b/t/asp-perl1.t +@@ -11,4 +11,5 @@ + + @ARGV = ('-b', '-f', 'asp-perl/asp.conf', 'asp-perl/ok.inc'); + use lib qw(../blib/lib ../lib); +-do "../asp-perl"; ++my $bindir = $ENV{ADTTMP} ? '/usr/bin' : '../'; ++do "$bindir/asp-perl"; +--- a/t/asp-perl2.t ++++ b/t/asp-perl2.t +@@ -8,4 +8,5 @@ + + @ARGV = ('-b', 'ok.inc'); + use lib qw(../../blib/lib ../../lib); +-do "../../asp-perl"; ++my $bindir = $ENV{ADTTMP} ? '/usr/bin' : '../../'; ++do "$bindir/asp-perl"; diff -Nru libapache-asp-perl-2.62/debian/patches/pod-encoding.patch libapache-asp-perl-2.63/debian/patches/pod-encoding.patch --- libapache-asp-perl-2.62/debian/patches/pod-encoding.patch 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/patches/pod-encoding.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -Description: add encoding to POD -Origin: vendor -Author: gregor herrmann -Last-Update: 2015-06-13 -Forwarded: https://rt.cpan.org/Ticket/Display.html?id=105196 -Bug: https://rt.cpan.org/Ticket/Display.html?id=105196 - ---- a/ASP.pm -+++ b/ASP.pm -@@ -2052,6 +2052,8 @@ - - =pod - -+=encoding ISO8859-1 -+ - =head1 NAME - - Apache::ASP - Active Server Pages for Apache with mod_perl diff -Nru libapache-asp-perl-2.62/debian/patches/pod.patch libapache-asp-perl-2.63/debian/patches/pod.patch --- libapache-asp-perl-2.62/debian/patches/pod.patch 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/patches/pod.patch 2018-03-31 22:37:45.000000000 +0000 @@ -2,11 +2,11 @@ Origin: vendor Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=69642 Author: gregor herrmann -Last-Update: 2012-03-07 +Last-Update: 2018-04-01 --- a/ASP.pm +++ b/ASP.pm -@@ -2334,6 +2334,8 @@ +@@ -2331,6 +2331,8 @@ =head2 Core @@ -15,7 +15,7 @@ =item Global Global is the nerve center of an Apache::ASP application, in which -@@ -2430,8 +2432,12 @@ +@@ -2427,8 +2429,12 @@ PerlSetVar NoCache 0 @@ -28,7 +28,7 @@ =item NoState default 0, if true, neither the $Application nor $Session objects will -@@ -2549,8 +2555,12 @@ +@@ -2546,8 +2552,12 @@ PerlSetVar StateSerializer Data::Dumper @@ -41,7 +41,7 @@ =item CookiePath URL root that client responds to by sending the session cookie. -@@ -2643,8 +2653,12 @@ +@@ -2648,8 +2658,12 @@ PerlSetVar SessionCount 1 @@ -54,7 +54,7 @@ =item SessionQueryParse default 0, if true, will automatically parse the $Session -@@ -2717,8 +2731,12 @@ +@@ -2722,8 +2736,12 @@ PerlSetVar SessionQueryForce 1 @@ -67,7 +67,7 @@ =item UseStrict default 0, if set to 1, will compile all scripts, global.asa -@@ -2819,8 +2837,12 @@ +@@ -2824,8 +2842,12 @@ which you would do if you _really_ needed the speed. @@ -80,7 +80,7 @@ =item XMLSubsMatch default not defined, set to some regexp pattern -@@ -2923,6 +2945,8 @@ +@@ -2928,6 +2950,8 @@ as of version 2.11, this config is no longer supported. @@ -89,7 +89,7 @@ =head2 Caching The output caching layer is a file dbm based output cache that runs -@@ -2954,6 +2978,8 @@ +@@ -2959,6 +2983,8 @@ This said, output caching will not work in raw CGI mode, just running under mod_perl. @@ -98,7 +98,7 @@ =item CacheDB Like StateDB, sets dbm format for caching. Since SDBM_File -@@ -3028,8 +3054,12 @@ +@@ -3033,8 +3059,12 @@ for caching output from includes with special syntax. See $Response->Include() for more info on the Response cache. @@ -111,7 +111,7 @@ =item AuthServerVariables default 0. If you are using basic auth and would like -@@ -3261,6 +3291,8 @@ +@@ -3266,6 +3296,8 @@ also get this time in the Apache error log with the other system messages. @@ -120,7 +120,7 @@ =head2 Mail Administration Apache::ASP has some powerful administrative email -@@ -3270,6 +3302,8 @@ +@@ -3275,6 +3307,8 @@ it was also easy to provide the $Server->Mail(\%mail) API extension which you can read up about in the OBJECTS section. @@ -129,7 +129,7 @@ =item MailHost The mail host is the smtp server that the below Mail* config directives -@@ -3333,8 +3367,12 @@ +@@ -3338,8 +3372,12 @@ PerlSetVar MailAlertPeriod 20 @@ -142,7 +142,7 @@ =item FileUploadMax default 0, if set will limit file uploads to this -@@ -3363,6 +3401,8 @@ +@@ -3368,6 +3406,8 @@ PerlSetVar FileUploadTemp 0 @@ -151,7 +151,7 @@ =head1 SYNTAX =head2 General -@@ -5528,6 +5568,8 @@ +@@ -5541,6 +5581,8 @@ =head2 Installation @@ -160,7 +160,7 @@ =item Examples don't work, I see the ASP script in the browser? This is most likely that Apache is not configured to execute -@@ -5624,8 +5666,12 @@ +@@ -5637,8 +5679,12 @@ of Data::Dumper and MLDBM, which are the modules used to write the state files. @@ -173,7 +173,7 @@ =item How can I use $Session to store complex data structures. Very carefully. Please read the $Session documentation in -@@ -5692,8 +5738,12 @@ +@@ -5705,8 +5751,12 @@ database connections on a per process basis, and will work for most cases. @@ -185,8 +185,8 @@ + =item VBScript or JScript supported? - Yes, but not with this Perl module. For ASP with other scripting -@@ -5761,8 +5811,12 @@ + Only Perl scripting is supported with this module. +@@ -5768,8 +5818,12 @@ are free COM ports to the UNIX world. At this time, there is no ActiveX for the UNIX world. @@ -199,7 +199,7 @@ =item How do I get things I want done?! If you find a problem with the module, or would like a feature added, -@@ -5777,6 +5831,8 @@ +@@ -5784,6 +5838,8 @@ and MKS PScript. If you can suggest any changes to facilitate these goals, your comments are welcome. @@ -208,7 +208,7 @@ =head1 TUNING A little tuning can go a long way, and can make the difference between -@@ -6058,6 +6114,8 @@ +@@ -6067,6 +6123,8 @@ =head2 COMMUNITY @@ -217,7 +217,7 @@ =item Mailing List Archives Try the Apache::ASP mailing list archive first when working -@@ -6097,6 +6155,8 @@ +@@ -6105,6 +6163,8 @@ and perhaps most importantly to simply support others in learning the ins and outs of the software. @@ -226,9 +226,9 @@ =head2 COMMERCIAL If you would like commercial support for Apache::ASP, please -@@ -6104,6 +6164,8 @@ +@@ -6112,6 +6172,8 @@ this is not an endorsement, and if you would like your company - listed here, please email asp-dev [at] chamas.com with your information. + listed here, please email asp[at]perl.apache.org with your information. +=over + @@ -244,7 +244,7 @@ =head1 SITES USING What follows is a list of public sites that are using -@@ -6266,6 +6330,8 @@ +@@ -6254,6 +6318,8 @@ For a list of sites using Apache::ASP, please see the SITES USING section. @@ -253,7 +253,7 @@ =item Red Hat =begin html -@@ -6411,6 +6477,8 @@ +@@ -6413,6 +6479,8 @@ None of this would ever be possible without Apache::ASP (I do not ever want to write ``print "\n";'' again). @@ -262,16 +262,16 @@ =head1 RESOURCES Here are some important resources listed related to -@@ -6515,6 +6583,8 @@ +@@ -6491,6 +6559,8 @@ + = improvement - = bug fix (d) = documentations +=over + - =item $VERSION = 2.62; $DATE="2011/08/16" + =item $VERSION = 2.63; $DATE="03/14/2018" - - Fixed 'application/x-www-form-urlencoded' for AJAX POSTs post -@@ -8935,6 +9005,8 @@ + + Added section ``raw'' to MailErrors.inc to debug POSTs without +@@ -8916,6 +8986,8 @@ exist. Should stop hackers, since there is no wire speed guessing cookies. @@ -279,7 +279,7 @@ + =head1 LICENSE - Copyright (c) 1998-2008, Josh Chamas, Chamas Enterprises Inc. + Copyright (c) 1998-2018, Josh Chamas --- a/lib/Apache/ASP/CGI/Table.pm +++ b/lib/Apache/ASP/CGI/Table.pm @@ -7,7 +7,7 @@ diff -Nru libapache-asp-perl-2.62/debian/patches/series libapache-asp-perl-2.63/debian/patches/series --- libapache-asp-perl-2.62/debian/patches/series 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/patches/series 2018-03-31 22:37:45.000000000 +0000 @@ -1,5 +1,5 @@ spelling.patch pod.patch spelling2.patch -silence_test_warnings.patch -pod-encoding.patch +spelling3.patch +autopkgtests.patch diff -Nru libapache-asp-perl-2.62/debian/patches/silence_test_warnings.patch libapache-asp-perl-2.63/debian/patches/silence_test_warnings.patch --- libapache-asp-perl-2.62/debian/patches/silence_test_warnings.patch 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/patches/silence_test_warnings.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -Description: fix "uninitialized value $rv" warnings during tests - ...apparently, ASP usually runs without warnings enabled... -Author: Florian Schlichting -Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=75617 - ---- a/ASP.pm -+++ b/ASP.pm -@@ -2015,7 +2015,7 @@ - - sub get_dir_config { - my $rv = shift->get(shift); -- if(lc($rv) eq 'off') { -+ if(defined($rv) && lc($rv) eq 'off') { - $rv = 0; # Off always becomes 0 - } - $rv; diff -Nru libapache-asp-perl-2.62/debian/patches/spelling2.patch libapache-asp-perl-2.63/debian/patches/spelling2.patch --- libapache-asp-perl-2.62/debian/patches/spelling2.patch 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/patches/spelling2.patch 2018-03-31 22:37:45.000000000 +0000 @@ -1,19 +1,21 @@ Description: fix another two typos reported by lintian -Author: Florian Schlichting Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=69642 +Author: Florian Schlichting +Reviewed-by: gregor herrmann +Last-Update: 2018-04-01 --- a/ASP.pm +++ b/ASP.pm -@@ -2348,7 +2348,7 @@ +@@ -2345,7 +2345,7 @@ for easy use. Unless StateDir is configured, this directory must be some -writeable directory by the web server. $Session and $Application -+writable directory by the web server. $Session and $Application ++writable directory by the web server. $Session and $Application object state files will be stored in this directory. If StateDir is configured, then ignore this paragraph, as it overrides the Global directory for this purpose. -@@ -6380,7 +6380,7 @@ +@@ -6382,7 +6382,7 @@ =end html diff -Nru libapache-asp-perl-2.62/debian/patches/spelling3.patch libapache-asp-perl-2.63/debian/patches/spelling3.patch --- libapache-asp-perl-2.62/debian/patches/spelling3.patch 1970-01-01 00:00:00.000000000 +0000 +++ libapache-asp-perl-2.63/debian/patches/spelling3.patch 2018-03-31 22:37:45.000000000 +0000 @@ -0,0 +1,186 @@ +Description: fix a bunch of spelling errors +Origin: vendor +Forwarded: no, upstream ignored our previous spelling fixes as well +Author: gregor herrmann +Last-Update: 2018-04-01 + +--- a/ASP.pm ++++ b/ASP.pm +@@ -110,7 +110,7 @@ + 'Filter' => + "Apache::Filter was not loaded correctly for using SSI filtering. ". + "If you don't want to use filtering, make sure you turn the Filter ". +- "config option off whereever it's being used", ++ "config option off wherever it's being used", + + Clean => undef, + +@@ -344,7 +344,7 @@ + } else { + $self->Error("Apache::Filter was not loaded correctly for using SSI filtering. ". + "If you don't want to use filtering, make sure you turn the Filter ". +- "config option off whereever it's being used"); ++ "config option off wherever it's being used"); + } + } + } +@@ -3108,7 +3108,7 @@ + + Default 0, if set creates $Request->Params object with combined + contents of $Request->QueryString and $Request->Form. This +-is for developer convenience simlar to CGI.pm's param() method. ++is for developer convenience similar to CGI.pm's param() method. + + PerlSetVar RequestParams 1 + +@@ -4531,7 +4531,7 @@ + + API extension. If RequestParams CONFIG is set, the $Request->Params + object is created with combined contents of $Request->QueryString +-and $Request->Form. This is for developer convenience simlar ++and $Request->Form. This is for developer convenience similar + to CGI.pm's param() method. Just like for $Response->Form, + one could create a nice alias like: + +@@ -4689,7 +4689,7 @@ + escaped with this method. + + As of version 2.23, $Server->HTMLEncode() may take a string reference +-for an optmization when encoding a large buffer as an API extension. ++for an optimization when encoding a large buffer as an API extension. + Here is how one might use one over the other: + + my $buffer = '&' x 100000; +@@ -5090,7 +5090,7 @@ + in the names of perl subroutines. + + Then you would create the my::employee subroutine in the my +-perl package or whereever like so: ++perl package or wherever like so: + + package my; + sub new_employee { +@@ -5205,7 +5205,7 @@ + of being written in pure perl so that though while it is slower + than the other solutions, it is easier to port. + +-If you would like to cache XSLT tranformations, which ++If you would like to cache XSLT transformations, which + is highly recommended, just set: + + PerlSetVar XSLTCache 1 +@@ -5626,7 +5626,7 @@ + Generally use of globals in this way is a BAD IDEA, + and you can spare yourself many headaches if do + "use strict" perl programming which forces you to +-explicity declare globals like: ++explicitly declare globals like: + + use vars qw($counter); + +@@ -6382,7 +6382,7 @@ + + =end html + +-I would like to say that your ASP module rocks :-) We have practically stopped developing in anything else about half a year ago, and are now using Apache::ASP extensively. I just love Perl, and whereever we are not "forced" to use JSP, we chose ASP. It is fast, reliable, versatile, documented in a way that is the best for professionals - so thank you for writing and maintaining it! ++I would like to say that your ASP module rocks :-) We have practically stopped developing in anything else about half a year ago, and are now using Apache::ASP extensively. I just love Perl, and wherever we are not "forced" to use JSP, we chose ASP. It is fast, reliable, versatile, documented in a way that is the best for professionals - so thank you for writing and maintaining it! + + -- Csongor Fagyal, Concept Online Ltd. + +@@ -6456,11 +6456,11 @@ + Apache::ASP has been a great tool. Just a little + background.... the whole site had been in cgi flat files when I started + here. I was looking for a technology that would allow me to write the +-objects and NEVER invoke CGI.pm... I found it and hopefuly I will be able to ++objects and NEVER invoke CGI.pm... I found it and hopefully I will be able to + implement this every site I go to. + + When I got here there was a huge argument about needing a game engine +-and I belive this has been the key... Games are approx. 10 time faster than ++and I believe this has been the key... Games are approx. 10 time faster than + before. The games don't break anylonger. All in all a great tool for + advancement. + +@@ -6658,7 +6658,7 @@ + (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 ++ (d) Updated documentation 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 +@@ -6693,7 +6693,7 @@ + for suggesting the fix. + + - $Response->{ContentType} set to text/html for developer error reporting, +- in case this was set to something else before the error occured. ++ in case this was set to something else before the error occurred. + Thanks to Philip Mak for reporting. + + - Couple of minor bug fixes under PerlWarn use, thanks Peter Galbavy +@@ -6719,7 +6719,7 @@ + ++ Total XSLT speedups, 5-10% on large XSLT, 10-15% on small XSLT + + + bypass meta data check like expires for XSLT Cache() API use +- because XSLT tranformations don't expire, saves hit to cache dbm ++ because XSLT transformations don't expire, saves hit to cache dbm + for meta data + + + use of direct Apache::ASP::State methods like FETCH/STORE +@@ -6741,7 +6741,7 @@ + ++ Runtime speed enhancements for 15-20% improvement including: + + INTERNAL API ReadFile() now returns scalar ref as memory optimization + + cache InodeNames config setting in ASP object now for common lookups +- + removed CompileChecksum() INTERNAL API, since it was an unnecesary ++ + removed CompileChecksum() INTERNAL API, since it was an unnecessary + method decomposition along a common code path + + removed IsChanged() INTERNAL API since compiling of scripts + is now handled by CompileInclude() which does this functionality already +@@ -6750,7 +6750,7 @@ + + do not call INTERNAL SearchDirs() API when compiling base script + since we have already validated its path earlier + + Use stat(_) type shortcut for stat() & -X calls where possible +- + Moved @INC initilization up to handler() & consolidated with $INCDir lib ++ + Moved @INC initialization up to handler() & consolidated with $INCDir lib + + removed useless Apache::ASP::Collection::DESTROY + + removed useless Apache::ASP::Server::DESTROY + + removed useless Apache::ASP::GlobalASA::DESTROY +@@ -7120,7 +7120,7 @@ + =item $VERSION = 2.31; $DATE="01/22/2002"; + + + $Server->MapInclude() API extension created to wrap up Apache::ASP::SearchDirs +- functionality so one may do an conditional check for an include existence befor ++ functionality so one may do an conditional check for an include existence before + executing $Response->Include(). Added API test to server.t + + + $Server->Transfer() now allows arguments like $Response->Include(), and now acts just +@@ -7520,7 +7520,7 @@ + when its Debug => 0 + + -Check for undef values during stats for inline includes +- so we don't trigger unintialized warnings ++ so we don't trigger uninitialized warnings + + +Documented ';' may separate many directories in the IncludesDir + setting for creating a more flexible includes search path. +@@ -7538,8 +7538,8 @@ + -In old inline include mode, there should no longer + be the error "need id for includes" when using + $Response->Include() ... if DynamicIncludes were +- enabled, this problem would not have likely occured +- anyway. DynamicIncludes are preferrable to use so ++ enabled, this problem would not have likely occurred ++ anyway. DynamicIncludes are preferable to use so + that compiled includes can be shared between scripts. + This bug was likely introduced in version 2.11. + +@@ -7990,7 +7990,7 @@ + up the internal database into one of 256 internal databases + hashed by the first 2 chars of the session id. Also on the plate + is Apache::Session like abilities with locking and/or data storage +- occuring in a SQL database. The first dbs to be done will include ++ occurring in a SQL database. The first dbs to be done will include + MySQL & Oracle. + + +Better session security which will create a new session id for an diff -Nru libapache-asp-perl-2.62/debian/patches/spelling.patch libapache-asp-perl-2.63/debian/patches/spelling.patch --- libapache-asp-perl-2.62/debian/patches/spelling.patch 2015-06-12 22:10:31.000000000 +0000 +++ libapache-asp-perl-2.63/debian/patches/spelling.patch 2018-03-31 22:37:45.000000000 +0000 @@ -2,11 +2,11 @@ Origin: vendor Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=69642 Author: gregor herrmann -Last-Update: 2011-02-13 +Last-Update: 2018-04-01 --- a/ASP.pm +++ b/ASP.pm -@@ -6568,7 +6568,7 @@ +@@ -6549,7 +6549,7 @@ + New RequestBinaryRead configuration created, may be turned off to prevent $Request object from reading POST data @@ -15,7 +15,7 @@ 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 -@@ -7465,7 +7465,7 @@ +@@ -7446,7 +7446,7 @@ +Net::SMTP debugging not enabled by Debug 1,2,3 configs, not only when system debugging is set with Debug -1,-2,-3 However, a Debug param passed to $Server->Mail() will @@ -26,27 +26,27 @@ -Check for undef values during stats for inline includes --- a/README +++ b/README -@@ -3944,7 +3944,7 @@ - + New RequestBinaryRead configuration created, may be turned off - to prevent $Request object from reading POST data +@@ -3956,7 +3956,7 @@ + + 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, -+ ++ mod_perl 2 optimizations, 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 -@@ -4824,7 +4824,7 @@ - +Net::SMTP debugging not enabled by Debug 1,2,3 configs, - not only when system debugging is set with Debug -1,-2,-3 - However, a Debug param passed to $Server->Mail() will -- sucessfully override the Debug -1,-2,-3 setting even -+ successfully override the Debug -1,-2,-3 setting even - when its Debug => 0 +- ++ mod_perl 2 optmizations, there was a large code impact on this, ++ ++ mod_perl 2 optimizations, 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 +@@ -4836,7 +4836,7 @@ + +Net::SMTP debugging not enabled by Debug 1,2,3 configs, + not only when system debugging is set with Debug -1,-2,-3 + However, a Debug param passed to $Server->Mail() will +- sucessfully override the Debug -1,-2,-3 setting even ++ successfully override the Debug -1,-2,-3 setting even + when its Debug => 0 - -Check for undef values during stats for inline includes + -Check for undef values during stats for inline includes --- a/site/changes.html +++ b/site/changes.html -@@ -706,7 +706,7 @@ +@@ -759,7 +759,7 @@ + New RequestBinaryRead configuration created, may be turned off to prevent $Request object from reading POST data @@ -55,7 +55,7 @@ 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 -@@ -1654,7 +1654,7 @@ +@@ -1707,7 +1707,7 @@ +Net::SMTP debugging not enabled by Debug 1,2,3 configs, not only when system debugging is set with Debug -1,-2,-3 However, a Debug param passed to $Server->Mail() will diff -Nru libapache-asp-perl-2.62/lib/Apache/ASP/Response.pm libapache-asp-perl-2.63/lib/Apache/ASP/Response.pm --- libapache-asp-perl-2.62/lib/Apache/ASP/Response.pm 2011-08-15 16:33:46.000000000 +0000 +++ libapache-asp-perl-2.63/lib/Apache/ASP/Response.pm 2014-05-20 21:55:21.000000000 +0000 @@ -654,7 +654,7 @@ $dataref = defined($_[0]) ? \$_[0] : \''; } - &WriteRef($self, $dataref); + &WriteRef($self, $dataref); 1; } @@ -680,6 +680,10 @@ # add dataref to buffer ${$self->{out}} .= $$dataref; + #Encode::_utf8_on(${$self->{out}}); + + #Encode::from_to(${$self->{out}}, "utf8", "iso-8859-1"); + # do we flush now? not if we are buffering if(! $self->{'Buffer'} && ! $self->{'FormFill'}) { # we test for whether anything is in the buffer since diff -Nru libapache-asp-perl-2.62/lib/Apache/ASP/Server.pm libapache-asp-perl-2.63/lib/Apache/ASP/Server.pm --- libapache-asp-perl-2.62/lib/Apache/ASP/Server.pm 2011-08-15 16:32:30.000000000 +0000 +++ libapache-asp-perl-2.63/lib/Apache/ASP/Server.pm 2014-05-20 21:55:21.000000000 +0000 @@ -108,6 +108,19 @@ ref($toencode) ? $data_ref : $$data_ref; } +sub HTMLEncodeByValue { + my($self, $toencode) = @_; + return '' unless defined $toencode; + + $toencode =~ s/&/&/sg; + $toencode =~ s/\"/"/sg; + $toencode =~ s/\'/'/sg; + $toencode =~ s/>/>/sg; + $toencode =~ s/
@@ -97,7 +87,7 @@ - <% if($Ads) { %> + <% if($Site) { %> -> - -
<%=$module%>
@@ -185,7 +175,10 @@
- +<% if($Site) { %> +
+ NodeWorks Link Checker +<% } %> @@ -322,14 +315,6 @@
align=center width=80%> - - Copyright © 1998-<%= (localtime())[5] + 1900 %>, - Chamas Enterprises Inc. - -
- <% for my $key ( qw( GLOBAL FILE REMOTE_ADDR REMOTE_USER HTTP_HEADERS QUERY FORM ) ) { + <% for my $key ( qw( GLOBAL FILE REMOTE_ADDR REMOTE_USER HTTP_HEADERS QUERY FORM RAW ) ) { next unless defined $args{$key}; %> - + <% } %>
<%= $key %>:<%= $args{$key} %>
<%= $args{$key} %>
diff -Nru libapache-asp-perl-2.62/lib/Apache/ASP/Share/CORE/MailErrors.inc libapache-asp-perl-2.63/lib/Apache/ASP/Share/CORE/MailErrors.inc --- libapache-asp-perl-2.62/lib/Apache/ASP/Share/CORE/MailErrors.inc 2011-08-15 16:25:30.000000000 +0000 +++ libapache-asp-perl-2.63/lib/Apache/ASP/Share/CORE/MailErrors.inc 2014-05-20 21:55:21.000000000 +0000 @@ -5,19 +5,26 @@ my $Form = $Request->Form; my $Query = $Request->QueryString; my $Env = $Request->ServerVariables; +my $Raw = $Server->HTMLEncodeByValue($Request->BinaryRead); +$Raw =~ s/([^\n]{50,70})(.)/$1\n$2/gi; -my $http_out = join("
\n ", - map { "$_= ".$Server->HTMLEncode(substr($Env->{$_}, 0, 100)) } - sort grep(/^HTTP_/, keys %$Env) - ); -my $query_out = join("
\n ", - map { "$_= ".$Server->HTMLEncode(substr($Query->{$_}, 0, 100)) } - sort keys %$Query - ); -my $form_out = join("
\n ", - map { "$_= ".$Server->HTMLEncode(substr($Form->{$_}, 0, 100)) } - sort keys %$Form - ); +my $http_out = join("\n", + map { "$_= ".$Server->HTMLEncodeByValue($Env->{$_}) } + sort keys %$Env + ); +$http_out =~ s/([^\n]{50,70})(.)/$1\n$2/gi; + +my $query_out = join("\n", + map { "$_= ".$Server->HTMLEncodeByValue($Query->{$_}) } + sort keys %$Query + ); +$query_out =~ s/([^\n]{50,70})(.)/$1\n$2/gi; + +my $form_out = join("\n", + map { "$_= ".$Server->HTMLEncodeByValue($Form->{$_}) } + sort keys %$Form + ); +$form_out =~ s/([^\n]{50,70})(.)/$1\n$2/gi; my %client_data = ( GLOBAL => $Server->Config('Global') || '.', FILE => $Server->File, @@ -26,6 +33,7 @@ HTTP_HEADERS => $http_out || '', QUERY => $query_out || '', FORM => $form_out || '', + RAW => $Raw || '', ); $Response->Include('Share::CORE/MailErrorsHTML.inc', %args, %client_data); diff -Nru libapache-asp-perl-2.62/lib/Apache/ASP/StateManager.pm libapache-asp-perl-2.63/lib/Apache/ASP/StateManager.pm --- libapache-asp-perl-2.62/lib/Apache/ASP/StateManager.pm 2011-08-15 16:25:30.000000000 +0000 +++ libapache-asp-perl-2.63/lib/Apache/ASP/StateManager.pm 2014-05-22 15:59:29.000000000 +0000 @@ -82,7 +82,11 @@ $self->{cookie_path} = &config($self, 'CookiePath', undef, '/'); $self->{cookie_domain} = &config($self, 'CookieDomain'); $self->{paranoid_session} = &config($self, 'ParanoidSession'); - $self->{remote_ip} = $r->connection()->remote_ip(); + + $self->{remote_ip} = eval { $r->connection()->remote_ip() }; # may not exist in Apache 2.4 + $self->{remote_ip} ||= eval { $r->useragent_ip() }; # should exist in Apache 2.4, best for end user agent IP address + $self->{remote_ip} ||= eval { $r->connection()->client_ip() }; # if useragent_ip not defined for Apache 2.4, try this one + $self->{session_count} = &config($self, 'SessionCount'); # cookieless session support, cascading values @@ -94,6 +98,7 @@ $self->{session_serialize} = &config($self, 'SessionSerialize'); $self->{secure_session} = &config($self, 'SecureSession'); + $self->{http_only_session} = &config($self, 'HTTPOnlySession'); # session timeout in seconds since that is what we work with internally $self->{session_timeout} = &config($self, 'SessionTimeout', undef, $SessionTimeout) * 60; $self->{'ua'} = $self->{headers_in}->get('User-Agent') || 'UNKNOWN UA'; @@ -440,8 +445,9 @@ unless($self->{session_url_force}) { # don't set the cookie when we are just using SessionQuery* configs my $secure = $self->{secure_session} ? '; secure' : ''; + my $httponly = $self->{http_only_session} ? '; HttpOnly' : ''; my $domain = $self->{cookie_domain} ? '; domain='.$self->{cookie_domain} : ''; - $self->{r}->err_headers_out->add('Set-Cookie', "$SessionCookieName=$id; path=$self->{cookie_path}".$domain.$secure); + $self->{r}->err_headers_out->add('Set-Cookie', "$SessionCookieName=$id; path=$self->{cookie_path}".$domain.$secure.$httponly); } $self->{session_id} = $id; } else { diff -Nru libapache-asp-perl-2.62/lib/Bundle/Apache/ASP/Extra.pm libapache-asp-perl-2.63/lib/Bundle/Apache/ASP/Extra.pm --- libapache-asp-perl-2.62/lib/Bundle/Apache/ASP/Extra.pm 2011-08-15 16:25:30.000000000 +0000 +++ libapache-asp-perl-2.63/lib/Bundle/Apache/ASP/Extra.pm 2014-05-20 21:55:21.000000000 +0000 @@ -1,6 +1,6 @@ package Bundle::Apache::ASP::Extra; -$VERSION = '1.02'; +$VERSION = '1.03'; 1; @@ -36,16 +36,8 @@ HTML::FillInForm - FormFill functionality which autofills HTML forms from form data -Apache::Filter - Required for SSI filtering with Apache::SSI - HTML::SimpleParse - Required for SSI filtering with Apache::SSI -Apache::SSI - Required for full server side includes support ( SSI ) beyond file includes - -Tie::TextDir - Fast file based cache for CacheDB, good for caching large values for things like XSLT and $Response->Include() caching - -Bundle::XML - Required for XML::XSLT support. - XML::XSLT - Required for XSLT support. May also use XML::Sablotron and XML::LibXSLT for this, which are not part of this bundle. =head1 DESCRIPTION diff -Nru libapache-asp-perl-2.62/LICENSE libapache-asp-perl-2.63/LICENSE --- libapache-asp-perl-2.62/LICENSE 2011-08-15 16:25:30.000000000 +0000 +++ libapache-asp-perl-2.63/LICENSE 1970-01-01 00:00:00.000000000 +0000 @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff -Nru libapache-asp-perl-2.62/Makefile.PL libapache-asp-perl-2.63/Makefile.PL --- libapache-asp-perl-2.62/Makefile.PL 2011-08-15 16:25:30.000000000 +0000 +++ libapache-asp-perl-2.63/Makefile.PL 2014-05-20 21:55:21.000000000 +0000 @@ -34,14 +34,17 @@ 'HTML::Clean' => 'Compress text/html with Clean config or $Response->{Clean} set to 1-9', 'HTML::FillInForm' => 'Enables FormFill feature which will auto fill forms from $Request->Form data', - 'Apache::Filter' => 'Full SSI support via Apache::Filter & Apache::SSI', - 'Apache::SSI' => 'Full SSI support via Apache::Filter & Apache::SSI', +## not relevant on apache2 context +## 'Apache::Filter' => 'Full SSI support via Apache::Filter & Apache::SSI', +## 'Apache::SSI' => 'Full SSI support via Apache::Filter & Apache::SSI', 'Net::SMTP' => 'Runtime errors can be mailed to the webmaster with MailErrorTo config', 'Net::Config' => 'Config options for use with Net::SMTP', 'Time::HiRes' => 'Sub second Apache::ASP response timing with Debug 3/-3 turned on.', -# 'Tie::TextDir .04' => 'Fast cache for CacheDB setting for things like large XSLT transformations.', +## no longer seems supported +## 'Tie::TextDir .04' => 'Fast cache for CacheDB setting for things like large XSLT transformations.', 'XML::XSLT 0.32' => 'XSLT, written in perl so makes for an easy install after installing Bundle::XML from CPAN.', - 'XML::Sablotron' => 'XSLT that is 10 times faster than XML::XSLT', +## no longer seems supported +## 'XML::Sablotron' => 'XSLT that is 10 times faster than XML::XSLT', 'XML::LibXSLT' => 'XSLT that is 2 times faster than XML::Sablotron', }; diff -Nru libapache-asp-perl-2.62/MANIFEST libapache-asp-perl-2.63/MANIFEST --- libapache-asp-perl-2.62/MANIFEST 2011-08-15 16:35:30.000000000 +0000 +++ libapache-asp-perl-2.63/MANIFEST 2018-03-15 05:13:40.000000000 +0000 @@ -248,3 +248,5 @@ t/xmlsubs_aspargs.t t/xmlsubs_perlargs.t t/xmlsubsmatch.t +META.yml Module YAML meta-data (added by MakeMaker) +META.json Module JSON meta-data (added by MakeMaker) diff -Nru libapache-asp-perl-2.62/META.json libapache-asp-perl-2.63/META.json --- libapache-asp-perl-2.62/META.json 1970-01-01 00:00:00.000000000 +0000 +++ libapache-asp-perl-2.63/META.json 2018-03-15 05:13:40.000000000 +0000 @@ -0,0 +1,49 @@ +{ + "abstract" : "unknown", + "author" : [ + "unknown" + ], + "dynamic_config" : 1, + "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001", + "license" : [ + "unknown" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "Apache-ASP", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "Carp" : "0", + "Class::Struct" : "0", + "Data::Dumper" : "0", + "Digest::MD5" : "0", + "Fcntl" : "0", + "File::Basename" : "0", + "MLDBM" : "0", + "MLDBM::Sync" : "0", + "SDBM_File" : "0" + } + } + }, + "release_status" : "stable", + "version" : 2.63 +} diff -Nru libapache-asp-perl-2.62/META.yml libapache-asp-perl-2.63/META.yml --- libapache-asp-perl-2.62/META.yml 1970-01-01 00:00:00.000000000 +0000 +++ libapache-asp-perl-2.63/META.yml 2018-03-15 05:13:40.000000000 +0000 @@ -0,0 +1,30 @@ +--- +abstract: unknown +author: + - unknown +build_requires: + ExtUtils::MakeMaker: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 1 +generated_by: 'ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001' +license: unknown +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: Apache-ASP +no_index: + directory: + - t + - inc +requires: + Carp: '0' + Class::Struct: '0' + Data::Dumper: '0' + Digest::MD5: '0' + Fcntl: '0' + File::Basename: '0' + MLDBM: '0' + MLDBM::Sync: '0' + SDBM_File: '0' +version: 2.63 diff -Nru libapache-asp-perl-2.62/README libapache-asp-perl-2.63/README --- libapache-asp-perl-2.62/README 2011-10-02 19:11:17.000000000 +0000 +++ libapache-asp-perl-2.63/README 2018-03-15 05:08:38.000000000 +0000 @@ -1,5 +1,5 @@ NAME - Apache::ASP - Active Server Pages for Apache with mod_perl + Apache::ASP - Active Server Pages for Apache with mod_perl SYNOPSIS SetHandler perl-script @@ -46,16 +46,17 @@ Need Help Often, installing the mod_perl part of the Apache server can be the hardest part. If this is the case for you, check out the FAQ and SUPPORT sections - for further help, as well as the "Build Apache" notes in this section. + for further help, as well as the "Modern Linux Distributions" notes in this + section. - Please also see the mod_perl guide at http://perl.apache.org/guide which one - ought to give a good read before undertaking a mod_perl project. + Please also see the mod_perl site at http://perl.apache.org/ which one ought + to give a good read before undertaking a mod_perl project. Download and CPAN Install You may download the latest Apache::ASP from your nearest CPAN, and also: + http://search.cpan.org/dist/Apache-ASP/ http://cpan.org/modules/by-module/Apache/ - ftp://ftp.duke.edu/pub/perl/modules/by-module/Apache/ As a Perl developer, you should make yourself familiar with the CPAN.pm module, and how it may be used to install Apache::ASP, and other related @@ -98,77 +99,21 @@ Please note that you must first have the Apache Web Server & mod_perl installed before using this module in a web server environment. The offline - mode for building static html at ./cgi/asp may be used with just perl. + mode for building static html at ./cgi/asp-perl may be used with just perl. - Win32 / Windows Install - If you are on a Win32 platform, like WinNT or Windows 2000, you can download - the win32 binaries linked to from: - - http://perl.apache.org/distributions.html - - From here, I would recommend the mod_perl binary installation at: - - ftp://theoryx5.uwinnipeg.ca/pub/other/ - - and install the latest perl-win32-bin-*.exe file. - - Randy Kobes has graciously provided these, which include compiled versions - perl, mod_perl, apache, mod_ssl, as well as all the modules required by - Apache::ASP and Apache::ASP itself. - - You may also try the more recent Perl-5.8-win32-bin.exe distribution which - is built on Apache 2. This should be treated as BETA release software until - mod_perl 2.x is released as stable. Some notes from Randy Kobes about - getting this release to work are here: - - After installing this distribution, in Apache2\conf\perl.conf - (pulled in via Apache2\conf\httpd.conf) there's directives that - have Apache::ASP handle files placed under the Apache2\asp\ - directory. There should be a sample Apache::ASP script there, - printenv.html, accessed as http://127.0.0.1/asp/printenv.html - which, if working, will print out your environment variables. - - WinME / 98 / 95 flock() workaround - For those on desktop Windows operation systems, Apache::ASP v2.25 and later - needs a special work around for the lack of flock() support on these - systems. Please add this to your Apache httpd.conf to fix this problem after - mod_perl is installed: + Modern Linux Distributions + If you have a modern Linux distribution like CentOS or Ubuntu, you will + likely have the easiest path by using the repository tools to automatically + install mod_perl and Apache before installing Apache::ASP via CPAN. - - *CORE::GLOBAL::flock = sub { 1 }; - - PerlModule Apache::ASP + For example for CentOS, this will install mod_perl into your apache httpd, + the latter likely being installed already by default on your server: - Please be sure to add this configuration before Apache::ASP is loaded via - PerlModule, or a PerlRequire statement. + bash> sudo yum install mod_perl-devel.x86_64 - Linux DSO Distributions - If you have a linux distribution, like a RedHat Linux server, with an RPM - style Apache + mod_perl, seriously consider building a static version of the - httpd server yourself, not DSO. DSO is marked as experimental for mod_perl, - and often does not work, resulting in "no request object" error messages, - and other oddities, and are terrible to debug, because of the strange kinds - of things that can go wrong. + For Ubuntu this would be done like this: - Build Apache and mod_perl - For a quick build of apache, there is a script in the distribution at - ./make_httpd/build_httpds.sh that can compile a statically linked Apache - with mod_ssl and mod_perl. Just drop the sources into the make_httpd - directory, configure the environments as appropriate, and execute the script - like this: - - make_httpd> ./build_httpds.sh - - You might also find helpful a couple items: - - Stas's mod_perl guide install section - http://perl.apache.org/guide/install.html - - Apache Toolbox - http://www.apachetoolbox.com/ - - People have been using Apache Toolbox to automate their complex builds with - great success. + bash> sudo apt-get install libapache2-mod-perl2 Quick Start Once you have successfully built the Apache Web Server with mod_perl, copy @@ -204,6 +149,59 @@ scripts in ./site/eg/ without any errors. Common problems can be found in the FAQ section. + Build static Apache and mod_perl for Apache 1.3.x + For a quick build of apache, there is a script in the distribution at + ./make_httpd/build_httpds.sh that can compile a statically linked Apache + with mod_ssl and mod_perl. Just drop the sources into the make_httpd + directory, configure the environments as appropriate, and execute the script + like this: + + make_httpd> ./build_httpds.sh + + You might also find helpful a couple items: + + Stas's mod_perl guide install section + http://perl.apache.org/guide/install.html + + Apache Toolbox + http://www.apachetoolbox.com/ + + People have been using Apache Toolbox to automate their complex builds of + Apache 1.3.x with great success. + + Win32 / Windows Install + If you are on a Win32 platform, like WinNT or Windows 2000, you can download + the win32 binaries linked to from: + + http://perl.apache.org/download/binaries.html#Win32 + + and install the latest perl-win32-bin-*.exe file. + + Randy Kobes has graciously provided these, which include compiled versions + perl, mod_perl, apache, mod_ssl, as well as all the modules required by + Apache::ASP and Apache::ASP itself. + + After installing this distribution, in Apache2\conf\perl.conf (pulled in via + Apache2\conf\httpd.conf) there's directives that have Apache::ASP handle + files placed under the Apache2\asp\ directory. There should be a sample + Apache::ASP script there, printenv.html, accessed as + http://127.0.0.1/asp/printenv.html which, if working, will print out your + environment variables. + + WinME / 98 / 95 flock() workaround + For those on desktop Windows operation systems, Apache::ASP v2.25 and later + needs a special work around for the lack of flock() support on these + systems. Please add this to your Apache httpd.conf to fix this problem after + mod_perl is installed: + + + *CORE::GLOBAL::flock = sub { 1 }; + + PerlModule Apache::ASP + + Please be sure to add this configuration before Apache::ASP is loaded via + PerlModule, or a PerlRequire statement. + CONFIG You may use a directive in your httpd.conf Apache configuration file to make Apache::ASP start ticking. Configure the optional settings if @@ -231,507 +229,528 @@ Core Global - Global is the nerve center of an Apache::ASP application, in which the - global.asa may reside defining the web application's event handlers. + Global is the nerve center of an Apache::ASP application, in which the + global.asa may reside defining the web application's event handlers. - This directory is pushed onto @INC, so you will be able to "use" and - "require" files in this directory, and perl modules developed for this - application may be dropped into this directory, for easy use. - - Unless StateDir is configured, this directory must be some writeable - directory by the web server. $Session and $Application object state files - will be stored in this directory. If StateDir is configured, then ignore - this paragraph, as it overrides the Global directory for this purpose. - - Includes, specified with or - $Response->Include() syntax, may also be in this directory, please see - section on includes for more information. + This directory is pushed onto @INC, so you will be able to "use" and + "require" files in this directory, and perl modules developed for this + application may be dropped into this directory, for easy use. + + Unless StateDir is configured, this directory must be some writeable + directory by the web server. $Session and $Application object state + files will be stored in this directory. If StateDir is configured, then + ignore this paragraph, as it overrides the Global directory for this + purpose. + + Includes, specified with or + $Response->Include() syntax, may also be in this directory, please see + section on includes for more information. - PerlSetVar Global /tmp + PerlSetVar Global /tmp GlobalPackage - Perl package namespace that all scripts, includes, & global.asa events are - compiled into. By default, GlobalPackage is some obscure name that is - uniquely generated from the file path of the Global directory, and - global.asa file. The use of explicitly naming the GlobalPackage is to allow - scripts access to globals and subs defined in a perl module that is included - with commands like: + Perl package namespace that all scripts, includes, & global.asa events + are compiled into. By default, GlobalPackage is some obscure name that + is uniquely generated from the file path of the Global directory, and + global.asa file. The use of explicitly naming the GlobalPackage is to + allow scripts access to globals and subs defined in a perl module that + is included with commands like: - in perl script: use Some::Package; - in apache conf: PerlModule Some::Package + in perl script: use Some::Package; + in apache conf: PerlModule Some::Package - PerlSetVar GlobalPackage Some::Package + PerlSetVar GlobalPackage Some::Package UniquePackages - default 0. Set to 1 to compile each script into its own perl package, so - that subroutines defined in one script will not collide with another. + default 0. Set to 1 to compile each script into its own perl package, so + that subroutines defined in one script will not collide with another. - By default, ASP scripts in a web application are compiled into the *same* - perl package, so these scripts, their includes, and the global.asa events - all share common globals & subroutines defined by each other. The problem - for some developers was that they would at times define a subroutine of the - same name in 2+ scripts, and one subroutine definition would redefine the - other one because of the namespace collision. + By default, ASP scripts in a web application are compiled into the + *same* perl package, so these scripts, their includes, and the + global.asa events all share common globals & subroutines defined by each + other. The problem for some developers was that they would at times + define a subroutine of the same name in 2+ scripts, and one subroutine + definition would redefine the other one because of the namespace + collision. - PerlSetVar UniquePackages 0 + PerlSetVar UniquePackages 0 DynamicIncludes - default 0. SSI file includes are normally inlined in the calling script, and - the text gets compiled with the script as a whole. With this option set to - TRUE, file includes are compiled as a separate subroutine and called when - the script is run. The advantage of having this turned on is that the code - compiled from the include can be shared between scripts, which keeps the - script sizes smaller in memory, and keeps compile times down. + default 0. SSI file includes are normally inlined in the calling script, + and the text gets compiled with the script as a whole. With this option + set to TRUE, file includes are compiled as a separate subroutine and + called when the script is run. The advantage of having this turned on is + that the code compiled from the include can be shared between scripts, + which keeps the script sizes smaller in memory, and keeps compile times + down. - PerlSetVar DynamicIncludes 0 + PerlSetVar DynamicIncludes 0 IncludesDir - no defaults. If set, this directory will also be used to look for includes - when compiling scripts. By default the directory the script is in, and the - Global directory are checked for includes. - - This extension was added so that includes could be easily shared between ASP - applications, whereas placing includes in the Global directory only allows - sharing between scripts in an application. - - PerlSetVar IncludesDir . - - Also, multiple includes directories may be set by creating a directory list - separated by a semicolon ';' as in - - PerlSetVar IncludesDir ../shared;/usr/local/asp/shared - - Using IncludesDir in this way creates an includes search path that would - look like ., Global, ../shared, /usr/local/asp/shared The current directory - of the executing script is checked first whenever an include is specified, - then the Global directory in which the global.asa resides, and finally the - IncludesDir setting. + no defaults. If set, this directory will also be used to look for + includes when compiling scripts. By default the directory the script is + in, and the Global directory are checked for includes. + + This extension was added so that includes could be easily shared between + ASP applications, whereas placing includes in the Global directory only + allows sharing between scripts in an application. + + PerlSetVar IncludesDir . + + Also, multiple includes directories may be set by creating a directory + list separated by a semicolon ';' as in + + PerlSetVar IncludesDir ../shared;/usr/local/asp/shared + + Using IncludesDir in this way creates an includes search path that would + look like ., Global, ../shared, /usr/local/asp/shared The current + directory of the executing script is checked first whenever an include + is specified, then the Global directory in which the global.asa resides, + and finally the IncludesDir setting. NoCache - Default 0, if set to 1 will make it so that neither script nor include - compilations are cached by the server. Using this configuration will save on - memory but will slow down script execution. Please see the TUNING section - for other strategies on improving site performance. + Default 0, if set to 1 will make it so that neither script nor include + compilations are cached by the server. Using this configuration will + save on memory but will slow down script execution. Please see the + TUNING section for other strategies on improving site performance. - PerlSetVar NoCache 0 + PerlSetVar NoCache 0 State Management NoState - default 0, if true, neither the $Application nor $Session objects will be - created. Use this for a performance increase. Please note that this setting - takes precedence over the AllowSessionState and AllowApplicationState - settings. + default 0, if true, neither the $Application nor $Session objects will + be created. Use this for a performance increase. Please note that this + setting takes precedence over the AllowSessionState and + AllowApplicationState settings. - PerlSetVar NoState 0 + PerlSetVar NoState 0 AllowSessionState - Set to 0 for no session tracking, 1 by default If Session tracking is turned - off, performance improves, but the $Session object is inaccessible. + Set to 0 for no session tracking, 1 by default If Session tracking is + turned off, performance improves, but the $Session object is + inaccessible. - PerlSetVar AllowSessionState 1 + PerlSetVar AllowSessionState 1 - Note that if you want to dissallow session creation for certain non web - browser user agents, like search engine spiders, you can use an init handler - like: + Note that if you want to dissallow session creation for certain non web + browser user agents, like search engine spiders, you can use an init + handler like: - PerlInitHandler "sub { $_[0]->dir_config('AllowSessionState', 0) }" + PerlInitHandler "sub { $_[0]->dir_config('AllowSessionState', 0) }" AllowApplicationState - Default 1. If you want to leave $Application undefined, then set this to 0, - for a performance increase of around 2-3%. Allowing use of $Application is - less expensive than $Session, as there is more work for the StateManager - associated with $Session garbage collection so this parameter should be only - used for extreme tuning. + Default 1. If you want to leave $Application undefined, then set this to + 0, for a performance increase of around 2-3%. Allowing use of + $Application is less expensive than $Session, as there is more work for + the StateManager associated with $Session garbage collection so this + parameter should be only used for extreme tuning. - PerlSetVar AllowApplicationState 1 + PerlSetVar AllowApplicationState 1 StateDir - default $Global/.state. State files for ASP application go to this - directory. Where the state files go is the most important determinant in - what makes a unique ASP application. Different configs pointing to the same - StateDir are part of the same ASP application. - - The default has not changed since implementing this config directive. The - reason for this config option is to allow operating systems with caching - file systems like Solaris to specify a state directory separately from the - Global directory, which contains more permanent files. This way one may - point StateDir to /tmp/myaspapp, and make one's ASP application scream with - speed. + default $Global/.state. State files for ASP application go to this + directory. Where the state files go is the most important determinant in + what makes a unique ASP application. Different configs pointing to the + same StateDir are part of the same ASP application. + + The default has not changed since implementing this config directive. + The reason for this config option is to allow operating systems with + caching file systems like Solaris to specify a state directory + separately from the Global directory, which contains more permanent + files. This way one may point StateDir to /tmp/myaspapp, and make one's + ASP application scream with speed. - PerlSetVar StateDir ./.state + PerlSetVar StateDir ./.state StateManager - default 10, this number specifies the numbers of times per SessionTimeout - that timed out sessions are garbage collected. The bigger the number, the - slower your system, but the more precise Session_OnEnd's will be run from - global.asa, which occur when a timed out session is cleaned up, and the - better able to withstand Session guessing hacking attempts. The lower the - number, the faster a normal system will run. + default 10, this number specifies the numbers of times per + SessionTimeout that timed out sessions are garbage collected. The bigger + the number, the slower your system, but the more precise Session_OnEnd's + will be run from global.asa, which occur when a timed out session is + cleaned up, and the better able to withstand Session guessing hacking + attempts. The lower the number, the faster a normal system will run. - The defaults of 20 minutes for SessionTimeout and 10 times for StateManager, - has dead Sessions being cleaned up every 2 minutes. + The defaults of 20 minutes for SessionTimeout and 10 times for + StateManager, has dead Sessions being cleaned up every 2 minutes. - PerlSetVar StateManager 10 + PerlSetVar StateManager 10 StateDB - default SDBM_File, this is the internal database used for state objects like - $Application and $Session. Because an SDBM_File %hash has a limit on the - size of a record key+value pair, usually 1024 bytes, you may want to use - another tied database like DB_File or MLDBM::Sync::SDBM_File. - - With lightweight $Session and $Application use, you can get away with - SDBM_File, but if you load it up with complex data like $Session{key} = { # - very large complex object } you might max out the 1024 limit. + default SDBM_File, this is the internal database used for state objects + like $Application and $Session. Because an SDBM_File %hash has a limit + on the size of a record key+value pair, usually 1024 bytes, you may want + to use another tied database like DB_File or MLDBM::Sync::SDBM_File. + + With lightweight $Session and $Application use, you can get away with + SDBM_File, but if you load it up with complex data like $Session{key} = + { # very large complex object } you might max out the 1024 limit. + + Currently StateDB can be: SDBM_File, MLDBM::Sync::SDBM_File, DB_File, + and GDBM_File. Please let me know if you would like to add any more to + this list. + + As of version .18, you may change this setting in a live production + environment, and new state databases created will be of this format. + With a prior version if you switch to a new StateDB, you would want to + delete the old StateDir, as there will likely be incompatibilities + between the different database formats, including the way garbage + collection is handled. - Currently StateDB can be: SDBM_File, MLDBM::Sync::SDBM_File, DB_File, and - GDBM_File. Please let me know if you would like to add any more to this - list. - - As of version .18, you may change this setting in a live production - environment, and new state databases created will be of this format. With a - prior version if you switch to a new StateDB, you would want to delete the - old StateDir, as there will likely be incompatibilities between the - different database formats, including the way garbage collection is handled. - - PerlSetVar StateDB SDBM_File + PerlSetVar StateDB SDBM_File StateCache - Deprecated as of 2.23. There is no equivalent config for the functionality - this represented from that version on. The 2.23 release represented a - significant rewrite of the state management, moving to MLDBM::Sync for its - subsystem. + Deprecated as of 2.23. There is no equivalent config for the + functionality this represented from that version on. The 2.23 release + represented a significant rewrite of the state management, moving to + MLDBM::Sync for its subsystem. StateSerializer - default Data::Dumper, you may set this to Storable for faster serialization - and storage of data into state objects. This is particularly useful when - storing large objects in $Session and $Application, as the Storable.pm - module has a faster implementation of freezing and thawing data from and to - perl structures. Note that if you are storing this much data in your state - databases, you may want to use DB_File since it does not have the default - 1024 byte limit that SDBM_File has on key/value lengths. - - This configuration setting may be changed in production as the state - database's serializer type is stored in the internal state manager which - will always use Data::Dumper & SDBM_File to store data. + default Data::Dumper, you may set this to Storable for faster + serialization and storage of data into state objects. This is + particularly useful when storing large objects in $Session and + $Application, as the Storable.pm module has a faster implementation of + freezing and thawing data from and to perl structures. Note that if you + are storing this much data in your state databases, you may want to use + DB_File since it does not have the default 1024 byte limit that + SDBM_File has on key/value lengths. + + This configuration setting may be changed in production as the state + database's serializer type is stored in the internal state manager which + will always use Data::Dumper & SDBM_File to store data. - PerlSetVar StateSerializer Data::Dumper + PerlSetVar StateSerializer Data::Dumper Sessions CookiePath - URL root that client responds to by sending the session cookie. If your asp - application falls under the server url "/asp", then you would set this - variable to /asp. This then allows you to run different applications on the - same server, with different user sessions for each application. + URL root that client responds to by sending the session cookie. If your + asp application falls under the server url "/asp", then you would set + this variable to /asp. This then allows you to run different + applications on the same server, with different user sessions for each + application. - PerlSetVar CookiePath / + PerlSetVar CookiePath / CookieDomain - Default 0, this NON-PORTABLE configuration will allow sessions to span - multiple web sites that match the same domain root. This is useful if your - web sites are hosted on the same machine and can share the same StateDir - configuration, and you want to shared the $Session data across web sites. - Whatever this is set to, that will add a + Default 0, this NON-PORTABLE configuration will allow sessions to span + multiple web sites that match the same domain root. This is useful if + your web sites are hosted on the same machine and can share the same + StateDir configuration, and you want to shared the $Session data across + web sites. Whatever this is set to, that will add a - ; domain=$CookieDomain + ; domain=$CookieDomain - part to the Set-Cookie: header set for the session-id cookie. + part to the Set-Cookie: header set for the session-id cookie. - PerlSetVar CookieDomain .your.global.domain + PerlSetVar CookieDomain .your.global.domain SessionTimeout - Default 20 minutes, when a user's session has been inactive for this period - of time, the Session_OnEnd event is run, if defined, for that session, and - the contents of that session are destroyed. + Default 20 minutes, when a user's session has been inactive for this + period of time, the Session_OnEnd event is run, if defined, for that + session, and the contents of that session are destroyed. - PerlSetVar SessionTimeout 20 + PerlSetVar SessionTimeout 20 SecureSession - default 0. Sets the secure tag for the session cookie, so that the cookie - will only be transmitted by the browser under https transmissions. + default 0. Sets the secure tag for the session cookie, so that the + cookie will only be transmitted by the browser under https + transmissions. + + PerlSetVar SecureSession 1 + + HTTPOnlySession + default 0. Sets HttpOnly flag to session cookie to mitigate XSS attacks. + Supported by most modern browsers, it only allows access to the session + cookie by the server (ie NOT Javascript) - PerlSetVar SecureSession 1 + PerlSetVar HTTPOnlySession 1 ParanoidSession - default 0. When true, stores the user-agent header of the browser that - creates the session and validates this against the session cookie presented. - If this check fails, the session is killed, with the rationale that there is - a hacking attempt underway. - - This config option was implemented to be a smooth upgrade, as you can turn - it off and on, without disrupting current sessions. Sessions must be created - with this turned on for the security to take effect. - - This config option is to help prevent a brute force cookie search from being - successful. The number of possible cookies is huge, 2^128, thus making such - a hacking attempt VERY unlikely. However, on the off chance that such an - attack is successful, the hacker must also present identical browser headers - to authenticate the session, or the session will be destroyed. Thus the - User-Agent acts as a backup to the real session id. The IP address of the - browser cannot be used, since because of proxies, IP addresses may change - between requests during a session. - - There are a few browsers that will not present a User-Agent header. These - browsers are considered to be browsers of type "Unknown", and this method - works the same way for them. + default 0. When true, stores the user-agent header of the browser that + creates the session and validates this against the session cookie + presented. If this check fails, the session is killed, with the + rationale that there is a hacking attempt underway. + + This config option was implemented to be a smooth upgrade, as you can + turn it off and on, without disrupting current sessions. Sessions must + be created with this turned on for the security to take effect. + + This config option is to help prevent a brute force cookie search from + being successful. The number of possible cookies is huge, 2^128, thus + making such a hacking attempt VERY unlikely. However, on the off chance + that such an attack is successful, the hacker must also present + identical browser headers to authenticate the session, or the session + will be destroyed. Thus the User-Agent acts as a backup to the real + session id. The IP address of the browser cannot be used, since because + of proxies, IP addresses may change between requests during a session. + + There are a few browsers that will not present a User-Agent header. + These browsers are considered to be browsers of type "Unknown", and this + method works the same way for them. - Most people agree that this level of security is unnecessary, thus it is - titled paranoid :) + Most people agree that this level of security is unnecessary, thus it is + titled paranoid :) - PerlSetVar ParanoidSession 0 + PerlSetVar ParanoidSession 0 SessionSerialize - default 0, if true, locks $Session for duration of script, which serializes - requests to the $Session object. Only one script at a time may run, per user - $Session, with sessions allowed. - - Serialized requests to the session object is the Microsoft ASP way, but is - dangerous in a production environment, where there is risk of long-running - or run-away processes. If these things happen, a session may be locked for - an indefinite period of time. A user STOP button should safely quit the - session however. + default 0, if true, locks $Session for duration of script, which + serializes requests to the $Session object. Only one script at a time + may run, per user $Session, with sessions allowed. + + Serialized requests to the session object is the Microsoft ASP way, but + is dangerous in a production environment, where there is risk of + long-running or run-away processes. If these things happen, a session + may be locked for an indefinite period of time. A user STOP button + should safely quit the session however. - PerlSetVar SessionSerialize 0 + PerlSetVar SessionSerialize 0 SessionCount - default 0, if true enables the $Application->SessionCount API which returns - how many sessions are currently active in the application. This config was - created because there is a performance hit associated with this count - tracking, so it is disabled by default. + default 0, if true enables the $Application->SessionCount API which + returns how many sessions are currently active in the application. This + config was created because there is a performance hit associated with + this count tracking, so it is disabled by default. - PerlSetVar SessionCount 1 + PerlSetVar SessionCount 1 Cookieless Sessions SessionQueryParse - default 0, if true, will automatically parse the $Session session id into - the query string of each local URL found in the $Response buffer. For this - setting to work therefore, buffering must be enabled. This parsing will only - occur when a session cookie has not been sent by a browser, so the first - script of a session enabled site, and scripts viewed by web browsers that - have cookies disabled will trigger this behavior. - - Although this runtime parsing method is computationally expensive, this cost - should be amortized across most users that will not need this URL parsing. - This is a lazy programmer's dream. For something more efficient, look at the - SessionQuery setting. For more information about this solution, please read - the SESSIONS section. + default 0, if true, will automatically parse the $Session session id + into the query string of each local URL found in the $Response buffer. + For this setting to work therefore, buffering must be enabled. This + parsing will only occur when a session cookie has not been sent by a + browser, so the first script of a session enabled site, and scripts + viewed by web browsers that have cookies disabled will trigger this + behavior. + + Although this runtime parsing method is computationally expensive, this + cost should be amortized across most users that will not need this URL + parsing. This is a lazy programmer's dream. For something more + efficient, look at the SessionQuery setting. For more information about + this solution, please read the SESSIONS section. - PerlSetVar SessionQueryParse 0 + PerlSetVar SessionQueryParse 0 SessionQueryParseMatch - default 0, set to a regexp pattern that matches all URLs that you want to - have SessionQueryParse parse in session ids. By default SessionQueryParse - only modifies local URLs, but if you name your URLs of your site with - absolute URLs like http://localhost then you will need to use this setting. - So to match http://localhost URLs, you might set this pattern to - ^http://localhost. Note that by setting this config, you are also setting - SessionQueryParse. + default 0, set to a regexp pattern that matches all URLs that you want + to have SessionQueryParse parse in session ids. By default + SessionQueryParse only modifies local URLs, but if you name your URLs of + your site with absolute URLs like http://localhost then you will need to + use this setting. So to match http://localhost URLs, you might set this + pattern to ^http://localhost. Note that by setting this config, you are + also setting SessionQueryParse. - PerlSetVar SessionQueryParseMatch ^https?://localhost + PerlSetVar SessionQueryParseMatch ^https?://localhost SessionQuery - default 0, if set, the session id will be initialized from the - $Request->QueryString if not first found as a cookie. You can use this - setting coupled with the - - $Server->URL($url, \%params) - - API extension to generate local URLs with session ids in their query - strings, for efficient cookieless session support. Note that if a browser - has cookies disabled, every URL to any page that needs access to $Session - will need to be created by this method, unless you are using - SessionQueryParse which will do this for you automatically. + default 0, if set, the session id will be initialized from the + $Request->QueryString if not first found as a cookie. You can use this + setting coupled with the + + $Server->URL($url, \%params) + + API extension to generate local URLs with session ids in their query + strings, for efficient cookieless session support. Note that if a + browser has cookies disabled, every URL to any page that needs access to + $Session will need to be created by this method, unless you are using + SessionQueryParse which will do this for you automatically. - PerlSetVar SessionQuery 0 + PerlSetVar SessionQuery 0 SessionQueryMatch - default 0, set to a regexp pattern that will match URLs for $Server->URL() - to add a session id to. SessionQuery normally allows $Server->URL() to add - session ids just to local URLs, so if you use absolute URL references like - http://localhost/ for your web site, then just like with - SessionQueryParseMatch, you might set this pattern to ^http://localhost + default 0, set to a regexp pattern that will match URLs for + $Server->URL() to add a session id to. SessionQuery normally allows + $Server->URL() to add session ids just to local URLs, so if you use + absolute URL references like http://localhost/ for your web site, then + just like with SessionQueryParseMatch, you might set this pattern to + ^http://localhost - If this is set, then you don't need to set SessionQuery, as it will be set - automatically. + If this is set, then you don't need to set SessionQuery, as it will be + set automatically. - PerlSetVar SessionQueryMatch ^http://localhost + PerlSetVar SessionQueryMatch ^http://localhost SessionQueryForce - default 0, set to 1 if you want to disallow the use of cookies for session - id passing, and only allow session ids to be passed on the query string via - SessionQuery and SessionQueryParse settings. + default 0, set to 1 if you want to disallow the use of cookies for + session id passing, and only allow session ids to be passed on the query + string via SessionQuery and SessionQueryParse settings. - PerlSetVar SessionQueryForce 1 + PerlSetVar SessionQueryForce 1 Developer Environment UseStrict - default 0, if set to 1, will compile all scripts, global.asa and includes - with "use strict;" inserted at the head of the file, saving you from the - painful process of strictifying code that was not strict to begin with. - - Because of how essential "use strict" programming is in a mod_perl - environment, this default might be set to 1 one day, but this will be up for - discussion before that decision is made. - - Note too that errors triggered by "use strict" are now captured as part of - the normal Apache::ASP error handling when this configuration is set, - otherwise "use strict" errors will not be handled properly, so using - UseStrict is better than your own "use strict" statements. + default 0, if set to 1, will compile all scripts, global.asa and + includes with "use strict;" inserted at the head of the file, saving you + from the painful process of strictifying code that was not strict to + begin with. + + Because of how essential "use strict" programming is in a mod_perl + environment, this default might be set to 1 one day, but this will be up + for discussion before that decision is made. + + Note too that errors triggered by "use strict" are now captured as part + of the normal Apache::ASP error handling when this configuration is set, + otherwise "use strict" errors will not be handled properly, so using + UseStrict is better than your own "use strict" statements. - PerlSetVar UseStrict 1 + PerlSetVar UseStrict 1 Debug - 1 for server log debugging, 2 for extra client html output, 3 for microtimes - logged. Use 1 for production debugging, use 2 or 3 for development. Turn off - if you are not debugging. These settings activate $Response->Debug(). + 1 for server log debugging, 2 for extra client html output, 3 for + microtimes logged. Use 1 for production debugging, use 2 or 3 for + development. Turn off if you are not debugging. These settings activate + $Response->Debug(). - PerlSetVar Debug 2 + PerlSetVar Debug 2 - If Debug 3 is set and Time::HiRes is installed, microtimes will show up in - the log, and also calculate the time between one $Response->Debug() and - another, so good for a quick benchmark when you glance at the logs. + If Debug 3 is set and Time::HiRes is installed, microtimes will show up + in the log, and also calculate the time between one $Response->Debug() + and another, so good for a quick benchmark when you glance at the logs. - PerlSetVar Debug 3 + PerlSetVar Debug 3 - If you would like to enable system level debugging, set Debug to a negative - value. So for system level debugging, but no output to browser: + If you would like to enable system level debugging, set Debug to a + negative value. So for system level debugging, but no output to browser: - PerlSetVar Debug -1 + PerlSetVar Debug -1 DebugBufferLength - Default 100, set this to the number of bytes of the buffered output's tail - you want to see when an error occurs and Debug 2 or MailErrorsTo is set, and - when BufferingOn is enabled. - - With buffering the script output will not naturally show up when the script - errors, as it has been buffered by the $Response object. It helps to see - where in the script output an error halted the script, so the last bytes of - the buffered output are included with the rest of the debugging information. + Default 100, set this to the number of bytes of the buffered output's + tail you want to see when an error occurs and Debug 2 or MailErrorsTo is + set, and when BufferingOn is enabled. + + With buffering the script output will not naturally show up when the + script errors, as it has been buffered by the $Response object. It helps + to see where in the script output an error halted the script, so the + last bytes of the buffered output are included with the rest of the + debugging information. - For a demo of this functionality, try the ./site/eg/syntax_error.htm script, - and turn buffering on. + For a demo of this functionality, try the ./site/eg/syntax_error.asp + script, and turn buffering on. PodComments - default 1. With pod comments turned on, perl pod style comments and - documentation are parsed out of scripts at compile time. This make for great - documentation and a nice debugging tool, and it lets you comment out perl - code and html in blocks. Specifically text like this: - - =pod - text or perl code here - =cut - - will get ripped out of the script before compiling. The =pod and =cut perl - directives must be at the beginning of the line, and must be followed by the - end of the line. + default 1. With pod comments turned on, perl pod style comments and + documentation are parsed out of scripts at compile time. This make for + great documentation and a nice debugging tool, and it lets you comment + out perl code and html in blocks. Specifically text like this: + + =pod + text or perl code here + =cut + + will get ripped out of the script before compiling. The =pod and =cut + perl directives must be at the beginning of the line, and must be + followed by the end of the line. - PerlSetVar PodComments 1 + PerlSetVar PodComments 1 CollectionItem - Enables PerlScript syntax like: + Enables PerlScript syntax like: - $Request->Form('var')->Item; - $Request->Form('var')->Item(1); - $Request->Form('var')->Count; + $Request->Form('var')->Item; + $Request->Form('var')->Item(1); + $Request->Form('var')->Count; - Old PerlScript syntax, enabled with + Old PerlScript syntax, enabled with - use Win32::OLE qw(in valof with OVERLOAD); + use Win32::OLE qw(in valof with OVERLOAD); - is like native syntax + is like native syntax - $Request->Form('var'); + $Request->Form('var'); - Only in Apache::ASP, can the above be written as: + Only in Apache::ASP, can the above be written as: - $Request->{Form}{var}; + $Request->{Form}{var}; - which you would do if you _really_ needed the speed. + which you would do if you _really_ needed the speed. XML / XSLT XMLSubsMatch - default not defined, set to some regexp pattern that will match all XML and - HTML tags that you want to have perl subroutines handle. The is - Apache::ASP's custom tag technology, and can be used to create powerful - extensions to your XML and HTML rendering. + default not defined, set to some regexp pattern that will match all XML + and HTML tags that you want to have perl subroutines handle. The is + Apache::ASP's custom tag technology, and can be used to create powerful + extensions to your XML and HTML rendering. - Please see XML/XSLT section for instructions on its use. + Please see XML/XSLT section for instructions on its use. - PerlSetVar XMLSubsMatch my:[\w\-]+ + PerlSetVar XMLSubsMatch my:[\w\-]+ XMLSubsStrict - default 0, when set XMLSubs will only take arguments that are properly - formed XML tag arguments like: + default 0, when set XMLSubs will only take arguments that are properly + formed XML tag arguments like: - + - By default, XMLSubs accept arbitrary perl code as argument values: + By default, XMLSubs accept arbitrary perl code as argument values: - + - which is not always wanted or expected. Set XMLSubsStrict to 1 if this is - the case. + which is not always wanted or expected. Set XMLSubsStrict to 1 if this + is the case. - PerlSetVar XMLSubsStrict 1 + PerlSetVar XMLSubsStrict 1 XMLSubsPerlArgs - default 1, when set attribute values will be interpreted as raw perl code so - that these all would execute as one would expect: + default 1, when set attribute values will be interpreted as raw perl + code so that these all would execute as one would expect: - + - With the 2.45 release, 0 may be set for this configuration or a more ASP - style variable interpolation: + With the 2.45 release, 0 may be set for this configuration or a more ASP + style variable interpolation: - + - This configuration is being introduced experimentally in version 2.45, as it - will become the eventual default in the 3.0 release. + This configuration is being introduced experimentally in version 2.45, + as it will become the eventual default in the 3.0 release. - PerlSetVar XMLSubsPerlArgs Off + PerlSetVar XMLSubsPerlArgs Off XSLT - default not defined, if set to a file, ASP scripts will be regarded as XML - output and transformed with the given XSL file with XML::XSLT. This XSL file - will also be executed as an ASP script first, and its output will be the XSL - data used for the transformation. This XSL file will be executed as a - dynamic include, so may be located in the current directory, Global, or - IncludesDir. + default not defined, if set to a file, ASP scripts will be regarded as + XML output and transformed with the given XSL file with XML::XSLT. This + XSL file will also be executed as an ASP script first, and its output + will be the XSL data used for the transformation. This XSL file will be + executed as a dynamic include, so may be located in the current + directory, Global, or IncludesDir. - Please see the XML/XSLT section for an explanation of its use. + Please see the XML/XSLT section for an explanation of its use. - PerlSetVar XSLT template.xsl + PerlSetVar XSLT template.xsl XSLTMatch - default .*, if XSLT is set by default all ASP scripts will be XSL - transformed by the specified XSL template. This regexp setting will tell - XSLT which file names to match with doing XSL transformations, so that - regular HTML ASP scripts and XML ASP scripts can be configured with the same - configuration block. Please see ./site/eg/.htaccess for an example of its - use. + default .*, if XSLT is set by default all ASP scripts will be XSL + transformed by the specified XSL template. This regexp setting will tell + XSLT which file names to match with doing XSL transformations, so that + regular HTML ASP scripts and XML ASP scripts can be configured with the + same configuration block. Please see ./site/eg/.htaccess for an example + of its use. - PerlSetVar XSLTMatch \.xml$ + PerlSetVar XSLTMatch \.xml$ XSLTParser - default XML::XSLT, determines which perl module to use for XSLT parsing. - This is a new config as of 2.11. Also supported is XML::Sablotron which does - not handle XSLT with the exact same output, but is about 10 times faster - than XML::XSLT. XML::LibXSLT may also be used as of version 2.29, and seems - to be about twice again as fast as XML::Sablotron, and a very complete XSLT - implementation. - - PerlSetVar XSLTParser XML::XSLT - PerlSetVar XSLTParser XML::Sablotron - PerlSetVar XSLTParser XML::LibXSLT + default XML::XSLT, determines which perl module to use for XSLT parsing. + This is a new config as of 2.11. Also supported is XML::Sablotron which + does not handle XSLT with the exact same output, but is about 10 times + faster than XML::XSLT. XML::LibXSLT may also be used as of version 2.29, + and seems to be about twice again as fast as XML::Sablotron, and a very + complete XSLT implementation. + + PerlSetVar XSLTParser XML::XSLT + PerlSetVar XSLTParser XML::Sablotron + PerlSetVar XSLTParser XML::LibXSLT XSLTCache - Activate XSLT file based caching through CacheDB, CacheDir, and CacheSize - settings. This gives cached XSLT performance near AxKit and greater than - Cocoon. XSLT caches transformations keyed uniquely by XML & XSLT inputs. + Activate XSLT file based caching through CacheDB, CacheDir, and + CacheSize settings. This gives cached XSLT performance near AxKit and + greater than Cocoon. XSLT caches transformations keyed uniquely by XML & + XSLT inputs. - PerlSetVar XSLTCache 1 + PerlSetVar XSLTCache 1 XSLTCacheSize - as of version 2.11, this config is no longer supported. + as of version 2.11, this config is no longer supported. Caching The output caching layer is a file dbm based output cache that runs on top @@ -760,251 +779,255 @@ mod_perl. CacheDB - Like StateDB, sets dbm format for caching. Since SDBM_File only support - key/values pairs of around 1K max in length, the default for this is - MLDBM::Sync::SDBM_File, which is very fast for < 20K output sizes. For - caching larger data than 20K, DB_File or GDBM_File are probably better to - use. - - PerlSetVar CacheDB MLDBM::Sync::SDBM_File - - For your own benchmarks to test the relative speeds of the various DBMs - under MLDBM::Sync, which is used by CacheDB, you may run the - ./bench/bench_sync.pl script from the MLDBM::Sync distribution on your - system. + Like StateDB, sets dbm format for caching. Since SDBM_File only support + key/values pairs of around 1K max in length, the default for this is + MLDBM::Sync::SDBM_File, which is very fast for < 20K output sizes. For + caching larger data than 20K, DB_File or GDBM_File are probably better + to use. + + PerlSetVar CacheDB MLDBM::Sync::SDBM_File + + For your own benchmarks to test the relative speeds of the various DBMs + under MLDBM::Sync, which is used by CacheDB, you may run the + ./bench/bench_sync.pl script from the MLDBM::Sync distribution on your + system. CacheDir - By default, the cache directory is at StateDir/cache, but CacheDir can be - used to set the StateDir value for caching purposes. One may want the - CacheDir separate from StateDir for example StateDir might be a centrally - network mounted file system, while CacheDir might be a local file cache. - - PerlSetVar CacheDir /tmp/asp_demo - - On a system like Solaris where there is a RAM disk mounted on the system - like /tmp, I could put the CacheDir there. On a system like Linux where - files are cached pretty well by default, this is less important. + By default, the cache directory is at StateDir/cache, but CacheDir can + be used to set the StateDir value for caching purposes. One may want the + CacheDir separate from StateDir for example StateDir might be a + centrally network mounted file system, while CacheDir might be a local + file cache. + + PerlSetVar CacheDir /tmp/asp_demo + + On a system like Solaris where there is a RAM disk mounted on the system + like /tmp, I could put the CacheDir there. On a system like Linux where + files are cached pretty well by default, this is less important. CacheSize - By default, this is 10M of data per cache. When any cache, like the - XSLTCache, reaches this limit, the cache will be purged by deleting the - cached dbm files entirely. This is better for long term running of dbms than - deleting individual records, because dbm formats will often degrade in - performance with lots of insert & deletes. - - Units of M, K, and B are supported for megabytes, kilobytes, and bytes, with - the default unit being B, so the following configs all mean the same thing; - - PerlSetVar CacheSize 10M - PerlSetVar CacheSize 10240K - PerlSetVar CacheSize 10485760B - PerlSetVar CacheSize 10485760 - - There are 2 caches currently, the XSLTCache, and the Response cache, the - latter which is currently invoked for caching output from includes with - special syntax. See $Response->Include() for more info on the Response - cache. + By default, this is 10M of data per cache. When any cache, like the + XSLTCache, reaches this limit, the cache will be purged by deleting the + cached dbm files entirely. This is better for long term running of dbms + than deleting individual records, because dbm formats will often degrade + in performance with lots of insert & deletes. + + Units of M, K, and B are supported for megabytes, kilobytes, and bytes, + with the default unit being B, so the following configs all mean the + same thing; + + PerlSetVar CacheSize 10M + PerlSetVar CacheSize 10240K + PerlSetVar CacheSize 10485760B + PerlSetVar CacheSize 10485760 + + There are 2 caches currently, the XSLTCache, and the Response cache, the + latter which is currently invoked for caching output from includes with + special syntax. See $Response->Include() for more info on the Response + cache. Miscellaneous AuthServerVariables - default 0. If you are using basic auth and would like - $Request->ServerVariables set like AUTH_TYPE, AUTH_USER, AUTH_NAME, - REMOTE_USER, & AUTH_PASSWD, then set this and Apache::ASP will initialize - these values from Apache->*auth* commands. Use of these environment - variables keeps applications cross platform compatible as other servers set - these too when performing basic 401 auth. + default 0. If you are using basic auth and would like + $Request->ServerVariables set like AUTH_TYPE, AUTH_USER, AUTH_NAME, + REMOTE_USER, & AUTH_PASSWD, then set this and Apache::ASP will + initialize these values from Apache->*auth* commands. Use of these + environment variables keeps applications cross platform compatible as + other servers set these too when performing basic 401 auth. - PerlSetVar AuthServerVariables 0 + PerlSetVar AuthServerVariables 0 BufferingOn - default 1, if true, buffers output through the response object. $Response - object will only send results to client browser if a $Response->Flush() is - called, or if the asp script ends. Lots of output will need to be flushed - incrementally. - - If false, 0, the output is immediately written to the client, CGI style. - There will be a performance hit server side if output is flushed - automatically to the client, but is probably small. + default 1, if true, buffers output through the response object. + $Response object will only send results to client browser if a + $Response->Flush() is called, or if the asp script ends. Lots of output + will need to be flushed incrementally. + + If false, 0, the output is immediately written to the client, CGI style. + There will be a performance hit server side if output is flushed + automatically to the client, but is probably small. - I would leave this on, since error handling is poor, if your asp script - errors after sending only some of the output. + I would leave this on, since error handling is poor, if your asp script + errors after sending only some of the output. - PerlSetVar BufferingOn 1 + PerlSetVar BufferingOn 1 InodeNames - Default 0. Set to 1 to uses a stat() call on scripts and includes to derive - subroutine namespace based on device and inode numbers. In case of multiple - symbolic links pointing to the same script this will result in the script - being compiled only once. Use only on unix flavours which support the stat() - call that know about device and inode numbers. + Default 0. Set to 1 to uses a stat() call on scripts and includes to + derive subroutine namespace based on device and inode numbers. In case + of multiple symbolic links pointing to the same script this will result + in the script being compiled only once. Use only on unix flavours which + support the stat() call that know about device and inode numbers. - PerlSetVar InodeNames 1 + PerlSetVar InodeNames 1 RequestParams - Default 0, if set creates $Request->Params object with combined contents of - $Request->QueryString and $Request->Form. This is for developer convenience - simlar to CGI.pm's param() method. + Default 0, if set creates $Request->Params object with combined contents + of $Request->QueryString and $Request->Form. This is for developer + convenience simlar to CGI.pm's param() method. - PerlSetVar RequestParams 1 + PerlSetVar RequestParams 1 RequestBinaryRead - Default On, if set to Off will not read POST data into $Request->Form(). + Default On, if set to Off will not read POST data into $Request->Form(). - One potential reason for configuring this to Off might be to initialize the - Apache::ASP object in an Apache handler phase earlier than the normal - PerlRequestHandler phase, so that it does not interfere with normal reading - of POST data later in the request. + One potential reason for configuring this to Off might be to initialize + the Apache::ASP object in an Apache handler phase earlier than the + normal PerlRequestHandler phase, so that it does not interfere with + normal reading of POST data later in the request. - PerlSetVar RequestBinaryRead On + PerlSetVar RequestBinaryRead On StatINC - default 0, if true, reloads perl libraries that have changed on disk - automatically for ASP scripts. If false, the www server must be restarted - for library changes to take effect. - - A known bug is that any functions that are exported, e.g. confess Carp - qw(confess), will not be refreshed by StatINC. To refresh these, you must - restart the www server. + default 0, if true, reloads perl libraries that have changed on disk + automatically for ASP scripts. If false, the www server must be + restarted for library changes to take effect. + + A known bug is that any functions that are exported, e.g. confess Carp + qw(confess), will not be refreshed by StatINC. To refresh these, you + must restart the www server. - This setting should be used in development only because it is so slow. For a - production version of StatINC, see StatINCMatch. + This setting should be used in development only because it is so slow. + For a production version of StatINC, see StatINCMatch. - PerlSetVar StatINC 1 + PerlSetVar StatINC 1 StatINCMatch - default undef, if defined, it will be used as a regular expression to reload - modules that match as in StatINC. This is useful because StatINC has a very - high performance penalty in production, so if you can narrow the modules - that are checked for reloading each script execution to a handful, you will - only suffer a mild performance penalty. - - The StatINCMatch setting should be a regular expression like: Struct|LWP - which would match on reloading Class/Struct.pm, and all the LWP/.* - libraries. + default undef, if defined, it will be used as a regular expression to + reload modules that match as in StatINC. This is useful because StatINC + has a very high performance penalty in production, so if you can narrow + the modules that are checked for reloading each script execution to a + handful, you will only suffer a mild performance penalty. + + The StatINCMatch setting should be a regular expression like: Struct|LWP + which would match on reloading Class/Struct.pm, and all the LWP/.* + libraries. - If you define StatINCMatch, you do not need to define StatINC. + If you define StatINCMatch, you do not need to define StatINC. - PerlSetVar StatINCMatch .* + PerlSetVar StatINCMatch .* StatScripts - default 1, if set to 0, changed scripts, global.asa, and includes will not - be reloaded. Coupled with Apache mod_perl startup and restart handlers - executing Apache::ASP->Loader() for your application this allows your - application to be frozen, and only reloaded on the next server restart or - stop/start. - - There are a few advantages for not reloading scripts and modules in - production. First there is a slight performance improvement by not having to - stat() the script, its includes and the global.asa every request. - - From an application deployment standpoint, you also gain the ability to - deploy your application as a snapshot taken when the server starts and - restarts. This provides you with the reassurance that during a production - server update from development sources, you do not have to worry with - sources being used for the wrong libraries and such, while they are all - being copied over. - - Finally, though you really should not do this, you can work on a live - production application, with a test server reloading changes, but your - production server does see the changes until you restart or stop/start it. - This saves your public from syntax errors while you are just doing a quick - bug fix. + default 1, if set to 0, changed scripts, global.asa, and includes will + not be reloaded. Coupled with Apache mod_perl startup and restart + handlers executing Apache::ASP->Loader() for your application this + allows your application to be frozen, and only reloaded on the next + server restart or stop/start. + + There are a few advantages for not reloading scripts and modules in + production. First there is a slight performance improvement by not + having to stat() the script, its includes and the global.asa every + request. + + From an application deployment standpoint, you also gain the ability to + deploy your application as a snapshot taken when the server starts and + restarts. This provides you with the reassurance that during a + production server update from development sources, you do not have to + worry with sources being used for the wrong libraries and such, while + they are all being copied over. + + Finally, though you really should not do this, you can work on a live + production application, with a test server reloading changes, but your + production server does see the changes until you restart or stop/start + it. This saves your public from syntax errors while you are just doing a + quick bug fix. - PerlSetVar StatScripts 1 + PerlSetVar StatScripts 1 SoftRedirect - default 0, if true, a $Response->Redirect() does not end the script. - Normally, when a Redirect() is called, the script is ended automatically. - SoftRedirect 1, is a standard way of doing redirects, allowing for html - output after the redirect is specified. + default 0, if true, a $Response->Redirect() does not end the script. + Normally, when a Redirect() is called, the script is ended + automatically. SoftRedirect 1, is a standard way of doing redirects, + allowing for html output after the redirect is specified. - PerlSetVar SoftRedirect 0 + PerlSetVar SoftRedirect 0 Filter - On/Off, default Off. With filtering enabled, you can take advantage of full - server side includes (SSI), implemented through Apache::SSI. SSI is - implemented through this mechanism by using Apache::Filter. A sample - configuration for full SSI with filtering is in the ./site/eg/.htaccess - file, with a relevant example script ./site/eg/ssi_filter.ssi. - - You may only use this option with modperl v1.16 or greater installed and - PERL_STACKED_HANDLERS enabled. Filtering may be used in conjunction with - other handlers that are also "filter aware". If in doubt, try building your - mod_perl with + On/Off, default Off. With filtering enabled, you can take advantage of + full server side includes (SSI), implemented through Apache::SSI. SSI is + implemented through this mechanism by using Apache::Filter. A sample + configuration for full SSI with filtering is in the ./site/eg/.htaccess + file, with a relevant example script ./site/eg/ssi_filter.ssi. + + You may only use this option with modperl v1.16 or greater installed and + PERL_STACKED_HANDLERS enabled. Filtering may be used in conjunction with + other handlers that are also "filter aware". If in doubt, try building + your mod_perl with - perl Makefile.PL EVERYTHING=1 + perl Makefile.PL EVERYTHING=1 - With filtering through Apache::SSI, you should expect near a a 20% - performance decrease. + With filtering through Apache::SSI, you should expect near a a 20% + performance decrease. - PerlSetVar Filter Off + PerlSetVar Filter Off CgiHeaders - default 0. When true, script output that looks like HTTP / CGI headers, will - be added to the HTTP headers of the request. So you could add: Set-Cookie: - test=message - - ... - to the top of your script, and all the headers preceding a newline - will be added as if with a call to $Response->AddHeader(). This - functionality is here for compatibility with raw cgi scripts, - and those used to this kind of coding. + default 0. When true, script output that looks like HTTP / CGI headers, + will be added to the HTTP headers of the request. So you could add: + Set-Cookie: test=message + + ... + to the top of your script, and all the headers preceding a newline + will be added as if with a call to $Response->AddHeader(). This + functionality is here for compatibility with raw cgi scripts, + and those used to this kind of coding. - When set to 0, CgiHeaders style headers will not be parsed from the script - response. + When set to 0, CgiHeaders style headers will not be parsed from the + script response. - PerlSetVar CgiHeaders 0 + PerlSetVar CgiHeaders 0 Clean - default 0, may be set between 1 and 9. This setting determine how much - text/html output should be compressed. A setting of 1 strips mostly white - space saving usually 10% in output size, at a performance cost of less than - 5%. A setting of 9 goes much further saving anywhere 25% to 50% typically, - but with a performance hit of 50%. - - This config option is implemented via HTML::Clean. Per script configuration - of this setting is available via the $Response->{Clean} property, which may - also be set between 0 and 9. + default 0, may be set between 1 and 9. This setting determine how much + text/html output should be compressed. A setting of 1 strips mostly + white space saving usually 10% in output size, at a performance cost of + less than 5%. A setting of 9 goes much further saving anywhere 25% to + 50% typically, but with a performance hit of 50%. + + This config option is implemented via HTML::Clean. Per script + configuration of this setting is available via the $Response->{Clean} + property, which may also be set between 0 and 9. - PerlSetVar Clean 0 + PerlSetVar Clean 0 CompressGzip - default 0, if true will gzip compress HTML output on the fly if - Compress::Zlib is installed, and the client browser supports it. Depending - on the HTML being compressed, the client may see a 50% to 90% reduction in - HTML output. I have seen 40K of HTML squeezed down to just under 6K. This - will come at a 5%-20% hit to CPU usage per request compressed. - - Note there are some cases when a browser says it will accept gzip encoding, - but then not render it correctly. This behavior has been seen with IE5 when - set to use a proxy but not using a proxy, and the URL does not end with a - .html or .htm. No work around has yet been found for this case so use at - your own risk. + default 0, if true will gzip compress HTML output on the fly if + Compress::Zlib is installed, and the client browser supports it. + Depending on the HTML being compressed, the client may see a 50% to 90% + reduction in HTML output. I have seen 40K of HTML squeezed down to just + under 6K. This will come at a 5%-20% hit to CPU usage per request + compressed. + + Note there are some cases when a browser says it will accept gzip + encoding, but then not render it correctly. This behavior has been seen + with IE5 when set to use a proxy but not using a proxy, and the URL does + not end with a .html or .htm. No work around has yet been found for this + case so use at your own risk. - PerlSetVar CompressGzip 1 + PerlSetVar CompressGzip 1 FormFill - default 0, if true will auto fill HTML forms with values from - $Request->Form(). This functionality is provided by use of HTML::FillInForm. - For more information please see "perldoc HTML::FillInForm", and the example - ./site/eg/formfill.asp. + default 0, if true will auto fill HTML forms with values from + $Request->Form(). This functionality is provided by use of + HTML::FillInForm. For more information please see "perldoc + HTML::FillInForm", and the example ./site/eg/formfill.asp. - This feature can be enabled on a per form basis at runtime with - $Response->{FormFill} = 1 + This feature can be enabled on a per form basis at runtime with + $Response->{FormFill} = 1 - PerlSetVar FormFill 1 + PerlSetVar FormFill 1 TimeHiRes - default 0, if set and Time::HiRes is installed, will do sub second timing of - the time it takes Apache::ASP to process a request. This will not include - the time spent in the session manager, nor modperl or Apache, and is only a - rough approximation at best. + default 0, if set and Time::HiRes is installed, will do sub second + timing of the time it takes Apache::ASP to process a request. This will + not include the time spent in the session manager, nor modperl or + Apache, and is only a rough approximation at best. - If Debug is set also, you will get a comment in your HTML output that - indicates the time it took to process that script. + If Debug is set also, you will get a comment in your HTML output that + indicates the time it took to process that script. - If system debugging is set with Debug -1 or -2, you will also get this time - in the Apache error log with the other system messages. + If system debugging is set with Debug -1 or -2, you will also get this + time in the Apache error log with the other system messages. Mail Administration Apache::ASP has some powerful administrative email extensions that let you @@ -1014,84 +1037,85 @@ 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. + 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 + 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. + 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 + 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. + 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 + 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. + 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. + 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 + 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. + 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 + 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. + 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 + 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. + 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 + PerlSetVar FileUploadTemp 0 SYNTAX General @@ -1165,8 +1189,6 @@ that mixes HTML & perl modes in a single buffer, check out the editors/mmm-asp-perl.el file in distribution. - * Microsoft Frontpage - * Vim, special syntax support with editors/aasp.vim file in distribution. * UltraEdit32 ( http://www.ultraedit.com/ ) has syntax highlighting, @@ -1315,7 +1337,7 @@ SetHandler perl-script PerlModule Apache::ASP - PerlHandler Apache::ASP + PerlHandler Apache::ASP But mod_perl allows for direct access to many more Apache event stages, for full list try "perldoc mod_perl" or buy the mod_perl Eagle book. Some @@ -1524,7 +1546,7 @@ $Session->{count}++; $Session->{count}++; $Session->{count}++; - $Session->UnLock(); + $Session->UnLock(); This sequence causes $Session to be locked and unlocked only 1 time, instead of the 6 times that it would be locked otherwise, 2 for each @@ -1734,7 +1756,7 @@ # you don't need to use hash notation when you are only setting # a simple value - $Response->{Cookies}{'Test Name'} = 'Test 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 @@ -2451,17 +2473,25 @@ dynamically executed at runtime, turn the DynamicIncludes config option on as documented above. - That is not all! SSI is full featured. One of the things missing above is - the + Apache::SSI for mod_perl 1.3.x only + One of the things missing above is the tag. This and many other SSI code extensions are available by filtering Apache::ASP output through Apache::SSI via the Apache::Filter and the Filter - config options. For more information on how to wire Apache::ASP and - Apache::SSI together, please see the Filter config option documented above. - Also please see Apache::SSI for further information on the capabilities it - offers. + config options, available in mod_perl 1.3.x / Apache 1.3.x. Unfortunately + this functionality is not available with mod_perl 2 / Apache 2. + + For more information on how to wire Apache::ASP and Apache::SSI together, + please see the Filter config option documented above. Also please see + Apache::SSI for further information on the capabilities it offers. + + SSI with mod_filter in Apache 2 + Apache 2 offers chained filters. It may be possible to chain filters to + Apache::ASP output through mod_filter for SSI processing: + + http://httpd.apache.org/docs/2.1/mod/mod_filter.html EXAMPLES Use with Apache. Copy the ./site/eg directory from the ASP installation to @@ -2481,8 +2511,8 @@ order to track a web user and associate server side data with that client, the web server sets, and the web client returns a 32 byte session id identifier cookie. This implementation is very secure and may be used in - secure HTTPS transactions, and made stronger with SecureSession and - ParanoidSession settings (see CONFIG ). + secure HTTPS transactions, and made stronger with SecureSession, + HTTPOnlySession and ParanoidSession settings (see CONFIG ). However good cookies are for this kind of persistent state management between HTTP requests, they have long been under fire for security risks @@ -2624,7 +2654,7 @@ This employee has been online for <%= int(rand()*600)+1 %> seconds, and was born near <%= $birthday %>. - + For an example of this custom XML tagging in action, please check out the ./site/eg/xml_subs.asp script. @@ -2784,7 +2814,7 @@ For more information about CGI.pm, please see the web site - http://stein.cshl.org/WWW/software/CGI/ + http://search.cpan.org/dist/CGI/ Query Object Initialization You may create a CGI.pm $query object like so: @@ -2846,7 +2876,7 @@ this topic, and ./site/eg/file_upload.asp for an example of its use. Also, for more details about CGI.pm itself, please see the web site: - http://stein.cshl.org/WWW/software/CGI/ + http://search.cpan.org/dist/CGI/ Occasionally, a newer version of CGI.pm will be released which breaks file upload compatibility with Apache::ASP. If you find this to occur, @@ -2988,7 +3018,7 @@ global.asa, or you may create a perl package or module to share with your scripts. For more on perl objects & modules, please see: - http://www.perldoc.com/perl5.8.0/pod/perlobj.html + http://perldoc.perl.org/perlobj.html Use global.asa's Script_On* Events Chances are that you will find yourself doing the same thing repeatedly in @@ -3035,222 +3065,218 @@ Installation Examples don't work, I see the ASP script in the browser? - This is most likely that Apache is not configured to execute the Apache::ASP - scripts properly. Check the INSTALL QuickStart section for more info on how - to quickly set up Apache to execute your ASP scripts. + This is most likely that Apache is not configured to execute the + Apache::ASP scripts properly. Check the INSTALL QuickStart section for + more info on how to quickly set up Apache to execute your ASP scripts. Apache Expat vs. XML perl parsing causing segfaults, what do I do? - Make sure to compile apache with expat disabled. The - ./make_httpd/build_httpds.sh in the distribution will do this for you, with - the --disable-rule=EXPAT in particular: - - cd ../$APACHE - echo "Building apache ==============================" - ./configure \ - --prefix=/usr/local/apache \ - --activate-module=src/modules/perl/libperl.a \ - --enable-module=ssl \ - --enable-module=proxy \ - --enable-module=so \ - --disable-rule=EXPAT + Make sure to compile apache with expat disabled. The + ./make_httpd/build_httpds.sh in the distribution will do this for you, + with the --disable-rule=EXPAT in particular: + + cd ../$APACHE + echo "Building apache ==============================" + ./configure \ + --prefix=/usr/local/apache \ + --activate-module=src/modules/perl/libperl.a \ + --enable-module=ssl \ + --enable-module=proxy \ + --enable-module=so \ + --disable-rule=EXPAT - ^^^^^ + ^^^^^ - keywords: segmentation fault, segfault seg fault + keywords: segmentation fault, segfault seg fault Why do variables retain their values between requests? - Unless scoped by my() or local(), perl variables in mod_perl are treated as - globals, and values set may persist from one request to another. This can be - seen in as simple a script as this: - - - $counter++; - $Response->Write("
Counter: $counter"); - - - The value for $counter++ will remain between requests. Generally use of - globals in this way is a BAD IDEA, and you can spare yourself many headaches - if do "use strict" perl programming which forces you to explicity declare - globals like: + Unless scoped by my() or local(), perl variables in mod_perl are treated + as globals, and values set may persist from one request to another. This + can be seen in as simple a script as this: - use vars qw($counter); + + $counter++; + $Response->Write("
Counter: $counter"); + - You can make all your Apache::ASP scripts strict by default by setting: + The value for $counter++ will remain between requests. Generally use of + globals in this way is a BAD IDEA, and you can spare yourself many + headaches if do "use strict" perl programming which forces you to + explicity declare globals like: - PerlSetVar UseStrict 1 + use vars qw($counter); + + You can make all your Apache::ASP scripts strict by default by setting: + + PerlSetVar UseStrict 1 Apache errors on the PerlHandler or PerlModule directives ? - You get an error message like this: + You get an error message like this: - Invalid command 'PerlModule', perhaps mis-spelled or defined by a - module not included in the server configuration. + Invalid command 'PerlModule', perhaps mis-spelled or defined by a + module not included in the server configuration. - You do not have mod_perl correctly installed for Apache. The PerlHandler and - PerlModule directives in Apache *.conf files are extensions enabled by - mod_perl and will not work if mod_perl is not correctly installed. - - Common user errors are not doing a 'make install' for mod_perl, which - installs the perl side of mod_perl, and not starting the right httpd after - building it. The latter often occurs when you have an old apache server - without mod_perl, and you have built a new one without copying over to its - proper location. + You do not have mod_perl correctly installed for Apache. The PerlHandler + and PerlModule directives in Apache *.conf files are extensions enabled + by mod_perl and will not work if mod_perl is not correctly installed. + + Common user errors are not doing a 'make install' for mod_perl, which + installs the perl side of mod_perl, and not starting the right httpd + after building it. The latter often occurs when you have an old apache + server without mod_perl, and you have built a new one without copying + over to its proper location. - To get mod_perl, go to http://perl.apache.org + To get mod_perl, go to http://perl.apache.org Error: no request object (Apache=SCALAR(0x???????):) - Your Apache + mod_perl build is not working properly, and is likely a RedHat - Linux RPM DSO build. Make sure you statically build your Apache + mod_perl - httpd, recompiled fresh from the sources. + Your Apache + mod_perl build is not working properly, and is likely a + RedHat Linux RPM DSO build. Make sure you statically build your Apache + + mod_perl httpd, recompiled fresh from the sources. I am getting a tie or MLDBM / state error message, what do I do? - Make sure the web server or you have write access to the eg directory, or to - the directory specified as Global in the config you are using. Default for - Global is the directory the script is in (e.g. '.'), but should be set to - some directory not under the www server document root, for security reasons, - on a production site. + Make sure the web server or you have write access to the eg directory, + or to the directory specified as Global in the config you are using. + Default for Global is the directory the script is in (e.g. '.'), but + should be set to some directory not under the www server document root, + for security reasons, on a production site. - Usually a + Usually a - chmod -R -0777 eg + chmod -R -0777 eg - will take care of the write access issue for initial testing purposes. + will take care of the write access issue for initial testing purposes. - Failing write access being the problem, try upgrading your version of - Data::Dumper and MLDBM, which are the modules used to write the state files. + Failing write access being the problem, try upgrading your version of + Data::Dumper and MLDBM, which are the modules used to write the state + files. Sessions How can I use $Session to store complex data structures. - Very carefully. Please read the $Session documentation in the OBJECTS - section. You can store very complex objects in $Session, but you have to - understand the limits, and the syntax that must be used to make this happen. + Very carefully. Please read the $Session documentation in the OBJECTS + section. You can store very complex objects in $Session, but you have to + understand the limits, and the syntax that must be used to make this + happen. - In particular, stay away from statements that that have more than one level - of indirection on the left side of an assignment like: + In particular, stay away from statements that that have more than one + level of indirection on the left side of an assignment like: - $Session->{complex}{object} = $data; + BAD: $Session->{complex}{object} = $data; How can I keep search engine spiders from killing the session manager? - If you want to disallow session creation for certain non web browser user - agents, like search engine spiders, you can use a mod_perl PerlInitHandler - like this to set configuration variables at runtime: + If you want to disallow session creation for certain non web browser + user agents, like search engine spiders, you can use a mod_perl + PerlInitHandler like this to set configuration variables at runtime: - # put the following code into httpd.conf and stop/start apache server - PerlInitHandler My::InitHandler + # put the following code into httpd.conf and stop/start apache server + PerlInitHandler My::InitHandler - + - package My::InitHandler; - use Apache; + package My::InitHandler; + use Apache; - sub handler { - my $r = shift; # get the Apache request object + sub handler { + my $r = shift; # get the Apache request object - # if not a Mozilla User Agent, then disable sessions explicitly - unless($r->headers_in('User-Agent') =~ /^Mozilla/) { - $r->dir_config('AllowSessionState', 'Off'); - } + # if not a Mozilla User Agent, then disable sessions explicitly + unless($r->headers_in('User-Agent') =~ /^Mozilla/) { + $r->dir_config('AllowSessionState', 'Off'); + } - return 200; # return OK mod_perl status code - } + return 200; # return OK mod_perl status code + } - 1; + 1; - + - This will configure your environment before Apache::ASP executes and sees - the configuration settings. You can use the mod_perl API in this way to - configure Apache::ASP at runtime. - - Note that the Session Manager is very robust on its own, and denial of - service attacks of the types that spiders and other web bots normally - execute are not likely to affect the Session Manager significantly. + This will configure your environment before Apache::ASP executes and + sees the configuration settings. You can use the mod_perl API in this + way to configure Apache::ASP at runtime. + + Note that the Session Manager is very robust on its own, and denial of + service attacks of the types that spiders and other web bots normally + execute are not likely to affect the Session Manager significantly. How can I use $Session to store a $dbh database handle ? - You cannot use $Session to store a $dbh handle. This can be awkward for - those coming from the IIS/NT world, where you could store just about - anything in $Session, but this boils down to a difference between threads - vs. processes. - - Database handles often have per process file handles open, which cannot be - shared between requests, so though you have stored the $dbh data in - $Session, all the other initializations are not relevant in another httpd - process. + You cannot use $Session to store a $dbh handle. This can be awkward for + those coming from the IIS/NT world, where you could store just about + anything in $Session, but this boils down to a difference between + threads vs. processes. + + Database handles often have per process file handles open, which cannot + be shared between requests, so though you have stored the $dbh data in + $Session, all the other initializations are not relevant in another + httpd process. - All is not lost! Apache::DBI can be used to cache database connections on a - per process basis, and will work for most cases. + All is not lost! Apache::DBI can be used to cache database connections + on a per process basis, and will work for most cases. Development VBScript or JScript supported? - Yes, but not with this Perl module. For ASP with other scripting languages - besides Perl, you will need to go with a commercial vendor in the UNIX - world. Sun has such a solution. Of course on Windows NT and Windows 2000, - you get VBScript for free with IIS. - - Sun ONE Active Server Pages (formerly Sun Chili!Soft ASP) - http://www.chilisoft.com + Only Perl scripting is supported with this module. How is database connectivity handled? - Database connectivity is handled through perl's DBI & DBD interfaces. In the - UNIX world, it seems most databases have cross platform support in perl. You - can find the book on DBI programming at - http://www.oreilly.com/catalog/perldbi/ - - DBD::ODBC is often your ticket on Win32. On UNIX, commercial vendors like - OpenLink Software (http://www.openlinksw.com/) provide the nuts and bolts - for ODBC. + Database connectivity is handled through perl's DBI & DBD interfaces. In + the UNIX world, it seems most databases have cross platform support in + perl. You can find the book on DBI programming at + http://www.oreilly.com/catalog/perldbi/ + + DBD::ODBC is often your ticket on Win32. On UNIX, commercial vendors + like OpenLink Software (http://www.openlinksw.com/) provide the nuts and + bolts for ODBC. - Database connections can be cached per process with Apache::DBI. + Database connections can be cached per process with Apache::DBI. What is the best way to debug an ASP application ? - There are lots of perl-ish tricks to make your life developing and debugging - an ASP application easier. For starters, you will find some helpful hints by - reading the $Response->Debug() API extension, and the Debug configuration - directive. + There are lots of perl-ish tricks to make your life developing and + debugging an ASP application easier. For starters, you will find some + helpful hints by reading the $Response->Debug() API extension, and the + Debug configuration directive. How are file uploads handled? - Please see the CGI section. File uploads are implemented through CGI.pm - which is loaded at runtime only for this purpose. This is the only time that - CGI.pm will be loaded by Apache::ASP, which implements all other cgi-ish - functionality natively. The rationale for not implementing file uploads - natively is that the extra 100K in memory for CGI.pm shouldn't be a big deal - if you are working with bulky file uploads. + Please see the CGI section. File uploads are implemented through CGI.pm + which is loaded at runtime only for this purpose. This is the only time + that CGI.pm will be loaded by Apache::ASP, which implements all other + cgi-ish functionality natively. The rationale for not implementing file + uploads natively is that the extra 100K in memory for CGI.pm shouldn't + be a big deal if you are working with bulky file uploads. How do I access the ASP Objects in general? - All the ASP objects can be referenced through the main package with the - following notation: + All the ASP objects can be referenced through the main package with the + following notation: - $main::Response->Write("html output"); + $main::Response->Write("html output"); - This notation can be used from anywhere in perl, including routines - registered with $Server->RegisterCleanup(). + This notation can be used from anywhere in perl, including routines + registered with $Server->RegisterCleanup(). - You use the normal notation in your scripts, includes, and global.asa: + You use the normal notation in your scripts, includes, and global.asa: - $Response->Write("html output"); + $Response->Write("html output"); Can I print() in ASP? - Yes. You can print() from anywhere in an ASP script as it aliases to the - $Response->Write() method. Using print() is portable with PerlScript when - using Win32::ASP in that environment. + Yes. You can print() from anywhere in an ASP script as it aliases to the + $Response->Write() method. Using print() is portable with PerlScript + when using Win32::ASP in that environment. Do I have access to ActiveX objects? - Only under Win32 will developers have access to ActiveX objects through the - perl Win32::OLE interface. This will remain true until there are free COM - ports to the UNIX world. At this time, there is no ActiveX for the UNIX - world. + Only under Win32 will developers have access to ActiveX objects through + the perl Win32::OLE interface. This will remain true until there are + free COM ports to the UNIX world. At this time, there is no ActiveX for + the UNIX world. Support and Production How do I get things I want done?! - If you find a problem with the module, or would like a feature added, please - mail support, as listed in the SUPPORT section, and your needs will be - promptly and seriously considered, then implemented. + If you find a problem with the module, or would like a feature added, + please mail support, as listed in the SUPPORT section, and your needs + will be promptly and seriously considered, then implemented. What is the state of Apache::ASP? Can I publish a web site on it? - Apache::ASP has been production ready since v.02. Work being done on the - module is on a per need basis, with the goal being to eventually have the - ASP API completed, with full portability to ActiveState PerlScript and MKS - PScript. If you can suggest any changes to facilitate these goals, your - comments are welcome. + Apache::ASP has been production ready since v.02. Work being done on the + module is on a per need basis, with the goal being to eventually have + the ASP API completed, with full portability to ActiveState PerlScript + and MKS PScript. If you can suggest any changes to facilitate these + goals, your comments are welcome. TUNING A little tuning can go a long way, and can make the difference between a web @@ -3273,7 +3299,7 @@ Apache::ASP v2.29+ Apache::ASP Site Tuning - http://www.chamas.com/asp/articles/perlmonth3_tune.html + http://www.apache-asp.org/articles/perlmonth3_tune.html Tuning & Benchmarking When performance tuning, it is important to have a tool to measure the @@ -3443,7 +3469,9 @@ Other honorable mentions include: - !! Doug MacEachern, for moral support and of course mod_perl + !! Gregory Youngblood, Thanos Chatziathanassiou, & Tsirkin Evgeny for keeping the flame alive! + + :) Doug MacEachern, for moral support and of course mod_perl :) Helmut Zeilinger, Skylos, John Drago, and Warren Young for their help in the community :) Randy Kobes, for the win32 binaries, and for always being the epitome of helpfulness :) Francesco Pasqualini, for bug fixes with stand alone CGI mode on Win32 @@ -3511,96 +3539,100 @@ SUPPORT COMMUNITY Mailing List Archives - Try the Apache::ASP mailing list archive first when working through an issue - as others may have had the same question as you, then try the mod_perl list - archives since often problems working with Apache::ASP are really mod_perl - ones. + Try the Apache::ASP mailing list archive first when working through an + issue as others may have had the same question as you, then try the + mod_perl list archives since often problems working with Apache::ASP are + really mod_perl ones. - The Apache::ASP mailing list archives are located at: + The Apache::ASP mailing list archives are located at: - http://groups.yahoo.com/group/apache-asp/ - http://www.mail-archive.com/asp%40perl.apache.org/ + http://groups.yahoo.com/group/apache-asp/ + http://www.mail-archive.com/asp%40perl.apache.org/ - The mod_perl mailing list archives are located at: + The mod_perl mailing list archives are located at: - http://forum.swarthmore.edu/epigone/modperl - http://www.egroups.com/group/modperl/ + http://mail-archives.apache.org/mod_mbox/perl-modperl/ Mailing List - Please subscribe to the Apache::ASP mailing list by sending an email to - asp-subscribe[at]perl.apache.org and send your questions or comments to the - list after your subscription is confirmed. + Please subscribe to the Apache::ASP mailing list by sending an email to + asp-subscribe[at]perl.apache.org and send your questions or comments to + the list after your subscription is confirmed. - To unsubscribe from the Apache::ASP mailing list, just send an email to - asp-unsubscribe[at]perl.apache.org + To unsubscribe from the Apache::ASP mailing list, just send an email to + asp-unsubscribe[at]perl.apache.org - If you think this is a mod_perl specific issue, you can send your question - to modperl[at]apache.org + If you think this is a mod_perl specific issue, you can send your + question to modperl[at]apache.org Donations - Apache::ASP is freely distributed under the terms of the GPL license ( see - the LICENSE section ). If you would like to donate time to the project, - please get involved on the Apache::ASP Mailing List, and submit ideas, bug - fixes and patches for the core system, and perhaps most importantly to - simply support others in learning the ins and outs of the software. + Apache::ASP is freely distributed under the terms of the Perl artistic + license ( see the LICENSE section ). If you would like to donate time to + the project, please get involved on the Apache::ASP Mailing List, and + submit ideas, bug fixes and patches for the core system, and perhaps + most importantly to simply support others in learning the ins and outs + of the software. COMMERCIAL If you would like commercial support for Apache::ASP, please check out any of the following listed companies. Note that this is not an endorsement, and - if you would like your company listed here, please email asp-dev [at] - chamas.com with your information. + if you would like your company listed here, please email + asp[at]perl.apache.org with your information. AlterCom - We use, host and support mod_perl. We would love to be able to help anyone - with their mod_perl Apache::ASP needs. Our mod_perl hosting is $24.95 mo. + We use, host and support mod_perl. We would love to be able to help + anyone with their mod_perl Apache::ASP needs. Our mod_perl hosting is + $24.95 mo. - http://altercom.com/home.html + http://altercom.com/home.html The Cyberchute Connection - Our hosting services support Apache:ASP along with Mod_Perl, PHP and MySQL. - - http://www.Cyberchute.com + Our hosting services support Apache:ASP along with Mod_Perl, PHP and + MySQL. - GrokThis.net - Web hosting provider. Specializing in mod_perl and mod_python hosting, we - allow users to edit their own Apache configuration files and run their own - Apache servers. - - http://grokthis.net + http://www.Cyberchute.com OmniTI - OmniTI supports Apache and mod_perl (including Apache::ASP) and offers - competitive pricing for both hourly and project-based jobs. OmniTI has - extensive experience managing and maintaining both large and small projects. - Our services range from short-term consulting to project-based development, - and include ongoing maintenance and hosting. + OmniTI supports Apache and mod_perl (including Apache::ASP) and offers + competitive pricing for both hourly and project-based jobs. OmniTI has + extensive experience managing and maintaining both large and small + projects. Our services range from short-term consulting to project-based + development, and include ongoing maintenance and hosting. - http://www.omniti.com + http://www.omniti.com TUX IT AG - Main business is implementing and maintaining infrastructure for big - websites and portals, as well as developing web applications for our - customers (Apache, Apache::ASP, PHP, Perl, MySQL, etc.) + Main business is implementing and maintaining infrastructure for big + websites and portals, as well as developing web applications for our + customers (Apache, Apache::ASP, PHP, Perl, MySQL, etc.) - The prices for our service are about 900 EUR per day which is negotiable - (for longer projects, etc.). + The prices for our service are about 900 EUR per day which is negotiable + (for longer projects, etc.). - http://www.tuxit.de + http://www.tuxit.de SITES USING What follows is a list of public sites that are using Apache::ASP. If you use the software for your site, and would like to show your support of the - software by being listed, please send your link to asp-dev [at] chamas.com + software by being listed, please send your link to asp[at]perl.apache.org For a list of testimonials of those using Apache::ASP, please see the TESTIMONIALS section. - Zapisy - Testy - http://www.ch.pwr.wroc.pl/~bruno/testy/ + PERSONiO Match + http://www.personio.com/home.asp + + gutscheinwurst.de - a German voucher community + http://www.gutscheinwurst.de SalesJobs.com http://www.salesjobs.com + hanschur.de + http://www.hanschur.de + + Webtist + http://www.webtist.de + FreeLotto http://www.freelotto.com @@ -3619,12 +3651,6 @@ WebTime http://webtime-project.net - Meet-O-Matic - http://meetomatic.com/about.asp - - Apache Hello World Benchmarks - http://chamas.com/bench/ - AlterCom, Advanced Web Hosting http://altercom.com/ @@ -3634,21 +3660,12 @@ ESSTECwebservices http://www.esstec.be/ - SQLRef - http://comclub.dyndns.org:8081/sqlref/ - - Bouygues Telecom Enterprises - http://www.b2bouygtel.com - Alumni.NET http://www.alumni.net Anime Wallpapers dot com http://www.animewallpapers.com/ - Chamas Enterprises Inc. - http://www.chamas.com - Cine.gr http://www.cine.gr @@ -3667,9 +3684,6 @@ Integra http://www.integra.ru/ - Internetowa Gielda Samochodowa - http://www.gielda.szczecin.pl - Money FM http://www.moneyfm.gr @@ -3691,9 +3705,6 @@ redhat.com | support http://www.redhat.com/apps/support/ - Samara.RU - http://portal.samara.ru/ - Spotlight http://www.spotlight.com.au @@ -3709,98 +3720,122 @@ For a list of sites using Apache::ASP, please see the SITES USING section. Red Hat - We're using Apache::ASP on www.redhat.com. We find Apache::ASP very easy to - use, and it's quick for new developers to get up to speed with it, given - that many people have already been exposed to the ASP object model that - Apache::ASP is based on. - - The documentation is comprehensive and easy to understand, and the community - and maintainer have been very helpful whenever we've had questions. + We're using Apache::ASP on www.redhat.com. We find Apache::ASP very easy + to use, and it's quick for new developers to get up to speed with it, + given that many people have already been exposed to the ASP object model + that Apache::ASP is based on. + + The documentation is comprehensive and easy to understand, and the + community and maintainer have been very helpful whenever we've had + questions. + + -- Tom Lancaster, Red Hat + + Anime Wallpaper at Anime Cubed + Your suite has got our old CGI implementation beat, hands down. Our site + is divided into two main areas, each run by a separate developer, and + the Apache::ASP section runs head and shoulders above the other side. + Anyone who is still using anything but your product to implement their + webpages seriously needs to take a look at how versatile and powerful + Apache::ASP is. Thanks again for such great work! + + -- Al from 'Anime Wallpaper at Anime Cubed', http://www.animecubed.com/wallpapers/ + + gutscheinwurst.de + I am the web master of http://www.gutscheinwurst.de , a German voucher + community. We use Apache::Asp to run our backend & administration + servers for the system. We started using Apache::ASP to see whether it + is a valid alternative to IIS legacy systems. So far all expectations in + regard of performance, ease of development and integration have been + fulfilled or exceeded. Thank's for such a great product :) - -- Tom Lancaster, Red Hat + -- Johnannes Leimbach D. L. Fox - I had programmed in Perl for some time ... but, since I also knew VB, I had - switched to VB in IIS-ASP for web stuff because of its ease of use in - embedding code with HTML ... When I discovered Apache-ASP, it was like a - dream come true. I would much rather code in Perl than any other language. - Thanks for such a fine product! + I had programmed in Perl for some time ... but, since I also knew VB, I + had switched to VB in IIS-ASP for web stuff because of its ease of use + in embedding code with HTML ... When I discovered Apache-ASP, it was + like a dream come true. I would much rather code in Perl than any other + language. Thanks for such a fine product! HOSTING 321, LLC. - After discontinuing Windows-based hosting due to the high cost of software, - our clients are thrilled with Apache::ASP and they swear ASP it's faster - than before. Installation was a snap on our 25-server web farm with a small - shell script and everything is running perfectly! The documentation is very - comprehensive and everyone has been very helpful during this migration. + After discontinuing Windows-based hosting due to the high cost of + software, our clients are thrilled with Apache::ASP and they swear ASP + it's faster than before. Installation was a snap on our 25-server web + farm with a small shell script and everything is running perfectly! The + documentation is very comprehensive and everyone has been very helpful + during this migration. - Thank you! + Thank you! - -- Richard Ward, HOSTING 321, LLC. + -- Richard Ward, HOSTING 321, LLC. Concept Online Ltd. - I would like to say that your ASP module rocks :-) We have practically - stopped developing in anything else about half a year ago, and are now using - Apache::ASP extensively. I just love Perl, and whereever we are not "forced" - to use JSP, we chose ASP. It is fast, reliable, versatile, documented in a - way that is the best for professionals - so thank you for writting and - maintaining it! + I would like to say that your ASP module rocks :-) We have practically + stopped developing in anything else about half a year ago, and are now + using Apache::ASP extensively. I just love Perl, and whereever we are + not "forced" to use JSP, we chose ASP. It is fast, reliable, versatile, + documented in a way that is the best for professionals - so thank you + for writting and maintaining it! - -- Csongor Fagyal, Concept Online Ltd. + -- Csongor Fagyal, Concept Online Ltd. WebTime - As we have seen with WebTime, Apache::ASP is not only good for the - development of website, but also for the development of webtools. Since I - first discoverd it, I made it a must-have in my society by taking - traditional PHP users to the world of perl afficionados. + As we have seen with WebTime, Apache::ASP is not only good for the + development of website, but also for the development of webtools. Since + I first discoverd it, I made it a must-have in my society by taking + traditional PHP users to the world of perl afficionados. + + Having the possibility to use Apache::ASP with mod_perl or mod_cgi make + it constraintless to use because of CGI's universality and perl's + portability. - Having the possibility to use Apache::ASP with mod_perl or mod_cgi make it - constraintless to use because of CGI's universality and perl's portability. - - -- Grégoire Lejeune + -- Grégoire Lejeune David Kulp - First, I just want to say that I am very very impressed with Apache::ASP. I - just want to gush with praise after looking at many other implementations of - perl embedded code and being very underwhelmed. This is so damn slick and - clean. Kudos! ... - - ... I'm very pleased how quickly I've been able to mock up the application. - I've been writing Perl CGI off and on since 1993(!) and I can tell you that - Apache::ASP is a pleasure. (Last year I tried Zope and just about threw my - computer out the window.) + First, I just want to say that I am very very impressed with + Apache::ASP. I just want to gush with praise after looking at many other + implementations of perl embedded code and being very underwhelmed. This + is so damn slick and clean. Kudos! ... + + ... I'm very pleased how quickly I've been able to mock up the + application. I've been writing Perl CGI off and on since 1993(!) and I + can tell you that Apache::ASP is a pleasure. (Last year I tried Zope and + just about threw my computer out the window.) - -- David Kulp + -- David Kulp MFM Commmunication Software, Inc. - Working in a team environment where you have HTML coders and perl coders, - Apache::ASP makes it easy for the HTML folks to change the look of the page - without knowing perl. Using Apache::ASP (instead of another embedded perl - solution) allows the HTML jockeys to use a variety of HTML tools that - understand ASP, which reduces the amount of code they break when editing the - HTML. Using Apache::ASP instead of M$ ASP allows us to use perl (far - superior to VBScript) and Apache (far superior to IIS). + Working in a team environment where you have HTML coders and perl + coders, Apache::ASP makes it easy for the HTML folks to change the look + of the page without knowing perl. Using Apache::ASP (instead of another + embedded perl solution) allows the HTML jockeys to use a variety of HTML + tools that understand ASP, which reduces the amount of code they break + when editing the HTML. Using Apache::ASP instead of M$ ASP allows us to + use perl (far superior to VBScript) and Apache (far superior to IIS). - We've been very pleased with Apache::ASP and its support. + We've been very pleased with Apache::ASP and its support. Planet of Music - Apache::ASP has been a great tool. Just a little background.... the whole - site had been in cgi flat files when I started here. I was looking for a - technology that would allow me to write the objects and NEVER invoke - CGI.pm... I found it and hopefuly I will be able to implement this every - site I go to. - - When I got here there was a huge argument about needing a game engine and I - belive this has been the key... Games are approx. 10 time faster than - before. The games don't break anylonger. All in all a great tool for - advancement. + Apache::ASP has been a great tool. Just a little background.... the + whole site had been in cgi flat files when I started here. I was looking + for a technology that would allow me to write the objects and NEVER + invoke CGI.pm... I found it and hopefuly I will be able to implement + this every site I go to. + + When I got here there was a huge argument about needing a game engine + and I belive this has been the key... Games are approx. 10 time faster + than before. The games don't break anylonger. All in all a great tool + for advancement. - -- JC Fant IV + -- JC Fant IV Cine.gr - ...we ported our biggest yet ASP site from IIS (well, actually rewrote), - Cine.gr and it is a killer site. In some cases, the whole thing got almost - 25 (no typo) times faster... None of this would ever be possible without - Apache::ASP (I do not ever want to write ``print "\n";'' again). + ...we ported our biggest yet ASP site from IIS (well, actually rewrote), + Cine.gr and it is a killer site. In some cases, the whole thing got + almost 25 (no typo) times faster... None of this would ever be possible + without Apache::ASP (I do not ever want to write ``print "\n";'' + again). RESOURCES Here are some important resources listed related to the use of Apache::ASP @@ -3820,10 +3855,6 @@ Embedded Perl ( part of a series on Perl ) http://www.wdvl.com/Authoring/Languages/Perl/PerlfortheWeb/index15.html - Benchmarking - Apache Hello World Benchmarks - http://chamas.com/bench/ - Books mod_perl "Eagle" Book http://www.modperl.com @@ -3834,16 +3865,6 @@ Programming the Perl DBI http://www.oreilly.com/catalog/perldbi/ - Presentations - Apache::ASP Tutorial, 2000 Open Source Convention ( PowerPoint ) - http://www.chamas.com/asp/OSS_convention_2000.pps - - Advanced Apache::ASP Tutorial, 2001 Open Source Convention ( Zipped PDF ) - http://www.chamas.com/asp/OSS_convention_2001.zip - - Advanced Apache::ASP Tutorial, 2001 Open Source Convention ( PDF ) - http://www.chamas.com/asp/OSS_convention_2001.pdf - Reference Cards Apache & mod_perl Reference Cards http://www.refcards.com/ @@ -3852,7 +3873,7 @@ mod_perl Apache web module http://perl.apache.org - mod_perl Guide + mod_perl 1.x Guide http://perl.apache.org/guide/ Perl Programming Language @@ -3860,7 +3881,7 @@ Apache Web Server http://www.apache.org - + TODO There is no specific time frame in which these things will be implemented. Please let me know if any of these is of particular interest to you, and I @@ -3870,15 +3891,6 @@ + Database storage of $Session & $Application, so web clusters may scale better than the current NFS/CIFS StateDir implementation allows, maybe via Apache::Session. - + Sample Apache::ASP applications beyond ./site/eg - + More caching options like $Server->Cache for user cache - and $Response->Cache for page caching - + Caching guide - - MAY BE DONE - + VBScript, ECMAScript or JavaScript interpreters - + Dumping state of Apache::ASP during an error, and being - able to go through it with the perl debugger. CHANGES Apache::ASP has been in development since 1998, and was production ready @@ -3892,2373 +3904,2374 @@ + = improvement - = bug fix (d) = documentations - $VERSION = 2.62; $DATE="2011/08/16" + $VERSION = 2.63; $DATE="03/14/2018" + + Added section ``raw'' to MailErrors.inc to debug POSTs without + form fields - - Fixed 'application/x-www-form-urlencoded' for AJAX POSTs post - Firefox 3.x + - MailErrorsHTML now uses monospaced fonts for errors. Easier on + the eyes and more informative - + First sourceforge.net hosted version + $VERSION = 2.62; $DATE="08/16/2011" + - Fixed 'application/x-www-form-urlencoded' for AJAX POSTs post + Firefox 3.x - + Incremented version number to actually match SVN branch tag + + First sourceforge.net hosted version - + Switched to Big-endian date format in the documentation. - Less chance of misunderstandings + + 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 - - 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 + + loads modules in a backwards compatible way for older versions of mod_perl 1.99_07 to 1.99_09 - Please see README for changes for past versions. + + 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 + + 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 + + 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 + + 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 + - $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 + - 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. + - 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 + - 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 + + 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 + + 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 + ++ 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 + + 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 + - 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. + + 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 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. + + XMLSubs tags with "-" in them will have "-" replaced with "_" or underscore, so a + tag like 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" - + added t/session_query_parse.t test to cover use of SessionQueryParse - and $Server->URL APIs + + added t/session_query_parse.t test to cover use of SessionQueryParse + and $Server->URL APIs - - Fixed duplicate "&" bug associated with using $Server->URL - and SessionQueryParse together + - Fixed duplicate "&" bug associated with using $Server->URL + and SessionQueryParse together - + Patch to allow $Server->URL() to be called multiple times on the same URL - as in $Server->URL($Server->URL($url, \%params), \%more_params) + + Patch to allow $Server->URL() to be called multiple times on the same URL + as in $Server->URL($Server->URL($url, \%params), \%more_params) - (d) Added new testimonials & sites & created a separate testimonials page. + (d) Added new testimonials & sites & created a separate testimonials page. - - SessionQueryParse will now add to & to the query strings - embedded in the HTML, instead of & for proper HTML generation. - Thanks to Peter Galbavy for pointing out and Thanos Chatziathanassiou - for suggesting the fix. + - SessionQueryParse will now add to & to the query strings + embedded in the HTML, instead of & for proper HTML generation. + Thanks to Peter Galbavy for pointing out and Thanos Chatziathanassiou + for suggesting the fix. - - $Response->{ContentType} set to text/html for developer error reporting, - in case this was set to something else before the error occured. - Thanks to Philip Mak for reporting. + - $Response->{ContentType} set to text/html for developer error reporting, + in case this was set to something else before the error occured. + Thanks to Philip Mak for reporting. - - Couple of minor bug fixes under PerlWarn use, thanks Peter Galbavy - for reporting. + - Couple of minor bug fixes under PerlWarn use, thanks Peter Galbavy + for reporting. - + Added automatic load of "use Apache2" for compat with mod_perl2 - request objects when Apache::ASP is loaded via "PerlModule Apache::ASP" - Thanks to Richard Curtis for reporting bug & subsequent testing. + + Added automatic load of "use Apache2" for compat with mod_perl2 + request objects when Apache::ASP is loaded via "PerlModule Apache::ASP" + Thanks to Richard Curtis for reporting bug & subsequent testing. - - When GlobalPackage config changes, but global.asa has not, global.asa - will be recompiled anyway to update the GlobalPackage correctly. - Changing GlobalPackage before would cause errors if global.asa was - already compiled. + - When GlobalPackage config changes, but global.asa has not, global.asa + will be recompiled anyway to update the GlobalPackage correctly. + Changing GlobalPackage before would cause errors if global.asa was + already compiled. - ++ For ANY PerlSetVar type config, OFF/Off/off will be assumed - to have value of 0 for that setting. Before, only a couple settings - had this semantics, but they all do now for consistency. + ++ For ANY PerlSetVar type config, OFF/Off/off will be assumed + to have value of 0 for that setting. Before, only a couple settings + had this semantics, but they all do now for consistency. - - Fix for InodeNames config on OpenBSD, or any OS that might have - a device # of 0 for the file being stat()'d, thanks to Peter Galbavy - for bug report. + - Fix for InodeNames config on OpenBSD, or any OS that might have + a device # of 0 for the file being stat()'d, thanks to Peter Galbavy + for bug report. - ++ Total XSLT speedups, 5-10% on large XSLT, 10-15% on small XSLT + ++ Total XSLT speedups, 5-10% on large XSLT, 10-15% on small XSLT - + bypass meta data check like expires for XSLT Cache() API use - because XSLT tranformations don't expire, saves hit to cache dbm - for meta data + + bypass meta data check like expires for XSLT Cache() API use + because XSLT tranformations don't expire, saves hit to cache dbm + for meta data - + use of direct Apache::ASP::State methods like FETCH/STORE - in Cache() layer so we don't have to go through slower tied interface. - This will speed up XSLT & and include output caching mostly. + + use of direct Apache::ASP::State methods like FETCH/STORE + in Cache() layer so we don't have to go through slower tied interface. + This will speed up XSLT & and include output caching mostly. - + minor optimizations for speed & memory usage + + minor optimizations for speed & memory usage $VERSION = 2.49; $DATE="11/10/2002" - -- bug introduced in 2.47 cached script compilations for executing - scripts ( not includes ) of the same name in different directories - for the same Global/GlobalPackage config for an application. - Fix was to remove optimization that caused problem, and - created test case t/same_name.t to cover bug. + -- bug introduced in 2.47 cached script compilations for executing + scripts ( not includes ) of the same name in different directories + for the same Global/GlobalPackage config for an application. + Fix was to remove optimization that caused problem, and + created test case t/same_name.t to cover bug. $VERSION = 2.47; $DATE="11/06/2002" - ++ Runtime speed enhancements for 15-20% improvement including: - + INTERNAL API ReadFile() now returns scalar ref as memory optimization - + cache InodeNames config setting in ASP object now for common lookups - + removed CompileChecksum() INTERNAL API, since it was an unnecesary - method decomposition along a common code path - + removed IsChanged() INTERNAL API since compiling of scripts - is now handled by CompileInclude() which does this functionality already - + removed unnecessary decomp of IncludesChanged() INTERNAL API, which was along - critical code path - + do not call INTERNAL SearchDirs() API when compiling base script - since we have already validated its path earlier - + Use stat(_) type shortcut for stat() & -X calls where possible - + Moved @INC initilization up to handler() & consolidated with $INCDir lib - + removed useless Apache::ASP::Collection::DESTROY - + removed useless Apache::ASP::Server::DESTROY - + removed useless Apache::ASP::GlobalASA::DESTROY - + removed useless Apache::ASP::Response::DESTROY - - - Default path for $Response->{Cookies} was from CookiePath - config, but this was incorrect as CookiePath config is only - for $Session cookie, so now path for $Response->{Cookies} - defaults to / - - - Fixed bug where global.asa events would get undefined with - StatINC and GlobalPackage set when the GlobalPackage library - changed & get reloaded. - - (d) Documented long time config NoCache. - - -- Fixed use with Apache::Filter, capable as both source - and destination filter. Added ./site/eg/filter.filter example - to demonstrate these abilities. - - + Use $r->err_headers_out->add Apache::Table API for cookies - now instead of $r->cgi_header_out. Added t/cookies.t test to - cover new code path as well as general $Response->Cookies API. - Also make cookies headers sorted by cookie and dictionary key - while building headers for repeatable behavior, this latter was - to facilitate testing. - - - fixed $Server->Mail error_log output when failing to connect - to SMTP server. - - + added tests to cover UniquePackages & NoCache configs since this - config logic was updated - - + made deprecated warnings for use of certain $Response->Member - calls more loudly write to error_log, so I can remove the AUTOLOAD - for Response one day - - - Probably fixed behavior in CgiHeaders, at least under perl 5.8.0, and - added t/cgi_headers.t to cover this config. - - + removed $Apache::ASP::CompressGzip setting ability, used to possibly - set CompressGzip in the module before, not documented anyway - - + removed $Apache::ASP::Filter setting ability to set Filter globally, - not documented anyway - - + removed old work around for setting ServerStarting to 0 - at runtime, which was bad for Apache::DBI on win32 a long - time ago: - - $Apache::ServerStarting and $Apache::ServerStarting = 0; - - If this code is still needed in Apache::ASP->handler() let - me know. - - + check to make sure data in internal database is a HASH ref - before using it for session garbage collection. This is to - help prevent against internal database corruption in a - network share that does not support flock() file locking. - - + For new XMLSubs ASP type <%= %> argument interpolation - activated with XMLSubsPerlArgs 0, data references can now - be passed in addition to SCALAR/string references, so one - can pass an object reference like so: - - - - This will only work as long as the variable interpolation <%= %> - are flushed against the containing " " or ' ', or else the object - reference will be stringified when it is concatenated with - the rest of the data. - - Testing for this feature was added to ./t/xmlsubs_aspargs.t - - This feature is still experimental, and its interface may change. - However it is slated for the 3.0 release as default method, - so feedback is appreciated. - - + For new XMLSubs ASP type <%= %> argument interpolation - activated with XMLSubsPerlArgs 0, <% %> will no longer work, - just <%= %>, as in - - - - This feature is still experimental, and its interface may change. - However it is slated for the 3.0 release as default method, - so feedback is appreciated. + ++ Runtime speed enhancements for 15-20% improvement including: + + INTERNAL API ReadFile() now returns scalar ref as memory optimization + + cache InodeNames config setting in ASP object now for common lookups + + removed CompileChecksum() INTERNAL API, since it was an unnecesary + method decomposition along a common code path + + removed IsChanged() INTERNAL API since compiling of scripts + is now handled by CompileInclude() which does this functionality already + + removed unnecessary decomp of IncludesChanged() INTERNAL API, which was along + critical code path + + do not call INTERNAL SearchDirs() API when compiling base script + since we have already validated its path earlier + + Use stat(_) type shortcut for stat() & -X calls where possible + + Moved @INC initilization up to handler() & consolidated with $INCDir lib + + removed useless Apache::ASP::Collection::DESTROY + + removed useless Apache::ASP::Server::DESTROY + + removed useless Apache::ASP::GlobalASA::DESTROY + + removed useless Apache::ASP::Response::DESTROY + + - Default path for $Response->{Cookies} was from CookiePath + config, but this was incorrect as CookiePath config is only + for $Session cookie, so now path for $Response->{Cookies} + defaults to / + + - Fixed bug where global.asa events would get undefined with + StatINC and GlobalPackage set when the GlobalPackage library + changed & get reloaded. + + (d) Documented long time config NoCache. + + -- Fixed use with Apache::Filter, capable as both source + and destination filter. Added ./site/eg/filter.filter example + to demonstrate these abilities. + + + Use $r->err_headers_out->add Apache::Table API for cookies + now instead of $r->cgi_header_out. Added t/cookies.t test to + cover new code path as well as general $Response->Cookies API. + Also make cookies headers sorted by cookie and dictionary key + while building headers for repeatable behavior, this latter was + to facilitate testing. + + - fixed $Server->Mail error_log output when failing to connect + to SMTP server. + + + added tests to cover UniquePackages & NoCache configs since this + config logic was updated + + + made deprecated warnings for use of certain $Response->Member + calls more loudly write to error_log, so I can remove the AUTOLOAD + for Response one day + + - Probably fixed behavior in CgiHeaders, at least under perl 5.8.0, and + added t/cgi_headers.t to cover this config. + + + removed $Apache::ASP::CompressGzip setting ability, used to possibly + set CompressGzip in the module before, not documented anyway + + + removed $Apache::ASP::Filter setting ability to set Filter globally, + not documented anyway + + + removed old work around for setting ServerStarting to 0 + at runtime, which was bad for Apache::DBI on win32 a long + time ago: + + $Apache::ServerStarting and $Apache::ServerStarting = 0; + + If this code is still needed in Apache::ASP->handler() let + me know. + + + check to make sure data in internal database is a HASH ref + before using it for session garbage collection. This is to + help prevent against internal database corruption in a + network share that does not support flock() file locking. + + + For new XMLSubs ASP type <%= %> argument interpolation + activated with XMLSubsPerlArgs 0, data references can now + be passed in addition to SCALAR/string references, so one + can pass an object reference like so: + + + + This will only work as long as the variable interpolation <%= %> + are flushed against the containing " " or ' ', or else the object + reference will be stringified when it is concatenated with + the rest of the data. + + Testing for this feature was added to ./t/xmlsubs_aspargs.t + + This feature is still experimental, and its interface may change. + However it is slated for the 3.0 release as default method, + so feedback is appreciated. + + + For new XMLSubs ASP type <%= %> argument interpolation + activated with XMLSubsPerlArgs 0, <% %> will no longer work, + just <%= %>, as in + + + + This feature is still experimental, and its interface may change. + However it is slated for the 3.0 release as default method, + so feedback is appreciated. $VERSION = 2.45; $DATE="10/13/2002" - ++New XMLSubsPerlArgs config, default 1, indicates how - XMLSubs arguments have always been parsed. If set to 0, - will enable new XMLSubs args that are more ASP like with - <%= %> for dynamic interpolation, such as: + ++New XMLSubsPerlArgs config, default 1, indicates how + XMLSubs arguments have always been parsed. If set to 0, + will enable new XMLSubs args that are more ASP like with + <%= %> for dynamic interpolation, such as: - + - Settings XMLSubsPerlArgs to 0 is experimental for now, but - will become the default by Apache::ASP version 3.0 + Settings XMLSubsPerlArgs to 0 is experimental for now, but + will become the default by Apache::ASP version 3.0 - ++Optimization for static HTML/XML files that are served up - via Apache::ASP so that they are not compiled into perl subroutines - first. This makes especially native XSLT both faster & take - less memory to serve, before XSL & XML files being transformed - by XSLT would both be compiled as normal ASP script first, so - now this will happen if they really are ASP scripts with embedded - <% %> code blocks & XMLSubs being executed. - - +Consolidate some config data for Apache::ASP->Loader to use - globals in @Apache::ASP::CompileChecksumKeys to know which - config data is important for precompiling ASP scripts. - - +Further streamlined code compilation. Now both base - scripts and includes use the internal CompileInclude() API - to generate code. - - -Fixed runtime HTML error output when Debug is set to -2/2, - so that script correctly again gets rendered in final perl form. - Added compile time error output to ./site/eg/syntax_error.htm - when a special link is clicked for a quick visual test. - - -Cleaned up some bad coding practices in ./site/eg/global.asa - associated changes in other example files. Comment example - global.asa some for the first time reader - - -DemoASP.pm examples module needed "use strict" fix, thanks - to Allan Vest for bug report - - --$rv = $Response->Include({ File => ..., Cache => 1}); - now works to get the first returned value fetched from - the cache. Before, because a list was always returned, - $rv would have been equal to the number of items returned, - even if the return value list has just one element. - - (d) added site/robots.txt file with just a comment for - search engine indexing - - -fixed ./site/eg/binary_write.htm to not use - $Response->{ContentLength} because it does not exist. - Fixed it to use $Response->AddHeader now instead + ++Optimization for static HTML/XML files that are served up + via Apache::ASP so that they are not compiled into perl subroutines + first. This makes especially native XSLT both faster & take + less memory to serve, before XSL & XML files being transformed + by XSLT would both be compiled as normal ASP script first, so + now this will happen if they really are ASP scripts with embedded + <% %> code blocks & XMLSubs being executed. + + +Consolidate some config data for Apache::ASP->Loader to use + globals in @Apache::ASP::CompileChecksumKeys to know which + config data is important for precompiling ASP scripts. + + +Further streamlined code compilation. Now both base + scripts and includes use the internal CompileInclude() API + to generate code. + + -Fixed runtime HTML error output when Debug is set to -2/2, + so that script correctly again gets rendered in final perl form. + Added compile time error output to ./site/eg/syntax_error.asp + when a special link is clicked for a quick visual test. + + -Cleaned up some bad coding practices in ./site/eg/global.asa + associated changes in other example files. Comment example + global.asa some for the first time reader + + -DemoASP.pm examples module needed "use strict" fix, thanks + to Allan Vest for bug report + + --$rv = $Response->Include({ File => ..., Cache => 1}); + now works to get the first returned value fetched from + the cache. Before, because a list was always returned, + $rv would have been equal to the number of items returned, + even if the return value list has just one element. + + (d) added site/robots.txt file with just a comment for + search engine indexing + + -fixed ./site/eg/binary_write.htm to not use + $Response->{ContentLength} because it does not exist. + Fixed it to use $Response->AddHeader now instead $VERSION = 2.41; $DATE="09/29/2002" - -Removed CVS Revision tag from Apache::ASP::Date, which - was causing bad revision numbers in CPAN after CVS integration - of Apache::ASP + -Removed CVS Revision tag from Apache::ASP::Date, which + was causing bad revision numbers in CPAN after CVS integration + of Apache::ASP - +removed cgi/asp link to ../asp-perl from distribution. This - link was for the deprecated asp script which is now asp-perl + +removed cgi/asp link to ../asp-perl from distribution. This + link was for the deprecated asp script which is now asp-perl $VERSION = 2.39; $DATE="09/10/2002" - -Turn off $^W explicitly before reloading global.asa. Reloading - global.asa when $^W is set will trigger subroutine redefinition - warnings. Reloading global.asa should occur without any problems - under normal usage of the system, thus this work around. - - This fix is important to UseStrict functionality because warnings - automatically become thrown as die() errors with UseStrict enabled, - so we have to disable normal soft warnings here. - - -$Response->Include() runtime errors now throw a die() that - can be trapped. This was old functionality that has been restored. - Other compile time errors should still trigger a hard error - like script compilation, global.asa, or $Response->Include() - without an eval() + -Turn off $^W explicitly before reloading global.asa. Reloading + global.asa when $^W is set will trigger subroutine redefinition + warnings. Reloading global.asa should occur without any problems + under normal usage of the system, thus this work around. + + This fix is important to UseStrict functionality because warnings + automatically become thrown as die() errors with UseStrict enabled, + so we have to disable normal soft warnings here. + + -$Response->Include() runtime errors now throw a die() that + can be trapped. This was old functionality that has been restored. + Other compile time errors should still trigger a hard error + like script compilation, global.asa, or $Response->Include() + without an eval() - +Some better error handling with Debug 3 or -3 set, cleaned - up developer errors messages somewhat. + +Some better error handling with Debug 3 or -3 set, cleaned + up developer errors messages somewhat. $VERSION = 2.37; $DATE="07/03/2002" - -Fixed the testing directory structures for t/long_names.t - so that tar software like Archive::Tar & Solaris tar that - have problems with long file names will still be able - to untar distribution successfully. Now t/long_names.t - generates its testing directory structures at runtime. - - -Fixes for "make test" to work under perl 5.8.0 RC2, - courtesy of Manabu Higashida - - +SessionQueryForce setting created for disabling use of cookies - for $Session session-id passing, rather requiring use of SessionQuery* - functionality for session-id passing via URL query string. - - By default, even when SessionQuery* options are used, cookies will - be used if available with SessionQuery* functionality acting only - as a backup, so this makes it so that cookies will never be used. - - +Escape ' with HTMLEncode() to ' - - -Trying to fix t/server_mail.t to work better for platforms - that it should skip testing on. Updated t/server.t test case. - - +Remove exit() from Makefile.PL so CPAN.pm's automatic - follow prereq mechanism works correctly. Thanks to Slaven Rezic - for pointing this out. + -Fixed the testing directory structures for t/long_names.t + so that tar software like Archive::Tar & Solaris tar that + have problems with long file names will still be able + to untar distribution successfully. Now t/long_names.t + generates its testing directory structures at runtime. + + -Fixes for "make test" to work under perl 5.8.0 RC2, + courtesy of Manabu Higashida + + +SessionQueryForce setting created for disabling use of cookies + for $Session session-id passing, rather requiring use of SessionQuery* + functionality for session-id passing via URL query string. + + By default, even when SessionQuery* options are used, cookies will + be used if available with SessionQuery* functionality acting only + as a backup, so this makes it so that cookies will never be used. + + +Escape ' with HTMLEncode() to ' + + -Trying to fix t/server_mail.t to work better for platforms + that it should skip testing on. Updated t/server.t test case. + + +Remove exit() from Makefile.PL so CPAN.pm's automatic + follow prereq mechanism works correctly. Thanks to Slaven Rezic + for pointing this out. - +Added Apache::compat loading in mod_perl environment for better - mod_perl 2.0 support. + +Added Apache::compat loading in mod_perl environment for better + mod_perl 2.0 support. $VERSION = 2.35; $DATE="05/30/2002" - +Destroy better $Server & $Response objects so that my - closure references to these to not attempt to work in the future - against invalid internal data. There was enough data left in these - old objects to make debugging the my closure problem confusing, where - it looked like the ASP object state became invalid. - - +Added system debug diagnostics to inspect StateManager group cleanup - - (d) Documentation update about flock() work around for - Win95/Win98/WinMe systems, confirmed by Rex Arul - - (d) Documentation/site build bug found by Mitsunobu Ozato, - where <% %> not being escaped correctly with $Server->HTMLEncode(). - New japanese documentation project started by him - at http://sourceforge.jp/projects/apache-asp-jp/ - - -InitPackageGlobals() called after new Apache::ASP object created so - core system templates can be compiled even when there was a runtime - compilation error of user templates. Bug fix needed pointed out by - Eamon Daly + +Destroy better $Server & $Response objects so that my + closure references to these to not attempt to work in the future + against invalid internal data. There was enough data left in these + old objects to make debugging the my closure problem confusing, where + it looked like the ASP object state became invalid. + + +Added system debug diagnostics to inspect StateManager group cleanup + + (d) Documentation update about flock() work around for + Win95/Win98/WinMe systems, confirmed by Rex Arul + + (d) Documentation/site build bug found by Mitsunobu Ozato, + where <% %> not being escaped correctly with $Server->HTMLEncode(). + New japanese documentation project started by him + at http://sourceforge.jp/projects/apache-asp-jp/ + + -InitPackageGlobals() called after new Apache::ASP object created so + core system templates can be compiled even when there was a runtime + compilation error of user templates. Bug fix needed pointed out by + Eamon Daly $VERSION = 2.33; $DATE="04/29/2002" - - fixed up t/server_mail.t test to skip if a sendmail server - is not available on localhost. We only want the test to run - if there is a server to test against. + - fixed up t/server_mail.t test to skip if a sendmail server + is not available on localhost. We only want the test to run + if there is a server to test against. - + removed cgi/asp script, just a symlink now to the ./asp-perl script - which in this way deprecates it. I had it hard linked, but the - distribution did not untar very well on win32 platform. + + removed cgi/asp script, just a symlink now to the ./asp-perl script + which in this way deprecates it. I had it hard linked, but the + distribution did not untar very well on win32 platform. - + Reordered the modules in Bundle::Apache::ASP for a cleaner install. + + Reordered the modules in Bundle::Apache::ASP for a cleaner install. - - Fixed bug where XMLSubs where removing tag - when it was needed in XSLT mode. + - Fixed bug where XMLSubs where removing tag + when it was needed in XSLT mode. - + $Server->Mail({ CC => '...', BCC => '...' }), now works to send - CC & BCC headers/recipients. + + $Server->Mail({ CC => '...', BCC => '...' }), now works to send + CC & BCC headers/recipients. - + Removed $Apache::ASP::Register definition which defined the current - executing Apache::ASP object. Only one part of the application was - using it, and this has been fixed. This would have been an unsafe - use of globals for a threaded environment. + + Removed $Apache::ASP::Register definition which defined the current + executing Apache::ASP object. Only one part of the application was + using it, and this has been fixed. This would have been an unsafe + use of globals for a threaded environment. - + Decreased latency when doing Application_OnStart, used to sleep(1) - for CleanupMaster sync, but this is not necessary for Application_OnStart - scenario + + Decreased latency when doing Application_OnStart, used to sleep(1) + for CleanupMaster sync, but this is not necessary for Application_OnStart + scenario - + Restructure code / core templates for MailErrorsTo funcationality. - Wrote test mail_error.t to cover this. $ENV{REMOTE_USER} will now - be displayed in the MailErrorsTo message when defined from 401 basic auth. + + Restructure code / core templates for MailErrorsTo funcationality. + Wrote test mail_error.t to cover this. $ENV{REMOTE_USER} will now + be displayed in the MailErrorsTo message when defined from 401 basic auth. - + $Server->RegisterCleanup should be thread safe now, as it no longer relies - on access to @Apache::ASP::Cleanup for storing the CODE ref stack. + + $Server->RegisterCleanup should be thread safe now, as it no longer relies + on access to @Apache::ASP::Cleanup for storing the CODE ref stack. - + test t/inode_names.t for InodeNames and other file tests covering case - of long file names. + + test t/inode_names.t for InodeNames and other file tests covering case + of long file names. - - Fixed long file name sub identifier bug. Added test t/long_names.t. + - Fixed long file name sub identifier bug. Added test t/long_names.t. - + CacheDir may now be set independently of StateDir. It used to default - to StateDir if it was set. + + CacheDir may now be set independently of StateDir. It used to default + to StateDir if it was set. - ++ Decomposition of modules like Apache::ASP::Session & Apache::ASP::Application - out of ASP.pm file. This should make the source more developer friendly. + ++ Decomposition of modules like Apache::ASP::Session & Apache::ASP::Application + out of ASP.pm file. This should make the source more developer friendly. - This selective code compilation also speeds up CGI requests that do not - need to load unneeded modules like Apache::ASP::Session, by about 50%, - so where CGI mode ran at about 2.1 hits/sec before, now for - light requests that do not load $Session & $Application, requests - run at 3.4 hits/sec, this is on a dual PIII-450 linux 2.4.x + This selective code compilation also speeds up CGI requests that do not + need to load unneeded modules like Apache::ASP::Session, by about 50%, + so where CGI mode ran at about 2.1 hits/sec before, now for + light requests that do not load $Session & $Application, requests + run at 3.4 hits/sec, this is on a dual PIII-450 linux 2.4.x - - Caching like for XSLTCache now works in CGI mode. - This was a bug that it did not before. + - Caching like for XSLTCache now works in CGI mode. + This was a bug that it did not before. - + $Server->File() API added, acts as a wrapper around - Apache->request->filename Added test in t/server.t + + $Server->File() API added, acts as a wrapper around + Apache->request->filename Added test in t/server.t - ++ *** EXPERIMENTAL / ALPHA FEATURE NOTE BEGIN *** + ++ *** EXPERIMENTAL / ALPHA FEATURE NOTE BEGIN *** - New $PERLLIB/Apache/ASP/Share/ directory created to - hold system & user contributed components, which will be found - on the $Server->MapInclude() path, which helps $Response->Include - search '.',Global,IncludesDir, and now Apache::ASP::Share for - includes to load at runtime. + New $PERLLIB/Apache/ASP/Share/ directory created to + hold system & user contributed components, which will be found + on the $Server->MapInclude() path, which helps $Response->Include + search '.',Global,IncludesDir, and now Apache::ASP::Share for + includes to load at runtime. - The syntax for loading a shared include is to prefix the file - name with Share:: as in: + The syntax for loading a shared include is to prefix the file + name with Share:: as in: - $Response->TrapInclude('Share::CORE/MailError.inc'); + $Response->TrapInclude('Share::CORE/MailError.inc'); - New test to cover this at t/share.t + New test to cover this at t/share.t - This feature is experimental. The naming convention may change - and the feature may disappear altogether, so only use if you - are interesting in experimenting with this feature & will - provide feedback about how it works. + This feature is experimental. The naming convention may change + and the feature may disappear altogether, so only use if you + are interesting in experimenting with this feature & will + provide feedback about how it works. - *** EXPERIMENTAL / ALPHA FEATURE NOTE END *** + *** EXPERIMENTAL / ALPHA FEATURE NOTE END *** - + asp-perl script now uses ./asp.conf instead of ./asp.config - for runtime configuration via %Config defined there. Update docs - for running in standalone CGI mode + + asp-perl script now uses ./asp.conf instead of ./asp.config + for runtime configuration via %Config defined there. Update docs + for running in standalone CGI mode - + Make use of MANFEST.SKIP to not publish the dev/* files anymore. + + Make use of MANFEST.SKIP to not publish the dev/* files anymore. - - Script_OnEnd guaranteed to run after $Response->End, but - it will not run if there was an error earlier in the request. + - Script_OnEnd guaranteed to run after $Response->End, but + it will not run if there was an error earlier in the request. - + lots of new test cases covering behaviour of $Response->End - and $Response->Redirect under various conditions like XMLSubs - and SoftRedirect and global.asa Script_OnStart + + lots of new test cases covering behaviour of $Response->End + and $Response->Redirect under various conditions like XMLSubs + and SoftRedirect and global.asa Script_OnStart - + asp-perl will be installed into the bin executables when - Apache::ASP is installed. asp-perl is the command line version - of Apache::ASP that can also be used to run script in CGI mode. - Test case covering asp-perl functionality. + + asp-perl will be installed into the bin executables when + Apache::ASP is installed. asp-perl is the command line version + of Apache::ASP that can also be used to run script in CGI mode. + Test case covering asp-perl functionality. - + asp CGI/command line script now called asp-perl. I picked this - name because Apache::ASP often has the name asp-perl in distributions - of the module. + + asp CGI/command line script now called asp-perl. I picked this + name because Apache::ASP often has the name asp-perl in distributions + of the module. - + Apache::ASP::CGI::Test class now subclass of Apache::ASP::CGI. To facilitate - this Apache::ASP::CGI::init() now called OO like Apache::ASP::CGI->init() - Fixed up places where the old style was called. New Test class allows - a dummy Apache request object to be built which caches header & body output - for later inspection instead of writing it to STDOUT. + + Apache::ASP::CGI::Test class now subclass of Apache::ASP::CGI. To facilitate + this Apache::ASP::CGI::init() now called OO like Apache::ASP::CGI->init() + Fixed up places where the old style was called. New Test class allows + a dummy Apache request object to be built which caches header & body output + for later inspection instead of writing it to STDOUT. - - $Response->Redirect() under SoftRedirect 1 will not first Clear() buffer + - $Response->Redirect() under SoftRedirect 1 will not first Clear() buffer - - $Response->Redirect() in an XMLSubs will work now ... behavior - of $Response->Flush() being turned off in an XMLSubs was interfering with this. + - $Response->Redirect() in an XMLSubs will work now ... behavior + of $Response->Flush() being turned off in an XMLSubs was interfering with this. - + srand() init tracking done better, thanks for patch from Ime Smits + + srand() init tracking done better, thanks for patch from Ime Smits - + Added file/directory being used for precompilation in - Apache::ASP->Loader($file, ...) to output like: + + Added file/directory being used for precompilation in + Apache::ASP->Loader($file, ...) to output like: - [Mon Feb 04 20:19:22 2002] [error] [asp] 4215 (re)compiled 22 scripts - of 22 loaded for $file + [Mon Feb 04 20:19:22 2002] [error] [asp] 4215 (re)compiled 22 scripts + of 22 loaded for $file - This is so that when precompiling multiple web sites - each with different directories, one can easier see the - compile output relevant to the Loader() command being run. + This is so that when precompiling multiple web sites + each with different directories, one can easier see the + compile output relevant to the Loader() command being run. - + better decomp of Apache::ASP site build files at ./build/* files, - which is good should anyone look at it for ideas. + + better decomp of Apache::ASP site build files at ./build/* files, + which is good should anyone look at it for ideas. - + improved test suite to error when unintended output results from - t/*.t test scripts. + + improved test suite to error when unintended output results from + t/*.t test scripts. - - () now supported in XMLSubsMatch config, added xmlsubsmatch.t test... - specifically a config like + - () now supported in XMLSubsMatch config, added xmlsubsmatch.t test... + specifically a config like - PerlSetVar (aaa|bbb):\w+ + PerlSetVar (aaa|bbb):\w+ - should now work. Thanks for bug report from David Kulp. + should now work. Thanks for bug report from David Kulp. - + Added an early srand() for better $ServerID creation + + Added an early srand() for better $ServerID creation - + Work around for DSO problems where $r is not always correctly - defined in Apache::ASP::handler(). Thanks to Tom Lear for patch. + + Work around for DSO problems where $r is not always correctly + defined in Apache::ASP::handler(). Thanks to Tom Lear for patch. $VERSION = 2.31; $DATE="01/22/2002"; - + $Server->MapInclude() API extension created to wrap up Apache::ASP::SearchDirs - functionality so one may do an conditional check for an include existence befor - executing $Response->Include(). Added API test to server.t + + $Server->MapInclude() API extension created to wrap up Apache::ASP::SearchDirs + functionality so one may do an conditional check for an include existence befor + executing $Response->Include(). Added API test to server.t - + $Server->Transfer() now allows arguments like $Response->Include(), and now acts just - as a wrapper for: + + $Server->Transfer() now allows arguments like $Response->Include(), and now acts just + as a wrapper for: - $Response->Include($file, @args); - $Response->End(); + $Response->Include($file, @args); + $Response->End(); - added test case at t/server_transfer.t + added test case at t/server_transfer.t - + Removed dependency of StatINC functionality on Apache::Symbol. Apache::Symbol - is no longer required. Added test of t/stat_inc.t for correct StatINC initialization - for platforms where Devel::Symdump is present. + + Removed dependency of StatINC functionality on Apache::Symbol. Apache::Symbol + is no longer required. Added test of t/stat_inc.t for correct StatINC initialization + for platforms where Devel::Symdump is present. - + Better error message when $Request->Params has not been defined with RequestParams - config & it gets used in script. Added test case as t/request_params_none.t + + Better error message when $Request->Params has not been defined with RequestParams + config & it gets used in script. Added test case as t/request_params_none.t - + Directories cannot now be included as scripts via $Response->Include(), added - test case to t/include.t + + Directories cannot now be included as scripts via $Response->Include(), added + test case to t/include.t - - No longer make $Response->Flush dependent on $Response->IsClientConnected() to - be true to write output to client. There have been spurious errors reported - about the new ( >= 2.25 ) IsClientConnected code, and this will limit the impact - of that functionality possibly not working still to those users explicitly using - that API. + - No longer make $Response->Flush dependent on $Response->IsClientConnected() to + be true to write output to client. There have been spurious errors reported + about the new ( >= 2.25 ) IsClientConnected code, and this will limit the impact + of that functionality possibly not working still to those users explicitly using + that API. - + $Response->AddHeader($header_name, $value) now will set $Response members - for these headers: Content-Type, Cache-Control, Expires. This is to avoid - both the application & Apache::ASP sending out duplicate headers. Added - test cases for this to t/response.t + + $Response->AddHeader($header_name, $value) now will set $Response members + for these headers: Content-Type, Cache-Control, Expires. This is to avoid + both the application & Apache::ASP sending out duplicate headers. Added + test cases for this to t/response.t - + split up Bundle::Apache::ASP into that, and Bundle::Apache::ASP::Extra - the former with just the required modules to run, and the latter - for extra functionality in Apache::ASP + + split up Bundle::Apache::ASP into that, and Bundle::Apache::ASP::Extra + the former with just the required modules to run, and the latter + for extra functionality in Apache::ASP - + new $Request->{Method} member to return $r->method of GET or POST that - client browser is requesting, added t/request.t sub test to cover this member. + + new $Request->{Method} member to return $r->method of GET or POST that + client browser is requesting, added t/request.t sub test to cover this member. $VERSION = 2.29; $DATE="11/19/2001"; - +Added some extra help text to the ./cgi/asp --help message - to clarify how to pass arguments to a script from the command line. + +Added some extra help text to the ./cgi/asp --help message + to clarify how to pass arguments to a script from the command line. - +When using $Server->Mail() API, if Content-Type header is set, - and MIME-Version is not, then a "MIME-Version: 1.0" header will be sent - for the email. This is correct according to RFC 1521 which specifies - for the first time the Content-Type: header for email documents. - Thanks to Philip Mak for pointing out this correct behavior. - - +Made dependent on MLDBM::Sync version .25 to pass the taint_check.t test - - +Improved server_mail.t test to work with mail servers were relaying is denied - - +Added tags to MailErrorsTo email - - --Fixed SessionCount / Session_OnEnd bug, where these things were not - working for $Sessions that never had anything written to them. - This bug was introduced in 2.23/2.25 release. - - There was an optimization in 2.23/2.25 where a $Session that was never - used does not write its state lock file & dbm files to disk, only if - it gets written too like $Session->{MARK}++. Tracking of these NULL $Sessions - then is handled solely in the internal database. For $Session garbage - collection though which would fire Session_OnEnd events and update - SessionCount, the Apache::ASP::State->GroupMembers() function was just - looking for state files on disk ... now it looks in the internal database - too for SessionID records for garbage collection. - - Added a test at ./t/session_events.t for these things. - - +Some optimizations for $Session API use. - - +Added support for XSLT via XML::LibXSLT, patch courtesy of Michael Buschauer - - -Got rid of an warning when recompiling changing includes under perl 5.6.1... - undef($code) method did not work for this perl version, rather undef(&$code) does. - Stopped using using Apache::Symbol for this when available. - - -Make Apache::ASP script run under perl taint checking -T for perl 5.6.1... - $code =~ tr///; does not work to untaint here, so much use the slower: - $code =~ /^(.*)$/s; $code = $1; method to untaint. - - -Check for inline includes changing, included in a dynamic included - loaded at runtime via $Response->Include(). Added test case for - this at t/include_change.t. If an inline include of a dynamic include - changes, the dynamic include should get recompiled now. - - -Make OK to use again with PerlTaintCheck On, with MLDBM::Sync 2.25. - Fixed in ASP.pm, t/global.asa, and created new t/taint_check.t test script - - +Load more modules when Apache::ASP is loaded so parent will share more - with children httpd: - Apache::Symbol - Devel::Symdump - Config - lib - MLDBM::Sync::SDBM_File - - +When FileUploadMax bytes is exceeded for a file upload, there will not - be an odd error anymore resulting from $CGI::POST_MAX being triggered, - instead the file upload input will simply be ignored via $CGI::DISABLE_UPLOADS. - This gives the developer the opportunity to tell the user the the file upload - was too big, as demonstrated by the ./site/eg/file_upload.asp example. - - To not let the web client POST a lot of data to your scripts as a form - of a denial of service attack use the apache config LimitRequestBody for the - max limits. You can think of PerlSetVar FileUploadMax as a soft limit, and - apache's LimitRequestBody as a hard limit. - - --Under certain circumstances with file upload, it seems that IsClientConnected() - would return an aborted client value from $r->connection->aborted, so - the buffer output data would not be flushed to the client, and - the HTML page would return to the browser empty. This would be under - normal file upload use. One work-around was to make sure to initialize - the $Request object before $Response->IsClientConnected is called, - then $r->connection->aborted returns the right value. + +When using $Server->Mail() API, if Content-Type header is set, + and MIME-Version is not, then a "MIME-Version: 1.0" header will be sent + for the email. This is correct according to RFC 1521 which specifies + for the first time the Content-Type: header for email documents. + Thanks to Philip Mak for pointing out this correct behavior. + + +Made dependent on MLDBM::Sync version .25 to pass the taint_check.t test + + +Improved server_mail.t test to work with mail servers were relaying is denied + + +Added tags to MailErrorsTo email + + --Fixed SessionCount / Session_OnEnd bug, where these things were not + working for $Sessions that never had anything written to them. + This bug was introduced in 2.23/2.25 release. + + There was an optimization in 2.23/2.25 where a $Session that was never + used does not write its state lock file & dbm files to disk, only if + it gets written too like $Session->{MARK}++. Tracking of these NULL $Sessions + then is handled solely in the internal database. For $Session garbage + collection though which would fire Session_OnEnd events and update + SessionCount, the Apache::ASP::State->GroupMembers() function was just + looking for state files on disk ... now it looks in the internal database + too for SessionID records for garbage collection. + + Added a test at ./t/session_events.t for these things. + + +Some optimizations for $Session API use. + + +Added support for XSLT via XML::LibXSLT, patch courtesy of Michael Buschauer + + -Got rid of an warning when recompiling changing includes under perl 5.6.1... + undef($code) method did not work for this perl version, rather undef(&$code) does. + Stopped using using Apache::Symbol for this when available. + + -Make Apache::ASP script run under perl taint checking -T for perl 5.6.1... + $code =~ tr///; does not work to untaint here, so much use the slower: + $code =~ /^(.*)$/s; $code = $1; method to untaint. + + -Check for inline includes changing, included in a dynamic included + loaded at runtime via $Response->Include(). Added test case for + this at t/include_change.t. If an inline include of a dynamic include + changes, the dynamic include should get recompiled now. + + -Make OK to use again with PerlTaintCheck On, with MLDBM::Sync 2.25. + Fixed in ASP.pm, t/global.asa, and created new t/taint_check.t test script + + +Load more modules when Apache::ASP is loaded so parent will share more + with children httpd: + Apache::Symbol + Devel::Symdump + Config + lib + MLDBM::Sync::SDBM_File + + +When FileUploadMax bytes is exceeded for a file upload, there will not + be an odd error anymore resulting from $CGI::POST_MAX being triggered, + instead the file upload input will simply be ignored via $CGI::DISABLE_UPLOADS. + This gives the developer the opportunity to tell the user the the file upload + was too big, as demonstrated by the ./site/eg/file_upload.asp example. + + To not let the web client POST a lot of data to your scripts as a form + of a denial of service attack use the apache config LimitRequestBody for the + max limits. You can think of PerlSetVar FileUploadMax as a soft limit, and + apache's LimitRequestBody as a hard limit. + + --Under certain circumstances with file upload, it seems that IsClientConnected() + would return an aborted client value from $r->connection->aborted, so + the buffer output data would not be flushed to the client, and + the HTML page would return to the browser empty. This would be under + normal file upload use. One work-around was to make sure to initialize + the $Request object before $Response->IsClientConnected is called, + then $r->connection->aborted returns the right value. - This problem was probably introduced with IsClientConnected() code changes - starting in the 2.25 release. + This problem was probably introduced with IsClientConnected() code changes + starting in the 2.25 release. $VERSION = 2.27; $DATE="10/31/2001"; - + Wrapped call to $r->connection->fileno in eval {} so to - preserve backwards compatibility with older mod_perl versions - that do not have this method defined. Thanks to Helmut Zeilinger - for catching this. - - + removed ./dev directory from distribution, useless clutter - - + Removed dependency on HTTP::Date by taking code into - Apache::ASP as Apache::ASP::Date. This relieves - the dependency of Apache::ASP on libwww LWP libraries. - If you were using HTTP::Date functions before without loading - "use HTTP::Date;" on your own, you will have to do this now. - - + Streamlined code execution. Especially worked on - $Response->IsClientConnected which gets called during - a normal request execution, and got rid of IO::Select - dependency. Some function style calls instead of OO style - calls where private functions were being invokes that one - would not need to override. - - - Fixed possible bug when flushing a data buffer where there - is just a '0' in it. - - + Updated docs to note that StateCache config was deprecated - as of 2.23. Removed remaining code that referenced the config. - - + Removed references to unused OrderCollections code. - - - Better Cache meta key, lower chance of collision with - unrelated data since its using the full MD5 keyspace now - - + Optimized some debugging statements that resulted - from recent development. - - + Tie::TextDir .04 and above is supported for StateDB - and CacheDB settings with MLDBM::Sync .21. This is good for - CacheDB where output is larger and there are not many - versions to cache, like for XSLTCache, where the site is - mostly static. + + Wrapped call to $r->connection->fileno in eval {} so to + preserve backwards compatibility with older mod_perl versions + that do not have this method defined. Thanks to Helmut Zeilinger + for catching this. + + + removed ./dev directory from distribution, useless clutter + + + Removed dependency on HTTP::Date by taking code into + Apache::ASP as Apache::ASP::Date. This relieves + the dependency of Apache::ASP on libwww LWP libraries. + If you were using HTTP::Date functions before without loading + "use HTTP::Date;" on your own, you will have to do this now. + + + Streamlined code execution. Especially worked on + $Response->IsClientConnected which gets called during + a normal request execution, and got rid of IO::Select + dependency. Some function style calls instead of OO style + calls where private functions were being invokes that one + would not need to override. + + - Fixed possible bug when flushing a data buffer where there + is just a '0' in it. + + + Updated docs to note that StateCache config was deprecated + as of 2.23. Removed remaining code that referenced the config. + + + Removed references to unused OrderCollections code. + + - Better Cache meta key, lower chance of collision with + unrelated data since its using the full MD5 keyspace now + + + Optimized some debugging statements that resulted + from recent development. + + + Tie::TextDir .04 and above is supported for StateDB + and CacheDB settings with MLDBM::Sync .21. This is good for + CacheDB where output is larger and there are not many + versions to cache, like for XSLTCache, where the site is + mostly static. - + Better RESOURCES section to web site, especially with adding - some links to past Apache::ASP articles & presentations. + + Better RESOURCES section to web site, especially with adding + some links to past Apache::ASP articles & presentations. $VERSION = 2.25; $DATE="10/11/2001"; - + Improved ./site/apps/search application, for better - search results at Apache::ASP site. Also, reengineered - application better, with more perl code moved to global.asa. - Make use of MLDBM::Sync::SDBM_File, where search database - before was engineering around SDBM_File's shortcomings. - - - Fix for SessionSerialize config, which broke in 2.23 - Also, added t/session_serialize.t to test suite to catch - this problem in the future. + + Improved ./site/apps/search application, for better + search results at Apache::ASP site. Also, reengineered + application better, with more perl code moved to global.asa. + Make use of MLDBM::Sync::SDBM_File, where search database + before was engineering around SDBM_File's shortcomings. + + - Fix for SessionSerialize config, which broke in 2.23 + Also, added t/session_serialize.t to test suite to catch + this problem in the future. $VERSION = 2.23; $DATE="10/11/2001"; - +Make sure a couple other small standard modules get loaded - upon "PerlModule Apache::ASP", like Time::HiRes, Class::Struct, - and MLDBM::Serializer::Data::Dumper. If not available - these modules won't cause errors, but will promote child httpd - RAM sharing if they are. - - -XMLSubs args parsing fix so an arg like z-index - does not error under UseStrict. This is OK now: - - HTML - - -Only remove outermost - - 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 - yourself. Get yourself a valid URL with a session-id in - it, and run it through ab, or Socrates, with SessionQuery - turned on, and then with SessionQueryParse set to see - the difference. SessionQuery just enables of session id - setting from the query string but will not auto parse urls. - - -If buffering, Content-Length will again be set. - It broke, probably while I was tuning in the past - couple versions. - - +UseStrict setting compiles all scripts including - global.asa with "use strict" turned on for catching - more coding errors. With this setting enabled, - use strict errors die during compilation forcing - Apache::ASP to try to recompile the script until - successful. - - -Object use in includes like $Response->Write() - no longer error with "use strict" programming. - - +SessionQuery config setting with $Server->URL($url, { %params } ) - alpha API extensions to enable cookieless sessions. - - +Debugging not longer produces internal debugging - by default. Set to -1,-2 for internal debugging - for Debug settings 1 & 2. - - +Both StateSerializer & StateDB can be changed - without affecting a live web site, by storing - the configurations for $Application & $Session - in an internal database, so that if $Session was - created with SDBM_File for the StateDB (default), - it will keep this StateDB setting until it ends. - - +StateSerializer config setting. Default Data::Dumper, - can also be set to Storable. Controls how data is - serialized before writing to $Application & $Session. - - +Beefed up the make test suite. - - +Improved the locking, streamlining a bit of the - $Application / $Session setup process. Bench is up to - 22 from 21 hits / sec on dev NT box. - - +Cut more fat for faster startup, now on my dev box - I get 44 hits per sec Apache::ASP vs. 48 Embperl - vs. 52 CGI via Apache::Registry for the HelloWorld Scripts. + +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 + , , , , +