0 | 0 |
NAME
|
1 | |
Apache::ASP - Active Server Pages for Apache with mod_perl
|
|
1 |
Apache::ASP - Active Server Pages for Apache with mod_perl
|
2 | 2 |
|
3 | 3 |
SYNOPSIS
|
4 | 4 |
SetHandler perl-script
|
|
45 | 45 |
Need Help
|
46 | 46 |
Often, installing the mod_perl part of the Apache server can be the hardest
|
47 | 47 |
part. If this is the case for you, check out the FAQ and SUPPORT sections
|
48 | |
for further help, as well as the "Build Apache" notes in this section.
|
49 | |
|
50 | |
Please also see the mod_perl guide at http://perl.apache.org/guide which one
|
51 | |
ought to give a good read before undertaking a mod_perl project.
|
|
48 |
for further help, as well as the "Modern Linux Distributions" notes in this
|
|
49 |
section.
|
|
50 |
|
|
51 |
Please also see the mod_perl site at http://perl.apache.org/ which one ought
|
|
52 |
to give a good read before undertaking a mod_perl project.
|
52 | 53 |
|
53 | 54 |
Download and CPAN Install
|
54 | 55 |
You may download the latest Apache::ASP from your nearest CPAN, and also:
|
55 | 56 |
|
|
57 |
http://search.cpan.org/dist/Apache-ASP/
|
56 | 58 |
http://cpan.org/modules/by-module/Apache/
|
57 | |
ftp://ftp.duke.edu/pub/perl/modules/by-module/Apache/
|
58 | 59 |
|
59 | 60 |
As a Perl developer, you should make yourself familiar with the CPAN.pm
|
60 | 61 |
module, and how it may be used to install Apache::ASP, and other related
|
|
97 | 98 |
|
98 | 99 |
Please note that you must first have the Apache Web Server & mod_perl
|
99 | 100 |
installed before using this module in a web server environment. The offline
|
100 | |
mode for building static html at ./cgi/asp may be used with just perl.
|
101 | |
|
102 | |
Win32 / Windows Install
|
103 | |
If you are on a Win32 platform, like WinNT or Windows 2000, you can download
|
104 | |
the win32 binaries linked to from:
|
105 | |
|
106 | |
http://perl.apache.org/distributions.html
|
107 | |
|
108 | |
From here, I would recommend the mod_perl binary installation at:
|
109 | |
|
110 | |
ftp://theoryx5.uwinnipeg.ca/pub/other/
|
111 | |
|
112 | |
and install the latest perl-win32-bin-*.exe file.
|
113 | |
|
114 | |
Randy Kobes has graciously provided these, which include compiled versions
|
115 | |
perl, mod_perl, apache, mod_ssl, as well as all the modules required by
|
116 | |
Apache::ASP and Apache::ASP itself.
|
117 | |
|
118 | |
You may also try the more recent Perl-5.8-win32-bin.exe distribution which
|
119 | |
is built on Apache 2. This should be treated as BETA release software until
|
120 | |
mod_perl 2.x is released as stable. Some notes from Randy Kobes about
|
121 | |
getting this release to work are here:
|
122 | |
|
123 | |
After installing this distribution, in Apache2\conf\perl.conf
|
124 | |
(pulled in via Apache2\conf\httpd.conf) there's directives that
|
125 | |
have Apache::ASP handle files placed under the Apache2\asp\
|
126 | |
directory. There should be a sample Apache::ASP script there,
|
127 | |
printenv.html, accessed as http://127.0.0.1/asp/printenv.html
|
128 | |
which, if working, will print out your environment variables.
|
129 | |
|
130 | |
WinME / 98 / 95 flock() workaround
|
131 | |
For those on desktop Windows operation systems, Apache::ASP v2.25 and later
|
132 | |
needs a special work around for the lack of flock() support on these
|
133 | |
systems. Please add this to your Apache httpd.conf to fix this problem after
|
134 | |
mod_perl is installed:
|
135 | |
|
136 | |
<Perl>
|
137 | |
*CORE::GLOBAL::flock = sub { 1 };
|
138 | |
</Perl>
|
139 | |
PerlModule Apache::ASP
|
140 | |
|
141 | |
Please be sure to add this configuration before Apache::ASP is loaded via
|
142 | |
PerlModule, or a PerlRequire statement.
|
143 | |
|
144 | |
Linux DSO Distributions
|
145 | |
If you have a linux distribution, like a RedHat Linux server, with an RPM
|
146 | |
style Apache + mod_perl, seriously consider building a static version of the
|
147 | |
httpd server yourself, not DSO. DSO is marked as experimental for mod_perl,
|
148 | |
and often does not work, resulting in "no request object" error messages,
|
149 | |
and other oddities, and are terrible to debug, because of the strange kinds
|
150 | |
of things that can go wrong.
|
151 | |
|
152 | |
Build Apache and mod_perl
|
153 | |
For a quick build of apache, there is a script in the distribution at
|
154 | |
./make_httpd/build_httpds.sh that can compile a statically linked Apache
|
155 | |
with mod_ssl and mod_perl. Just drop the sources into the make_httpd
|
156 | |
directory, configure the environments as appropriate, and execute the script
|
157 | |
like this:
|
158 | |
|
159 | |
make_httpd> ./build_httpds.sh
|
160 | |
|
161 | |
You might also find helpful a couple items:
|
162 | |
|
163 | |
Stas's mod_perl guide install section
|
164 | |
http://perl.apache.org/guide/install.html
|
165 | |
|
166 | |
Apache Toolbox
|
167 | |
http://www.apachetoolbox.com/
|
168 | |
|
169 | |
People have been using Apache Toolbox to automate their complex builds with
|
170 | |
great success.
|
|
101 |
mode for building static html at ./cgi/asp-perl may be used with just perl.
|
|
102 |
|
|
103 |
Modern Linux Distributions
|
|
104 |
If you have a modern Linux distribution like CentOS or Ubuntu, you will
|
|
105 |
likely have the easiest path by using the repository tools to automatically
|
|
106 |
install mod_perl and Apache before installing Apache::ASP via CPAN.
|
|
107 |
|
|
108 |
For example for CentOS, this will install mod_perl into your apache httpd,
|
|
109 |
the latter likely being installed already by default on your server:
|
|
110 |
|
|
111 |
bash> sudo yum install mod_perl-devel.x86_64
|
|
112 |
|
|
113 |
For Ubuntu this would be done like this:
|
|
114 |
|
|
115 |
bash> sudo apt-get install libapache2-mod-perl2
|
171 | 116 |
|
172 | 117 |
Quick Start
|
173 | 118 |
Once you have successfully built the Apache Web Server with mod_perl, copy
|
|
203 | 148 |
scripts in ./site/eg/ without any errors. Common problems can be found in
|
204 | 149 |
the FAQ section.
|
205 | 150 |
|
|
151 |
Build static Apache and mod_perl for Apache 1.3.x
|
|
152 |
For a quick build of apache, there is a script in the distribution at
|
|
153 |
./make_httpd/build_httpds.sh that can compile a statically linked Apache
|
|
154 |
with mod_ssl and mod_perl. Just drop the sources into the make_httpd
|
|
155 |
directory, configure the environments as appropriate, and execute the script
|
|
156 |
like this:
|
|
157 |
|
|
158 |
make_httpd> ./build_httpds.sh
|
|
159 |
|
|
160 |
You might also find helpful a couple items:
|
|
161 |
|
|
162 |
Stas's mod_perl guide install section
|
|
163 |
http://perl.apache.org/guide/install.html
|
|
164 |
|
|
165 |
Apache Toolbox
|
|
166 |
http://www.apachetoolbox.com/
|
|
167 |
|
|
168 |
People have been using Apache Toolbox to automate their complex builds of
|
|
169 |
Apache 1.3.x with great success.
|
|
170 |
|
|
171 |
Win32 / Windows Install
|
|
172 |
If you are on a Win32 platform, like WinNT or Windows 2000, you can download
|
|
173 |
the win32 binaries linked to from:
|
|
174 |
|
|
175 |
http://perl.apache.org/download/binaries.html#Win32
|
|
176 |
|
|
177 |
and install the latest perl-win32-bin-*.exe file.
|
|
178 |
|
|
179 |
Randy Kobes has graciously provided these, which include compiled versions
|
|
180 |
perl, mod_perl, apache, mod_ssl, as well as all the modules required by
|
|
181 |
Apache::ASP and Apache::ASP itself.
|
|
182 |
|
|
183 |
After installing this distribution, in Apache2\conf\perl.conf (pulled in via
|
|
184 |
Apache2\conf\httpd.conf) there's directives that have Apache::ASP handle
|
|
185 |
files placed under the Apache2\asp\ directory. There should be a sample
|
|
186 |
Apache::ASP script there, printenv.html, accessed as
|
|
187 |
http://127.0.0.1/asp/printenv.html which, if working, will print out your
|
|
188 |
environment variables.
|
|
189 |
|
|
190 |
WinME / 98 / 95 flock() workaround
|
|
191 |
For those on desktop Windows operation systems, Apache::ASP v2.25 and later
|
|
192 |
needs a special work around for the lack of flock() support on these
|
|
193 |
systems. Please add this to your Apache httpd.conf to fix this problem after
|
|
194 |
mod_perl is installed:
|
|
195 |
|
|
196 |
<Perl>
|
|
197 |
*CORE::GLOBAL::flock = sub { 1 };
|
|
198 |
</Perl>
|
|
199 |
PerlModule Apache::ASP
|
|
200 |
|
|
201 |
Please be sure to add this configuration before Apache::ASP is loaded via
|
|
202 |
PerlModule, or a PerlRequire statement.
|
|
203 |
|
206 | 204 |
CONFIG
|
207 | 205 |
You may use a <Files ...> directive in your httpd.conf Apache configuration
|
208 | 206 |
file to make Apache::ASP start ticking. Configure the optional settings if
|
|
230 | 228 |
|
231 | 229 |
Core
|
232 | 230 |
Global
|
233 | |
Global is the nerve center of an Apache::ASP application, in which the
|
234 | |
global.asa may reside defining the web application's event handlers.
|
235 | |
|
236 | |
This directory is pushed onto @INC, so you will be able to "use" and
|
237 | |
"require" files in this directory, and perl modules developed for this
|
238 | |
application may be dropped into this directory, for easy use.
|
239 | |
|
240 | |
Unless StateDir is configured, this directory must be some writeable
|
241 | |
directory by the web server. $Session and $Application object state files
|
242 | |
will be stored in this directory. If StateDir is configured, then ignore
|
243 | |
this paragraph, as it overrides the Global directory for this purpose.
|
244 | |
|
245 | |
Includes, specified with <!--#include file=somefile.inc--> or
|
246 | |
$Response->Include() syntax, may also be in this directory, please see
|
247 | |
section on includes for more information.
|
248 | |
|
249 | |
PerlSetVar Global /tmp
|
|
231 |
Global is the nerve center of an Apache::ASP application, in which the
|
|
232 |
global.asa may reside defining the web application's event handlers.
|
|
233 |
|
|
234 |
This directory is pushed onto @INC, so you will be able to "use" and
|
|
235 |
"require" files in this directory, and perl modules developed for this
|
|
236 |
application may be dropped into this directory, for easy use.
|
|
237 |
|
|
238 |
Unless StateDir is configured, this directory must be some writeable
|
|
239 |
directory by the web server. $Session and $Application object state
|
|
240 |
files will be stored in this directory. If StateDir is configured, then
|
|
241 |
ignore this paragraph, as it overrides the Global directory for this
|
|
242 |
purpose.
|
|
243 |
|
|
244 |
Includes, specified with <!--#include file=somefile.inc--> or
|
|
245 |
$Response->Include() syntax, may also be in this directory, please see
|
|
246 |
section on includes for more information.
|
|
247 |
|
|
248 |
PerlSetVar Global /tmp
|
250 | 249 |
|
251 | 250 |
GlobalPackage
|
252 | |
Perl package namespace that all scripts, includes, & global.asa events are
|
253 | |
compiled into. By default, GlobalPackage is some obscure name that is
|
254 | |
uniquely generated from the file path of the Global directory, and
|
255 | |
global.asa file. The use of explicitly naming the GlobalPackage is to allow
|
256 | |
scripts access to globals and subs defined in a perl module that is included
|
257 | |
with commands like:
|
258 | |
|
259 | |
in perl script: use Some::Package;
|
260 | |
in apache conf: PerlModule Some::Package
|
261 | |
|
262 | |
PerlSetVar GlobalPackage Some::Package
|
|
251 |
Perl package namespace that all scripts, includes, & global.asa events
|
|
252 |
are compiled into. By default, GlobalPackage is some obscure name that
|
|
253 |
is uniquely generated from the file path of the Global directory, and
|
|
254 |
global.asa file. The use of explicitly naming the GlobalPackage is to
|
|
255 |
allow scripts access to globals and subs defined in a perl module that
|
|
256 |
is included with commands like:
|
|
257 |
|
|
258 |
in perl script: use Some::Package;
|
|
259 |
in apache conf: PerlModule Some::Package
|
|
260 |
|
|
261 |
PerlSetVar GlobalPackage Some::Package
|
263 | 262 |
|
264 | 263 |
UniquePackages
|
265 | |
default 0. Set to 1 to compile each script into its own perl package, so
|
266 | |
that subroutines defined in one script will not collide with another.
|
267 | |
|
268 | |
By default, ASP scripts in a web application are compiled into the *same*
|
269 | |
perl package, so these scripts, their includes, and the global.asa events
|
270 | |
all share common globals & subroutines defined by each other. The problem
|
271 | |
for some developers was that they would at times define a subroutine of the
|
272 | |
same name in 2+ scripts, and one subroutine definition would redefine the
|
273 | |
other one because of the namespace collision.
|
274 | |
|
275 | |
PerlSetVar UniquePackages 0
|
|
264 |
default 0. Set to 1 to compile each script into its own perl package, so
|
|
265 |
that subroutines defined in one script will not collide with another.
|
|
266 |
|
|
267 |
By default, ASP scripts in a web application are compiled into the
|
|
268 |
*same* perl package, so these scripts, their includes, and the
|
|
269 |
global.asa events all share common globals & subroutines defined by each
|
|
270 |
other. The problem for some developers was that they would at times
|
|
271 |
define a subroutine of the same name in 2+ scripts, and one subroutine
|
|
272 |
definition would redefine the other one because of the namespace
|
|
273 |
collision.
|
|
274 |
|
|
275 |
PerlSetVar UniquePackages 0
|
276 | 276 |
|
277 | 277 |
DynamicIncludes
|
278 | |
default 0. SSI file includes are normally inlined in the calling script, and
|
279 | |
the text gets compiled with the script as a whole. With this option set to
|
280 | |
TRUE, file includes are compiled as a separate subroutine and called when
|
281 | |
the script is run. The advantage of having this turned on is that the code
|
282 | |
compiled from the include can be shared between scripts, which keeps the
|
283 | |
script sizes smaller in memory, and keeps compile times down.
|
284 | |
|
285 | |
PerlSetVar DynamicIncludes 0
|
|
278 |
default 0. SSI file includes are normally inlined in the calling script,
|
|
279 |
and the text gets compiled with the script as a whole. With this option
|
|
280 |
set to TRUE, file includes are compiled as a separate subroutine and
|
|
281 |
called when the script is run. The advantage of having this turned on is
|
|
282 |
that the code compiled from the include can be shared between scripts,
|
|
283 |
which keeps the script sizes smaller in memory, and keeps compile times
|
|
284 |
down.
|
|
285 |
|
|
286 |
PerlSetVar DynamicIncludes 0
|
286 | 287 |
|
287 | 288 |
IncludesDir
|
288 | |
no defaults. If set, this directory will also be used to look for includes
|
289 | |
when compiling scripts. By default the directory the script is in, and the
|
290 | |
Global directory are checked for includes.
|
291 | |
|
292 | |
This extension was added so that includes could be easily shared between ASP
|
293 | |
applications, whereas placing includes in the Global directory only allows
|
294 | |
sharing between scripts in an application.
|
295 | |
|
296 | |
PerlSetVar IncludesDir .
|
297 | |
|
298 | |
Also, multiple includes directories may be set by creating a directory list
|
299 | |
separated by a semicolon ';' as in
|
300 | |
|
301 | |
PerlSetVar IncludesDir ../shared;/usr/local/asp/shared
|
302 | |
|
303 | |
Using IncludesDir in this way creates an includes search path that would
|
304 | |
look like ., Global, ../shared, /usr/local/asp/shared The current directory
|
305 | |
of the executing script is checked first whenever an include is specified,
|
306 | |
then the Global directory in which the global.asa resides, and finally the
|
307 | |
IncludesDir setting.
|
|
289 |
no defaults. If set, this directory will also be used to look for
|
|
290 |
includes when compiling scripts. By default the directory the script is
|
|
291 |
in, and the Global directory are checked for includes.
|
|
292 |
|
|
293 |
This extension was added so that includes could be easily shared between
|
|
294 |
ASP applications, whereas placing includes in the Global directory only
|
|
295 |
allows sharing between scripts in an application.
|
|
296 |
|
|
297 |
PerlSetVar IncludesDir .
|
|
298 |
|
|
299 |
Also, multiple includes directories may be set by creating a directory
|
|
300 |
list separated by a semicolon ';' as in
|
|
301 |
|
|
302 |
PerlSetVar IncludesDir ../shared;/usr/local/asp/shared
|
|
303 |
|
|
304 |
Using IncludesDir in this way creates an includes search path that would
|
|
305 |
look like ., Global, ../shared, /usr/local/asp/shared The current
|
|
306 |
directory of the executing script is checked first whenever an include
|
|
307 |
is specified, then the Global directory in which the global.asa resides,
|
|
308 |
and finally the IncludesDir setting.
|
308 | 309 |
|
309 | 310 |
NoCache
|
310 | |
Default 0, if set to 1 will make it so that neither script nor include
|
311 | |
compilations are cached by the server. Using this configuration will save on
|
312 | |
memory but will slow down script execution. Please see the TUNING section
|
313 | |
for other strategies on improving site performance.
|
314 | |
|
315 | |
PerlSetVar NoCache 0
|
|
311 |
Default 0, if set to 1 will make it so that neither script nor include
|
|
312 |
compilations are cached by the server. Using this configuration will
|
|
313 |
save on memory but will slow down script execution. Please see the
|
|
314 |
TUNING section for other strategies on improving site performance.
|
|
315 |
|
|
316 |
PerlSetVar NoCache 0
|
316 | 317 |
|
317 | 318 |
State Management
|
318 | 319 |
NoState
|
319 | |
default 0, if true, neither the $Application nor $Session objects will be
|
320 | |
created. Use this for a performance increase. Please note that this setting
|
321 | |
takes precedence over the AllowSessionState and AllowApplicationState
|
322 | |
settings.
|
323 | |
|
324 | |
PerlSetVar NoState 0
|
|
320 |
default 0, if true, neither the $Application nor $Session objects will
|
|
321 |
be created. Use this for a performance increase. Please note that this
|
|
322 |
setting takes precedence over the AllowSessionState and
|
|
323 |
AllowApplicationState settings.
|
|
324 |
|
|
325 |
PerlSetVar NoState 0
|
325 | 326 |
|
326 | 327 |
AllowSessionState
|
327 | |
Set to 0 for no session tracking, 1 by default If Session tracking is turned
|
328 | |
off, performance improves, but the $Session object is inaccessible.
|
329 | |
|
330 | |
PerlSetVar AllowSessionState 1
|
331 | |
|
332 | |
Note that if you want to dissallow session creation for certain non web
|
333 | |
browser user agents, like search engine spiders, you can use an init handler
|
334 | |
like:
|
335 | |
|
336 | |
PerlInitHandler "sub { $_[0]->dir_config('AllowSessionState', 0) }"
|
|
328 |
Set to 0 for no session tracking, 1 by default If Session tracking is
|
|
329 |
turned off, performance improves, but the $Session object is
|
|
330 |
inaccessible.
|
|
331 |
|
|
332 |
PerlSetVar AllowSessionState 1
|
|
333 |
|
|
334 |
Note that if you want to dissallow session creation for certain non web
|
|
335 |
browser user agents, like search engine spiders, you can use an init
|
|
336 |
handler like:
|
|
337 |
|
|
338 |
PerlInitHandler "sub { $_[0]->dir_config('AllowSessionState', 0) }"
|
337 | 339 |
|
338 | 340 |
AllowApplicationState
|
339 | |
Default 1. If you want to leave $Application undefined, then set this to 0,
|
340 | |
for a performance increase of around 2-3%. Allowing use of $Application is
|
341 | |
less expensive than $Session, as there is more work for the StateManager
|
342 | |
associated with $Session garbage collection so this parameter should be only
|
343 | |
used for extreme tuning.
|
344 | |
|
345 | |
PerlSetVar AllowApplicationState 1
|
|
341 |
Default 1. If you want to leave $Application undefined, then set this to
|
|
342 |
0, for a performance increase of around 2-3%. Allowing use of
|
|
343 |
$Application is less expensive than $Session, as there is more work for
|
|
344 |
the StateManager associated with $Session garbage collection so this
|
|
345 |
parameter should be only used for extreme tuning.
|
|
346 |
|
|
347 |
PerlSetVar AllowApplicationState 1
|
346 | 348 |
|
347 | 349 |
StateDir
|
348 | |
default $Global/.state. State files for ASP application go to this
|
349 | |
directory. Where the state files go is the most important determinant in
|
350 | |
what makes a unique ASP application. Different configs pointing to the same
|
351 | |
StateDir are part of the same ASP application.
|
352 | |
|
353 | |
The default has not changed since implementing this config directive. The
|
354 | |
reason for this config option is to allow operating systems with caching
|
355 | |
file systems like Solaris to specify a state directory separately from the
|
356 | |
Global directory, which contains more permanent files. This way one may
|
357 | |
point StateDir to /tmp/myaspapp, and make one's ASP application scream with
|
358 | |
speed.
|
359 | |
|
360 | |
PerlSetVar StateDir ./.state
|
|
350 |
default $Global/.state. State files for ASP application go to this
|
|
351 |
directory. Where the state files go is the most important determinant in
|
|
352 |
what makes a unique ASP application. Different configs pointing to the
|
|
353 |
same StateDir are part of the same ASP application.
|
|
354 |
|
|
355 |
The default has not changed since implementing this config directive.
|
|
356 |
The reason for this config option is to allow operating systems with
|
|
357 |
caching file systems like Solaris to specify a state directory
|
|
358 |
separately from the Global directory, which contains more permanent
|
|
359 |
files. This way one may point StateDir to /tmp/myaspapp, and make one's
|
|
360 |
ASP application scream with speed.
|
|
361 |
|
|
362 |
PerlSetVar StateDir ./.state
|
361 | 363 |
|
362 | 364 |
StateManager
|
363 | |
default 10, this number specifies the numbers of times per SessionTimeout
|
364 | |
that timed out sessions are garbage collected. The bigger the number, the
|
365 | |
slower your system, but the more precise Session_OnEnd's will be run from
|
366 | |
global.asa, which occur when a timed out session is cleaned up, and the
|
367 | |
better able to withstand Session guessing hacking attempts. The lower the
|
368 | |
number, the faster a normal system will run.
|
369 | |
|
370 | |
The defaults of 20 minutes for SessionTimeout and 10 times for StateManager,
|
371 | |
has dead Sessions being cleaned up every 2 minutes.
|
372 | |
|
373 | |
PerlSetVar StateManager 10
|
|
365 |
default 10, this number specifies the numbers of times per
|
|
366 |
SessionTimeout that timed out sessions are garbage collected. The bigger
|
|
367 |
the number, the slower your system, but the more precise Session_OnEnd's
|
|
368 |
will be run from global.asa, which occur when a timed out session is
|
|
369 |
cleaned up, and the better able to withstand Session guessing hacking
|
|
370 |
attempts. The lower the number, the faster a normal system will run.
|
|
371 |
|
|
372 |
The defaults of 20 minutes for SessionTimeout and 10 times for
|
|
373 |
StateManager, has dead Sessions being cleaned up every 2 minutes.
|
|
374 |
|
|
375 |
PerlSetVar StateManager 10
|
374 | 376 |
|
375 | 377 |
StateDB
|
376 | |
default SDBM_File, this is the internal database used for state objects like
|
377 | |
$Application and $Session. Because an SDBM_File %hash has a limit on the
|
378 | |
size of a record key+value pair, usually 1024 bytes, you may want to use
|
379 | |
another tied database like DB_File or MLDBM::Sync::SDBM_File.
|
380 | |
|
381 | |
With lightweight $Session and $Application use, you can get away with
|
382 | |
SDBM_File, but if you load it up with complex data like $Session{key} = { #
|
383 | |
very large complex object } you might max out the 1024 limit.
|
384 | |
|
385 | |
Currently StateDB can be: SDBM_File, MLDBM::Sync::SDBM_File, DB_File, and
|
386 | |
GDBM_File. Please let me know if you would like to add any more to this
|
387 | |
list.
|
388 | |
|
389 | |
As of version .18, you may change this setting in a live production
|
390 | |
environment, and new state databases created will be of this format. With a
|
391 | |
prior version if you switch to a new StateDB, you would want to delete the
|
392 | |
old StateDir, as there will likely be incompatibilities between the
|
393 | |
different database formats, including the way garbage collection is handled.
|
394 | |
|
395 | |
PerlSetVar StateDB SDBM_File
|
|
378 |
default SDBM_File, this is the internal database used for state objects
|
|
379 |
like $Application and $Session. Because an SDBM_File %hash has a limit
|
|
380 |
on the size of a record key+value pair, usually 1024 bytes, you may want
|
|
381 |
to use another tied database like DB_File or MLDBM::Sync::SDBM_File.
|
|
382 |
|
|
383 |
With lightweight $Session and $Application use, you can get away with
|
|
384 |
SDBM_File, but if you load it up with complex data like $Session{key} =
|
|
385 |
{ # very large complex object } you might max out the 1024 limit.
|
|
386 |
|
|
387 |
Currently StateDB can be: SDBM_File, MLDBM::Sync::SDBM_File, DB_File,
|
|
388 |
and GDBM_File. Please let me know if you would like to add any more to
|
|
389 |
this list.
|
|
390 |
|
|
391 |
As of version .18, you may change this setting in a live production
|
|
392 |
environment, and new state databases created will be of this format.
|
|
393 |
With a prior version if you switch to a new StateDB, you would want to
|
|
394 |
delete the old StateDir, as there will likely be incompatibilities
|
|
395 |
between the different database formats, including the way garbage
|
|
396 |
collection is handled.
|
|
397 |
|
|
398 |
PerlSetVar StateDB SDBM_File
|
396 | 399 |
|
397 | 400 |
StateCache
|
398 | |
Deprecated as of 2.23. There is no equivalent config for the functionality
|
399 | |
this represented from that version on. The 2.23 release represented a
|
400 | |
significant rewrite of the state management, moving to MLDBM::Sync for its
|
401 | |
subsystem.
|
|
401 |
Deprecated as of 2.23. There is no equivalent config for the
|
|
402 |
functionality this represented from that version on. The 2.23 release
|
|
403 |
represented a significant rewrite of the state management, moving to
|
|
404 |
MLDBM::Sync for its subsystem.
|
402 | 405 |
|
403 | 406 |
StateSerializer
|
404 | |
default Data::Dumper, you may set this to Storable for faster serialization
|
405 | |
and storage of data into state objects. This is particularly useful when
|
406 | |
storing large objects in $Session and $Application, as the Storable.pm
|
407 | |
module has a faster implementation of freezing and thawing data from and to
|
408 | |
perl structures. Note that if you are storing this much data in your state
|
409 | |
databases, you may want to use DB_File since it does not have the default
|
410 | |
1024 byte limit that SDBM_File has on key/value lengths.
|
411 | |
|
412 | |
This configuration setting may be changed in production as the state
|
413 | |
database's serializer type is stored in the internal state manager which
|
414 | |
will always use Data::Dumper & SDBM_File to store data.
|
415 | |
|
416 | |
PerlSetVar StateSerializer Data::Dumper
|
|
407 |
default Data::Dumper, you may set this to Storable for faster
|
|
408 |
serialization and storage of data into state objects. This is
|
|
409 |
particularly useful when storing large objects in $Session and
|
|
410 |
$Application, as the Storable.pm module has a faster implementation of
|
|
411 |
freezing and thawing data from and to perl structures. Note that if you
|
|
412 |
are storing this much data in your state databases, you may want to use
|
|
413 |
DB_File since it does not have the default 1024 byte limit that
|
|
414 |
SDBM_File has on key/value lengths.
|
|
415 |
|
|
416 |
This configuration setting may be changed in production as the state
|
|
417 |
database's serializer type is stored in the internal state manager which
|
|
418 |
will always use Data::Dumper & SDBM_File to store data.
|
|
419 |
|
|
420 |
PerlSetVar StateSerializer Data::Dumper
|
417 | 421 |
|
418 | 422 |
Sessions
|
419 | 423 |
CookiePath
|
420 | |
URL root that client responds to by sending the session cookie. If your asp
|
421 | |
application falls under the server url "/asp", then you would set this
|
422 | |
variable to /asp. This then allows you to run different applications on the
|
423 | |
same server, with different user sessions for each application.
|
424 | |
|
425 | |
PerlSetVar CookiePath /
|
|
424 |
URL root that client responds to by sending the session cookie. If your
|
|
425 |
asp application falls under the server url "/asp", then you would set
|
|
426 |
this variable to /asp. This then allows you to run different
|
|
427 |
applications on the same server, with different user sessions for each
|
|
428 |
application.
|
|
429 |
|
|
430 |
PerlSetVar CookiePath /
|
426 | 431 |
|
427 | 432 |
CookieDomain
|
428 | |
Default 0, this NON-PORTABLE configuration will allow sessions to span
|
429 | |
multiple web sites that match the same domain root. This is useful if your
|
430 | |
web sites are hosted on the same machine and can share the same StateDir
|
431 | |
configuration, and you want to shared the $Session data across web sites.
|
432 | |
Whatever this is set to, that will add a
|
433 | |
|
434 | |
; domain=$CookieDomain
|
435 | |
|
436 | |
part to the Set-Cookie: header set for the session-id cookie.
|
437 | |
|
438 | |
PerlSetVar CookieDomain .your.global.domain
|
|
433 |
Default 0, this NON-PORTABLE configuration will allow sessions to span
|
|
434 |
multiple web sites that match the same domain root. This is useful if
|
|
435 |
your web sites are hosted on the same machine and can share the same
|
|
436 |
StateDir configuration, and you want to shared the $Session data across
|
|
437 |
web sites. Whatever this is set to, that will add a
|
|
438 |
|
|
439 |
; domain=$CookieDomain
|
|
440 |
|
|
441 |
part to the Set-Cookie: header set for the session-id cookie.
|
|
442 |
|
|
443 |
PerlSetVar CookieDomain .your.global.domain
|
439 | 444 |
|
440 | 445 |
SessionTimeout
|
441 | |
Default 20 minutes, when a user's session has been inactive for this period
|
442 | |
of time, the Session_OnEnd event is run, if defined, for that session, and
|
443 | |
the contents of that session are destroyed.
|
444 | |
|
445 | |
PerlSetVar SessionTimeout 20
|
|
446 |
Default 20 minutes, when a user's session has been inactive for this
|
|
447 |
period of time, the Session_OnEnd event is run, if defined, for that
|
|
448 |
session, and the contents of that session are destroyed.
|
|
449 |
|
|
450 |
PerlSetVar SessionTimeout 20
|
446 | 451 |
|
447 | 452 |
SecureSession
|
448 | |
default 0. Sets the secure tag for the session cookie, so that the cookie
|
449 | |
will only be transmitted by the browser under https transmissions.
|
450 | |
|
451 | |
PerlSetVar SecureSession 1
|
|
453 |
default 0. Sets the secure tag for the session cookie, so that the
|
|
454 |
cookie will only be transmitted by the browser under https
|
|
455 |
transmissions.
|
|
456 |
|
|
457 |
PerlSetVar SecureSession 1
|
|
458 |
|
|
459 |
HTTPOnlySession
|
|
460 |
default 0. Sets HttpOnly flag to session cookie to mitigate XSS attacks.
|
|
461 |
Supported by most modern browsers, it only allows access to the session
|
|
462 |
cookie by the server (ie NOT Javascript)
|
|
463 |
|
|
464 |
PerlSetVar HTTPOnlySession 1
|
452 | 465 |
|
453 | 466 |
ParanoidSession
|
454 | |
default 0. When true, stores the user-agent header of the browser that
|
455 | |
creates the session and validates this against the session cookie presented.
|
456 | |
If this check fails, the session is killed, with the rationale that there is
|
457 | |
a hacking attempt underway.
|
458 | |
|
459 | |
This config option was implemented to be a smooth upgrade, as you can turn
|
460 | |
it off and on, without disrupting current sessions. Sessions must be created
|
461 | |
with this turned on for the security to take effect.
|
462 | |
|
463 | |
This config option is to help prevent a brute force cookie search from being
|
464 | |
successful. The number of possible cookies is huge, 2^128, thus making such
|
465 | |
a hacking attempt VERY unlikely. However, on the off chance that such an
|
466 | |
attack is successful, the hacker must also present identical browser headers
|
467 | |
to authenticate the session, or the session will be destroyed. Thus the
|
468 | |
User-Agent acts as a backup to the real session id. The IP address of the
|
469 | |
browser cannot be used, since because of proxies, IP addresses may change
|
470 | |
between requests during a session.
|
471 | |
|
472 | |
There are a few browsers that will not present a User-Agent header. These
|
473 | |
browsers are considered to be browsers of type "Unknown", and this method
|
474 | |
works the same way for them.
|
475 | |
|
476 | |
Most people agree that this level of security is unnecessary, thus it is
|
477 | |
titled paranoid :)
|
478 | |
|
479 | |
PerlSetVar ParanoidSession 0
|
|
467 |
default 0. When true, stores the user-agent header of the browser that
|
|
468 |
creates the session and validates this against the session cookie
|
|
469 |
presented. If this check fails, the session is killed, with the
|
|
470 |
rationale that there is a hacking attempt underway.
|
|
471 |
|
|
472 |
This config option was implemented to be a smooth upgrade, as you can
|
|
473 |
turn it off and on, without disrupting current sessions. Sessions must
|
|
474 |
be created with this turned on for the security to take effect.
|
|
475 |
|
|
476 |
This config option is to help prevent a brute force cookie search from
|
|
477 |
being successful. The number of possible cookies is huge, 2^128, thus
|
|
478 |
making such a hacking attempt VERY unlikely. However, on the off chance
|
|
479 |
that such an attack is successful, the hacker must also present
|
|
480 |
identical browser headers to authenticate the session, or the session
|
|
481 |
will be destroyed. Thus the User-Agent acts as a backup to the real
|
|
482 |
session id. The IP address of the browser cannot be used, since because
|
|
483 |
of proxies, IP addresses may change between requests during a session.
|
|
484 |
|
|
485 |
There are a few browsers that will not present a User-Agent header.
|
|
486 |
These browsers are considered to be browsers of type "Unknown", and this
|
|
487 |
method works the same way for them.
|
|
488 |
|
|
489 |
Most people agree that this level of security is unnecessary, thus it is
|
|
490 |
titled paranoid :)
|
|
491 |
|
|
492 |
PerlSetVar ParanoidSession 0
|
480 | 493 |
|
481 | 494 |
SessionSerialize
|
482 | |
default 0, if true, locks $Session for duration of script, which serializes
|
483 | |
requests to the $Session object. Only one script at a time may run, per user
|
484 | |
$Session, with sessions allowed.
|
485 | |
|
486 | |
Serialized requests to the session object is the Microsoft ASP way, but is
|
487 | |
dangerous in a production environment, where there is risk of long-running
|
488 | |
or run-away processes. If these things happen, a session may be locked for
|
489 | |
an indefinite period of time. A user STOP button should safely quit the
|
490 | |
session however.
|
491 | |
|
492 | |
PerlSetVar SessionSerialize 0
|
|
495 |
default 0, if true, locks $Session for duration of script, which
|
|
496 |
serializes requests to the $Session object. Only one script at a time
|
|
497 |
may run, per user $Session, with sessions allowed.
|
|
498 |
|
|
499 |
Serialized requests to the session object is the Microsoft ASP way, but
|
|
500 |
is dangerous in a production environment, where there is risk of
|
|
501 |
long-running or run-away processes. If these things happen, a session
|
|
502 |
may be locked for an indefinite period of time. A user STOP button
|
|
503 |
should safely quit the session however.
|
|
504 |
|
|
505 |
PerlSetVar SessionSerialize 0
|
493 | 506 |
|
494 | 507 |
SessionCount
|
495 | |
default 0, if true enables the $Application->SessionCount API which returns
|
496 | |
how many sessions are currently active in the application. This config was
|
497 | |
created because there is a performance hit associated with this count
|
498 | |
tracking, so it is disabled by default.
|
499 | |
|
500 | |
PerlSetVar SessionCount 1
|
|
508 |
default 0, if true enables the $Application->SessionCount API which
|
|
509 |
returns how many sessions are currently active in the application. This
|
|
510 |
config was created because there is a performance hit associated with
|
|
511 |
this count tracking, so it is disabled by default.
|
|
512 |
|
|
513 |
PerlSetVar SessionCount 1
|
501 | 514 |
|
502 | 515 |
Cookieless Sessions
|
503 | 516 |
SessionQueryParse
|
504 | |
default 0, if true, will automatically parse the $Session session id into
|
505 | |
the query string of each local URL found in the $Response buffer. For this
|
506 | |
setting to work therefore, buffering must be enabled. This parsing will only
|
507 | |
occur when a session cookie has not been sent by a browser, so the first
|
508 | |
script of a session enabled site, and scripts viewed by web browsers that
|
509 | |
have cookies disabled will trigger this behavior.
|
510 | |
|
511 | |
Although this runtime parsing method is computationally expensive, this cost
|
512 | |
should be amortized across most users that will not need this URL parsing.
|
513 | |
This is a lazy programmer's dream. For something more efficient, look at the
|
514 | |
SessionQuery setting. For more information about this solution, please read
|
515 | |
the SESSIONS section.
|
516 | |
|
517 | |
PerlSetVar SessionQueryParse 0
|
|
517 |
default 0, if true, will automatically parse the $Session session id
|
|
518 |
into the query string of each local URL found in the $Response buffer.
|
|
519 |
For this setting to work therefore, buffering must be enabled. This
|
|
520 |
parsing will only occur when a session cookie has not been sent by a
|
|
521 |
browser, so the first script of a session enabled site, and scripts
|
|
522 |
viewed by web browsers that have cookies disabled will trigger this
|
|
523 |
behavior.
|
|
524 |
|
|
525 |
Although this runtime parsing method is computationally expensive, this
|
|
526 |
cost should be amortized across most users that will not need this URL
|
|
527 |
parsing. This is a lazy programmer's dream. For something more
|
|
528 |
efficient, look at the SessionQuery setting. For more information about
|
|
529 |
this solution, please read the SESSIONS section.
|
|
530 |
|
|
531 |
PerlSetVar SessionQueryParse 0
|
518 | 532 |
|
519 | 533 |
SessionQueryParseMatch
|
520 | |
default 0, set to a regexp pattern that matches all URLs that you want to
|
521 | |
have SessionQueryParse parse in session ids. By default SessionQueryParse
|
522 | |
only modifies local URLs, but if you name your URLs of your site with
|
523 | |
absolute URLs like http://localhost then you will need to use this setting.
|
524 | |
So to match http://localhost URLs, you might set this pattern to
|
525 | |
^http://localhost. Note that by setting this config, you are also setting
|
526 | |
SessionQueryParse.
|
527 | |
|
528 | |
PerlSetVar SessionQueryParseMatch ^https?://localhost
|
|
534 |
default 0, set to a regexp pattern that matches all URLs that you want
|
|
535 |
to have SessionQueryParse parse in session ids. By default
|
|
536 |
SessionQueryParse only modifies local URLs, but if you name your URLs of
|
|
537 |
your site with absolute URLs like http://localhost then you will need to
|
|
538 |
use this setting. So to match http://localhost URLs, you might set this
|
|
539 |
pattern to ^http://localhost. Note that by setting this config, you are
|
|
540 |
also setting SessionQueryParse.
|
|
541 |
|
|
542 |
PerlSetVar SessionQueryParseMatch ^https?://localhost
|
529 | 543 |
|
530 | 544 |
SessionQuery
|
531 | |
default 0, if set, the session id will be initialized from the
|
532 | |
$Request->QueryString if not first found as a cookie. You can use this
|
533 | |
setting coupled with the
|
534 | |
|
535 | |
$Server->URL($url, \%params)
|
536 | |
|
537 | |
API extension to generate local URLs with session ids in their query
|
538 | |
strings, for efficient cookieless session support. Note that if a browser
|
539 | |
has cookies disabled, every URL to any page that needs access to $Session
|
540 | |
will need to be created by this method, unless you are using
|
541 | |
SessionQueryParse which will do this for you automatically.
|
542 | |
|
543 | |
PerlSetVar SessionQuery 0
|
|
545 |
default 0, if set, the session id will be initialized from the
|
|
546 |
$Request->QueryString if not first found as a cookie. You can use this
|
|
547 |
setting coupled with the
|
|
548 |
|
|
549 |
$Server->URL($url, \%params)
|
|
550 |
|
|
551 |
API extension to generate local URLs with session ids in their query
|
|
552 |
strings, for efficient cookieless session support. Note that if a
|
|
553 |
browser has cookies disabled, every URL to any page that needs access to
|
|
554 |
$Session will need to be created by this method, unless you are using
|
|
555 |
SessionQueryParse which will do this for you automatically.
|
|
556 |
|
|
557 |
PerlSetVar SessionQuery 0
|
544 | 558 |
|
545 | 559 |
SessionQueryMatch
|
546 | |
default 0, set to a regexp pattern that will match URLs for $Server->URL()
|
547 | |
to add a session id to. SessionQuery normally allows $Server->URL() to add
|
548 | |
session ids just to local URLs, so if you use absolute URL references like
|
549 | |
http://localhost/ for your web site, then just like with
|
550 | |
SessionQueryParseMatch, you might set this pattern to ^http://localhost
|
551 | |
|
552 | |
If this is set, then you don't need to set SessionQuery, as it will be set
|
553 | |
automatically.
|
554 | |
|
555 | |
PerlSetVar SessionQueryMatch ^http://localhost
|
|
560 |
default 0, set to a regexp pattern that will match URLs for
|
|
561 |
$Server->URL() to add a session id to. SessionQuery normally allows
|
|
562 |
$Server->URL() to add session ids just to local URLs, so if you use
|
|
563 |
absolute URL references like http://localhost/ for your web site, then
|
|
564 |
just like with SessionQueryParseMatch, you might set this pattern to
|
|
565 |
^http://localhost
|
|
566 |
|
|
567 |
If this is set, then you don't need to set SessionQuery, as it will be
|
|
568 |
set automatically.
|
|
569 |
|
|
570 |
PerlSetVar SessionQueryMatch ^http://localhost
|
556 | 571 |
|
557 | 572 |
SessionQueryForce
|
558 | |
default 0, set to 1 if you want to disallow the use of cookies for session
|
559 | |
id passing, and only allow session ids to be passed on the query string via
|
560 | |
SessionQuery and SessionQueryParse settings.
|
561 | |
|
562 | |
PerlSetVar SessionQueryForce 1
|
|
573 |
default 0, set to 1 if you want to disallow the use of cookies for
|
|
574 |
session id passing, and only allow session ids to be passed on the query
|
|
575 |
string via SessionQuery and SessionQueryParse settings.
|
|
576 |
|
|
577 |
PerlSetVar SessionQueryForce 1
|
563 | 578 |
|
564 | 579 |
Developer Environment
|
565 | 580 |
UseStrict
|
566 | |
default 0, if set to 1, will compile all scripts, global.asa and includes
|
567 | |
with "use strict;" inserted at the head of the file, saving you from the
|
568 | |
painful process of strictifying code that was not strict to begin with.
|
569 | |
|
570 | |
Because of how essential "use strict" programming is in a mod_perl
|
571 | |
environment, this default might be set to 1 one day, but this will be up for
|
572 | |
discussion before that decision is made.
|
573 | |
|
574 | |
Note too that errors triggered by "use strict" are now captured as part of
|
575 | |
the normal Apache::ASP error handling when this configuration is set,
|
576 | |
otherwise "use strict" errors will not be handled properly, so using
|
577 | |
UseStrict is better than your own "use strict" statements.
|
578 | |
|
579 | |
PerlSetVar UseStrict 1
|
|
581 |
default 0, if set to 1, will compile all scripts, global.asa and
|
|
582 |
includes with "use strict;" inserted at the head of the file, saving you
|
|
583 |
from the painful process of strictifying code that was not strict to
|
|
584 |
begin with.
|
|
585 |
|
|
586 |
Because of how essential "use strict" programming is in a mod_perl
|
|
587 |
environment, this default might be set to 1 one day, but this will be up
|
|
588 |
for discussion before that decision is made.
|
|
589 |
|
|
590 |
Note too that errors triggered by "use strict" are now captured as part
|
|
591 |
of the normal Apache::ASP error handling when this configuration is set,
|
|
592 |
otherwise "use strict" errors will not be handled properly, so using
|
|
593 |
UseStrict is better than your own "use strict" statements.
|
|
594 |
|
|
595 |
PerlSetVar UseStrict 1
|
580 | 596 |
|
581 | 597 |
Debug
|
582 | |
1 for server log debugging, 2 for extra client html output, 3 for microtimes
|
583 | |
logged. Use 1 for production debugging, use 2 or 3 for development. Turn off
|
584 | |
if you are not debugging. These settings activate $Response->Debug().
|
585 | |
|
586 | |
PerlSetVar Debug 2
|
587 | |
|
588 | |
If Debug 3 is set and Time::HiRes is installed, microtimes will show up in
|
589 | |
the log, and also calculate the time between one $Response->Debug() and
|
590 | |
another, so good for a quick benchmark when you glance at the logs.
|
591 | |
|
592 | |
PerlSetVar Debug 3
|
593 | |
|
594 | |
If you would like to enable system level debugging, set Debug to a negative
|
595 | |
value. So for system level debugging, but no output to browser:
|
596 | |
|
597 | |
PerlSetVar Debug -1
|
|
598 |
1 for server log debugging, 2 for extra client html output, 3 for
|
|
599 |
microtimes logged. Use 1 for production debugging, use 2 or 3 for
|
|
600 |
development. Turn off if you are not debugging. These settings activate
|
|
601 |
$Response->Debug().
|
|
602 |
|
|
603 |
PerlSetVar Debug 2
|
|
604 |
|
|
605 |
If Debug 3 is set and Time::HiRes is installed, microtimes will show up
|
|
606 |
in the log, and also calculate the time between one $Response->Debug()
|
|
607 |
and another, so good for a quick benchmark when you glance at the logs.
|
|
608 |
|
|
609 |
PerlSetVar Debug 3
|
|
610 |
|
|
611 |
If you would like to enable system level debugging, set Debug to a
|
|
612 |
negative value. So for system level debugging, but no output to browser:
|
|
613 |
|
|
614 |
PerlSetVar Debug -1
|
598 | 615 |
|
599 | 616 |
DebugBufferLength
|
600 | |
Default 100, set this to the number of bytes of the buffered output's tail
|
601 | |
you want to see when an error occurs and Debug 2 or MailErrorsTo is set, and
|
602 | |
when BufferingOn is enabled.
|
603 | |
|
604 | |
With buffering the script output will not naturally show up when the script
|
605 | |
errors, as it has been buffered by the $Response object. It helps to see
|
606 | |
where in the script output an error halted the script, so the last bytes of
|
607 | |
the buffered output are included with the rest of the debugging information.
|
608 | |
|
609 | |
For a demo of this functionality, try the ./site/eg/syntax_error.htm script,
|
610 | |
and turn buffering on.
|
|
617 |
Default 100, set this to the number of bytes of the buffered output's
|
|
618 |
tail you want to see when an error occurs and Debug 2 or MailErrorsTo is
|
|
619 |
set, and when BufferingOn is enabled.
|
|
620 |
|
|
621 |
With buffering the script output will not naturally show up when the
|
|
622 |
script errors, as it has been buffered by the $Response object. It helps
|
|
623 |
to see where in the script output an error halted the script, so the
|
|
624 |
last bytes of the buffered output are included with the rest of the
|
|
625 |
debugging information.
|
|
626 |
|
|
627 |
For a demo of this functionality, try the ./site/eg/syntax_error.asp
|
|
628 |
script, and turn buffering on.
|
611 | 629 |
|
612 | 630 |
PodComments
|
613 | |
default 1. With pod comments turned on, perl pod style comments and
|
614 | |
documentation are parsed out of scripts at compile time. This make for great
|
615 | |
documentation and a nice debugging tool, and it lets you comment out perl
|
616 | |
code and html in blocks. Specifically text like this:
|
617 | |
|
618 | |
=pod
|
619 | |
text or perl code here
|
620 | |
=cut
|
621 | |
|
622 | |
will get ripped out of the script before compiling. The =pod and =cut perl
|
623 | |
directives must be at the beginning of the line, and must be followed by the
|
624 | |
end of the line.
|
625 | |
|
626 | |
PerlSetVar PodComments 1
|
|
631 |
default 1. With pod comments turned on, perl pod style comments and
|
|
632 |
documentation are parsed out of scripts at compile time. This make for
|
|
633 |
great documentation and a nice debugging tool, and it lets you comment
|
|
634 |
out perl code and html in blocks. Specifically text like this:
|
|
635 |
|
|
636 |
=pod
|
|
637 |
text or perl code here
|
|
638 |
=cut
|
|
639 |
|
|
640 |
will get ripped out of the script before compiling. The =pod and =cut
|
|
641 |
perl directives must be at the beginning of the line, and must be
|
|
642 |
followed by the end of the line.
|
|
643 |
|
|
644 |
PerlSetVar PodComments 1
|
627 | 645 |
|
628 | 646 |
CollectionItem
|
629 | |
Enables PerlScript syntax like:
|
630 | |
|
631 | |
$Request->Form('var')->Item;
|
632 | |
$Request->Form('var')->Item(1);
|
633 | |
$Request->Form('var')->Count;
|
634 | |
|
635 | |
Old PerlScript syntax, enabled with
|
636 | |
|
637 | |
use Win32::OLE qw(in valof with OVERLOAD);
|
638 | |
|
639 | |
is like native syntax
|
640 | |
|
641 | |
$Request->Form('var');
|
642 | |
|
643 | |
Only in Apache::ASP, can the above be written as:
|
644 | |
|
645 | |
$Request->{Form}{var};
|
646 | |
|
647 | |
which you would do if you _really_ needed the speed.
|
|
647 |
Enables PerlScript syntax like:
|
|
648 |
|
|
649 |
$Request->Form('var')->Item;
|
|
650 |
$Request->Form('var')->Item(1);
|
|
651 |
$Request->Form('var')->Count;
|
|
652 |
|
|
653 |
Old PerlScript syntax, enabled with
|
|
654 |
|
|
655 |
use Win32::OLE qw(in valof with OVERLOAD);
|
|
656 |
|
|
657 |
is like native syntax
|
|
658 |
|
|
659 |
$Request->Form('var');
|
|
660 |
|
|
661 |
Only in Apache::ASP, can the above be written as:
|
|
662 |
|
|
663 |
$Request->{Form}{var};
|
|
664 |
|
|
665 |
which you would do if you _really_ needed the speed.
|
648 | 666 |
|
649 | 667 |
XML / XSLT
|
650 | 668 |
XMLSubsMatch
|
651 | |
default not defined, set to some regexp pattern that will match all XML and
|
652 | |
HTML tags that you want to have perl subroutines handle. The is
|
653 | |
Apache::ASP's custom tag technology, and can be used to create powerful
|
654 | |
extensions to your XML and HTML rendering.
|
655 | |
|
656 | |
Please see XML/XSLT section for instructions on its use.
|
657 | |
|
658 | |
PerlSetVar XMLSubsMatch my:[\w\-]+
|
|
669 |
default not defined, set to some regexp pattern that will match all XML
|
|
670 |
and HTML tags that you want to have perl subroutines handle. The is
|
|
671 |
Apache::ASP's custom tag technology, and can be used to create powerful
|
|
672 |
extensions to your XML and HTML rendering.
|
|
673 |
|
|
674 |
Please see XML/XSLT section for instructions on its use.
|
|
675 |
|
|
676 |
PerlSetVar XMLSubsMatch my:[\w\-]+
|
659 | 677 |
|
660 | 678 |
XMLSubsStrict
|
661 | |
default 0, when set XMLSubs will only take arguments that are properly
|
662 | |
formed XML tag arguments like:
|
663 | |
|
664 | |
<my:sub arg1="value" arg2="value" />
|
665 | |
|
666 | |
By default, XMLSubs accept arbitrary perl code as argument values:
|
667 | |
|
668 | |
<my:sub arg1=1+1 arg2=&perl_sub()/>
|
669 | |
|
670 | |
which is not always wanted or expected. Set XMLSubsStrict to 1 if this is
|
671 | |
the case.
|
672 | |
|
673 | |
PerlSetVar XMLSubsStrict 1
|
|
679 |
default 0, when set XMLSubs will only take arguments that are properly
|
|
680 |
formed XML tag arguments like:
|
|
681 |
|
|
682 |
<my:sub arg1="value" arg2="value" />
|
|
683 |
|
|
684 |
By default, XMLSubs accept arbitrary perl code as argument values:
|
|
685 |
|
|
686 |
<my:sub arg1=1+1 arg2=&perl_sub()/>
|
|
687 |
|
|
688 |
which is not always wanted or expected. Set XMLSubsStrict to 1 if this
|
|
689 |
is the case.
|
|
690 |
|
|
691 |
PerlSetVar XMLSubsStrict 1
|
674 | 692 |
|
675 | 693 |
XMLSubsPerlArgs
|
676 | |
default 1, when set attribute values will be interpreted as raw perl code so
|
677 | |
that these all would execute as one would expect:
|
678 | |
|
679 | |
<my:xmlsubs arg='1' arg2="2" arg3=$value arg4="1 $value" />
|
680 | |
|
681 | |
With the 2.45 release, 0 may be set for this configuration or a more ASP
|
682 | |
style variable interpolation:
|
683 | |
|
684 | |
<my:xmlsubs arg='1' arg2="2" args3="<%= $value %>" arg4="1 <%= $value %>" />
|
685 | |
|
686 | |
This configuration is being introduced experimentally in version 2.45, as it
|
687 | |
will become the eventual default in the 3.0 release.
|
688 | |
|
689 | |
PerlSetVar XMLSubsPerlArgs Off
|
|
694 |
default 1, when set attribute values will be interpreted as raw perl
|
|
695 |
code so that these all would execute as one would expect:
|
|
696 |
|
|
697 |
<my:xmlsubs arg='1' arg2="2" arg3=$value arg4="1 $value" />
|
|
698 |
|
|
699 |
With the 2.45 release, 0 may be set for this configuration or a more ASP
|
|
700 |
style variable interpolation:
|
|
701 |
|
|
702 |
<my:xmlsubs arg='1' arg2="2" args3="<%= $value %>" arg4="1 <%= $value %>" />
|
|
703 |
|
|
704 |
This configuration is being introduced experimentally in version 2.45,
|
|
705 |
as it will become the eventual default in the 3.0 release.
|
|
706 |
|
|
707 |
PerlSetVar XMLSubsPerlArgs Off
|
690 | 708 |
|
691 | 709 |
XSLT
|
692 | |
default not defined, if set to a file, ASP scripts will be regarded as XML
|
693 | |
output and transformed with the given XSL file with XML::XSLT. This XSL file
|
694 | |
will also be executed as an ASP script first, and its output will be the XSL
|
695 | |
data used for the transformation. This XSL file will be executed as a
|
696 | |
dynamic include, so may be located in the current directory, Global, or
|
697 | |
IncludesDir.
|
698 | |
|
699 | |
Please see the XML/XSLT section for an explanation of its use.
|
700 | |
|
701 | |
PerlSetVar XSLT template.xsl
|
|
710 |
default not defined, if set to a file, ASP scripts will be regarded as
|
|
711 |
XML output and transformed with the given XSL file with XML::XSLT. This
|
|
712 |
XSL file will also be executed as an ASP script first, and its output
|
|
713 |
will be the XSL data used for the transformation. This XSL file will be
|
|
714 |
executed as a dynamic include, so may be located in the current
|
|
715 |
directory, Global, or IncludesDir.
|
|
716 |
|
|
717 |
Please see the XML/XSLT section for an explanation of its use.
|
|
718 |
|
|
719 |
PerlSetVar XSLT template.xsl
|
702 | 720 |
|
703 | 721 |
XSLTMatch
|
704 | |
default .*, if XSLT is set by default all ASP scripts will be XSL
|
705 | |
transformed by the specified XSL template. This regexp setting will tell
|
706 | |
XSLT which file names to match with doing XSL transformations, so that
|
707 | |
regular HTML ASP scripts and XML ASP scripts can be configured with the same
|
708 | |
configuration block. Please see ./site/eg/.htaccess for an example of its
|
709 | |
use.
|
710 | |
|
711 | |
PerlSetVar XSLTMatch \.xml$
|
|
722 |
default .*, if XSLT is set by default all ASP scripts will be XSL
|
|
723 |
transformed by the specified XSL template. This regexp setting will tell
|
|
724 |
XSLT which file names to match with doing XSL transformations, so that
|
|
725 |
regular HTML ASP scripts and XML ASP scripts can be configured with the
|
|
726 |
same configuration block. Please see ./site/eg/.htaccess for an example
|
|
727 |
of its use.
|
|
728 |
|
|
729 |
PerlSetVar XSLTMatch \.xml$
|
712 | 730 |
|
713 | 731 |
XSLTParser
|
714 | |
default XML::XSLT, determines which perl module to use for XSLT parsing.
|
715 | |
This is a new config as of 2.11. Also supported is XML::Sablotron which does
|
716 | |
not handle XSLT with the exact same output, but is about 10 times faster
|
717 | |
than XML::XSLT. XML::LibXSLT may also be used as of version 2.29, and seems
|
718 | |
to be about twice again as fast as XML::Sablotron, and a very complete XSLT
|
719 | |
implementation.
|
720 | |
|
721 | |
PerlSetVar XSLTParser XML::XSLT
|
722 | |
PerlSetVar XSLTParser XML::Sablotron
|
723 | |
PerlSetVar XSLTParser XML::LibXSLT
|
|
732 |
default XML::XSLT, determines which perl module to use for XSLT parsing.
|
|
733 |
This is a new config as of 2.11. Also supported is XML::Sablotron which
|
|
734 |
does not handle XSLT with the exact same output, but is about 10 times
|
|
735 |
faster than XML::XSLT. XML::LibXSLT may also be used as of version 2.29,
|
|
736 |
and seems to be about twice again as fast as XML::Sablotron, and a very
|
|
737 |
complete XSLT implementation.
|
|
738 |
|
|
739 |
PerlSetVar XSLTParser XML::XSLT
|
|
740 |
PerlSetVar XSLTParser XML::Sablotron
|
|
741 |
PerlSetVar XSLTParser XML::LibXSLT
|
724 | 742 |
|
725 | 743 |
XSLTCache
|
726 | |
Activate XSLT file based caching through CacheDB, CacheDir, and CacheSize
|
727 | |
settings. This gives cached XSLT performance near AxKit and greater than
|
728 | |
Cocoon. XSLT caches transformations keyed uniquely by XML & XSLT inputs.
|
729 | |
|
730 | |
PerlSetVar XSLTCache 1
|
|
744 |
Activate XSLT file based caching through CacheDB, CacheDir, and
|
|
745 |
CacheSize settings. This gives cached XSLT performance near AxKit and
|
|
746 |
greater than Cocoon. XSLT caches transformations keyed uniquely by XML &
|
|
747 |
XSLT inputs.
|
|
748 |
|
|
749 |
PerlSetVar XSLTCache 1
|
731 | 750 |
|
732 | 751 |
XSLTCacheSize
|
733 | |
as of version 2.11, this config is no longer supported.
|
|
752 |
as of version 2.11, this config is no longer supported.
|
734 | 753 |
|
735 | 754 |
Caching
|
736 | 755 |
The output caching layer is a file dbm based output cache that runs on top
|
|
759 | 778 |
mod_perl.
|
760 | 779 |
|
761 | 780 |
CacheDB
|
762 | |
Like StateDB, sets dbm format for caching. Since SDBM_File only support
|
763 | |
key/values pairs of around 1K max in length, the default for this is
|
764 | |
MLDBM::Sync::SDBM_File, which is very fast for < 20K output sizes. For
|
765 | |
caching larger data than 20K, DB_File or GDBM_File are probably better to
|
766 | |
use.
|
767 | |
|
768 | |
PerlSetVar CacheDB MLDBM::Sync::SDBM_File
|
769 | |
|
770 | |
For your own benchmarks to test the relative speeds of the various DBMs
|
771 | |
under MLDBM::Sync, which is used by CacheDB, you may run the
|
772 | |
./bench/bench_sync.pl script from the MLDBM::Sync distribution on your
|
773 | |
system.
|
|
781 |
Like StateDB, sets dbm format for caching. Since SDBM_File only support
|
|
782 |
key/values pairs of around 1K max in length, the default for this is
|
|
783 |
MLDBM::Sync::SDBM_File, which is very fast for < 20K output sizes. For
|
|
784 |
caching larger data than 20K, DB_File or GDBM_File are probably better
|
|
785 |
to use.
|
|
786 |
|
|
787 |
PerlSetVar CacheDB MLDBM::Sync::SDBM_File
|
|
788 |
|
|
789 |
For your own benchmarks to test the relative speeds of the various DBMs
|
|
790 |
under MLDBM::Sync, which is used by CacheDB, you may run the
|
|
791 |
./bench/bench_sync.pl script from the MLDBM::Sync distribution on your
|
|
792 |
system.
|
774 | 793 |
|
775 | 794 |
CacheDir
|
776 | |
By default, the cache directory is at StateDir/cache, but CacheDir can be
|
777 | |
used to set the StateDir value for caching purposes. One may want the
|
778 | |
CacheDir separate from StateDir for example StateDir might be a centrally
|
779 | |
network mounted file system, while CacheDir might be a local file cache.
|
780 | |
|
781 | |
PerlSetVar CacheDir /tmp/asp_demo
|
782 | |
|
783 | |
On a system like Solaris where there is a RAM disk mounted on the system
|
784 | |
like /tmp, I could put the CacheDir there. On a system like Linux where
|
785 | |
files are cached pretty well by default, this is less important.
|
|
795 |
By default, the cache directory is at StateDir/cache, but CacheDir can
|
|
796 |
be used to set the StateDir value for caching purposes. One may want the
|
|
797 |
CacheDir separate from StateDir for example StateDir might be a
|
|
798 |
centrally network mounted file system, while CacheDir might be a local
|
|
799 |
file cache.
|
|
800 |
|
|
801 |
PerlSetVar CacheDir /tmp/asp_demo
|
|
802 |
|
|
803 |
On a system like Solaris where there is a RAM disk mounted on the system
|
|
804 |
like /tmp, I could put the CacheDir there. On a system like Linux where
|
|
805 |
files are cached pretty well by default, this is less important.
|
786 | 806 |
|
787 | 807 |
CacheSize
|
788 | |
By default, this is 10M of data per cache. When any cache, like the
|
789 | |
XSLTCache, reaches this limit, the cache will be purged by deleting the
|
790 | |
cached dbm files entirely. This is better for long term running of dbms than
|
791 | |
deleting individual records, because dbm formats will often degrade in
|
792 | |
performance with lots of insert & deletes.
|
793 | |
|
794 | |
Units of M, K, and B are supported for megabytes, kilobytes, and bytes, with
|
795 | |
the default unit being B, so the following configs all mean the same thing;
|
796 | |
|
797 | |
PerlSetVar CacheSize 10M
|
798 | |
PerlSetVar CacheSize 10240K
|
799 | |
PerlSetVar CacheSize 10485760B
|
800 | |
PerlSetVar CacheSize 10485760
|
801 | |
|
802 | |
There are 2 caches currently, the XSLTCache, and the Response cache, the
|
803 | |
latter which is currently invoked for caching output from includes with
|
804 | |
special syntax. See $Response->Include() for more info on the Response
|
805 | |
cache.
|
|
808 |
By default, this is 10M of data per cache. When any cache, like the
|
|
809 |
XSLTCache, reaches this limit, the cache will be purged by deleting the
|
|
810 |
cached dbm files entirely. This is better for long term running of dbms
|
|
811 |
than deleting individual records, because dbm formats will often degrade
|
|
812 |
in performance with lots of insert & deletes.
|
|
813 |
|
|
814 |
Units of M, K, and B are supported for megabytes, kilobytes, and bytes,
|
|
815 |
with the default unit being B, so the following configs all mean the
|
|
816 |
same thing;
|
|
817 |
|
|
818 |
PerlSetVar CacheSize 10M
|
|
819 |
PerlSetVar CacheSize 10240K
|
|
820 |
PerlSetVar CacheSize 10485760B
|
|
821 |
PerlSetVar CacheSize 10485760
|
|
822 |
|
|
823 |
There are 2 caches currently, the XSLTCache, and the Response cache, the
|
|
824 |
latter which is currently invoked for caching output from includes with
|
|
825 |
special syntax. See $Response->Include() for more info on the Response
|
|
826 |
cache.
|
806 | 827 |
|
807 | 828 |
Miscellaneous
|
808 | 829 |
AuthServerVariables
|
809 | |
default 0. If you are using basic auth and would like
|
810 | |
$Request->ServerVariables set like AUTH_TYPE, AUTH_USER, AUTH_NAME,
|
811 | |
REMOTE_USER, & AUTH_PASSWD, then set this and Apache::ASP will initialize
|
812 | |
these values from Apache->*auth* commands. Use of these environment
|
813 | |
variables keeps applications cross platform compatible as other servers set
|
814 | |
these too when performing basic 401 auth.
|
815 | |
|
816 | |
PerlSetVar AuthServerVariables 0
|
|
830 |
default 0. If you are using basic auth and would like
|
|
831 |
$Request->ServerVariables set like AUTH_TYPE, AUTH_USER, AUTH_NAME,
|
|
832 |
REMOTE_USER, & AUTH_PASSWD, then set this and Apache::ASP will
|
|
833 |
initialize these values from Apache->*auth* commands. Use of these
|
|
834 |
environment variables keeps applications cross platform compatible as
|
|
835 |
other servers set these too when performing basic 401 auth.
|
|
836 |
|
|
837 |
PerlSetVar AuthServerVariables 0
|
817 | 838 |
|
818 | 839 |
BufferingOn
|
819 | |
default 1, if true, buffers output through the response object. $Response
|
820 | |
object will only send results to client browser if a $Response->Flush() is
|
821 | |
called, or if the asp script ends. Lots of output will need to be flushed
|
822 | |
incrementally.
|
823 | |
|
824 | |
If false, 0, the output is immediately written to the client, CGI style.
|
825 | |
There will be a performance hit server side if output is flushed
|
826 | |
automatically to the client, but is probably small.
|
827 | |
|
828 | |
I would leave this on, since error handling is poor, if your asp script
|
829 | |
errors after sending only some of the output.
|
830 | |
|
831 | |
PerlSetVar BufferingOn 1
|
|
840 |
default 1, if true, buffers output through the response object.
|
|
841 |
$Response object will only send results to client browser if a
|
|
842 |
$Response->Flush() is called, or if the asp script ends. Lots of output
|
|
843 |
will need to be flushed incrementally.
|
|
844 |
|
|
845 |
If false, 0, the output is immediately written to the client, CGI style.
|
|
846 |
There will be a performance hit server side if output is flushed
|
|
847 |
automatically to the client, but is probably small.
|
|
848 |
|
|
849 |
I would leave this on, since error handling is poor, if your asp script
|
|
850 |
errors after sending only some of the output.
|
|
851 |
|
|
852 |
PerlSetVar BufferingOn 1
|
832 | 853 |
|
833 | 854 |
InodeNames
|
834 | |
Default 0. Set to 1 to uses a stat() call on scripts and includes to derive
|
835 | |
subroutine namespace based on device and inode numbers. In case of multiple
|
836 | |
symbolic links pointing to the same script this will result in the script
|
837 | |
being compiled only once. Use only on unix flavours which support the stat()
|
838 | |
call that know about device and inode numbers.
|
839 | |
|
840 | |
PerlSetVar InodeNames 1
|
|
855 |
Default 0. Set to 1 to uses a stat() call on scripts and includes to
|
|
856 |
derive subroutine namespace based on device and inode numbers. In case
|
|
857 |
of multiple symbolic links pointing to the same script this will result
|
|
858 |
in the script being compiled only once. Use only on unix flavours which
|
|
859 |
support the stat() call that know about device and inode numbers.
|
|
860 |
|
|
861 |
PerlSetVar InodeNames 1
|
841 | 862 |
|
842 | 863 |
RequestParams
|
843 | |
Default 0, if set creates $Request->Params object with combined contents of
|
844 | |
$Request->QueryString and $Request->Form. This is for developer convenience
|
845 | |
simlar to CGI.pm's param() method.
|
846 | |
|
847 | |
PerlSetVar RequestParams 1
|
|
864 |
Default 0, if set creates $Request->Params object with combined contents
|
|
865 |
of $Request->QueryString and $Request->Form. This is for developer
|
|
866 |
convenience simlar to CGI.pm's param() method.
|
|
867 |
|
|
868 |
PerlSetVar RequestParams 1
|
848 | 869 |
|
849 | 870 |
RequestBinaryRead
|
850 | |
Default On, if set to Off will not read POST data into $Request->Form().
|
851 | |
|
852 | |
One potential reason for configuring this to Off might be to initialize the
|
853 | |
Apache::ASP object in an Apache handler phase earlier than the normal
|
854 | |
PerlRequestHandler phase, so that it does not interfere with normal reading
|
855 | |
of POST data later in the request.
|
856 | |
|
857 | |
PerlSetVar RequestBinaryRead On
|
|
871 |
Default On, if set to Off will not read POST data into $Request->Form().
|
|
872 |
|
|
873 |
One potential reason for configuring this to Off might be to initialize
|
|
874 |
the Apache::ASP object in an Apache handler phase earlier than the
|
|
875 |
normal PerlRequestHandler phase, so that it does not interfere with
|
|
876 |
normal reading of POST data later in the request.
|
|
877 |
|
|
878 |
PerlSetVar RequestBinaryRead On
|
858 | 879 |
|
859 | 880 |
StatINC
|
860 | |
default 0, if true, reloads perl libraries that have changed on disk
|
861 | |
automatically for ASP scripts. If false, the www server must be restarted
|
862 | |
for library changes to take effect.
|
863 | |
|
864 | |
A known bug is that any functions that are exported, e.g. confess Carp
|
865 | |
qw(confess), will not be refreshed by StatINC. To refresh these, you must
|
866 | |
restart the www server.
|
867 | |
|
868 | |
This setting should be used in development only because it is so slow. For a
|
869 | |
production version of StatINC, see StatINCMatch.
|
870 | |
|
871 | |
PerlSetVar StatINC 1
|
|
881 |
default 0, if true, reloads perl libraries that have changed on disk
|
|
882 |
automatically for ASP scripts. If false, the www server must be
|
|
883 |
restarted for library changes to take effect.
|
|
884 |
|
|
885 |
A known bug is that any functions that are exported, e.g. confess Carp
|
|
886 |
qw(confess), will not be refreshed by StatINC. To refresh these, you
|
|
887 |
must restart the www server.
|
|
888 |
|
|
889 |
This setting should be used in development only because it is so slow.
|
|
890 |
For a production version of StatINC, see StatINCMatch.
|
|
891 |
|
|
892 |
PerlSetVar StatINC 1
|
872 | 893 |
|
873 | 894 |
StatINCMatch
|
874 | |
default undef, if defined, it will be used as a regular expression to reload
|
875 | |
modules that match as in StatINC. This is useful because StatINC has a very
|
876 | |
high performance penalty in production, so if you can narrow the modules
|
877 | |
that are checked for reloading each script execution to a handful, you will
|
878 | |
only suffer a mild performance penalty.
|
879 | |
|
880 | |
The StatINCMatch setting should be a regular expression like: Struct|LWP
|
881 | |
which would match on reloading Class/Struct.pm, and all the LWP/.*
|
882 | |
libraries.
|
883 | |
|
884 | |
If you define StatINCMatch, you do not need to define StatINC.
|
885 | |
|
886 | |
PerlSetVar StatINCMatch .*
|
|
895 |
default undef, if defined, it will be used as a regular expression to
|
|
896 |
reload modules that match as in StatINC. This is useful because StatINC
|
|
897 |
has a very high performance penalty in production, so if you can narrow
|
|
898 |
the modules that are checked for reloading each script execution to a
|
|
899 |
handful, you will only suffer a mild performance penalty.
|
|
900 |
|
|
901 |
The StatINCMatch setting should be a regular expression like: Struct|LWP
|
|
902 |
which would match on reloading Class/Struct.pm, and all the LWP/.*
|
|
903 |
libraries.
|
|
904 |
|
|
905 |
If you define StatINCMatch, you do not need to define StatINC.
|
|
906 |
|
|
907 |
PerlSetVar StatINCMatch .*
|
887 | 908 |
|
888 | 909 |
StatScripts
|
889 | |
default 1, if set to 0, changed scripts, global.asa, and includes will not
|
890 | |
be reloaded. Coupled with Apache mod_perl startup and restart handlers
|
891 | |
executing Apache::ASP->Loader() for your application this allows your
|
892 | |
application to be frozen, and only reloaded on the next server restart or
|
893 | |
stop/start.
|
894 | |
|
895 | |
There are a few advantages for not reloading scripts and modules in
|
896 | |
production. First there is a slight performance improvement by not having to
|
897 | |
stat() the script, its includes and the global.asa every request.
|
898 | |
|
899 | |
From an application deployment standpoint, you also gain the ability to
|
900 | |
deploy your application as a snapshot taken when the server starts and
|
901 | |
restarts. This provides you with the reassurance that during a production
|
902 | |
server update from development sources, you do not have to worry with
|
903 | |
sources being used for the wrong libraries and such, while they are all
|
904 | |
being copied over.
|
905 | |
|
906 | |
Finally, though you really should not do this, you can work on a live
|
907 | |
production application, with a test server reloading changes, but your
|
908 | |
production server does see the changes until you restart or stop/start it.
|
909 | |
This saves your public from syntax errors while you are just doing a quick
|
910 | |
bug fix.
|
911 | |
|
912 | |
PerlSetVar StatScripts 1
|
|
910 |
default 1, if set to 0, changed scripts, global.asa, and includes will
|
|
911 |
not be reloaded. Coupled with Apache mod_perl startup and restart
|
|
912 |
handlers executing Apache::ASP->Loader() for your application this
|
|
913 |
allows your application to be frozen, and only reloaded on the next
|
|
914 |
server restart or stop/start.
|
|
915 |
|
|
916 |
There are a few advantages for not reloading scripts and modules in
|
|
917 |
production. First there is a slight performance improvement by not
|
|
918 |
having to stat() the script, its includes and the global.asa every
|
|
919 |
request.
|
|
920 |
|
|
921 |
From an application deployment standpoint, you also gain the ability to
|
|
922 |
deploy your application as a snapshot taken when the server starts and
|
|
923 |
restarts. This provides you with the reassurance that during a
|
|
924 |
production server update from development sources, you do not have to
|
|
925 |
worry with sources being used for the wrong libraries and such, while
|
|
926 |
they are all being copied over.
|
|
927 |
|
|
928 |
Finally, though you really should not do this, you can work on a live
|
|
929 |
production application, with a test server reloading changes, but your
|
|
930 |
production server does see the changes until you restart or stop/start
|
|
931 |
it. This saves your public from syntax errors while you are just doing a
|
|
932 |
quick bug fix.
|
|
933 |
|
|
934 |
PerlSetVar StatScripts 1
|
913 | 935 |
|
914 | 936 |
SoftRedirect
|
915 | |
default 0, if true, a $Response->Redirect() does not end the script.
|
916 | |
Normally, when a Redirect() is called, the script is ended automatically.
|
917 | |
SoftRedirect 1, is a standard way of doing redirects, allowing for html
|
918 | |
output after the redirect is specified.
|
919 | |
|
920 | |
PerlSetVar SoftRedirect 0
|
|
937 |
default 0, if true, a $Response->Redirect() does not end the script.
|
|
938 |
Normally, when a Redirect() is called, the script is ended
|
|
939 |
automatically. SoftRedirect 1, is a standard way of doing redirects,
|
|
940 |
allowing for html output after the redirect is specified.
|
|
941 |
|
|
942 |
PerlSetVar SoftRedirect 0
|
921 | 943 |
|
922 | 944 |
Filter
|
923 | |
On/Off, default Off. With filtering enabled, you can take advantage of full
|
924 | |
server side includes (SSI), implemented through Apache::SSI. SSI is
|
925 | |
implemented through this mechanism by using Apache::Filter. A sample
|
926 | |
configuration for full SSI with filtering is in the ./site/eg/.htaccess
|
927 | |
file, with a relevant example script ./site/eg/ssi_filter.ssi.
|
928 | |
|
929 | |
You may only use this option with modperl v1.16 or greater installed and
|
930 | |
PERL_STACKED_HANDLERS enabled. Filtering may be used in conjunction with
|
931 | |
other handlers that are also "filter aware". If in doubt, try building your
|
932 | |
mod_perl with
|
933 | |
|
934 | |
perl Makefile.PL EVERYTHING=1
|
935 | |
|
936 | |
With filtering through Apache::SSI, you should expect near a a 20%
|
937 | |
performance decrease.
|
938 | |
|
939 | |
PerlSetVar Filter Off
|
|
945 |
On/Off, default Off. With filtering enabled, you can take advantage of
|
|
946 |
full server side includes (SSI), implemented through Apache::SSI. SSI is
|
|
947 |
implemented through this mechanism by using Apache::Filter. A sample
|
|
948 |
configuration for full SSI with filtering is in the ./site/eg/.htaccess
|
|
949 |
file, with a relevant example script ./site/eg/ssi_filter.ssi.
|
|
950 |
|
|
951 |
You may only use this option with modperl v1.16 or greater installed and
|
|
952 |
PERL_STACKED_HANDLERS enabled. Filtering may be used in conjunction with
|
|
953 |
other handlers that are also "filter aware". If in doubt, try building
|
|
954 |
your mod_perl with
|
|
955 |
|
|
956 |
perl Makefile.PL EVERYTHING=1
|
|
957 |
|
|
958 |
With filtering through Apache::SSI, you should expect near a a 20%
|
|
959 |
performance decrease.
|
|
960 |
|
|
961 |
PerlSetVar Filter Off
|
940 | 962 |
|
941 | 963 |
CgiHeaders
|
942 | |
default 0. When true, script output that looks like HTTP / CGI headers, will
|
943 | |
be added to the HTTP headers of the request. So you could add: Set-Cookie:
|
944 | |
test=message
|
945 | |
|
946 | |
<html>...
|
947 | |
to the top of your script, and all the headers preceding a newline
|
948 | |
will be added as if with a call to $Response->AddHeader(). This
|
949 | |
functionality is here for compatibility with raw cgi scripts,
|
950 | |
and those used to this kind of coding.
|
951 | |
|
952 | |
When set to 0, CgiHeaders style headers will not be parsed from the script
|
953 | |
response.
|
954 | |
|
955 | |
PerlSetVar CgiHeaders 0
|
|
964 |
default 0. When true, script output that looks like HTTP / CGI headers,
|
|
965 |
will be added to the HTTP headers of the request. So you could add:
|
|
966 |
Set-Cookie: test=message
|
|
967 |
|
|
968 |
<html>...
|
|
969 |
to the top of your script, and all the headers preceding a newline
|
|
970 |
will be added as if with a call to $Response->AddHeader(). This
|
|
971 |
functionality is here for compatibility with raw cgi scripts,
|
|
972 |
and those used to this kind of coding.
|
|
973 |
|
|
974 |
When set to 0, CgiHeaders style headers will not be parsed from the
|
|
975 |
script response.
|
|
976 |
|
|
977 |
PerlSetVar CgiHeaders 0
|
956 | 978 |
|
957 | 979 |
Clean
|
958 | |
default 0, may be set between 1 and 9. This setting determine how much
|
959 | |
text/html output should be compressed. A setting of 1 strips mostly white
|
960 | |
space saving usually 10% in output size, at a performance cost of less than
|
961 | |
5%. A setting of 9 goes much further saving anywhere 25% to 50% typically,
|
962 | |
but with a performance hit of 50%.
|
963 | |
|
964 | |
This config option is implemented via HTML::Clean. Per script configuration
|
965 | |
of this setting is available via the $Response->{Clean} property, which may
|
966 | |
also be set between 0 and 9.
|
967 | |
|
968 | |
PerlSetVar Clean 0
|
|
980 |
default 0, may be set between 1 and 9. This setting determine how much
|
|
981 |
text/html output should be compressed. A setting of 1 strips mostly
|
|
982 |
white space saving usually 10% in output size, at a performance cost of
|
|
983 |
less than 5%. A setting of 9 goes much further saving anywhere 25% to
|
|
984 |
50% typically, but with a performance hit of 50%.
|
|
985 |
|
|
986 |
This config option is implemented via HTML::Clean. Per script
|
|
987 |
configuration of this setting is available via the $Response->{Clean}
|
|
988 |
property, which may also be set between 0 and 9.
|
|
989 |
|
|
990 |
PerlSetVar Clean 0
|
969 | 991 |
|
970 | 992 |
CompressGzip
|
971 | |
default 0, if true will gzip compress HTML output on the fly if
|
972 | |
Compress::Zlib is installed, and the client browser supports it. Depending
|
973 | |
on the HTML being compressed, the client may see a 50% to 90% reduction in
|
974 | |
HTML output. I have seen 40K of HTML squeezed down to just under 6K. This
|
975 | |
will come at a 5%-20% hit to CPU usage per request compressed.
|
976 | |
|
977 | |
Note there are some cases when a browser says it will accept gzip encoding,
|
978 | |
but then not render it correctly. This behavior has been seen with IE5 when
|
979 | |
set to use a proxy but not using a proxy, and the URL does not end with a
|
980 | |
.html or .htm. No work around has yet been found for this case so use at
|
981 | |
your own risk.
|
982 | |
|
983 | |
PerlSetVar CompressGzip 1
|
|
993 |
default 0, if true will gzip compress HTML output on the fly if
|
|
994 |
Compress::Zlib is installed, and the client browser supports it.
|
|
995 |
Depending on the HTML being compressed, the client may see a 50% to 90%
|
|
996 |
reduction in HTML output. I have seen 40K of HTML squeezed down to just
|
|
997 |
under 6K. This will come at a 5%-20% hit to CPU usage per request
|
|
998 |
compressed.
|
|
999 |
|
|
1000 |
Note there are some cases when a browser says it will accept gzip
|
|
1001 |
encoding, but then not render it correctly. This behavior has been seen
|
|
1002 |
with IE5 when set to use a proxy but not using a proxy, and the URL does
|
|
1003 |
not end with a .html or .htm. No work around has yet been found for this
|
|
1004 |
case so use at your own risk.
|
|
1005 |
|
|
1006 |
PerlSetVar CompressGzip 1
|
984 | 1007 |
|
985 | 1008 |
FormFill
|
986 | |
default 0, if true will auto fill HTML forms with values from
|
987 | |
$Request->Form(). This functionality is provided by use of HTML::FillInForm.
|
988 | |
For more information please see "perldoc HTML::FillInForm", and the example
|
989 | |
./site/eg/formfill.asp.
|
990 | |
|
991 | |
This feature can be enabled on a per form basis at runtime with
|
992 | |
$Response->{FormFill} = 1
|
993 | |
|
994 | |
PerlSetVar FormFill 1
|
|
1009 |
default 0, if true will auto fill HTML forms with values from
|
|
1010 |
$Request->Form(). This functionality is provided by use of
|
|
1011 |
HTML::FillInForm. For more information please see "perldoc
|
|
1012 |
HTML::FillInForm", and the example ./site/eg/formfill.asp.
|
|
1013 |
|
|
1014 |
This feature can be enabled on a per form basis at runtime with
|
|
1015 |
$Response->{FormFill} = 1
|
|
1016 |
|
|
1017 |
PerlSetVar FormFill 1
|
995 | 1018 |
|
996 | 1019 |
TimeHiRes
|
997 | |
default 0, if set and Time::HiRes is installed, will do sub second timing of
|
998 | |
the time it takes Apache::ASP to process a request. This will not include
|
999 | |
the time spent in the session manager, nor modperl or Apache, and is only a
|
1000 | |
rough approximation at best.
|
1001 | |
|
1002 | |
If Debug is set also, you will get a comment in your HTML output that
|
1003 | |
indicates the time it took to process that script.
|
1004 | |
|
1005 | |
If system debugging is set with Debug -1 or -2, you will also get this time
|
1006 | |
in the Apache error log with the other system messages.
|
|
1020 |
default 0, if set and Time::HiRes is installed, will do sub second
|
|
1021 |
timing of the time it takes Apache::ASP to process a request. This will
|
|
1022 |
not include the time spent in the session manager, nor modperl or
|
|
1023 |
Apache, and is only a rough approximation at best.
|
|
1024 |
|
|
1025 |
If Debug is set also, you will get a comment in your HTML output that
|
|
1026 |
indicates the time it took to process that script.
|
|
1027 |
|
|
1028 |
If system debugging is set with Debug -1 or -2, you will also get this
|
|
1029 |
time in the Apache error log with the other system messages.
|
1007 | 1030 |
|
1008 | 1031 |
Mail Administration
|
1009 | 1032 |
Apache::ASP has some powerful administrative email extensions that let you
|
|
1013 | 1036 |
can read up about in the OBJECTS section.
|
1014 | 1037 |
|
1015 | 1038 |
MailHost
|
1016 | |
The mail host is the smtp server that the below Mail* config directives will
|
1017 | |
use when sending their emails. By default Net::SMTP uses smtp mail hosts
|
1018 | |
configured in Net::Config, which is set up at install time, but this setting
|
1019 | |
can be used to override this config.
|
1020 | |
|
1021 | |
The mail hosts specified in the Net::Config file will be used as backup smtp
|
1022 | |
servers to the MailHost specified here, should this primary server not be
|
1023 | |
working.
|
1024 | |
|
1025 | |
PerlSetVar MailHost smtp.yourdomain.com.foobar
|
|
1039 |
The mail host is the smtp server that the below Mail* config directives
|
|
1040 |
will use when sending their emails. By default Net::SMTP uses smtp mail
|
|
1041 |
hosts configured in Net::Config, which is set up at install time, but
|
|
1042 |
this setting can be used to override this config.
|
|
1043 |
|
|
1044 |
The mail hosts specified in the Net::Config file will be used as backup
|
|
1045 |
smtp servers to the MailHost specified here, should this primary server
|
|
1046 |
not be working.
|
|
1047 |
|
|
1048 |
PerlSetVar MailHost smtp.yourdomain.com.foobar
|
1026 | 1049 |
|
1027 | 1050 |
MailFrom
|
1028 | |
Default NONE, set this to specify the default mail address placed in the
|
1029 | |
From: mail header for the $Server->Mail() API extension, as well as
|
1030 | |
MailErrorsTo and MailAlertTo.
|
1031 | |
|
1032 | |
PerlSetVar MailFrom youremail@yourdomain.com.foobar
|
|
1051 |
Default NONE, set this to specify the default mail address placed in the
|
|
1052 |
From: mail header for the $Server->Mail() API extension, as well as
|
|
1053 |
MailErrorsTo and MailAlertTo.
|
|
1054 |
|
|
1055 |
PerlSetVar MailFrom youremail@yourdomain.com.foobar
|
1033 | 1056 |
|
1034 | 1057 |
MailErrorsTo
|
1035 | |
No default, if set, ASP server errors, error code 500, that result while
|
1036 | |
compiling or running scripts under Apache::ASP will automatically be emailed
|
1037 | |
to the email address set for this config. This allows an administrator to
|
1038 | |
have a rapid response to user generated server errors resulting from bugs in
|
1039 | |
production ASP scripts. Other errors, such as 404 not found will be handled
|
1040 | |
by Apache directly.
|
1041 | |
|
1042 | |
An easy way to see this config in action is to have an ASP script which
|
1043 | |
calls a die(), which generates an internal ASP 500 server error.
|
1044 | |
|
1045 | |
The Debug config of value 2 and this setting are mutually exclusive, as
|
1046 | |
Debug 2 is a development setting where errors are displayed in the browser,
|
1047 | |
and MailErrorsTo is a production setting so that errors are silently logged
|
1048 | |
and sent via email to the web admin.
|
1049 | |
|
1050 | |
PerlSetVar MailErrorsTo youremail@yourdomain.com
|
|
1058 |
No default, if set, ASP server errors, error code 500, that result while
|
|
1059 |
compiling or running scripts under Apache::ASP will automatically be
|
|
1060 |
emailed to the email address set for this config. This allows an
|
|
1061 |
administrator to have a rapid response to user generated server errors
|
|
1062 |
resulting from bugs in production ASP scripts. Other errors, such as 404
|
|
1063 |
not found will be handled by Apache directly.
|
|
1064 |
|
|
1065 |
An easy way to see this config in action is to have an ASP script which
|
|
1066 |
calls a die(), which generates an internal ASP 500 server error.
|
|
1067 |
|
|
1068 |
The Debug config of value 2 and this setting are mutually exclusive, as
|
|
1069 |
Debug 2 is a development setting where errors are displayed in the
|
|
1070 |
browser, and MailErrorsTo is a production setting so that errors are
|
|
1071 |
silently logged and sent via email to the web admin.
|
|
1072 |
|
|
1073 |
PerlSetVar MailErrorsTo youremail@yourdomain.com
|
1051 | 1074 |
|
1052 | 1075 |
MailAlertTo
|
1053 | |
The address configured will have an email sent on any ASP server error 500,
|
1054 | |
and the message will be short enough to fit on a text based pager. This
|
1055 | |
config setting would be used to give an administrator a heads up that a www
|
1056 | |
server error occurred, as opposed to MailErrorsTo would be used for
|
1057 | |
debugging that server error.
|
1058 | |
|
1059 | |
This config does not work when Debug 2 is set, as it is a setting for use in
|
1060 | |
production only, where Debug 2 is for development use.
|
1061 | |
|
1062 | |
PerlSetVar MailAlertTo youremail@yourdomain.com
|
|
1076 |
The address configured will have an email sent on any ASP server error
|
|
1077 |
500, and the message will be short enough to fit on a text based pager.
|
|
1078 |
This config setting would be used to give an administrator a heads up
|
|
1079 |
that a www server error occurred, as opposed to MailErrorsTo would be
|
|
1080 |
used for debugging that server error.
|
|
1081 |
|
|
1082 |
This config does not work when Debug 2 is set, as it is a setting for
|
|
1083 |
use in production only, where Debug 2 is for development use.
|
|
1084 |
|
|
1085 |
PerlSetVar MailAlertTo youremail@yourdomain.com
|
1063 | 1086 |
|
1064 | 1087 |
MailAlertPeriod
|
1065 | |
Default 20 minutes, this config specifies the time in minutes over which
|
1066 | |
there may be only one alert email generated by MailAlertTo. The purpose of
|
1067 | |
MailAlertTo is to give the admin a heads up that there is an error at the
|
1068 | |
www server. MailErrorsTo is for to aid in speedy debugging of the incident.
|
1069 | |
|
1070 | |
PerlSetVar MailAlertPeriod 20
|
|
1088 |
Default 20 minutes, this config specifies the time in minutes over which
|
|
1089 |
there may be only one alert email generated by MailAlertTo. The purpose
|
|
1090 |
of MailAlertTo is to give the admin a heads up that there is an error at
|
|
1091 |
the www server. MailErrorsTo is for to aid in speedy debugging of the
|
|
1092 |
incident.
|
|
1093 |
|
|
1094 |
PerlSetVar MailAlertPeriod 20
|
1071 | 1095 |
|
1072 | 1096 |
File Uploads
|
1073 | 1097 |
FileUploadMax
|
1074 | |
default 0, if set will limit file uploads to this size in bytes. This is
|
1075 | |
currently implemented by setting $CGI::POST_MAX before handling the file
|
1076 | |
upload. Prior to this, a developer would have to hardcode a value for
|
1077 | |
$CGI::POST_MAX to get this to work.
|
1078 | |
|
1079 | |
PerlSetVar 100000
|
|
1098 |
default 0, if set will limit file uploads to this size in bytes. This is
|
|
1099 |
currently implemented by setting $CGI::POST_MAX before handling the file
|
|
1100 |
upload. Prior to this, a developer would have to hardcode a value for
|
|
1101 |
$CGI::POST_MAX to get this to work.
|
|
1102 |
|
|
1103 |
PerlSetVar 100000
|
1080 | 1104 |
|
1081 | 1105 |
FileUploadTemp
|
1082 | |
default 0, if set will leave a temp file on disk during the request, which
|
1083 | |
may be helpful for processing by other programs, but is also a security risk
|
1084 | |
in that other users on the operating system could potentially read this file
|
1085 | |
while the script is running.
|
1086 | |
|
1087 | |
The path to the temp file will be available at
|
1088 | |
$Request->{FileUpload}{$form_field}{TempFile}. The regular use of file
|
1089 | |
uploads remains the same with the <$filehandle> to the upload at
|
1090 | |
$Request->{Form}{$form_field}. Please see the CGI section for more
|
1091 | |
information on file uploads, and the $Request section in OBJECTS.
|
1092 | |
|
1093 | |
PerlSetVar FileUploadTemp 0
|
|
1106 |
default 0, if set will leave a temp file on disk during the request,
|
|
1107 |
which may be helpful for processing by other programs, but is also a
|
|
1108 |
security risk in that other users on the operating system could
|
|
1109 |
potentially read this file while the script is running.
|
|
1110 |
|
|
1111 |
The path to the temp file will be available at
|
|
1112 |
$Request->{FileUpload}{$form_field}{TempFile}. The regular use of file
|
|
1113 |
uploads remains the same with the <$filehandle> to the upload at
|
|
1114 |
$Request->{Form}{$form_field}. Please see the CGI section for more
|
|
1115 |
information on file uploads, and the $Request section in OBJECTS.
|
|
1116 |
|
|
1117 |
PerlSetVar FileUploadTemp 0
|
1094 | 1118 |
|
1095 | 1119 |
SYNTAX
|
1096 | 1120 |
General
|
|
1164 | 1188 |
that mixes HTML & perl modes in a single buffer, check
|
1165 | 1189 |
out the editors/mmm-asp-perl.el file in distribution.
|
1166 | 1190 |
|
1167 | |
* Microsoft Frontpage
|
1168 | |
|
1169 | 1191 |
* Vim, special syntax support with editors/aasp.vim file in distribution.
|
1170 | 1192 |
|
1171 | 1193 |
* UltraEdit32 ( http://www.ultraedit.com/ ) has syntax highlighting,
|
|
1314 | 1336 |
|
1315 | 1337 |
SetHandler perl-script
|
1316 | 1338 |
PerlModule Apache::ASP
|
1317 | |
PerlHandler Apache::ASP
|
|
1339 |
PerlHandler Apache::ASP
|
1318 | 1340 |
|
1319 | 1341 |
But mod_perl allows for direct access to many more Apache event stages, for
|
1320 | 1342 |
full list try "perldoc mod_perl" or buy the mod_perl Eagle book. Some
|
|
1523 | 1545 |
$Session->{count}++;
|
1524 | 1546 |
$Session->{count}++;
|
1525 | 1547 |
$Session->{count}++;
|
1526 | |
$Session->UnLock();
|
|
1548 |
$Session->UnLock();
|
1527 | 1549 |
|
1528 | 1550 |
This sequence causes $Session to be locked and unlocked only 1 time,
|
1529 | 1551 |
instead of the 6 times that it would be locked otherwise, 2 for each
|
|
1733 | 1755 |
|
1734 | 1756 |
# you don't need to use hash notation when you are only setting
|
1735 | 1757 |
# a simple value
|
1736 | |
$Response->{Cookies}{'Test Name'} = 'Test Value';
|
|
1758 |
$Response->{Cookies}{'Test Name'} = 'Test Value';
|
1737 | 1759 |
|
1738 | 1760 |
I prefer the hash notation for cookies, as this looks nice, and is quite
|
1739 | 1761 |
perlish. It is here to stay. The Cookie() routine is very complex and
|
|
2450 | 2472 |
dynamically executed at runtime, turn the DynamicIncludes config option on
|
2451 | 2473 |
as documented above.
|
2452 | 2474 |
|
2453 | |
That is not all! SSI is full featured. One of the things missing above is
|
2454 | |
the
|
|
2475 |
Apache::SSI for mod_perl 1.3.x only
|
|
2476 |
One of the things missing above is the
|
2455 | 2477 |
|
2456 | 2478 |
<!--#include virtual=filename.cgi-->
|
2457 | 2479 |
|
2458 | 2480 |
tag. This and many other SSI code extensions are available by filtering
|
2459 | 2481 |
Apache::ASP output through Apache::SSI via the Apache::Filter and the Filter
|
2460 | |
config options. For more information on how to wire Apache::ASP and
|
2461 | |
Apache::SSI together, please see the Filter config option documented above.
|
2462 | |
Also please see Apache::SSI for further information on the capabilities it
|
2463 | |
offers.
|
|
2482 |
config options, available in mod_perl 1.3.x / Apache 1.3.x. Unfortunately
|
|
2483 |
this functionality is not available with mod_perl 2 / Apache 2.
|
|
2484 |
|
|
2485 |
For more information on how to wire Apache::ASP and Apache::SSI together,
|
|
2486 |
please see the Filter config option documented above. Also please see
|
|
2487 |
Apache::SSI for further information on the capabilities it offers.
|
|
2488 |
|
|
2489 |
SSI with mod_filter in Apache 2
|
|
2490 |
Apache 2 offers chained filters. It may be possible to chain filters to
|
|
2491 |
Apache::ASP output through mod_filter for SSI processing:
|
|
2492 |
|
|
2493 |
http://httpd.apache.org/docs/2.1/mod/mod_filter.html
|
2464 | 2494 |
|
2465 | 2495 |
EXAMPLES
|
2466 | 2496 |
Use with Apache. Copy the ./site/eg directory from the ASP installation to
|
|
2480 | 2510 |
order to track a web user and associate server side data with that client,
|
2481 | 2511 |
the web server sets, and the web client returns a 32 byte session id
|
2482 | 2512 |
identifier cookie. This implementation is very secure and may be used in
|
2483 | |
secure HTTPS transactions, and made stronger with SecureSession and
|
2484 | |
ParanoidSession settings (see CONFIG ).
|
|
2513 |
secure HTTPS transactions, and made stronger with SecureSession,
|
|
2514 |
HTTPOnlySession and ParanoidSession settings (see CONFIG ).
|
2485 | 2515 |
|
2486 | 2516 |
However good cookies are for this kind of persistent state management
|
2487 | 2517 |
between HTTP requests, they have long been under fire for security risks
|
|
2623 | 2653 |
<!-- ASP inserts -->
|
2624 | 2654 |
This employee has been online for <%= int(rand()*600)+1 %>
|
2625 | 2655 |
seconds, and was born near <%= $birthday %>.
|
2626 | |
</my:new-employee>
|
|
2656 |
</my:new-employee>
|
2627 | 2657 |
|
2628 | 2658 |
For an example of this custom XML tagging in action, please check out the
|
2629 | 2659 |
./site/eg/xml_subs.asp script.
|
|
2783 | 2813 |
|
2784 | 2814 |
For more information about CGI.pm, please see the web site
|
2785 | 2815 |
|
2786 | |
http://stein.cshl.org/WWW/software/CGI/
|
|
2816 |
http://search.cpan.org/dist/CGI/
|
2787 | 2817 |
|
2788 | 2818 |
Query Object Initialization
|
2789 | 2819 |
You may create a CGI.pm $query object like so:
|
|
2845 | 2875 |
this topic, and ./site/eg/file_upload.asp for an example of its use.
|
2846 | 2876 |
Also, for more details about CGI.pm itself, please see the web site:
|
2847 | 2877 |
|
2848 | |
http://stein.cshl.org/WWW/software/CGI/
|
|
2878 |
http://search.cpan.org/dist/CGI/
|
2849 | 2879 |
|
2850 | 2880 |
Occasionally, a newer version of CGI.pm will be released which breaks
|
2851 | 2881 |
file upload compatibility with Apache::ASP. If you find this to occur,
|
|
2987 | 3017 |
global.asa, or you may create a perl package or module to share with your
|
2988 | 3018 |
scripts. For more on perl objects & modules, please see:
|
2989 | 3019 |
|
2990 | |
http://www.perldoc.com/perl5.8.0/pod/perlobj.html
|
|
3020 |
http://perldoc.perl.org/perlobj.html
|
2991 | 3021 |
|
2992 | 3022 |
Use global.asa's Script_On* Events
|
2993 | 3023 |
Chances are that you will find yourself doing the same thing repeatedly in
|
|
3034 | 3064 |
|
3035 | 3065 |
Installation
|
3036 | 3066 |
Examples don't work, I see the ASP script in the browser?
|
3037 | |
This is most likely that Apache is not configured to execute the Apache::ASP
|
3038 | |
scripts properly. Check the INSTALL QuickStart section for more info on how
|
3039 | |
to quickly set up Apache to execute your ASP scripts.
|
|
3067 |
This is most likely that Apache is not configured to execute the
|
|
3068 |
Apache::ASP scripts properly. Check the INSTALL QuickStart section for
|
|
3069 |
more info on how to quickly set up Apache to execute your ASP scripts.
|
3040 | 3070 |
|
3041 | 3071 |
Apache Expat vs. XML perl parsing causing segfaults, what do I do?
|
3042 | |
Make sure to compile apache with expat disabled. The
|
3043 | |
./make_httpd/build_httpds.sh in the distribution will do this for you, with
|
3044 | |
the --disable-rule=EXPAT in particular:
|
3045 | |
|
3046 | |
cd ../$APACHE
|
3047 | |
echo "Building apache =============================="
|
3048 | |
./configure \
|
3049 | |
--prefix=/usr/local/apache \
|
3050 | |
--activate-module=src/modules/perl/libperl.a \
|
3051 | |
--enable-module=ssl \
|
3052 | |
--enable-module=proxy \
|
3053 | |
--enable-module=so \
|
3054 | |
--disable-rule=EXPAT
|
3055 | |
|
3056 | |
^^^^^
|
3057 | |
|
3058 | |
keywords: segmentation fault, segfault seg fault
|
|
3072 |
Make sure to compile apache with expat disabled. The
|
|
3073 |
./make_httpd/build_httpds.sh in the distribution will do this for you,
|
|
3074 |
with the --disable-rule=EXPAT in particular:
|
|
3075 |
|
|
3076 |
cd ../$APACHE
|
|
3077 |
echo "Building apache =============================="
|
|
3078 |
./configure \
|
|
3079 |
--prefix=/usr/local/apache \
|
|
3080 |
--activate-module=src/modules/perl/libperl.a \
|
|
3081 |
--enable-module=ssl \
|
|
3082 |
--enable-module=proxy \
|
|
3083 |
--enable-module=so \
|
|
3084 |
--disable-rule=EXPAT
|
|
3085 |
|
|
3086 |
^^^^^
|
|
3087 |
|
|
3088 |
keywords: segmentation fault, segfault seg fault
|
3059 | 3089 |
|
3060 | 3090 |
Why do variables retain their values between requests?
|
3061 | |
Unless scoped by my() or local(), perl variables in mod_perl are treated as
|
3062 | |
globals, and values set may persist from one request to another. This can be
|
3063 | |
seen in as simple a script as this:
|
3064 | |
|
3065 | |
<HTML><BODY>
|
3066 | |
$counter++;
|
3067 | |
$Response->Write("<BR>Counter: $counter");
|
3068 | |
</BODY></HTML>
|
3069 | |
|
3070 | |
The value for $counter++ will remain between requests. Generally use of
|
3071 | |
globals in this way is a BAD IDEA, and you can spare yourself many headaches
|
3072 | |
if do "use strict" perl programming which forces you to explicity declare
|
3073 | |
globals like:
|
3074 | |
|
3075 | |
use vars qw($counter);
|
3076 | |
|
3077 | |
You can make all your Apache::ASP scripts strict by default by setting:
|
3078 | |
|
3079 | |
PerlSetVar UseStrict 1
|
|
3091 |
Unless scoped by my() or local(), perl variables in mod_perl are treated
|
|
3092 |
as globals, and values set may persist from one request to another. This
|
|
3093 |
can be seen in as simple a script as this:
|
|
3094 |
|
|
3095 |
<HTML><BODY>
|
|
3096 |
$counter++;
|
|
3097 |
$Response->Write("<BR>Counter: $counter");
|
|
3098 |
</BODY></HTML>
|
|
3099 |
|
|
3100 |
The value for $counter++ will remain between requests. Generally use of
|
|
3101 |
globals in this way is a BAD IDEA, and you can spare yourself many
|
|
3102 |
headaches if do "use strict" perl programming which forces you to
|
|
3103 |
explicity declare globals like:
|
|
3104 |
|
|
3105 |
use vars qw($counter);
|
|
3106 |
|
|
3107 |
You can make all your Apache::ASP scripts strict by default by setting:
|
|
3108 |
|
|
3109 |
PerlSetVar UseStrict 1
|
3080 | 3110 |
|
3081 | 3111 |
Apache errors on the PerlHandler or PerlModule directives ?
|
3082 | |
You get an error message like this:
|
3083 | |
|
3084 | |
Invalid command 'PerlModule', perhaps mis-spelled or defined by a
|
3085 | |
module not included in the server configuration.
|
3086 | |
|
3087 | |
You do not have mod_perl correctly installed for Apache. The PerlHandler and
|
3088 | |
PerlModule directives in Apache *.conf files are extensions enabled by
|
3089 | |
mod_perl and will not work if mod_perl is not correctly installed.
|
3090 | |
|
3091 | |
Common user errors are not doing a 'make install' for mod_perl, which
|
3092 | |
installs the perl side of mod_perl, and not starting the right httpd after
|
3093 | |
building it. The latter often occurs when you have an old apache server
|
3094 | |
without mod_perl, and you have built a new one without copying over to its
|
3095 | |
proper location.
|
3096 | |
|
3097 | |
To get mod_perl, go to http://perl.apache.org
|
|
3112 |
You get an error message like this:
|
|
3113 |
|
|
3114 |
Invalid command 'PerlModule', perhaps mis-spelled or defined by a
|
|
3115 |
module not included in the server configuration.
|
|
3116 |
|
|
3117 |
You do not have mod_perl correctly installed for Apache. The PerlHandler
|
|
3118 |
and PerlModule directives in Apache *.conf files are extensions enabled
|
|
3119 |
by mod_perl and will not work if mod_perl is not correctly installed.
|
|
3120 |
|
|
3121 |
Common user errors are not doing a 'make install' for mod_perl, which
|
|
3122 |
installs the perl side of mod_perl, and not starting the right httpd
|
|
3123 |
after building it. The latter often occurs when you have an old apache
|
|
3124 |
server without mod_perl, and you have built a new one without copying
|
|
3125 |
over to its proper location.
|
|
3126 |
|
|
3127 |
To get mod_perl, go to http://perl.apache.org
|
3098 | 3128 |
|
3099 | 3129 |
Error: no request object (Apache=SCALAR(0x???????):)
|
3100 | |
Your Apache + mod_perl build is not working properly, and is likely a RedHat
|
3101 | |
Linux RPM DSO build. Make sure you statically build your Apache + mod_perl
|
3102 | |
httpd, recompiled fresh from the sources.
|
|
3130 |
Your Apache + mod_perl build is not working properly, and is likely a
|
|
3131 |
RedHat Linux RPM DSO build. Make sure you statically build your Apache +
|
|
3132 |
mod_perl httpd, recompiled fresh from the sources.
|
3103 | 3133 |
|
3104 | 3134 |
I am getting a tie or MLDBM / state error message, what do I do?
|
3105 | |
Make sure the web server or you have write access to the eg directory, or to
|
3106 | |
the directory specified as Global in the config you are using. Default for
|
3107 | |
Global is the directory the script is in (e.g. '.'), but should be set to
|
3108 | |
some directory not under the www server document root, for security reasons,
|
3109 | |
on a production site.
|
3110 | |
|
3111 | |
Usually a
|
3112 | |
|
3113 | |
chmod -R -0777 eg
|
3114 | |
|
3115 | |
will take care of the write access issue for initial testing purposes.
|
3116 | |
|
3117 | |
Failing write access being the problem, try upgrading your version of
|
3118 | |
Data::Dumper and MLDBM, which are the modules used to write the state files.
|
|
3135 |
Make sure the web server or you have write access to the eg directory,
|
|
3136 |
or to the directory specified as Global in the config you are using.
|
|
3137 |
Default for Global is the directory the script is in (e.g. '.'), but
|
|
3138 |
should be set to some directory not under the www server document root,
|
|
3139 |
for security reasons, on a production site.
|
|
3140 |
|
|
3141 |
Usually a
|
|
3142 |
|
|
3143 |
chmod -R -0777 eg
|
|
3144 |
|
|
3145 |
will take care of the write access issue for initial testing purposes.
|
|
3146 |
|
|
3147 |
Failing write access being the problem, try upgrading your version of
|
|
3148 |
Data::Dumper and MLDBM, which are the modules used to write the state
|
|
3149 |
files.
|
3119 | 3150 |
|
3120 | 3151 |
Sessions
|
3121 | 3152 |
How can I use $Session to store complex data structures.
|
3122 | |
Very carefully. Please read the $Session documentation in the OBJECTS
|
3123 | |
section. You can store very complex objects in $Session, but you have to
|
3124 | |
understand the limits, and the syntax that must be used to make this happen.
|
3125 | |
|
3126 | |
In particular, stay away from statements that that have more than one level
|
3127 | |
of indirection on the left side of an assignment like:
|
3128 | |
|
3129 | |
$Session->{complex}{object} = $data;
|
|
3153 |
Very carefully. Please read the $Session documentation in the OBJECTS
|
|
3154 |
section. You can store very complex objects in $Session, but you have to
|
|
3155 |
understand the limits, and the syntax that must be used to make this
|
|
3156 |
happen.
|
|
3157 |
|
|
3158 |
In particular, stay away from statements that that have more than one
|
|
3159 |
level of indirection on the left side of an assignment like:
|
|
3160 |
|
|
3161 |
BAD: $Session->{complex}{object} = $data;
|
3130 | 3162 |
|
3131 | 3163 |
How can I keep search engine spiders from killing the session manager?
|
3132 | |
If you want to disallow session creation for certain non web browser user
|
3133 | |
agents, like search engine spiders, you can use a mod_perl PerlInitHandler
|
3134 | |
like this to set configuration variables at runtime:
|
3135 | |
|
3136 | |
# put the following code into httpd.conf and stop/start apache server
|
3137 | |
PerlInitHandler My::InitHandler
|
3138 | |
|
3139 | |
<Perl>
|
3140 | |
|
3141 | |
package My::InitHandler;
|
3142 | |
use Apache;
|
3143 | |
|
3144 | |
sub handler {
|
3145 | |
my $r = shift; # get the Apache request object
|
3146 | |
|
3147 | |
# if not a Mozilla User Agent, then disable sessions explicitly
|
3148 | |
unless($r->headers_in('User-Agent') =~ /^Mozilla/) {
|
3149 | |
$r->dir_config('AllowSessionState', 'Off');
|
3150 | |
}
|
3151 | |
|
3152 | |
return 200; # return OK mod_perl status code
|
3153 | |
}
|
3154 | |
|
3155 | |
1;
|
3156 | |
|
3157 | |
</Perl>
|
3158 | |
|
3159 | |
This will configure your environment before Apache::ASP executes and sees
|
3160 | |
the configuration settings. You can use the mod_perl API in this way to
|
3161 | |
configure Apache::ASP at runtime.
|
3162 | |
|
3163 | |
Note that the Session Manager is very robust on its own, and denial of
|
3164 | |
service attacks of the types that spiders and other web bots normally
|
3165 | |
execute are not likely to affect the Session Manager significantly.
|
|
3164 |
If you want to disallow session creation for certain non web browser
|
|
3165 |
user agents, like search engine spiders, you can use a mod_perl
|
|
3166 |
PerlInitHandler like this to set configuration variables at runtime:
|
|
3167 |
|
|
3168 |
# put the following code into httpd.conf and stop/start apache server
|
|
3169 |
PerlInitHandler My::InitHandler
|
|
3170 |
|
|
3171 |
<Perl>
|
|
3172 |
|
|
3173 |
package My::InitHandler;
|
|
3174 |
use Apache;
|
|
3175 |
|
|
3176 |
sub handler {
|
|
3177 |
my $r = shift; # get the Apache request object
|
|
3178 |
|
|
3179 |
# if not a Mozilla User Agent, then disable sessions explicitly
|
|
3180 |
unless($r->headers_in('User-Agent') =~ /^Mozilla/) {
|
|
3181 |
$r->dir_config('AllowSessionState', 'Off');
|
|
3182 |
}
|
|
3183 |
|
|
3184 |
return 200; # return OK mod_perl status code
|
|
3185 |
}
|
|
3186 |
|
|
3187 |
1;
|
|
3188 |
|
|
3189 |
</Perl>
|
|
3190 |
|
|
3191 |
This will configure your environment before Apache::ASP executes and
|
|
3192 |
sees the configuration settings. You can use the mod_perl API in this
|
|
3193 |
way to configure Apache::ASP at runtime.
|
|
3194 |
|
|
3195 |
Note that the Session Manager is very robust on its own, and denial of
|
|
3196 |
service attacks of the types that spiders and other web bots normally
|
|
3197 |
execute are not likely to affect the Session Manager significantly.
|
3166 | 3198 |
|
3167 | 3199 |
How can I use $Session to store a $dbh database handle ?
|
3168 | |
You cannot use $Session to store a $dbh handle. This can be awkward for
|
3169 | |
those coming from the IIS/NT world, where you could store just about
|
3170 | |
anything in $Session, but this boils down to a difference between threads
|
3171 | |
vs. processes.
|
3172 | |
|
3173 | |
Database handles often have per process file handles open, which cannot be
|
3174 | |
shared between requests, so though you have stored the $dbh data in
|
3175 | |
$Session, all the other initializations are not relevant in another httpd
|
3176 | |
process.
|
3177 | |
|
3178 | |
All is not lost! Apache::DBI can be used to cache database connections on a
|
3179 | |
per process basis, and will work for most cases.
|
|
3200 |
You cannot use $Session to store a $dbh handle. This can be awkward for
|
|
3201 |
those coming from the IIS/NT world, where you could store just about
|
|
3202 |
anything in $Session, but this boils down to a difference between
|
|
3203 |
threads vs. processes.
|
|
3204 |
|
|
3205 |
Database handles often have per process file handles open, which cannot
|
|
3206 |
be shared between requests, so though you have stored the $dbh data in
|
|
3207 |
$Session, all the other initializations are not relevant in another
|
|
3208 |
httpd process.
|
|
3209 |
|
|
3210 |
All is not lost! Apache::DBI can be used to cache database connections
|
|
3211 |
on a per process basis, and will work for most cases.
|
3180 | 3212 |
|
3181 | 3213 |
Development
|
3182 | 3214 |
VBScript or JScript supported?
|
3183 | |
Yes, but not with this Perl module. For ASP with other scripting languages
|
3184 | |
besides Perl, you will need to go with a commercial vendor in the UNIX
|
3185 | |
world. Sun has such a solution. Of course on Windows NT and Windows 2000,
|
3186 | |
you get VBScript for free with IIS.
|
3187 | |
|
3188 | |
Sun ONE Active Server Pages (formerly Sun Chili!Soft ASP)
|
3189 | |
http://www.chilisoft.com
|
|
3215 |
Only Perl scripting is supported with this module.
|
3190 | 3216 |
|
3191 | 3217 |
How is database connectivity handled?
|
3192 | |
Database connectivity is handled through perl's DBI & DBD interfaces. In the
|
3193 | |
UNIX world, it seems most databases have cross platform support in perl. You
|
3194 | |
can find the book on DBI programming at
|
3195 | |
http://www.oreilly.com/catalog/perldbi/
|
3196 | |
|
3197 | |
DBD::ODBC is often your ticket on Win32. On UNIX, commercial vendors like
|
3198 | |
OpenLink Software (http://www.openlinksw.com/) provide the nuts and bolts
|
3199 | |
for ODBC.
|
3200 | |
|
3201 | |
Database connections can be cached per process with Apache::DBI.
|
|
3218 |
Database connectivity is handled through perl's DBI & DBD interfaces. In
|
|
3219 |
the UNIX world, it seems most databases have cross platform support in
|
|
3220 |
perl. You can find the book on DBI programming at
|
|
3221 |
http://www.oreilly.com/catalog/perldbi/
|
|
3222 |
|
|
3223 |
DBD::ODBC is often your ticket on Win32. On UNIX, commercial vendors
|
|
3224 |
like OpenLink Software (http://www.openlinksw.com/) provide the nuts and
|
|
3225 |
bolts for ODBC.
|
|
3226 |
|
|
3227 |
Database connections can be cached per process with Apache::DBI.
|
3202 | 3228 |
|
3203 | 3229 |
What is the best way to debug an ASP application ?
|
3204 | |
There are lots of perl-ish tricks to make your life developing and debugging
|
3205 | |
an ASP application easier. For starters, you will find some helpful hints by
|
3206 | |
reading the $Response->Debug() API extension, and the Debug configuration
|
3207 | |
directive.
|
|
3230 |
There are lots of perl-ish tricks to make your life developing and
|
|
3231 |
debugging an ASP application easier. For starters, you will find some
|
|
3232 |
helpful hints by reading the $Response->Debug() API extension, and the
|
|
3233 |
Debug configuration directive.
|
3208 | 3234 |
|
3209 | 3235 |
How are file uploads handled?
|
3210 | |
Please see the CGI section. File uploads are implemented through CGI.pm
|
3211 | |
which is loaded at runtime only for this purpose. This is the only time that
|
3212 | |
CGI.pm will be loaded by Apache::ASP, which implements all other cgi-ish
|
3213 | |
functionality natively. The rationale for not implementing file uploads
|
3214 | |
natively is that the extra 100K in memory for CGI.pm shouldn't be a big deal
|
3215 | |
if you are working with bulky file uploads.
|
|
3236 |
Please see the CGI section. File uploads are implemented through CGI.pm
|
|
3237 |
which is loaded at runtime only for this purpose. This is the only time
|
|
3238 |
that CGI.pm will be loaded by Apache::ASP, which implements all other
|
|
3239 |
cgi-ish functionality natively. The rationale for not implementing file
|
|
3240 |
uploads natively is that the extra 100K in memory for CGI.pm shouldn't
|
|
3241 |
be a big deal if you are working with bulky file uploads.
|
3216 | 3242 |
|
3217 | 3243 |
How do I access the ASP Objects in general?
|
3218 | |
All the ASP objects can be referenced through the main package with the
|
3219 | |
following notation:
|
3220 | |
|
3221 | |
$main::Response->Write("html output");
|
3222 | |
|
3223 | |
This notation can be used from anywhere in perl, including routines
|
3224 | |
registered with $Server->RegisterCleanup().
|
3225 | |
|
3226 | |
You use the normal notation in your scripts, includes, and global.asa:
|
3227 | |
|
3228 | |
$Response->Write("html output");
|
|
3244 |
All the ASP objects can be referenced through the main package with the
|
|
3245 |
following notation:
|
|
3246 |
|
|
3247 |
$main::Response->Write("html output");
|
|
3248 |
|
|
3249 |
This notation can be used from anywhere in perl, including routines
|
|
3250 |
registered with $Server->RegisterCleanup().
|
|
3251 |
|
|
3252 |
You use the normal notation in your scripts, includes, and global.asa:
|
|
3253 |
|
|
3254 |
$Response->Write("html output");
|
3229 | 3255 |
|
3230 | 3256 |
Can I print() in ASP?
|
3231 | |
Yes. You can print() from anywhere in an ASP script as it aliases to the
|
3232 | |
$Response->Write() method. Using print() is portable with PerlScript when
|
3233 | |
using Win32::ASP in that environment.
|
|
3257 |
Yes. You can print() from anywhere in an ASP script as it aliases to the
|
|
3258 |
$Response->Write() method. Using print() is portable with PerlScript
|
|
3259 |
when using Win32::ASP in that environment.
|
3234 | 3260 |
|
3235 | 3261 |
Do I have access to ActiveX objects?
|
3236 | |
Only under Win32 will developers have access to ActiveX objects through the
|
3237 | |
perl Win32::OLE interface. This will remain true until there are free COM
|
3238 | |
ports to the UNIX world. At this time, there is no ActiveX for the UNIX
|
3239 | |
world.
|
|
3262 |
Only under Win32 will developers have access to ActiveX objects through
|
|
3263 |
the perl Win32::OLE interface. This will remain true until there are
|
|
3264 |
free COM ports to the UNIX world. At this time, there is no ActiveX for
|
|
3265 |
the UNIX world.
|
3240 | 3266 |
|
3241 | 3267 |
Support and Production
|
3242 | 3268 |
How do I get things I want done?!
|
3243 | |
If you find a problem with the module, or would like a feature added, please
|
3244 | |
mail support, as listed in the SUPPORT section, and your needs will be
|
3245 | |
promptly and seriously considered, then implemented.
|
|
3269 |
If you find a problem with the module, or would like a feature added,
|
|
3270 |
please mail support, as listed in the SUPPORT section, and your needs
|
|
3271 |
will be promptly and seriously considered, then implemented.
|
3246 | 3272 |
|
3247 | 3273 |
What is the state of Apache::ASP? Can I publish a web site on it?
|
3248 | |
Apache::ASP has been production ready since v.02. Work being done on the
|
3249 | |
module is on a per need basis, with the goal being to eventually have the
|
3250 | |
ASP API completed, with full portability to ActiveState PerlScript and MKS
|
3251 | |
PScript. If you can suggest any changes to facilitate these goals, your
|
3252 | |
comments are welcome.
|
|
3274 |
Apache::ASP has been production ready since v.02. Work being done on the
|
|
3275 |
module is on a per need basis, with the goal being to eventually have
|
|
3276 |
the ASP API completed, with full portability to ActiveState PerlScript
|
|
3277 |
and MKS PScript. If you can suggest any changes to facilitate these
|
|
3278 |
goals, your comments are welcome.
|
3253 | 3279 |
|
3254 | 3280 |
TUNING
|
3255 | 3281 |
A little tuning can go a long way, and can make the difference between a web
|
|
3272 | 3298 |
Apache::ASP v2.29+
|
3273 | 3299 |
|
3274 | 3300 |
Apache::ASP Site Tuning
|
3275 | |
http://www.chamas.com/asp/articles/perlmonth3_tune.html
|
|
3301 |
http://www.apache-asp.org/articles/perlmonth3_tune.html
|
3276 | 3302 |
|
3277 | 3303 |
Tuning & Benchmarking
|
3278 | 3304 |
When performance tuning, it is important to have a tool to measure the
|
|
3442 | 3468 |
|
3443 | 3469 |
Other honorable mentions include:
|
3444 | 3470 |
|
3445 | |
!! Doug MacEachern, for moral support and of course mod_perl
|
|
3471 |
!! Gregory Youngblood, Thanos Chatziathanassiou, & Tsirkin Evgeny for keeping the flame alive!
|
|
3472 |
|
|
3473 |
:) Doug MacEachern, for moral support and of course mod_perl
|
3446 | 3474 |
:) Helmut Zeilinger, Skylos, John Drago, and Warren Young for their help in the community
|
3447 | 3475 |
:) Randy Kobes, for the win32 binaries, and for always being the epitome of helpfulness
|
3448 | 3476 |
:) Francesco Pasqualini, for bug fixes with stand alone CGI mode on Win32
|
|
3510 | 3538 |
SUPPORT
|
3511 | 3539 |
COMMUNITY
|
3512 | 3540 |
Mailing List Archives
|
3513 | |
Try the Apache::ASP mailing list archive first when working through an issue
|
3514 | |
as others may have had the same question as you, then try the mod_perl list
|
3515 | |
archives since often problems working with Apache::ASP are really mod_perl
|
3516 | |
ones.
|
3517 | |
|
3518 | |
The Apache::ASP mailing list archives are located at:
|
3519 | |
|
3520 | |
http://groups.yahoo.com/group/apache-asp/
|
3521 | |
http://www.mail-archive.com/asp%40perl.apache.org/
|
3522 | |
|
3523 | |
The mod_perl mailing list archives are located at:
|
3524 | |
|
3525 | |
http://forum.swarthmore.edu/epigone/modperl
|
3526 | |
http://www.egroups.com/group/modperl/
|
|
3541 |
Try the Apache::ASP mailing list archive first when working through an
|
|
3542 |
issue as others may have had the same question as you, then try the
|
|
3543 |
mod_perl list archives since often problems working with Apache::ASP are
|
|
3544 |
really mod_perl ones.
|
|
3545 |
|
|
3546 |
The Apache::ASP mailing list archives are located at:
|
|
3547 |
|
|
3548 |
http://groups.yahoo.com/group/apache-asp/
|
|
3549 |
http://www.mail-archive.com/asp%40perl.apache.org/
|
|
3550 |
|
|
3551 |
The mod_perl mailing list archives are located at:
|
|
3552 |
|
|
3553 |
http://mail-archives.apache.org/mod_mbox/perl-modperl/
|
3527 | 3554 |
|
3528 | 3555 |
Mailing List
|
3529 | |
Please subscribe to the Apache::ASP mailing list by sending an email to
|
3530 | |
asp-subscribe[at]perl.apache.org and send your questions or comments to the
|
3531 | |
list after your subscription is confirmed.
|
3532 | |
|
3533 | |
To unsubscribe from the Apache::ASP mailing list, just send an email to
|
3534 | |
asp-unsubscribe[at]perl.apache.org
|
3535 | |
|
3536 | |
If you think this is a mod_perl specific issue, you can send your question
|
3537 | |
to modperl[at]apache.org
|
|
3556 |
Please subscribe to the Apache::ASP mailing list by sending an email to
|
|
3557 |
asp-subscribe[at]perl.apache.org and send your questions or comments to
|
|
3558 |
the list after your subscription is confirmed.
|
|
3559 |
|
|
3560 |
To unsubscribe from the Apache::ASP mailing list, just send an email to
|
|
3561 |
asp-unsubscribe[at]perl.apache.org
|
|
3562 |
|
|
3563 |
If you think this is a mod_perl specific issue, you can send your
|
|
3564 |
question to modperl[at]apache.org
|
3538 | 3565 |
|
3539 | 3566 |
Donations
|
3540 | |
Apache::ASP is freely distributed under the terms of the GPL license ( see
|
3541 | |
the LICENSE section ). If you would like to donate time to the project,
|
3542 | |
please get involved on the Apache::ASP Mailing List, and submit ideas, bug
|
3543 | |
fixes and patches for the core system, and perhaps most importantly to
|
3544 | |
simply support others in learning the ins and outs of the software.
|
|
3567 |
Apache::ASP is freely distributed under the terms of the Perl artistic
|
|
3568 |
license ( see the LICENSE section ). If you would like to donate time to
|
|
3569 |
the project, please get involved on the Apache::ASP Mailing List, and
|
|
3570 |
submit ideas, bug fixes and patches for the core system, and perhaps
|
|
3571 |
most importantly to simply support others in learning the ins and outs
|
|
3572 |
of the software.
|
3545 | 3573 |
|
3546 | 3574 |
COMMERCIAL
|
3547 | 3575 |
If you would like commercial support for Apache::ASP, please check out any
|
3548 | 3576 |
of the following listed companies. Note that this is not an endorsement, and
|
3549 | |
if you would like your company listed here, please email asp-dev [at]
|
3550 | |
chamas.com with your information.
|
|
3577 |
if you would like your company listed here, please email
|
|
3578 |
asp[at]perl.apache.org with your information.
|
3551 | 3579 |
|
3552 | 3580 |
AlterCom
|
3553 | |
We use, host and support mod_perl. We would love to be able to help anyone
|
3554 | |
with their mod_perl Apache::ASP needs. Our mod_perl hosting is $24.95 mo.
|
3555 | |
|
3556 | |
http://altercom.com/home.html
|
|
3581 |
We use, host and support mod_perl. We would love to be able to help
|
|
3582 |
anyone with their mod_perl Apache::ASP needs. Our mod_perl hosting is
|
|
3583 |
$24.95 mo.
|
|
3584 |
|
|
3585 |
http://altercom.com/home.html
|
3557 | 3586 |
|
3558 | 3587 |
The Cyberchute Connection
|
3559 | |
Our hosting services support Apache:ASP along with Mod_Perl, PHP and MySQL.
|
3560 | |
|
3561 | |
http://www.Cyberchute.com
|
3562 | |
|
3563 | |
GrokThis.net
|
3564 | |
Web hosting provider. Specializing in mod_perl and mod_python hosting, we
|
3565 | |
allow users to edit their own Apache configuration files and run their own
|
3566 | |
Apache servers.
|
3567 | |
|
3568 | |
http://grokthis.net
|
|
3588 |
Our hosting services support Apache:ASP along with Mod_Perl, PHP and
|
|
3589 |
MySQL.
|
|
3590 |
|
|
3591 |
http://www.Cyberchute.com
|
3569 | 3592 |
|
3570 | 3593 |
OmniTI
|
3571 | |
OmniTI supports Apache and mod_perl (including Apache::ASP) and offers
|
3572 | |
competitive pricing for both hourly and project-based jobs. OmniTI has
|
3573 | |
extensive experience managing and maintaining both large and small projects.
|
3574 | |
Our services range from short-term consulting to project-based development,
|
3575 | |
and include ongoing maintenance and hosting.
|
3576 | |
|
3577 | |
http://www.omniti.com
|
|
3594 |
OmniTI supports Apache and mod_perl (including Apache::ASP) and offers
|
|
3595 |
competitive pricing for both hourly and project-based jobs. OmniTI has
|
|
3596 |
extensive experience managing and maintaining both large and small
|
|
3597 |
projects. Our services range from short-term consulting to project-based
|
|
3598 |
development, and include ongoing maintenance and hosting.
|
|
3599 |
|
|
3600 |
http://www.omniti.com
|
3578 | 3601 |
|
3579 | 3602 |
TUX IT AG
|
3580 | |
Main business is implementing and maintaining infrastructure for big
|
3581 | |
websites and portals, as well as developing web applications for our
|
3582 | |
customers (Apache, Apache::ASP, PHP, Perl, MySQL, etc.)
|
3583 | |
|
3584 | |
The prices for our service are about 900 EUR per day which is negotiable
|
3585 | |
(for longer projects, etc.).
|
3586 | |
|
3587 | |
http://www.tuxit.de
|
|
3603 |
Main business is implementing and maintaining infrastructure for big
|
|
3604 |
websites and portals, as well as developing web applications for our
|
|
3605 |
customers (Apache, Apache::ASP, PHP, Perl, MySQL, etc.)
|
|
3606 |
|
|
3607 |
The prices for our service are about 900 EUR per day which is negotiable
|
|
3608 |
(for longer projects, etc.).
|
|
3609 |
|
|
3610 |
http://www.tuxit.de
|
3588 | 3611 |
|
3589 | 3612 |
SITES USING
|
3590 | 3613 |
What follows is a list of public sites that are using Apache::ASP. If you
|
3591 | 3614 |
use the software for your site, and would like to show your support of the
|
3592 | |
software by being listed, please send your link to asp-dev [at] chamas.com
|
|
3615 |
software by being listed, please send your link to asp[at]perl.apache.org
|
3593 | 3616 |
|
3594 | 3617 |
For a list of testimonials of those using Apache::ASP, please see the
|
3595 | 3618 |
TESTIMONIALS section.
|
3596 | 3619 |
|
3597 | |
Zapisy - Testy
|
3598 | |
http://www.ch.pwr.wroc.pl/~bruno/testy/
|
|
3620 |
PERSONiO Match
|
|
3621 |
http://www.personio.com/home.asp
|
|
3622 |
|
|
3623 |
gutscheinwurst.de - a German voucher community
|
|
3624 |
http://www.gutscheinwurst.de
|
3599 | 3625 |
|
3600 | 3626 |
SalesJobs.com
|
3601 | 3627 |
http://www.salesjobs.com
|
3602 | 3628 |
|
|
3629 |
hanschur.de
|
|
3630 |
http://www.hanschur.de
|
|
3631 |
|
|
3632 |
Webtist
|
|
3633 |
http://www.webtist.de
|
|
3634 |
|
3603 | 3635 |
FreeLotto
|
3604 | 3636 |
http://www.freelotto.com
|
3605 | 3637 |
|
|
3618 | 3650 |
WebTime
|
3619 | 3651 |
http://webtime-project.net
|
3620 | 3652 |
|
3621 | |
Meet-O-Matic
|
3622 | |
http://meetomatic.com/about.asp
|
3623 | |
|
3624 | |
Apache Hello World Benchmarks
|
3625 | |
http://chamas.com/bench/
|
3626 | |
|
3627 | 3653 |
AlterCom, Advanced Web Hosting
|
3628 | 3654 |
http://altercom.com/
|
3629 | 3655 |
|
|
3633 | 3659 |
ESSTECwebservices
|
3634 | 3660 |
http://www.esstec.be/
|
3635 | 3661 |
|
3636 | |
SQLRef
|
3637 | |
http://comclub.dyndns.org:8081/sqlref/
|
3638 | |
|
3639 | |
Bouygues Telecom Enterprises
|
3640 | |
http://www.b2bouygtel.com
|
3641 | |
|
3642 | 3662 |
Alumni.NET
|
3643 | 3663 |
http://www.alumni.net
|
3644 | 3664 |
|
3645 | 3665 |
Anime Wallpapers dot com
|
3646 | 3666 |
http://www.animewallpapers.com/
|
3647 | 3667 |
|
3648 | |
Chamas Enterprises Inc.
|
3649 | |
http://www.chamas.com
|
3650 | |
|
3651 | 3668 |
Cine.gr
|
3652 | 3669 |
http://www.cine.gr
|
3653 | 3670 |
|
|
3666 | 3683 |
Integra
|
3667 | 3684 |
http://www.integra.ru/
|
3668 | 3685 |
|
3669 | |
Internetowa Gielda Samochodowa
|
3670 | |
http://www.gielda.szczecin.pl
|
3671 | |
|
3672 | 3686 |
Money FM
|
3673 | 3687 |
http://www.moneyfm.gr
|
3674 | 3688 |
|
|
3689 | 3703 |
|
3690 | 3704 |
redhat.com | support
|
3691 | 3705 |
http://www.redhat.com/apps/support/
|
3692 | |
|
3693 | |
Samara.RU
|
3694 | |
http://portal.samara.ru/
|
3695 | 3706 |
|
3696 | 3707 |
Spotlight
|
3697 | 3708 |
http://www.spotlight.com.au
|
|
3708 | 3719 |
For a list of sites using Apache::ASP, please see the SITES USING section.
|
3709 | 3720 |
|
3710 | 3721 |
Red Hat
|
3711 | |
We're using Apache::ASP on www.redhat.com. We find Apache::ASP very easy to
|
3712 | |
use, and it's quick for new developers to get up to speed with it, given
|
3713 | |
that many people have already been exposed to the ASP object model that
|
3714 | |
Apache::ASP is based on.
|
3715 | |
|
3716 | |
The documentation is comprehensive and easy to understand, and the community
|
3717 | |
and maintainer have been very helpful whenever we've had questions.
|
3718 | |
|
3719 | |
-- Tom Lancaster, Red Hat
|
|
3722 |
We're using Apache::ASP on www.redhat.com. We find Apache::ASP very easy
|
|
3723 |
to use, and it's quick for new developers to get up to speed with it,
|
|
3724 |
given that many people have already been exposed to the ASP object model
|
|
3725 |
that Apache::ASP is based on.
|
|
3726 |
|
|
3727 |
The documentation is comprehensive and easy to understand, and the
|
|
3728 |
community and maintainer have been very helpful whenever we've had
|
|
3729 |
questions.
|
|
3730 |
|
|
3731 |
-- Tom Lancaster, Red Hat
|
|
3732 |
|
|
3733 |
Anime Wallpaper at Anime Cubed
|
|
3734 |
Your suite has got our old CGI implementation beat, hands down. Our site
|
|
3735 |
is divided into two main areas, each run by a separate developer, and
|
|
3736 |
the Apache::ASP section runs head and shoulders above the other side.
|
|
3737 |
Anyone who is still using anything but your product to implement their
|
|
3738 |
webpages seriously needs to take a look at how versatile and powerful
|
|
3739 |
Apache::ASP is. Thanks again for such great work!
|
|
3740 |
|
|
3741 |
-- Al from 'Anime Wallpaper at Anime Cubed', http://www.animecubed.com/wallpapers/
|
|
3742 |
|
|
3743 |
gutscheinwurst.de
|
|
3744 |
I am the web master of http://www.gutscheinwurst.de , a German voucher
|
|
3745 |
community. We use Apache::Asp to run our backend & administration
|
|
3746 |
servers for the system. We started using Apache::ASP to see whether it
|
|
3747 |
is a valid alternative to IIS legacy systems. So far all expectations in
|
|
3748 |
regard of performance, ease of development and integration have been
|
|
3749 |
fulfilled or exceeded. Thank's for such a great product :)
|
|
3750 |
|
|
3751 |
-- Johnannes Leimbach
|
3720 | 3752 |
|
3721 | 3753 |
D. L. Fox
|
3722 | |
I had programmed in Perl for some time ... but, since I also knew VB, I had
|
3723 | |
switched to VB in IIS-ASP for web stuff because of its ease of use in
|
3724 | |
embedding code with HTML ... When I discovered Apache-ASP, it was like a
|
3725 | |
dream come true. I would much rather code in Perl than any other language.
|
3726 | |
Thanks for such a fine product!
|
|
3754 |
I had programmed in Perl for some time ... but, since I also knew VB, I
|
|
3755 |
had switched to VB in IIS-ASP for web stuff because of its ease of use
|
|
3756 |
in embedding code with HTML ... When I discovered Apache-ASP, it was
|
|
3757 |
like a dream come true. I would much rather code in Perl than any other
|
|
3758 |
language. Thanks for such a fine product!
|
3727 | 3759 |
|
3728 | 3760 |
HOSTING 321, LLC.
|
3729 | |
After discontinuing Windows-based hosting due to the high cost of software,
|
3730 | |
our clients are thrilled with Apache::ASP and they swear ASP it's faster
|
3731 | |
than before. Installation was a snap on our 25-server web farm with a small
|
3732 | |
shell script and everything is running perfectly! The documentation is very
|
3733 | |
comprehensive and everyone has been very helpful during this migration.
|
3734 | |
|
3735 | |
Thank you!
|
3736 | |
|
3737 | |
-- Richard Ward, HOSTING 321, LLC.
|
|
3761 |
After discontinuing Windows-based hosting due to the high cost of
|
|
3762 |
software, our clients are thrilled with Apache::ASP and they swear ASP
|
|
3763 |
it's faster than before. Installation was a snap on our 25-server web
|
|
3764 |
farm with a small shell script and everything is running perfectly! The
|
|
3765 |
documentation is very comprehensive and everyone has been very helpful
|
|
3766 |
during this migration.
|
|
3767 |
|
|
3768 |
Thank you!
|
|
3769 |
|
|
3770 |
-- Richard Ward, HOSTING 321, LLC.
|
3738 | 3771 |
|
3739 | 3772 |
Concept Online Ltd.
|
3740 | |
I would like to say that your ASP module rocks :-) We have practically
|
3741 | |
stopped developing in anything else about half a year ago, and are now using
|
3742 | |
Apache::ASP extensively. I just love Perl, and whereever we are not "forced"
|
3743 | |
to use JSP, we chose ASP. It is fast, reliable, versatile, documented in a
|
3744 | |
way that is the best for professionals - so thank you for writting and
|
3745 | |
maintaining it!
|
3746 | |
|
3747 | |
-- Csongor Fagyal, Concept Online Ltd.
|
|
3773 |
I would like to say that your ASP module rocks :-) We have practically
|
|
3774 |
stopped developing in anything else about half a year ago, and are now
|
|
3775 |
using Apache::ASP extensively. I just love Perl, and whereever we are
|
|
3776 |
not "forced" to use JSP, we chose ASP. It is fast, reliable, versatile,
|
|
3777 |
documented in a way that is the best for professionals - so thank you
|
|
3778 |
for writting and maintaining it!
|
|
3779 |
|
|
3780 |
-- Csongor Fagyal, Concept Online Ltd.
|
3748 | 3781 |
|
3749 | 3782 |
WebTime
|
3750 | |
As we have seen with WebTime, Apache::ASP is not only good for the
|
3751 | |
development of website, but also for the development of webtools. Since I
|
3752 | |
first discoverd it, I made it a must-have in my society by taking
|
3753 | |
traditional PHP users to the world of perl afficionados.
|
3754 | |
|
3755 | |
Having the possibility to use Apache::ASP with mod_perl or mod_cgi make it
|
3756 | |
constraintless to use because of CGI's universality and perl's portability.
|
3757 | |
|
3758 | |
-- Grégoire Lejeune
|
|
3783 |
As we have seen with WebTime, Apache::ASP is not only good for the
|
|
3784 |
development of website, but also for the development of webtools. Since
|
|
3785 |
I first discoverd it, I made it a must-have in my society by taking
|
|
3786 |
traditional PHP users to the world of perl afficionados.
|
|
3787 |
|
|
3788 |
Having the possibility to use Apache::ASP with mod_perl or mod_cgi make
|
|
3789 |
it constraintless to use because of CGI's universality and perl's
|
|
3790 |
portability.
|
|
3791 |
|
|
3792 |
-- Grégoire Lejeune
|
3759 | 3793 |
|
3760 | 3794 |
David Kulp
|
3761 | |
First, I just want to say that I am very very impressed with Apache::ASP. I
|
3762 | |
just want to gush with praise after looking at many other implementations of
|
3763 | |
perl embedded code and being very underwhelmed. This is so damn slick and
|
3764 | |
clean. Kudos! ...
|
3765 | |
|
3766 | |
... I'm very pleased how quickly I've been able to mock up the application.
|
3767 | |
I've been writing Perl CGI off and on since 1993(!) and I can tell you that
|
3768 | |
Apache::ASP is a pleasure. (Last year I tried Zope and just about threw my
|
3769 | |
computer out the window.)
|
3770 | |
|
3771 | |
-- David Kulp
|
|
3795 |
First, I just want to say that I am very very impressed with
|
|
3796 |
Apache::ASP. I just want to gush with praise after looking at many other
|
|
3797 |
implementations of perl embedded code and being very underwhelmed. This
|
|
3798 |
is so damn slick and clean. Kudos! ...
|
|
3799 |
|
|
3800 |
... I'm very pleased how quickly I've been able to mock up the
|
|
3801 |
application. I've been writing Perl CGI off and on since 1993(!) and I
|
|
3802 |
can tell you that Apache::ASP is a pleasure. (Last year I tried Zope and
|
|
3803 |
just about threw my computer out the window.)
|
|
3804 |
|
|
3805 |
-- David Kulp
|
3772 | 3806 |
|
3773 | 3807 |
MFM Commmunication Software, Inc.
|
3774 | |
Working in a team environment where you have HTML coders and perl coders,
|
3775 | |
Apache::ASP makes it easy for the HTML folks to change the look of the page
|
3776 | |
without knowing perl. Using Apache::ASP (instead of another embedded perl
|
3777 | |
solution) allows the HTML jockeys to use a variety of HTML tools that
|
3778 | |
understand ASP, which reduces the amount of code they break when editing the
|
3779 | |
HTML. Using Apache::ASP instead of M$ ASP allows us to use perl (far
|
3780 | |
superior to VBScript) and Apache (far superior to IIS).
|
3781 | |
|
3782 | |
We've been very pleased with Apache::ASP and its support.
|
|
3808 |
Working in a team environment where you have HTML coders and perl
|
|
3809 |
coders, Apache::ASP makes it easy for the HTML folks to change the look
|
|
3810 |
of the page without knowing perl. Using Apache::ASP (instead of another
|
|
3811 |
embedded perl solution) allows the HTML jockeys to use a variety of HTML
|
|
3812 |
tools that understand ASP, which reduces the amount of code they break
|
|
3813 |
when editing the HTML. Using Apache::ASP instead of M$ ASP allows us to
|
|
3814 |
use perl (far superior to VBScript) and Apache (far superior to IIS).
|
|
3815 |
|
|
3816 |
We've been very pleased with Apache::ASP and its support.
|
3783 | 3817 |
|
3784 | 3818 |
Planet of Music
|
3785 | |
Apache::ASP has been a great tool. Just a little background.... the whole
|
3786 | |
site had been in cgi flat files when I started here. I was looking for a
|
3787 | |
technology that would allow me to write the objects and NEVER invoke
|
3788 | |
CGI.pm... I found it and hopefuly I will be able to implement this every
|
3789 | |
site I go to.
|
3790 | |
|
3791 | |
When I got here there was a huge argument about needing a game engine and I
|
3792 | |
belive this has been the key... Games are approx. 10 time faster than
|
3793 | |
before. The games don't break anylonger. All in all a great tool for
|
3794 | |
advancement.
|
3795 | |
|
3796 | |
-- JC Fant IV
|
|
3819 |
Apache::ASP has been a great tool. Just a little background.... the
|
|
3820 |
whole site had been in cgi flat files when I started here. I was looking
|
|
3821 |
for a technology that would allow me to write the objects and NEVER
|
|
3822 |
invoke CGI.pm... I found it and hopefuly I will be able to implement
|
|
3823 |
this every site I go to.
|
|
3824 |
|
|
3825 |
When I got here there was a huge argument about needing a game engine
|
|
3826 |
and I belive this has been the key... Games are approx. 10 time faster
|
|
3827 |
than before. The games don't break anylonger. All in all a great tool
|
|
3828 |
for advancement.
|
|
3829 |
|
|
3830 |
-- JC Fant IV
|
3797 | 3831 |
|
3798 | 3832 |
Cine.gr
|
3799 | |
...we ported our biggest yet ASP site from IIS (well, actually rewrote),
|
3800 | |
Cine.gr and it is a killer site. In some cases, the whole thing got almost
|
3801 | |
25 (no typo) times faster... None of this would ever be possible without
|
3802 | |
Apache::ASP (I do not ever want to write ``print "<HTML>\n";'' again).
|
|
3833 |
...we ported our biggest yet ASP site from IIS (well, actually rewrote),
|
|
3834 |
Cine.gr and it is a killer site. In some cases, the whole thing got
|
|
3835 |
almost 25 (no typo) times faster... None of this would ever be possible
|
|
3836 |
without Apache::ASP (I do not ever want to write ``print "<HTML>\n";''
|
|
3837 |
again).
|
3803 | 3838 |
|
3804 | 3839 |
RESOURCES
|
3805 | 3840 |
Here are some important resources listed related to the use of Apache::ASP
|
|
3819 | 3854 |
Embedded Perl ( part of a series on Perl )
|
3820 | 3855 |
http://www.wdvl.com/Authoring/Languages/Perl/PerlfortheWeb/index15.html
|
3821 | 3856 |
|
3822 | |
Benchmarking
|
3823 | |
Apache Hello World Benchmarks
|
3824 | |
http://chamas.com/bench/
|
3825 | |
|
3826 | 3857 |
Books
|
3827 | 3858 |
mod_perl "Eagle" Book
|
3828 | 3859 |
http://www.modperl.com
|
|
3833 | 3864 |
Programming the Perl DBI
|
3834 | 3865 |
http://www.oreilly.com/catalog/perldbi/
|
3835 | 3866 |
|
3836 | |
Presentations
|
3837 | |
Apache::ASP Tutorial, 2000 Open Source Convention ( PowerPoint )
|
3838 | |
http://www.chamas.com/asp/OSS_convention_2000.pps
|
3839 | |
|
3840 | |
Advanced Apache::ASP Tutorial, 2001 Open Source Convention ( Zipped PDF )
|
3841 | |
http://www.chamas.com/asp/OSS_convention_2001.zip
|
3842 | |
|
3843 | |
Advanced Apache::ASP Tutorial, 2001 Open Source Convention ( PDF )
|
3844 | |
http://www.chamas.com/asp/OSS_convention_2001.pdf
|
3845 | |
|
3846 | 3867 |
Reference Cards
|
3847 | 3868 |
Apache & mod_perl Reference Cards
|
3848 | 3869 |
http://www.refcards.com/
|
|
3851 | 3872 |
mod_perl Apache web module
|
3852 | 3873 |
http://perl.apache.org
|
3853 | 3874 |
|
3854 | |
mod_perl Guide
|
|
3875 |
mod_perl 1.x Guide
|
3855 | 3876 |
http://perl.apache.org/guide/
|
3856 | 3877 |
|
3857 | 3878 |
Perl Programming Language
|
|
3859 | 3880 |
|
3860 | 3881 |
Apache Web Server
|
3861 | 3882 |
http://www.apache.org
|
3862 | |
|
|
3883 |
|
3863 | 3884 |
TODO
|
3864 | 3885 |
There is no specific time frame in which these things will be implemented.
|
3865 | 3886 |
Please let me know if any of these is of particular interest to you, and I
|
|
3869 | 3890 |
+ Database storage of $Session & $Application, so web clusters
|
3870 | 3891 |
may scale better than the current NFS/CIFS StateDir implementation
|
3871 | 3892 |
allows, maybe via Apache::Session.
|
3872 | |
+ Sample Apache::ASP applications beyond ./site/eg
|
3873 | |
+ More caching options like $Server->Cache for user cache
|
3874 | |
and $Response->Cache for page caching
|
3875 | |
+ Caching guide
|
3876 | |
|
3877 | |
MAY BE DONE
|
3878 | |
+ VBScript, ECMAScript or JavaScript interpreters
|
3879 | |
+ Dumping state of Apache::ASP during an error, and being
|
3880 | |
able to go through it with the perl debugger.
|
3881 | 3893 |
|
3882 | 3894 |
CHANGES
|
3883 | 3895 |
Apache::ASP has been in development since 1998, and was production ready
|
|
3891 | 3903 |
|
3892 | 3904 |
+ = improvement - = bug fix (d) = documentations
|
3893 | 3905 |
|
3894 | |
$VERSION = 2.62; $DATE="2011/08/16"
|
3895 | |
|
3896 | |
- Fixed 'application/x-www-form-urlencoded' for AJAX POSTs post
|
3897 | |
Firefox 3.x
|
3898 | |
|
3899 | |
+ First sourceforge.net hosted version
|
3900 | |
|
3901 | |
+ Incremented version number to actually match SVN branch tag
|
3902 | |
|
3903 | |
+ Switched to Big-endian date format in the documentation.
|
3904 | |
Less chance of misunderstandings
|
|
3906 |
$VERSION = 2.63; $DATE="03/14/2018"
|
|
3907 |
+ Added section ``raw'' to MailErrors.inc to debug POSTs without
|
|
3908 |
form fields
|
|
3909 |
|
|
3910 |
- MailErrorsHTML now uses monospaced fonts for errors. Easier on
|
|
3911 |
the eyes and more informative
|
|
3912 |
|
|
3913 |
$VERSION = 2.62; $DATE="08/16/2011"
|
|
3914 |
- Fixed 'application/x-www-form-urlencoded' for AJAX POSTs post
|
|
3915 |
Firefox 3.x
|
|
3916 |
|
|
3917 |
+ First sourceforge.net hosted version
|
|
3918 |
|
|
3919 |
+ Incremented version number to actually match SVN branch tag
|
3905 | 3920 |
|
3906 | 3921 |
$VERSION = 2.61; $DATE="05/24/2008"
|
3907 | |
|
3908 | |
- updated for more recent mod_perl 2 environment to trigger correct loading of modules
|
3909 | |
|
3910 | |
+ loads modules in a backwards compatible way for older versions of mod_perl 1.99_07 to 1.99_09
|
3911 | |
|
3912 | |
+ license changes from GPL to Perl Artistic License
|
3913 | |
|
3914 | |
Please see README for changes for past versions.
|
|
3922 |
- updated for more recent mod_perl 2 environment to trigger correct loading of modules
|
|
3923 |
|
|
3924 |
+ loads modules in a backwards compatible way for older versions of mod_perl 1.99_07 to 1.99_09
|
|
3925 |
|
|
3926 |
+ license changes from GPL to Perl Artistic License
|
3915 | 3927 |
|
3916 | 3928 |
$VERSION = 2.59; $DATE="05/23/2005"
|
3917 | |
+ added "use bytes" to Response object to calculate Content-Length
|
3918 | |
correctly for UTF8 data, which should require therefore at least
|
3919 | |
perl version 5.6 installed
|
3920 | |
|
3921 | |
+ updated to work with latest mod_perl 2.0 module naming convention,
|
3922 | |
thanks to Randy Kobes for patch
|
3923 | |
|
3924 | |
+ examples now exclude usage of Apache::Filter & Apache::SSI under mod_perl 2.0
|
|
3929 |
+ added "use bytes" to Response object to calculate Content-Length
|
|
3930 |
correctly for UTF8 data, which should require therefore at least
|
|
3931 |
perl version 5.6 installed
|
|
3932 |
|
|
3933 |
+ updated to work with latest mod_perl 2.0 module naming convention,
|
|
3934 |
thanks to Randy Kobes for patch
|
|
3935 |
|
|
3936 |
+ examples now exclude usage of Apache::Filter & Apache::SSI under mod_perl 2.0
|
3925 | 3937 |
|
3926 | 3938 |
$VERSION = 2.57; $DATE="01/29/2004"
|
3927 | |
- $Server->Transfer will update $0 correctly
|
3928 | |
|
3929 | |
- return 0 for mod_perl handler to work with latest mod_perl 2 release
|
3930 | |
when we were returning 200 ( HTTP_OK ) before
|
3931 | |
|
3932 | |
- fixed bug in $Server->URL when called like $Server->URL($url)
|
3933 | |
without parameters. Its not clear which perl versions this bug
|
3934 | |
affected.
|
|
3939 |
- $Server->Transfer will update $0 correctly
|
|
3940 |
|
|
3941 |
- return 0 for mod_perl handler to work with latest mod_perl 2 release
|
|
3942 |
when we were returning 200 ( HTTP_OK ) before
|
|
3943 |
|
|
3944 |
- fixed bug in $Server->URL when called like $Server->URL($url)
|
|
3945 |
without parameters. Its not clear which perl versions this bug
|
|
3946 |
affected.
|
3935 | 3947 |
|
3936 | 3948 |
$VERSION = 2.55; $DATE="08/09/2003"
|
3937 | |
- Bug fixes for running on standalone CGI mode on Win32 submitted
|
3938 | |
by Francesco Pasqualini
|
3939 | |
|
3940 | |
+ Added Apache::ASP::Request::BINMODE for binmode() being
|
3941 | |
called on STDIN after STDIN is tied to $Request object
|
3942 | |
|
3943 | |
+ New RequestBinaryRead configuration created, may be turned off
|
3944 | |
to prevent $Request object from reading POST data
|
3945 | |
|
3946 | |
++ mod_perl 2 optmizations, there was a large code impact on this,
|
3947 | |
as much code was restructured to reduce the differences between
|
3948 | |
mod_perl 1 and mod_perl 2, most importantly, Apache::compat is
|
3949 | |
no longer used
|
3950 | |
|
3951 | |
+ preloaded CGI for file uploads in the mod_perl environment
|
3952 | |
|
3953 | |
- When XSLT config is set, $Response->Redirect() should work now
|
3954 | |
Thanks to Marcus Zoller for pointing problem out
|
3955 | |
|
3956 | |
+ Added CookieDomain setting, documented, and added test to cover
|
3957 | |
it in t/cookies.t . Setting suggested by Uwe Riehm, who nicely
|
3958 | |
submitted some code for this.
|
|
3949 |
- Bug fixes for running on standalone CGI mode on Win32 submitted
|
|
3950 |
by Francesco Pasqualini
|
|
3951 |
|
|
3952 |
+ Added Apache::ASP::Request::BINMODE for binmode() being
|
|
3953 |
called on STDIN after STDIN is tied to $Request object
|
|
3954 |
|
|
3955 |
+ New RequestBinaryRead configuration created, may be turned off
|
|
3956 |
to prevent $Request object from reading POST data
|
|
3957 |
|
|
3958 |
++ mod_perl 2 optmizations, there was a large code impact on this,
|
|
3959 |
as much code was restructured to reduce the differences between
|
|
3960 |
mod_perl 1 and mod_perl 2, most importantly, Apache::compat is
|
|
3961 |
no longer used
|
|
3962 |
|
|
3963 |
+ preloaded CGI for file uploads in the mod_perl environment
|
|
3964 |
|
|
3965 |
- When XSLT config is set, $Response->Redirect() should work now
|
|
3966 |
Thanks to Marcus Zoller for pointing problem out
|
|
3967 |
|
|
3968 |
+ Added CookieDomain setting, documented, and added test to cover
|
|
3969 |
it in t/cookies.t . Setting suggested by Uwe Riehm, who nicely
|
|
3970 |
submitted some code for this.
|
3959 | 3971 |
|
3960 | 3972 |
$VERSION = 2.53; $DATE="04/10/2003"
|
3961 | |
+ XMLSubs tags with "-" in them will have "-" replaced with "_" or underscore, so a
|
3962 | |
tag like <my:render-table /> will be translated to &my::render_table() ... tags with
|
3963 | |
- in them are common in extended XML syntaxes, but perl subs cannot have - in them only.
|
3964 | |
|
3965 | |
+ Clean setting now works on output when $Response->{ContentType} begins with text/html;
|
3966 | |
like "text/html; charset=iso-8859-2" ... before Clean would only work on output marked
|
3967 | |
with ContentType text/html. Thanks to Szymon Juraszczyk for recommending fix.
|
3968 | |
|
3969 | |
--Fixed a bug which would cause Session_OnEnd to be called twice on sessions in a certain case,
|
3970 | |
particularly when an old expired session gets reused by and web browser... this bug was
|
3971 | |
a result of a incomplete session cleanup method in this case. Thanks to Oleg Kobyakovskiy
|
3972 | |
for reporting this bug. Added test in t/session_events.t to cover this problem going forward.
|
3973 | |
|
3974 | |
- Compile errors from Apache::ASP->Loader() were not being reported. They will
|
3975 | |
be reported again now. Thanks to Thanos Chatziathanassiou for discovering and
|
3976 | |
documenting this bug. Added test in t/load.t to cover this problem going forward.
|
3977 | |
|
3978 | |
+ use of chr(hex($1)) to decode URI encoded parameters instead of pack("c",hex($1))
|
3979 | |
faster & more correct, thanks to Nikolay Melekhin for pointing out this need.
|
3980 | |
|
3981 | |
(d) Added old perlmonth.com articles to ./site/articles in distribution
|
3982 | |
and linked to them from the docs RESOURCES section
|
3983 | |
|
3984 | |
(d) Updated documention for the $Application->SessionCount API
|
3985 | |
|
3986 | |
+ Scripts with named subroutines, which is warned against in the style guide,
|
3987 | |
will not be cached to help prevent my closure problems that often
|
3988 | |
hurt new developers working in mod_perl environments. The downside
|
3989 | |
is that these script will have a performance penalty having to be
|
3990 | |
recompiled each invocation, but this will kill many closure caching
|
3991 | |
bugs that are hard to detect.
|
3992 | |
|
3993 | |
- $Request->FileUpload('upload_file', 'BrowserFile') would return
|
3994 | |
a glob before that would be the file name in scalar form. However
|
3995 | |
this would be interpreted as a reference incorrectly. The fix
|
3996 | |
is to make sure this is always a scalar by stringifying
|
3997 | |
this data internally. Thanks to Richard Curtis for pointing
|
3998 | |
out this bug.
|
|
3973 |
+ XMLSubs tags with "-" in them will have "-" replaced with "_" or underscore, so a
|
|
3974 |
tag like <my:render-table /> will be translated to &my::render_table() ... tags with
|
|
3975 |
- in them are common in extended XML syntaxes, but perl subs cannot have - in them only.
|
|
3976 |
|
|
3977 |
+ Clean setting now works on output when $Response->{ContentType} begins with text/html;
|
|
3978 |
like "text/html; charset=iso-8859-2" ... before Clean would only work on output marked
|
|
3979 |
with ContentType text/html. Thanks to Szymon Juraszczyk for recommending fix.
|
|
3980 |
|
|
3981 |
--Fixed a bug which would cause Session_OnEnd to be called twice on sessions in a certain case,
|
|
3982 |
particularly when an old expired session gets reused by and web browser... this bug was
|
|
3983 |
a result of a incomplete session cleanup method in this case. Thanks to Oleg Kobyakovskiy
|
|
3984 |
for reporting this bug. Added test in t/session_events.t to cover this problem going forward.
|
|
3985 |
|
|
3986 |
- Compile errors from Apache::ASP->Loader() were not being reported. They will
|
|
3987 |
be reported again now. Thanks to Thanos Chatziathanassiou for discovering and
|
|
3988 |
documenting this bug. Added test in t/load.t to cover this problem going forward.
|
|
3989 |
|
|
3990 |
+ use of chr(hex($1)) to decode URI encoded parameters instead of pack("c",hex($1))
|
|
3991 |
faster & more correct, thanks to Nikolay Melekhin for pointing out this need.
|
|
3992 |
|
|
3993 |
(d) Added old perlmonth.com articles to ./site/articles in distribution
|
|
3994 |
and linked to them from the docs RESOURCES section
|
|
3995 |
|
|
3996 |
(d) Updated documention for the $Application->SessionCount API
|
|
3997 |
|
|
3998 |
+ Scripts with named subroutines, which is warned against in the style guide,
|
|
3999 |
will not be cached to help prevent my closure problems that often
|
|
4000 |
hurt new developers working in mod_perl environments. The downside
|
|
4001 |
is that these script will have a performance penalty having to be
|
|
4002 |
recompiled each invocation, but this will kill many closure caching
|
|
4003 |
bugs that are hard to detect.
|
|
4004 |
|
|
4005 |
- $Request->FileUpload('upload_file', 'BrowserFile') would return
|
|
4006 |
a glob before that would be the file name in scalar form. However
|
|
4007 |
this would be interpreted as a reference incorrectly. The fix
|
|
4008 |
is to make sure this is always a scalar by stringifying
|
|
4009 |
this data internally. Thanks to Richard Curtis for pointing
|
|
4010 |
out this bug.
|
3999 | 4011 |
|
4000 | 4012 |
$VERSION = 2.51; $DATE="02/10/2003"
|
4001 | |
+ added t/session_query_parse.t test to cover use of SessionQueryParse
|
4002 | |
and $Server->URL APIs
|
4003 | |
|
4004 | |
- Fixed duplicate "&" bug associated with using $Server->URL
|
4005 | |
and SessionQueryParse together
|
4006 | |
|
4007 | |
+ Patch to allow $Server->URL() to be called multiple times on the same URL
|
4008 | |
as in $Server->URL($Server->URL($url, \%params), \%more_params)
|
4009 | |
|
4010 | |
(d) Added new testimonials & sites & created a separate testimonials page.
|
4011 | |
|
4012 | |
- SessionQueryParse will now add to & to the query strings
|
4013 | |
embedded in the HTML, instead of & for proper HTML generation.
|
4014 | |
Thanks to Peter Galbavy for pointing out and Thanos Chatziathanassiou
|
4015 | |
for suggesting the fix.
|
4016 | |
|
4017 | |
- $Response->{ContentType} set to text/html for developer error reporting,
|
4018 | |
in case this was set to something else before the error occured.
|
4019 | |
Thanks to Philip Mak for reporting.
|
4020 | |
|
4021 | |
- Couple of minor bug fixes under PerlWarn use, thanks Peter Galbavy
|
4022 | |
for reporting.
|
4023 | |
|
4024 | |
+ Added automatic load of "use Apache2" for compat with mod_perl2
|
4025 | |
request objects when Apache::ASP is loaded via "PerlModule Apache::ASP"
|
4026 | |
Thanks to Richard Curtis for reporting bug & subsequent testing.
|
4027 | |
|
4028 | |
- When GlobalPackage config changes, but global.asa has not, global.asa
|
4029 | |
will be recompiled anyway to update the GlobalPackage correctly.
|
4030 | |
Changing GlobalPackage before would cause errors if global.asa was
|
4031 | |
already compiled.
|
4032 | |
|
4033 | |
++ For ANY PerlSetVar type config, OFF/Off/off will be assumed
|
4034 | |
to have value of 0 for that setting. Before, only a couple settings
|
4035 | |
had this semantics, but they all do now for consistency.
|
4036 | |
|
4037 | |
- Fix for InodeNames config on OpenBSD, or any OS that might have
|
4038 | |
a device # of 0 for the file being stat()'d, thanks to Peter Galbavy
|
4039 | |
for bug report.
|
4040 | |
|
4041 | |
++ Total XSLT speedups, 5-10% on large XSLT, 10-15% on small XSLT
|
4042 | |
|
4043 | |
+ bypass meta data check like expires for XSLT Cache() API use
|
4044 | |
because XSLT tranformations don't expire, saves hit to cache dbm
|
4045 | |
for meta data
|
4046 | |
|
4047 | |
+ use of direct Apache::ASP::State methods like FETCH/STORE
|
4048 | |
in Cache() layer so we don't have to go through slower tied interface.
|
4049 | |
This will speed up XSLT & and include output caching mostly.
|
4050 | |
|
4051 | |
+ minor optimizations for speed & memory usage
|
|
4013 |
+ added t/session_query_parse.t test to cover use of SessionQueryParse
|
|
4014 |
and $Server->URL APIs
|
|
4015 |
|
|
4016 |
- Fixed duplicate "&" bug associated with using $Server->URL
|
|
4017 |
and SessionQueryParse together
|
|
4018 |
|
|
4019 |
+ Patch to allow $Server->URL() to be called multiple times on the same URL
|
|
4020 |
as in $Server->URL($Server->URL($url, \%params), \%more_params)
|
|
4021 |
|
|
4022 |
(d) Added new testimonials & sites & created a separate testimonials page.
|
|
4023 |
|
|
4024 |
- SessionQueryParse will now add to & to the query strings
|
|
4025 |
embedded in the HTML, instead of & for proper HTML generation.
|
|
4026 |
Thanks to Peter Galbavy for pointing out and Thanos Chatziathanassiou
|
|
4027 |
for suggesting the fix.
|
|
4028 |
|
|
4029 |
- $Response->{ContentType} set to text/html for developer error reporting,
|
|
4030 |
in case this was set to something else before the error occured.
|
|
4031 |
Thanks to Philip Mak for reporting.
|
|
4032 |
|
|
4033 |
- Couple of minor bug fixes under PerlWarn use, thanks Peter Galbavy
|
|
4034 |
for reporting.
|
|
4035 |
|
|
4036 |
+ Added automatic load of "use Apache2" for compat with mod_perl2
|
|
4037 |
request objects when Apache::ASP is loaded via "PerlModule Apache::ASP"
|
|
4038 |
Thanks to Richard Curtis for reporting bug & subsequent testing.
|
|
4039 |
|
|
4040 |
- When GlobalPackage config changes, but global.asa has not, global.asa
|
|
4041 |
will be recompiled anyway to update the GlobalPackage correctly.
|
|
4042 |
Changing GlobalPackage before would cause errors if global.asa was
|
|
4043 |
already compiled.
|
|
4044 |
|
|
4045 |
++ For ANY PerlSetVar type config, OFF/Off/off will be assumed
|
|
4046 |
to have value of 0 for that setting. Before, only a couple settings
|
|
4047 |
had this semantics, but they all do now for consistency.
|
|
4048 |
|
|
4049 |
- Fix for InodeNames config on OpenBSD, or any OS that might have
|
|
4050 |
a device # of 0 for the file being stat()'d, thanks to Peter Galbavy
|
|
4051 |
for bug report.
|
|
4052 |
|
|
4053 |
++ Total XSLT speedups, 5-10% on large XSLT, 10-15% on small XSLT
|
|
4054 |
|
|
4055 |
+ bypass meta data check like expires for XSLT Cache() API use
|
|
4056 |
because XSLT tranformations don't expire, saves hit to cache dbm
|
|
4057 |
for meta data
|
|
4058 |
|
|
4059 |
+ use of direct Apache::ASP::State methods like FETCH/STORE
|
|
4060 |
in Cache() layer so we don't have to go through slower tied interface.
|
|
4061 |
This will speed up XSLT & and include output caching mostly.
|
|
4062 |
|
|
4063 |
+ minor optimizations for speed & memory usage
|
4052 | 4064 |
|
4053 | 4065 |
$VERSION = 2.49; $DATE="11/10/2002"
|
4054 | |
-- bug introduced in 2.47 cached script compilations for executing
|
4055 | |
scripts ( not includes ) of the same name in different directories
|
4056 | |
for the same Global/GlobalPackage config for an application.
|
4057 | |
Fix was to remove optimization that caused problem, and
|
4058 | |
created test case t/same_name.t to cover bug.
|
|
4066 |
-- bug introduced in 2.47 cached script compilations for executing
|
|
4067 |
scripts ( not includes ) of the same name in different directories
|
|
4068 |
for the same Global/GlobalPackage config for an application.
|
|
4069 |
Fix was to remove optimization that caused problem, and
|
|
4070 |
created test case t/same_name.t to cover bug.
|
4059 | 4071 |
|
4060 | 4072 |
$VERSION = 2.47; $DATE="11/06/2002"
|
4061 | |
++ Runtime speed enhancements for 15-20% improvement including:
|
4062 | |
+ INTERNAL API ReadFile() now returns scalar ref as memory optimization
|
4063 | |
+ cache InodeNames config setting in ASP object now for common lookups
|
4064 | |
+ removed CompileChecksum() INTERNAL API, since it was an unnecesary
|
4065 | |
method decomposition along a common code path
|
4066 | |
+ removed IsChanged() INTERNAL API since compiling of scripts
|
4067 | |
is now handled by CompileInclude() which does this functionality already
|
4068 | |
+ removed unnecessary decomp of IncludesChanged() INTERNAL API, which was along
|
4069 | |
critical code path
|
4070 | |
+ do not call INTERNAL SearchDirs() API when compiling base script
|
4071 | |
since we have already validated its path earlier
|
4072 | |
+ Use stat(_) type shortcut for stat() & -X calls where possible
|
4073 | |
+ Moved @INC initilization up to handler() & consolidated with $INCDir lib
|
4074 | |
+ removed useless Apache::ASP::Collection::DESTROY
|
4075 | |
+ removed useless Apache::ASP::Server::DESTROY
|
4076 | |
+ removed useless Apache::ASP::GlobalASA::DESTROY
|
4077 | |
+ removed useless Apache::ASP::Response::DESTROY
|
4078 | |
|
4079 | |
- Default path for $Response->{Cookies} was from CookiePath
|
4080 | |
config, but this was incorrect as CookiePath config is only
|
4081 | |
for $Session cookie, so now path for $Response->{Cookies}
|
4082 | |
defaults to /
|
4083 | |
|
4084 | |
- Fixed bug where global.asa events would get undefined with
|
4085 | |
StatINC and GlobalPackage set when the GlobalPackage library
|
4086 | |
changed & get reloaded.
|
4087 | |
|
4088 | |
(d) Documented long time config NoCache.
|
4089 | |
|
4090 | |
-- Fixed use with Apache::Filter, capable as both source
|
4091 | |
and destination filter. Added ./site/eg/filter.filter example
|
4092 | |
to demonstrate these abilities.
|
4093 | |
|
4094 | |
+ Use $r->err_headers_out->add Apache::Table API for cookies
|
4095 | |
now instead of $r->cgi_header_out. Added t/cookies.t test to
|
4096 | |
cover new code path as well as general $Response->Cookies API.
|
4097 | |
Also make cookies headers sorted by cookie and dictionary key
|
4098 | |
while building headers for repeatable behavior, this latter was
|
4099 | |
to facilitate testing.
|
4100 | |
|
4101 | |
- fixed $Server->Mail error_log output when failing to connect
|
4102 | |
to SMTP server.
|
4103 | |
|
4104 | |
+ added tests to cover UniquePackages & NoCache configs since this
|
4105 | |
config logic was updated
|
4106 | |
|
4107 | |
+ made deprecated warnings for use of certain $Response->Member
|
4108 | |
calls more loudly write to error_log, so I can remove the AUTOLOAD
|
4109 | |
for Response one day
|
4110 | |
|
4111 | |
- Probably fixed behavior in CgiHeaders, at least under perl 5.8.0, and
|
4112 | |
added t/cgi_headers.t to cover this config.
|
4113 | |
|
4114 | |
+ removed $Apache::ASP::CompressGzip setting ability, used to possibly
|
4115 | |
set CompressGzip in the module before, not documented anyway
|
4116 | |
|
4117 | |
+ removed $Apache::ASP::Filter setting ability to set Filter globally,
|
4118 | |
not documented anyway
|
4119 | |
|
4120 | |
+ removed old work around for setting ServerStarting to 0
|
4121 | |
at runtime, which was bad for Apache::DBI on win32 a long
|
4122 | |
time ago:
|
4123 | |
|
4124 | |
$Apache::ServerStarting and $Apache::ServerStarting = 0;
|
4125 | |
|
4126 | |
If this code is still needed in Apache::ASP->handler() let
|
4127 | |
me know.
|
4128 | |
|
4129 | |
+ check to make sure data in internal database is a HASH ref
|
4130 | |
before using it for session garbage collection. This is to
|
4131 | |
help prevent against internal database corruption in a
|
4132 | |
network share that does not support flock() file locking.
|
4133 | |
|
4134 | |
+ For new XMLSubs ASP type <%= %> argument interpolation
|
4135 | |
activated with XMLSubsPerlArgs 0, data references can now
|
4136 | |
be passed in addition to SCALAR/string references, so one
|
4137 | |
can pass an object reference like so:
|
4138 | |
|
4139 | |
<my:tag value="<%= $Object %>" />
|
4140 | |
|
4141 | |
This will only work as long as the variable interpolation <%= %>
|
4142 | |
are flushed against the containing " " or ' ', or else the object
|
4143 | |
reference will be stringified when it is concatenated with
|
4144 | |
the rest of the data.
|
4145 | |
|
4146 | |
Testing for this feature was added to ./t/xmlsubs_aspargs.t
|
4147 | |
|
4148 | |
This feature is still experimental, and its interface may change.
|
4149 | |
However it is slated for the 3.0 release as default method,
|
4150 | |
so feedback is appreciated.
|
4151 | |
|
4152 | |
+ For new XMLSubs ASP type <%= %> argument interpolation
|
4153 | |
activated with XMLSubsPerlArgs 0, <% %> will no longer work,
|
4154 | |
just <%= %>, as in
|
4155 | |
|
4156 | |
<my:tag value="some value <%= $value %> more data" />
|
4157 | |
|
4158 | |
This feature is still experimental, and its interface may change.
|
4159 | |
However it is slated for the 3.0 release as default method,
|
4160 | |
so feedback is appreciated.
|
|
4073 |
++ Runtime speed enhancements for 15-20% improvement including:
|
|
4074 |
+ INTERNAL API ReadFile() now returns scalar ref as memory optimization
|
|
4075 |
+ cache InodeNames config setting in ASP object now for common lookups
|
|
4076 |
+ removed CompileChecksum() INTERNAL API, since it was an unnecesary
|
|
4077 |
method decomposition along a common code path
|
|
4078 |
+ removed IsChanged() INTERNAL API since compiling of scripts
|
|
4079 |
is now handled by CompileInclude() which does this functionality already
|
|
4080 |
+ removed unnecessary decomp of IncludesChanged() INTERNAL API, which was along
|
|
4081 |
critical code path
|
|
4082 |
+ do not call INTERNAL SearchDirs() API when compiling base script
|
|
4083 |
since we have already validated its path earlier
|
|
4084 |
+ Use stat(_) type shortcut for stat() & -X calls where possible
|
|
4085 |
+ Moved @INC initilization up to handler() & consolidated with $INCDir lib
|
|
4086 |
+ removed useless Apache::ASP::Collection::DESTROY
|
|
4087 |
+ removed useless Apache::ASP::Server::DESTROY
|
|
4088 |
+ removed useless Apache::ASP::GlobalASA::DESTROY
|
|
4089 |
+ removed useless Apache::ASP::Response::DESTROY
|
|
4090 |
|
|
4091 |
- Default path for $Response->{Cookies} was from CookiePath
|
|
4092 |
config, but this was incorrect as CookiePath config is only
|
|
4093 |
for $Session cookie, so now path for $Response->{Cookies}
|
|
4094 |
defaults to /
|
|
4095 |
|
|
4096 |
- Fixed bug where global.asa events would get undefined with
|
|
4097 |
StatINC and GlobalPackage set when the GlobalPackage library
|
|
4098 |
changed & get reloaded.
|
|
4099 |
|
|
4100 |
(d) Documented long time config NoCache.
|
|
4101 |
|
|
4102 |
-- Fixed use with Apache::Filter, capable as both source
|
|
4103 |
and destination filter. Added ./site/eg/filter.filter example
|
|
4104 |
to demonstrate these abilities.
|
|
4105 |
|
|
4106 |
+ Use $r->err_headers_out->add Apache::Table API for cookies
|
|
4107 |
now instead of $r->cgi_header_out. Added t/cookies.t test to
|
|
4108 |
cover new code path as well as general $Response->Cookies API.
|
|
4109 |
Also make cookies headers sorted by cookie and dictionary key
|
|
4110 |
while building headers for repeatable behavior, this latter was
|
|
4111 |
to facilitate testing.
|
|
4112 |
|
|
4113 |
- fixed $Server->Mail error_log output when failing to connect
|
|
4114 |
to SMTP server.
|
|
4115 |
|
|
4116 |
+ added tests to cover UniquePackages & NoCache configs since this
|
|
4117 |
config logic was updated
|
|
4118 |
|
|
4119 |
+ made deprecated warnings for use of certain $Response->Member
|
|
4120 |
calls more loudly write to error_log, so I can remove the AUTOLOAD
|
|
4121 |
for Response one day
|
|
4122 |
|
|
4123 |
- Probably fixed behavior in CgiHeaders, at least under perl 5.8.0, and
|
|
4124 |
added t/cgi_headers.t to cover this config.
|
|
4125 |
|
|
4126 |
+ removed $Apache::ASP::CompressGzip setting ability, used to possibly
|
|
4127 |
set CompressGzip in the module before, not documented anyway
|
|
4128 |
|
|
4129 |
+ removed $Apache::ASP::Filter setting ability to set Filter globally,
|
|
4130 |
not documented anyway
|
|
4131 |
|
|
4132 |
+ removed old work around for setting ServerStarting to 0
|
|
4133 |
at runtime, which was bad for Apache::DBI on win32 a long
|
|
4134 |
time ago:
|
|
4135 |
|
|
4136 |
$Apache::ServerStarting and $Apache::ServerStarting = 0;
|
|
4137 |
|
|
4138 |
If this code is still needed in Apache::ASP->handler() let
|
|
4139 |
me know.
|
|
4140 |
|
|
4141 |
+ check to make sure data in internal database is a HASH ref
|
|
4142 |
before using it for session garbage collection. This is to
|
|
4143 |
help prevent against internal database corruption in a
|
|
4144 |
network share that does not support flock() file locking.
|
|
4145 |
|
|
4146 |
+ For new XMLSubs ASP type <%= %> argument interpolation
|
|
4147 |
activated with XMLSubsPerlArgs 0, data references can now
|
|
4148 |
be passed in addition to SCALAR/string references, so one
|
|
4149 |
can pass an object reference like so:
|
|
4150 |
|
|
4151 |
<my:tag value="<%= $Object %>" />
|
|
4152 |
|
|
4153 |
This will only work as long as the variable interpolation <%= %>
|
|
4154 |
are flushed against the containing " " or ' ', or else the object
|
|
4155 |
reference will be stringified when it is concatenated with
|
|
4156 |
the rest of the data.
|
|
4157 |
|
|
4158 |
Testing for this feature was added to ./t/xmlsubs_aspargs.t
|
|
4159 |
|
|
4160 |
This feature is still experimental, and its interface may change.
|
|
4161 |
However it is slated for the 3.0 release as default method,
|
|
4162 |
so feedback is appreciated.
|
|
4163 |
|
|
4164 |
+ For new XMLSubs ASP type <%= %> argument interpolation
|
|
4165 |
activated with XMLSubsPerlArgs 0, <% %> will no longer work,
|
|
4166 |
just <%= %>, as in
|
|
4167 |
|
|
4168 |
<my:tag value="some value <%= $value %> more data" />
|
|
4169 |
|
|
4170 |
This feature is still experimental, and its interface may change.
|
|
4171 |
However it is slated for the 3.0 release as default method,
|
|
4172 |
so feedback is appreciated.
|
4161 | 4173 |
|
4162 | 4174 |
$VERSION = 2.45; $DATE="10/13/2002"
|
4163 | |
++New XMLSubsPerlArgs config, default 1, indicates how
|
4164 | |
XMLSubs arguments have always been parsed. If set to 0,
|
4165 | |
will enable new XMLSubs args that are more ASP like with
|
4166 | |
<%= %> for dynamic interpolation, such as:
|
4167 | |
|
4168 | |
<my:xmlsub arg="<%= $data %>" arg2="text <%= $data2 %>" />
|
|
4175 |
++New XMLSubsPerlArgs config, default 1, indicates how
|
|
4176 |
XMLSubs arguments have always been parsed. If set to 0,
|
|
4177 |
will enable new XMLSubs args that are more ASP like with
|
|
4178 |
<%= %> for dynamic interpolation, such as:
|
|
4179 |
|
|
4180 |
<my:xmlsub arg="<%= $data %>" arg2="text <%= $data2 %>" />
|
4169 | 4181 |
|
4170 | |
Settings XMLSubsPerlArgs to 0 is experimental for now, but
|
4171 | |
will become the default by Apache::ASP version 3.0
|
4172 | |
|
4173 | |
++Optimization for static HTML/XML files that are served up
|
4174 | |
via Apache::ASP so that they are not compiled into perl subroutines
|
4175 | |
first. This makes especially native XSLT both faster & take
|
4176 | |
less memory to serve, before XSL & XML files being transformed
|
4177 | |
by XSLT would both be compiled as normal ASP script first, so
|
4178 | |
now this will happen if they really are ASP scripts with embedded
|
4179 | |
<% %> code blocks & XMLSubs being executed.
|
4180 | |
|
4181 | |
+Consolidate some config data for Apache::ASP->Loader to use
|
4182 | |
globals in @Apache::ASP::CompileChecksumKeys to know which
|
4183 | |
config data is important for precompiling ASP scripts.
|
4184 | |
|
4185 | |
+Further streamlined code compilation. Now both base
|
4186 | |
scripts and includes use the internal CompileInclude() API
|
4187 | |
to generate code.
|
4188 | |
|
4189 | |
-Fixed runtime HTML error output when Debug is set to -2/2,
|
4190 | |
so that script correctly again gets rendered in final perl form.
|
4191 | |
Added compile time error output to ./site/eg/syntax_error.htm
|
4192 | |
when a special link is clicked for a quick visual test.
|
4193 | |
|
4194 | |
-Cleaned up some bad coding practices in ./site/eg/global.asa
|
4195 | |
associated changes in other example files. Comment example
|
4196 | |
global.asa some for the first time reader
|
4197 | |
|
4198 | |
-DemoASP.pm examples module needed "use strict" fix, thanks
|
4199 | |
to Allan Vest for bug report
|
4200 | |
|
4201 | |
--$rv = $Response->Include({ File => ..., Cache => 1});
|
4202 | |
now works to get the first returned value fetched from
|
4203 | |
the cache. Before, because a list was always returned,
|
4204 | |
$rv would have been equal to the number of items returned,
|
4205 | |
even if the return value list has just one element.
|
4206 | |
|
4207 | |
(d) added site/robots.txt file with just a comment for
|
4208 | |
search engine indexing
|
4209 | |
|
4210 | |
-fixed ./site/eg/binary_write.htm to not use
|
4211 | |
$Response->{ContentLength} because it does not exist.
|
4212 | |
Fixed it to use $Response->AddHeader now instead
|
|
4182 |
Settings XMLSubsPerlArgs to 0 is experimental for now, but
|
|
4183 |
will become the default by Apache::ASP version 3.0
|
|
4184 |
|
|
4185 |
++Optimization for static HTML/XML files that are served up
|
|
4186 |
via Apache::ASP so that they are not compiled into perl subroutines
|
|
4187 |
first. This makes especially native XSLT both faster & take
|
|
4188 |
less memory to serve, before XSL & XML files being transformed
|
|
4189 |
by XSLT would both be compiled as normal ASP script first, so
|
|
4190 |
now this will happen if they really are ASP scripts with embedded
|
|
4191 |
<% %> code blocks & XMLSubs being executed.
|
|
4192 |
|
|
4193 |
+Consolidate some config data for Apache::ASP->Loader to use
|
|
4194 |
globals in @Apache::ASP::CompileChecksumKeys to know which
|
|
4195 |
config data is important for precompiling ASP scripts.
|
|
4196 |
|
|
4197 |
+Further streamlined code compilation. Now both base
|
|
4198 |
scripts and includes use the internal CompileInclude() API
|
|
4199 |
to generate code.
|
|
4200 |
|
|
4201 |
-Fixed runtime HTML error output when Debug is set to -2/2,
|
|
4202 |
so that script correctly again gets rendered in final perl form.
|
|
4203 |
Added compile time error output to ./site/eg/syntax_error.asp
|
|
4204 |
when a special link is clicked for a quick visual test.
|
|
4205 |
|
|
4206 |
-Cleaned up some bad coding practices in ./site/eg/global.asa
|
|
4207 |
associated changes in other example files. Comment example
|
|
4208 |
global.asa some for the first time reader
|
|
4209 |
|
|
4210 |
-DemoASP.pm examples module needed "use strict" fix, thanks
|
|
4211 |
to Allan Vest for bug report
|
|
4212 |
|
|
4213 |
--$rv = $Response->Include({ File => ..., Cache => 1});
|
|
4214 |
now works to get the first returned value fetched from
|
|
4215 |
the cache. Before, because a list was always returned,
|
|
4216 |
$rv would have been equal to the number of items returned,
|
|
4217 |
even if the return value list has just one element.
|
|
4218 |
|
|
4219 |
(d) added site/robots.txt file with just a comment for
|
|
4220 |
search engine indexing
|
|
4221 |
|
|
4222 |
-fixed ./site/eg/binary_write.htm to not use
|
|
4223 |
$Response->{ContentLength} because it does not exist.
|
|
4224 |
Fixed it to use $Response->AddHeader now instead
|
4213 | 4225 |
|
4214 | 4226 |
$VERSION = 2.41; $DATE="09/29/2002"
|
4215 | |
-Removed CVS Revision tag from Apache::ASP::Date, which
|
4216 | |
was causing bad revision numbers in CPAN after CVS integration
|
4217 | |
of Apache::ASP
|
4218 | |
|
4219 | |
+removed cgi/asp link to ../asp-perl from distribution. This
|
4220 | |
link was for the deprecated asp script which is now asp-perl
|
|
4227 |
-Removed CVS Revision tag from Apache::ASP::Date, which
|
|
4228 |
was causing bad revision numbers in CPAN after CVS integration
|
|
4229 |
of Apache::ASP
|
|
4230 |
|
|
4231 |
+removed cgi/asp link to ../asp-perl from distribution. This
|
|
4232 |
link was for the deprecated asp script which is now asp-perl
|
4221 | 4233 |
|
4222 | 4234 |
$VERSION = 2.39; $DATE="09/10/2002"
|
4223 | |
-Turn off $^W explicitly before reloading global.asa. Reloading
|
4224 | |
global.asa when $^W is set will trigger subroutine redefinition
|
4225 | |
warnings. Reloading global.asa should occur without any problems
|
4226 | |
under normal usage of the system, thus this work around.
|
4227 | |
|
4228 | |
This fix is important to UseStrict functionality because warnings
|
4229 | |
automatically become thrown as die() errors with UseStrict enabled,
|
4230 | |
so we have to disable normal soft warnings here.
|
4231 | |
|
4232 | |
-$Response->Include() runtime errors now throw a die() that
|
4233 | |
can be trapped. This was old functionality that has been restored.
|
4234 | |
Other compile time errors should still trigger a hard error
|
4235 | |
like script compilation, global.asa, or $Response->Include()
|
4236 | |
without an eval()
|
4237 | |
|
4238 | |
+Some better error handling with Debug 3 or -3 set, cleaned
|
4239 | |
up developer errors messages somewhat.
|
|
4235 |
-Turn off $^W explicitly before reloading global.asa. Reloading
|
|
4236 |
global.asa when $^W is set will trigger subroutine redefinition
|
|
4237 |
warnings. Reloading global.asa should occur without any problems
|
|
4238 |
under normal usage of the system, thus this work around.
|
|
4239 |
|
|
4240 |
This fix is important to UseStrict functionality because warnings
|
|
4241 |
automatically become thrown as die() errors with UseStrict enabled,
|
|
4242 |
so we have to disable normal soft warnings here.
|
|
4243 |
|
|
4244 |
-$Response->Include() runtime errors now throw a die() that
|
|
4245 |
can be trapped. This was old functionality that has been restored.
|
|
4246 |
Other compile time errors should still trigger a hard error
|
|
4247 |
like script compilation, global.asa, or $Response->Include()
|
|
4248 |
without an eval()
|
|
4249 |
|
|
4250 |
+Some better error handling with Debug 3 or -3 set, cleaned
|
|
4251 |
up developer errors messages somewhat.
|
4240 | 4252 |
|
4241 | 4253 |
$VERSION = 2.37; $DATE="07/03/2002"
|
4242 | |
-Fixed the testing directory structures for t/long_names.t
|
4243 | |
so that tar software like Archive::Tar & Solaris tar that
|
4244 | |
have problems with long file names will still be able
|
4245 | |
to untar distribution successfully. Now t/long_names.t
|
4246 | |
generates its testing directory structures at runtime.
|
4247 | |
|
4248 | |
-Fixes for "make test" to work under perl 5.8.0 RC2,
|
4249 | |
courtesy of Manabu Higashida
|
4250 | |
|
4251 | |
+SessionQueryForce setting created for disabling use of cookies
|
4252 | |
for $Session session-id passing, rather requiring use of SessionQuery*
|
4253 | |
functionality for session-id passing via URL query string.
|
4254 | |
|
4255 | |
By default, even when SessionQuery* options are used, cookies will
|
4256 | |
be used if available with SessionQuery* functionality acting only
|
4257 | |
as a backup, so this makes it so that cookies will never be used.
|
4258 | |
|
4259 | |
+Escape ' with HTMLEncode() to '
|
4260 | |
|
4261 | |
-Trying to fix t/server_mail.t to work better for platforms
|
4262 | |
that it should skip testing on. Updated t/server.t test case.
|
4263 | |
|
4264 | |
+Remove exit() from Makefile.PL so CPAN.pm's automatic
|
4265 | |
follow prereq mechanism works correctly. Thanks to Slaven Rezic
|
4266 | |
for pointing this out.
|
4267 | |
|
4268 | |
+Added Apache::compat loading in mod_perl environment for better
|
4269 | |
mod_perl 2.0 support.
|
|
4254 |
-Fixed the testing directory structures for t/long_names.t
|
|
4255 |
so that tar software like Archive::Tar & Solaris tar that
|
|
4256 |
have problems with long file names will still be able
|
|
4257 |
to untar distribution successfully. Now t/long_names.t
|
|
4258 |
generates its testing directory structures at runtime.
|
|
4259 |
|
|
4260 |
-Fixes for "make test" to work under perl 5.8.0 RC2,
|
|
4261 |
courtesy of Manabu Higashida
|
|
4262 |
|
|
4263 |
+SessionQueryForce setting created for disabling use of cookies
|
|
4264 |
for $Session session-id passing, rather requiring use of SessionQuery*
|
|
4265 |
functionality for session-id passing via URL query string.
|
|
4266 |
|
|
4267 |
By default, even when SessionQuery* options are used, cookies will
|
|
4268 |
be used if available with SessionQuery* functionality acting only
|
|
4269 |
as a backup, so this makes it so that cookies will never be used.
|
|
4270 |
|
|
4271 |
+Escape ' with HTMLEncode() to '
|
|
4272 |
|
|
4273 |
-Trying to fix t/server_mail.t to work better for platforms
|
|
4274 |
that it should skip testing on. Updated t/server.t test case.
|
|
4275 |
|
|
4276 |
+Remove exit() from Makefile.PL so CPAN.pm's automatic
|
|
4277 |
follow prereq mechanism works correctly. Thanks to Slaven Rezic
|
|
4278 |
for pointing this out.
|
|
4279 |
|
|
4280 |
+Added Apache::compat loading in mod_perl environment for better
|
|
4281 |
mod_perl 2.0 support.
|
4270 | 4282 |
|
4271 | 4283 |
$VERSION = 2.35; $DATE="05/30/2002"
|
4272 | |
+Destroy better $Server & $Response objects so that my
|
4273 | |
closure references to these to not attempt to work in the future
|
4274 | |
against invalid internal data. There was enough data left in these
|
4275 | |
old objects to make debugging the my closure problem confusing, where
|
4276 | |
it looked like the ASP object state became invalid.
|
4277 | |
|
4278 | |
+Added system debug diagnostics to inspect StateManager group cleanup
|
4279 | |
|
4280 | |
(d) Documentation update about flock() work around for
|
4281 | |
Win95/Win98/WinMe systems, confirmed by Rex Arul
|
4282 | |
|
4283 | |
(d) Documentation/site build bug found by Mitsunobu Ozato,
|
4284 | |
where <% %> not being escaped correctly with $Server->HTMLEncode().
|
4285 | |
New japanese documentation project started by him
|
4286 | |
at http://sourceforge.jp/projects/apache-asp-jp/
|
4287 | |
|
4288 | |
-InitPackageGlobals() called after new Apache::ASP object created so
|
4289 | |
core system templates can be compiled even when there was a runtime
|
4290 | |
compilation error of user templates. Bug fix needed pointed out by
|
4291 | |
Eamon Daly
|
|
4284 |
+Destroy better $Server & $Response objects so that my
|
|
4285 |
closure references to these to not attempt to work in the future
|
|
4286 |
against invalid internal data. There was enough data left in these
|
|
4287 |
old objects to make debugging the my closure problem confusing, where
|
|
4288 |
it looked like the ASP object state became invalid.
|
|
4289 |
|
|
4290 |
+Added system debug diagnostics to inspect StateManager group cleanup
|
|
4291 |
|
|
4292 |
(d) Documentation update about flock() work around for
|
|
4293 |
Win95/Win98/WinMe systems, confirmed by Rex Arul
|
|
4294 |
|
|
4295 |
(d) Documentation/site build bug found by Mitsunobu Ozato,
|
|
4296 |
where <% %> not being escaped correctly with $Server->HTMLEncode().
|
|
4297 |
New japanese documentation project started by him
|
|
4298 |
at http://sourceforge.jp/projects/apache-asp-jp/
|
|
4299 |
|
|
4300 |
-InitPackageGlobals() called after new Apache::ASP object created so
|
|
4301 |
core system templates can be compiled even when there was a runtime
|
|
4302 |
compilation error of user templates. Bug fix needed pointed out by
|
|
4303 |
Eamon Daly
|
4292 | 4304 |
|
4293 | 4305 |
$VERSION = 2.33; $DATE="04/29/2002"
|
4294 | |
- fixed up t/server_mail.t test to skip if a sendmail server
|
4295 | |
is not available on localhost. We only want the test to run
|
4296 | |
if there is a server to test against.
|
4297 | |
|
4298 | |
+ removed cgi/asp script, just a symlink now to the ./asp-perl script
|
4299 | |
which in this way deprecates it. I had it hard linked, but the
|
4300 | |
distribution did not untar very well on win32 platform.
|
4301 | |
|
4302 | |
+ Reordered the modules in Bundle::Apache::ASP for a cleaner install.
|
4303 | |
|
4304 | |
- Fixed bug where XMLSubs where removing <?xml version ... ?> tag
|
4305 | |
when it was needed in XSLT mode.
|
4306 | |
|
4307 | |
+ $Server->Mail({ CC => '...', BCC => '...' }), now works to send
|
4308 | |
CC & BCC headers/recipients.
|
4309 | |
|
4310 | |
+ Removed $Apache::ASP::Register definition which defined the current
|
4311 | |
executing Apache::ASP object. Only one part of the application was
|
4312 | |
using it, and this has been fixed. This would have been an unsafe
|
4313 | |
use of globals for a threaded environment.
|
4314 | |
|
4315 | |
+ Decreased latency when doing Application_OnStart, used to sleep(1)
|
4316 | |
for CleanupMaster sync, but this is not necessary for Application_OnStart
|
4317 | |
scenario
|
4318 | |
|
4319 | |
+ Restructure code / core templates for MailErrorsTo funcationality.
|
4320 | |
Wrote test mail_error.t to cover this. $ENV{REMOTE_USER} will now
|
4321 | |
be displayed in the MailErrorsTo message when defined from 401 basic auth.
|
4322 | |
|
4323 | |
+ $Server->RegisterCleanup should be thread safe now, as it no longer relies
|
4324 | |
on access to @Apache::ASP::Cleanup for storing the CODE ref stack.
|
4325 | |
|
4326 | |
+ test t/inode_names.t for InodeNames and other file tests covering case
|
4327 | |
of long file names.
|
4328 | |
|
4329 | |
- Fixed long file name sub identifier bug. Added test t/long_names.t.
|
4330 | |
|
4331 | |
+ CacheDir may now be set independently of StateDir. It used to default
|
4332 | |
to StateDir if it was set.
|
4333 | |
|
4334 | |
++ Decomposition of modules like Apache::ASP::Session & Apache::ASP::Application
|
4335 | |
out of ASP.pm file. This should make the source more developer friendly.
|
4336 | |
|
4337 | |
This selective code compilation also speeds up CGI requests that do not
|
4338 | |
need to load unneeded modules like Apache::ASP::Session, by about 50%,
|
4339 | |
so where CGI mode ran at about 2.1 hits/sec before, now for
|
4340 | |
light requests that do not load $Session & $Application, requests
|
4341 | |
run at 3.4 hits/sec, this is on a dual PIII-450 linux 2.4.x
|
4342 | |
|
4343 | |
- Caching like for XSLTCache now works in CGI mode.
|
4344 | |
This was a bug that it did not before.
|
4345 | |
|
4346 | |
+ $Server->File() API added, acts as a wrapper around
|
4347 | |
Apache->request->filename Added test in t/server.t
|
4348 | |
|
4349 | |
++ *** EXPERIMENTAL / ALPHA FEATURE NOTE BEGIN ***
|
4350 | |
|
4351 | |
New $PERLLIB/Apache/ASP/Share/ directory created to
|
4352 | |
hold system & user contributed components, which will be found
|
4353 | |
on the $Server->MapInclude() path, which helps $Response->Include
|
4354 | |
search '.',Global,IncludesDir, and now Apache::ASP::Share for
|
4355 | |
includes to load at runtime.
|
4356 | |
|
4357 | |
The syntax for loading a shared include is to prefix the file
|
4358 | |
name with Share:: as in:
|
4359 | |
|
4360 | |
$Response->TrapInclude('Share::CORE/MailError.inc');
|
4361 | |
|
4362 | |
New test to cover this at t/share.t
|
4363 | |
|
4364 | |
This feature is experimental. The naming convention may change
|
4365 | |
and the feature may disappear altogether, so only use if you
|
4366 | |
are interesting in experimenting with this feature & will
|
4367 | |
provide feedback about how it works.
|
4368 | |
|
4369 | |
*** EXPERIMENTAL / ALPHA FEATURE NOTE END ***
|
4370 | |
|
4371 | |
+ asp-perl script now uses ./asp.conf instead of ./asp.config
|
4372 | |
for runtime configuration via %Config defined there. Update docs
|
4373 | |
for running in standalone CGI mode
|
4374 | |
|
4375 | |
+ Make use of MANFEST.SKIP to not publish the dev/* files anymore.
|
4376 | |
|
4377 | |
- Script_OnEnd guaranteed to run after $Response->End, but
|
4378 | |
it will not run if there was an error earlier in the request.
|
4379 | |
|
4380 | |
+ lots of new test cases covering behaviour of $Response->End
|
4381 | |
and $Response->Redirect under various conditions like XMLSubs
|
4382 | |
and SoftRedirect and global.asa Script_OnStart
|
4383 | |
|
4384 | |
+ asp-perl will be installed into the bin executables when
|
4385 | |
Apache::ASP is installed. asp-perl is the command line version
|
4386 | |
of Apache::ASP that can also be used to run script in CGI mode.
|
4387 | |
Test case covering asp-perl functionality.
|
4388 | |
|
4389 | |
+ asp CGI/command line script now called asp-perl. I picked this
|
4390 | |
name because Apache::ASP often has the name asp-perl in distributions
|
4391 | |
of the module.
|
4392 | |
|
4393 | |
+ Apache::ASP::CGI::Test class now subclass of Apache::ASP::CGI. To facilitate
|
4394 | |
this Apache::ASP::CGI::init() now called OO like Apache::ASP::CGI->init()
|
4395 | |
Fixed up places where the old style was called. New Test class allows
|
4396 | |
a dummy Apache request object to be built which caches header & body output
|
4397 | |
for later inspection instead of writing it to STDOUT.
|
4398 | |
|
4399 | |
- $Response->Redirect() under SoftRedirect 1 will not first Clear() buffer
|
4400 | |
|
4401 | |
- $Response->Redirect() in an XMLSubs will work now ... behavior
|
4402 | |
of $Response->Flush() being turned off in an XMLSubs was interfering with this.
|
4403 | |
|
4404 | |
+ srand() init tracking done better, thanks for patch from Ime Smits
|
4405 | |
|
4406 | |
+ Added file/directory being used for precompilation in
|
4407 | |
Apache::ASP->Loader($file, ...) to output like:
|
4408 | |
|
4409 | |
[Mon Feb 04 20:19:22 2002] [error] [asp] 4215 (re)compiled 22 scripts
|
4410 | |
of 22 loaded for $file
|
4411 | |
|
4412 | |
This is so that when precompiling multiple web sites
|
4413 | |
each with different directories, one can easier see the
|
4414 | |
compile output relevant to the Loader() command being run.
|
4415 | |
|
4416 | |
+ better decomp of Apache::ASP site build files at ./build/* files,
|
4417 | |
which is good should anyone look at it for ideas.
|
4418 | |
|
4419 | |
+ improved test suite to error when unintended output results from
|
4420 | |
t/*.t test scripts.
|
4421 | |
|
4422 | |
- () now supported in XMLSubsMatch config, added xmlsubsmatch.t test...
|
4423 | |
specifically a config like
|
4424 | |
|
4425 | |
PerlSetVar (aaa|bbb):\w+
|
4426 | |
|
4427 | |
should now work. Thanks for bug report from David Kulp.
|
4428 | |
|
4429 | |
+ Added an early srand() for better $ServerID creation
|
4430 | |
|
4431 | |
+ Work around for DSO problems where $r is not always correctly
|
4432 | |
defined in Apache::ASP::handler(). Thanks to Tom Lear for patch.
|
|
4306 |
- fixed up t/server_mail.t test to skip if a sendmail server
|
|
4307 |
is not available on localhost. We only want the test to run
|
|
4308 |
if there is a server to test against.
|
|
4309 |
|
|
4310 |
+ removed cgi/asp script, just a symlink now to the ./asp-perl script
|
|
4311 |
which in this way deprecates it. I had it hard linked, but the
|
|
4312 |
distribution did not untar very well on win32 platform.
|
|
4313 |
|
|
4314 |
+ Reordered the modules in Bundle::Apache::ASP for a cleaner install.
|
|
4315 |
|
|
4316 |
- Fixed bug where XMLSubs where removing <?xml version ... ?> tag
|
|
4317 |
when it was needed in XSLT mode.
|
|
4318 |
|
|
4319 |
+ $Server->Mail({ CC => '...', BCC => '...' }), now works to send
|
|
4320 |
CC & BCC headers/recipients.
|
|
4321 |
|
|
4322 |
+ Removed $Apache::ASP::Register definition which defined the current
|
|
4323 |
executing Apache::ASP object. Only one part of the application was
|
|
4324 |
using it, and this has been fixed. This would have been an unsafe
|
|
4325 |
use of globals for a threaded environment.
|
|
4326 |
|
|
4327 |
+ Decreased latency when doing Application_OnStart, used to sleep(1)
|
|
4328 |
for CleanupMaster sync, but this is not necessary for Application_OnStart
|
|
4329 |
scenario
|
|
4330 |
|
|
4331 |
+ Restructure code / core templates for MailErrorsTo funcationality.
|
|
4332 |
Wrote test mail_error.t to cover this. $ENV{REMOTE_USER} will now
|
|
4333 |
be displayed in the MailErrorsTo message when defined from 401 basic auth.
|
|
4334 |
|
|
4335 |
+ $Server->RegisterCleanup should be thread safe now, as it no longer relies
|
|
4336 |
on access to @Apache::ASP::Cleanup for storing the CODE ref stack.
|
|
4337 |
|
|
4338 |
+ test t/inode_names.t for InodeNames and other file tests covering case
|
|
4339 |
of long file names.
|
|
4340 |
|
|
4341 |
- Fixed long file name sub identifier bug. Added test t/long_names.t.
|
|
4342 |
|
|
4343 |
+ CacheDir may now be set independently of StateDir. It used to default
|
|
4344 |
to StateDir if it was set.
|
|
4345 |
|
|
4346 |
++ Decomposition of modules like Apache::ASP::Session & Apache::ASP::Application
|
|
4347 |
out of ASP.pm file. This should make the source more developer friendly.
|
|
4348 |
|
|
4349 |
This selective code compilation also speeds up CGI requests that do not
|
|
4350 |
need to load unneeded modules like Apache::ASP::Session, by about 50%,
|
|
4351 |
so where CGI mode ran at about 2.1 hits/sec before, now for
|
|
4352 |
light requests that do not load $Session & $Application, requests
|
|
4353 |
run at 3.4 hits/sec, this is on a dual PIII-450 linux 2.4.x
|
|
4354 |
|
|
4355 |
- Caching like for XSLTCache now works in CGI mode.
|
|
4356 |
This was a bug that it did not before.
|
|
4357 |
|
|
4358 |
+ $Server->File() API added, acts as a wrapper around
|
|
4359 |
Apache->request->filename Added test in t/server.t
|
|
4360 |
|
|
4361 |
++ *** EXPERIMENTAL / ALPHA FEATURE NOTE BEGIN ***
|
|
4362 |
|
|
4363 |
New $PERLLIB/Apache/ASP/Share/ directory created to
|
|
4364 |
hold system & user contributed components, which will be found
|
|
4365 |
on the $Server->MapInclude() path, which helps $Response->Include
|
|
4366 |
search '.',Global,IncludesDir, and now Apache::ASP::Share for
|
|
4367 |
includes to load at runtime.
|
|
4368 |
|
|
4369 |
The syntax for loading a shared include is to prefix the file
|
|
4370 |
name with Share:: as in:
|
|
4371 |
|
|
4372 |
$Response->TrapInclude('Share::CORE/MailError.inc');
|
|
4373 |
|
|
4374 |
New test to cover this at t/share.t
|
|
4375 |
|
|
4376 |
This feature is experimental. The naming convention may change
|
|
4377 |
and the feature may disappear altogether, so only use if you
|
|
4378 |
are interesting in experimenting with this feature & will
|
|
4379 |
provide feedback about how it works.
|
|
4380 |
|
|
4381 |
*** EXPERIMENTAL / ALPHA FEATURE NOTE END ***
|
|
4382 |
|
|
4383 |
+ asp-perl script now uses ./asp.conf instead of ./asp.config
|
|
4384 |
for runtime configuration via %Config defined there. Update docs
|
|
4385 |
for running in standalone CGI mode
|
|
4386 |
|
|
4387 |
+ Make use of MANFEST.SKIP to not publish the dev/* files anymore.
|
|
4388 |
|
|
4389 |
- Script_OnEnd guaranteed to run after $Response->End, but
|
|
4390 |
it will not run if there was an error earlier in the request.
|
|
4391 |
|
|
4392 |
+ lots of new test cases covering behaviour of $Response->End
|
|
4393 |
and $Response->Redirect under various conditions like XMLSubs
|
|
4394 |
and SoftRedirect and global.asa Script_OnStart
|
|
4395 |
|
|
4396 |
+ asp-perl will be installed into the bin executables when
|
|
4397 |
Apache::ASP is installed. asp-perl is the command line version
|
|
4398 |
of Apache::ASP that can also be used to run script in CGI mode.
|
|
4399 |
Test case covering asp-perl functionality.
|
|
4400 |
|
|
4401 |
+ asp CGI/command line script now called asp-perl. I picked this
|
|
4402 |
name because Apache::ASP often has the name asp-perl in distributions
|
|
4403 |
of the module.
|
|
4404 |
|
|
4405 |
+ Apache::ASP::CGI::Test class now subclass of Apache::ASP::CGI. To facilitate
|
|
4406 |
this Apache::ASP::CGI::init() now called OO like Apache::ASP::CGI->init()
|
|
4407 |
Fixed up places where the old style was called. New Test class allows
|
|
4408 |
a dummy Apache request object to be built which caches header & body output
|
|
4409 |
for later inspection instead of writing it to STDOUT.
|
|
4410 |
|
|
4411 |
- $Response->Redirect() under SoftRedirect 1 will not first Clear() buffer
|
|
4412 |
|
|
4413 |
- $Response->Redirect() in an XMLSubs will work now ... behavior
|
|
4414 |
of $Response->Flush() being turned off in an XMLSubs was interfering with this.
|
|
4415 |
|
|
4416 |
+ srand() init tracking done better, thanks for patch from Ime Smits
|
|
4417 |
|
|
4418 |
+ Added file/directory being used for precompilation in
|
|
4419 |
Apache::ASP->Loader($file, ...) to output like:
|
|
4420 |
|
|
4421 |
[Mon Feb 04 20:19:22 2002] [error] [asp] 4215 (re)compiled 22 scripts
|
|
4422 |
of 22 loaded for $file
|
|
4423 |
|
|
4424 |
This is so that when precompiling multiple web sites
|
|
4425 |
each with different directories, one can easier see the
|
|
4426 |
compile output relevant to the Loader() command being run.
|
|
4427 |
|
|
4428 |
+ better decomp of Apache::ASP site build files at ./build/* files,
|
|
4429 |
which is good should anyone look at it for ideas.
|
|
4430 |
|
|
4431 |
+ improved test suite to error when unintended output results from
|
|
4432 |
t/*.t test scripts.
|
|
4433 |
|
|
4434 |
- () now supported in XMLSubsMatch config, added xmlsubsmatch.t test...
|
|
4435 |
specifically a config like
|
|
4436 |
|
|
4437 |
PerlSetVar (aaa|bbb):\w+
|
|
4438 |
|
|
4439 |
should now work. Thanks for bug report from David Kulp.
|
|
4440 |
|
|
4441 |
+ Added an early srand() for better $ServerID creation
|
|
4442 |
|
|
4443 |
+ Work around for DSO problems where $r is not always correctly
|
|
4444 |
defined in Apache::ASP::handler(). Thanks to Tom Lear for patch.
|
4433 | 4445 |
|
4434 | 4446 |
$VERSION = 2.31; $DATE="01/22/2002";
|
4435 | |
+ $Server->MapInclude() API extension created to wrap up Apache::ASP::SearchDirs
|
4436 | |
functionality so one may do an conditional check for an include existence befor
|
4437 | |
executing $Response->Include(). Added API test to server.t
|
4438 | |
|
4439 | |
+ $Server->Transfer() now allows arguments like $Response->Include(), and now acts just
|
4440 | |
as a wrapper for:
|
4441 | |
|
4442 | |
$Response->Include($file, @args);
|
4443 | |
$Response->End();
|
4444 | |
|
4445 | |
added test case at t/server_transfer.t
|
4446 | |
|
4447 | |
+ Removed dependency of StatINC functionality on Apache::Symbol. Apache::Symbol
|
4448 | |
is no longer required. Added test of t/stat_inc.t for correct StatINC initialization
|
4449 | |
for platforms where Devel::Symdump is present.
|
4450 | |
|
4451 | |
+ Better error message when $Request->Params has not been defined with RequestParams
|
4452 | |
config & it gets used in script. Added test case as t/request_params_none.t
|
4453 | |
|
4454 | |
+ Directories cannot now be included as scripts via $Response->Include(), added
|
4455 | |
test case to t/include.t
|
4456 | |
|
4457 | |
- No longer make $Response->Flush dependent on $Response->IsClientConnected() to
|
4458 | |
be true to write output to client. There have been spurious errors reported
|
4459 | |
about the new ( >= 2.25 ) IsClientConnected code, and this will limit the impact
|
4460 | |
of that functionality possibly not working still to those users explicitly using
|
4461 | |
that API.
|
4462 | |
|
4463 | |
+ $Response->AddHeader($header_name, $value) now will set $Response members
|
4464 | |
for these headers: Content-Type, Cache-Control, Expires. This is to avoid
|
4465 | |
both the application & Apache::ASP sending out duplicate headers. Added
|
4466 | |
test cases for this to t/response.t
|
4467 | |
|
4468 | |
+ split up Bundle::Apache::ASP into that, and Bundle::Apache::ASP::Extra
|
4469 | |
the former with just the required modules to run, and the latter
|
4470 | |
for extra functionality in Apache::ASP
|
4471 | |
|
4472 | |
+ new $Request->{Method} member to return $r->method of GET or POST that
|
4473 | |
client browser is requesting, added t/request.t sub test to cover this member.
|
|
4447 |
+ $Server->MapInclude() API extension created to wrap up Apache::ASP::SearchDirs
|
|
4448 |
functionality so one may do an conditional check for an include existence befor
|
|
4449 |
executing $Response->Include(). Added API test to server.t
|
|
4450 |
|
|
4451 |
+ $Server->Transfer() now allows arguments like $Response->Include(), and now acts just
|
|
4452 |
as a wrapper for:
|
|
4453 |
|
|
4454 |
$Response->Include($file, @args);
|
|
4455 |
$Response->End();
|
|
4456 |
|
|
4457 |
added test case at t/server_transfer.t
|
|
4458 |
|
|
4459 |
+ Removed dependency of StatINC functionality on Apache::Symbol. Apache::Symbol
|
|
4460 |
is no longer required. Added test of t/stat_inc.t for correct StatINC initialization
|
|
4461 |
for platforms where Devel::Symdump is present.
|
|
4462 |
|
|
4463 |
+ Better error message when $Request->Params has not been defined with RequestParams
|
|
4464 |
config & it gets used in script. Added test case as t/request_params_none.t
|
|
4465 |
|
|
4466 |
+ Directories cannot now be included as scripts via $Response->Include(), added
|
|
4467 |
test case to t/include.t
|
|
4468 |
|
|
4469 |
- No longer make $Response->Flush dependent on $Response->IsClientConnected() to
|
|
4470 |
be true to write output to client. There have been spurious errors reported
|
|
4471 |
about the new ( >= 2.25 ) IsClientConnected code, and this will limit the impact
|
|
4472 |
of that functionality possibly not working still to those users explicitly using
|
|
4473 |
that API.
|
|
4474 |
|
|
4475 |
+ $Response->AddHeader($header_name, $value) now will set $Response members
|
|
4476 |
for these headers: Content-Type, Cache-Control, Expires. This is to avoid
|
|
4477 |
both the application & Apache::ASP sending out duplicate headers. Added
|
|
4478 |
test cases for this to t/response.t
|
|
4479 |
|
|
4480 |
+ split up Bundle::Apache::ASP into that, and Bundle::Apache::ASP::Extra
|
|
4481 |
the former with just the required modules to run, and the latter
|
|
4482 |
for extra functionality in Apache::ASP
|
|
4483 |
|
|
4484 |
+ new $Request->{Method} member to return $r->method of GET or POST that
|
|
4485 |
client browser is requesting, added t/request.t sub test to cover this member.
|
4474 | 4486 |
|
4475 | 4487 |
$VERSION = 2.29; $DATE="11/19/2001";
|
4476 | |
+Added some extra help text to the ./cgi/asp --help message
|
4477 | |
to clarify how to pass arguments to a script from the command line.
|
4478 | |
|
4479 | |
+When using $Server->Mail() API, if Content-Type header is set,
|
4480 | |
and MIME-Version is not, then a "MIME-Version: 1.0" header will be sent
|
4481 | |
for the email. This is correct according to RFC 1521 which specifies
|
4482 | |
for the first time the Content-Type: header for email documents.
|
4483 | |
Thanks to Philip Mak for pointing out this correct behavior.
|
4484 | |
|
4485 | |
+Made dependent on MLDBM::Sync version .25 to pass the taint_check.t test
|
4486 | |
|
4487 | |
+Improved server_mail.t test to work with mail servers were relaying is denied
|
4488 | |
|
4489 | |
+Added <html><body> tags to MailErrorsTo email
|
4490 | |
|
4491 | |
--Fixed SessionCount / Session_OnEnd bug, where these things were not
|
4492 | |
working for $Sessions that never had anything written to them.
|
4493 | |
This bug was introduced in 2.23/2.25 release.
|
4494 | |
|
4495 | |
There was an optimization in 2.23/2.25 where a $Session that was never
|
4496 | |
used does not write its state lock file & dbm files to disk, only if
|
4497 | |
it gets written too like $Session->{MARK}++. Tracking of these NULL $Sessions
|
4498 | |
then is handled solely in the internal database. For $Session garbage
|
4499 | |
collection though which would fire Session_OnEnd events and update
|
4500 | |
SessionCount, the Apache::ASP::State->GroupMembers() function was just
|
4501 | |
looking for state files on disk ... now it looks in the internal database
|
4502 | |
too for SessionID records for garbage collection.
|
4503 | |
|
4504 | |
Added a test at ./t/session_events.t for these things.
|
4505 | |
|
4506 | |
+Some optimizations for $Session API use.
|
4507 | |
|
4508 | |
+Added support for XSLT via XML::LibXSLT, patch courtesy of Michael Buschauer
|
4509 | |
|
4510 | |
-Got rid of an warning when recompiling changing includes under perl 5.6.1...
|
4511 | |
undef($code) method did not work for this perl version, rather undef(&$code) does.
|
4512 | |
Stopped using using Apache::Symbol for this when available.
|
4513 | |
|
4514 | |
-Make Apache::ASP script run under perl taint checking -T for perl 5.6.1...
|
4515 | |
$code =~ tr///; does not work to untaint here, so much use the slower:
|
4516 | |
$code =~ /^(.*)$/s; $code = $1; method to untaint.
|
4517 | |
|
4518 | |
-Check for inline includes changing, included in a dynamic included
|
4519 | |
loaded at runtime via $Response->Include(). Added test case for
|
4520 | |
this at t/include_change.t. If an inline include of a dynamic include
|
4521 | |
changes, the dynamic include should get recompiled now.
|
4522 | |
|
4523 | |
-Make OK to use again with PerlTaintCheck On, with MLDBM::Sync 2.25.
|
4524 | |
Fixed in ASP.pm, t/global.asa, and created new t/taint_check.t test script
|
4525 | |
|
4526 | |
+Load more modules when Apache::ASP is loaded so parent will share more
|
4527 | |
with children httpd:
|
4528 | |
Apache::Symbol
|
4529 | |
Devel::Symdump
|
4530 | |
Config
|
4531 | |
lib
|
4532 | |
MLDBM::Sync::SDBM_File
|
4533 | |
|
4534 | |
+When FileUploadMax bytes is exceeded for a file upload, there will not
|
4535 | |
be an odd error anymore resulting from $CGI::POST_MAX being triggered,
|
4536 | |
instead the file upload input will simply be ignored via $CGI::DISABLE_UPLOADS.
|
4537 | |
This gives the developer the opportunity to tell the user the the file upload
|
4538 | |
was too big, as demonstrated by the ./site/eg/file_upload.asp example.
|
4539 | |
|
4540 | |
To not let the web client POST a lot of data to your scripts as a form
|
4541 | |
of a denial of service attack use the apache config LimitRequestBody for the
|
4542 | |
max limits. You can think of PerlSetVar FileUploadMax as a soft limit, and
|
4543 | |
apache's LimitRequestBody as a hard limit.
|
4544 | |
|
4545 | |
--Under certain circumstances with file upload, it seems that IsClientConnected()
|
4546 | |
would return an aborted client value from $r->connection->aborted, so
|
4547 | |
the buffer output data would not be flushed to the client, and
|
4548 | |
the HTML page would return to the browser empty. This would be under
|
4549 | |
normal file upload use. One work-around was to make sure to initialize
|
4550 | |
the $Request object before $Response->IsClientConnected is called,
|
4551 | |
then $r->connection->aborted returns the right value.
|
|
4488 |
+Added some extra help text to the ./cgi/asp --help message
|
|
4489 |
to clarify how to pass arguments to a script from the command line.
|
|
4490 |
|
|
4491 |
+When using $Server->Mail() API, if Content-Type header is set,
|
|
4492 |
and MIME-Version is not, then a "MIME-Version: 1.0" header will be sent
|
|
4493 |
for the email. This is correct according to RFC 1521 which specifies
|
|
4494 |
for the first time the Content-Type: header for email documents.
|
|
4495 |
Thanks to Philip Mak for pointing out this correct behavior.
|
|
4496 |
|
|
4497 |
+Made dependent on MLDBM::Sync version .25 to pass the taint_check.t test
|
|
4498 |
|
|
4499 |
+Improved server_mail.t test to work with mail servers were relaying is denied
|
|
4500 |
|
|
4501 |
+Added <html><body> tags to MailErrorsTo email
|
|
4502 |
|
|
4503 |
--Fixed SessionCount / Session_OnEnd bug, where these things were not
|
|
4504 |
working for $Sessions that never had anything written to them.
|
|
4505 |
This bug was introduced in 2.23/2.25 release.
|
|
4506 |
|
|
4507 |
There was an optimization in 2.23/2.25 where a $Session that was never
|
|
4508 |
used does not write its state lock file & dbm files to disk, only if
|
|
4509 |
it gets written too like $Session->{MARK}++. Tracking of these NULL $Sessions
|
|
4510 |
then is handled solely in the internal database. For $Session garbage
|
|
4511 |
collection though which would fire Session_OnEnd events and update
|
|
4512 |
SessionCount, the Apache::ASP::State->GroupMembers() function was just
|
|
4513 |
looking for state files on disk ... now it looks in the internal database
|
|
4514 |
too for SessionID records for garbage collection.
|
|
4515 |
|
|
4516 |
Added a test at ./t/session_events.t for these things.
|
|
4517 |
|
|
4518 |
+Some optimizations for $Session API use.
|
|
4519 |
|
|
4520 |
+Added support for XSLT via XML::LibXSLT, patch courtesy of Michael Buschauer
|
|
4521 |
|
|
4522 |
-Got rid of an warning when recompiling changing includes under perl 5.6.1...
|
|
4523 |
undef($code) method did not work for this perl version, rather undef(&$code) does.
|
|
4524 |
Stopped using using Apache::Symbol for this when available.
|
|
4525 |
|
|
4526 |
-Make Apache::ASP script run under perl taint checking -T for perl 5.6.1...
|
|
4527 |
$code =~ tr///; does not work to untaint here, so much use the slower:
|
|
4528 |
$code =~ /^(.*)$/s; $code = $1; method to untaint.
|
|
4529 |
|
|
4530 |
-Check for inline includes changing, included in a dynamic included
|
|
4531 |
loaded at runtime via $Response->Include(). Added test case for
|
|
4532 |
this at t/include_change.t. If an inline include of a dynamic include
|
|
4533 |
changes, the dynamic include should get recompiled now.
|
|
4534 |
|
|
4535 |
-Make OK to use again with PerlTaintCheck On, with MLDBM::Sync 2.25.
|
|
4536 |
Fixed in ASP.pm, t/global.asa, and created new t/taint_check.t test script
|
|
4537 |
|
|
4538 |
+Load more modules when Apache::ASP is loaded so parent will share more
|
|
4539 |
with children httpd:
|
|
4540 |
Apache::Symbol
|
|
4541 |
Devel::Symdump
|
|
4542 |
Config
|
|
4543 |
lib
|
|
4544 |
MLDBM::Sync::SDBM_File
|
|
4545 |
|
|
4546 |
+When FileUploadMax bytes is exceeded for a file upload, there will not
|
|
4547 |
be an odd error anymore resulting from $CGI::POST_MAX being triggered,
|
|
4548 |
instead the file upload input will simply be ignored via $CGI::DISABLE_UPLOADS.
|
|
4549 |
This gives the developer the opportunity to tell the user the the file upload
|
|
4550 |
was too big, as demonstrated by the ./site/eg/file_upload.asp example.
|
|
4551 |
|
|
4552 |
To not let the web client POST a lot of data to your scripts as a form
|
|
4553 |
of a denial of service attack use the apache config LimitRequestBody for the
|
|
4554 |
max limits. You can think of PerlSetVar FileUploadMax as a soft limit, and
|
|
4555 |
apache's LimitRequestBody as a hard limit.
|
|
4556 |
|
|
4557 |
--Under certain circumstances with file upload, it seems that IsClientConnected()
|
|
4558 |
would return an aborted client value from $r->connection->aborted, so
|
|
4559 |
the buffer output data would not be flushed to the client, and
|
|
4560 |
the HTML page would return to the browser empty. This would be under
|
|
4561 |
normal file upload use. One work-around was to make sure to initialize
|
|
4562 |
the $Request object before $Response->IsClientConnected is called,
|
|
4563 |
then $r->connection->aborted returns the right value.
|
4552 | 4564 |
|
4553 | |
This problem was probably introduced with IsClientConnected() code changes
|
4554 | |
starting in the 2.25 release.
|
|
4565 |
This problem was probably introduced with IsClientConnected() code changes
|
|
4566 |
starting in the 2.25 release.
|
4555 | 4567 |
|
4556 | 4568 |
$VERSION = 2.27; $DATE="10/31/2001";
|
4557 | |
+ Wrapped call to $r->connection->fileno in eval {} so to
|
4558 | |
preserve backwards compatibility with older mod_perl versions
|
4559 | |
that do not have this method defined. Thanks to Helmut Zeilinger
|
4560 | |
for catching this.
|
4561 | |
|
4562 | |
+ removed ./dev directory from distribution, useless clutter
|
4563 | |
|
4564 | |
+ Removed dependency on HTTP::Date by taking code into
|
4565 | |
Apache::ASP as Apache::ASP::Date. This relieves
|
4566 | |
the dependency of Apache::ASP on libwww LWP libraries.
|
4567 | |
If you were using HTTP::Date functions before without loading
|
4568 | |
"use HTTP::Date;" on your own, you will have to do this now.
|
4569 | |
|
4570 | |
+ Streamlined code execution. Especially worked on
|
4571 | |
$Response->IsClientConnected which gets called during
|
4572 | |
a normal request execution, and got rid of IO::Select
|
4573 | |
dependency. Some function style calls instead of OO style
|
4574 | |
calls where private functions were being invokes that one
|
4575 | |
would not need to override.
|
4576 | |
|
4577 | |
- Fixed possible bug when flushing a data buffer where there
|
4578 | |
is just a '0' in it.
|
4579 | |
|
4580 | |
+ Updated docs to note that StateCache config was deprecated
|
4581 | |
as of 2.23. Removed remaining code that referenced the config.
|
4582 | |
|
4583 | |
+ Removed references to unused OrderCollections code.
|
4584 | |
|
4585 | |
- Better Cache meta key, lower chance of collision with
|
4586 | |
unrelated data since its using the full MD5 keyspace now
|
4587 | |
|
4588 | |
+ Optimized some debugging statements that resulted
|
4589 | |
from recent development.
|
4590 | |
|
4591 | |
+ Tie::TextDir .04 and above is supported for StateDB
|
4592 | |
and CacheDB settings with MLDBM::Sync .21. This is good for
|
4593 | |
CacheDB where output is larger and there are not many
|
4594 | |
versions to cache, like for XSLTCache, where the site is
|
4595 | |
mostly static.
|
4596 | |
|
4597 | |
+ Better RESOURCES section to web site, especially with adding
|
4598 | |
some links to past Apache::ASP articles & presentations.
|
|
4569 |
+ Wrapped call to $r->connection->fileno in eval {} so to
|
|
4570 |
preserve backwards compatibility with older mod_perl versions
|
|
4571 |
that do not have this method defined. Thanks to Helmut Zeilinger
|
|
4572 |
for catching this.
|
|
4573 |
|
|
4574 |
+ removed ./dev directory from distribution, useless clutter
|
|
4575 |
|
|
4576 |
+ Removed dependency on HTTP::Date by taking code into
|
|
4577 |
Apache::ASP as Apache::ASP::Date. This relieves
|
|
4578 |
the dependency of Apache::ASP on libwww LWP libraries.
|
|
4579 |
If you were using HTTP::Date functions before without loading
|
|
4580 |
"use HTTP::Date;" on your own, you will have to do this now.
|
|
4581 |
|
|
4582 |
+ Streamlined code execution. Especially worked on
|
|
4583 |
$Response->IsClientConnected which gets called during
|
|
4584 |
a normal request execution, and got rid of IO::Select
|
|
4585 |
dependency. Some function style calls instead of OO style
|
|
4586 |
calls where private functions were being invokes that one
|
|
4587 |
would not need to override.
|
|
4588 |
|
|
4589 |
- Fixed possible bug when flushing a data buffer where there
|
|
4590 |
is just a '0' in it.
|
|
4591 |
|
|
4592 |
+ Updated docs to note that StateCache config was deprecated
|
|
4593 |
as of 2.23. Removed remaining code that referenced the config.
|
|
4594 |
|
|
4595 |
+ Removed references to unused OrderCollections code.
|
|
4596 |
|
|
4597 |
- Better Cache meta key, lower chance of collision with
|
|
4598 |
unrelated data since its using the full MD5 keyspace now
|
|
4599 |
|
|
4600 |
+ Optimized some debugging statements that resulted
|
|
4601 |
from recent development.
|
|
4602 |
|
|
4603 |
+ Tie::TextDir .04 and above is supported for StateDB
|
|
4604 |
and CacheDB settings with MLDBM::Sync .21. This is good for
|
|
4605 |
CacheDB where output is larger and there are not many
|
|
4606 |
versions to cache, like for XSLTCache, where the site is
|
|
4607 |
mostly static.
|
|
4608 |
|
|
4609 |
+ Better RESOURCES section to web site, especially with adding
|
|
4610 |
some links to past Apache::ASP articles & presentations.
|
4599 | 4611 |
|
4600 | 4612 |
$VERSION = 2.25; $DATE="10/11/2001";
|
4601 | |
+ Improved ./site/apps/search application, for better
|
4602 | |
search results at Apache::ASP site. Also, reengineered
|
4603 | |
application better, with more perl code moved to global.asa.
|
4604 | |
Make use of MLDBM::Sync::SDBM_File, where search database
|
4605 | |
before was engineering around SDBM_File's shortcomings.
|
4606 | |
|
4607 | |
- Fix for SessionSerialize config, which broke in 2.23
|
4608 | |
Also, added t/session_serialize.t to test suite to catch
|
4609 | |
this problem in the future.
|
|
4613 |
+ Improved ./site/apps/search application, for better
|
|
4614 |
search results at Apache::ASP site. Also, reengineered
|
|
4615 |
application better, with more perl code moved to global.asa.
|
|
4616 |
Make use of MLDBM::Sync::SDBM_File, where search database
|
|
4617 |
before was engineering around SDBM_File's shortcomings.
|
|
4618 |
|
|
4619 |
- Fix for SessionSerialize config, which broke in 2.23
|
|
4620 |
Also, added t/session_serialize.t to test suite to catch
|
|
4621 |
this problem in the future.
|
4610 | 4622 |
|
4611 | 4623 |
$VERSION = 2.23; $DATE="10/11/2001";
|
4612 | |
+Make sure a couple other small standard modules get loaded
|
4613 | |
upon "PerlModule Apache::ASP", like Time::HiRes, Class::Struct,
|
4614 | |
and MLDBM::Serializer::Data::Dumper. If not available
|
4615 | |
these modules won't cause errors, but will promote child httpd
|
4616 | |
RAM sharing if they are.
|
4617 | |
|
4618 | |
-XMLSubs args parsing fix so an arg like z-index
|
4619 | |
does not error under UseStrict. This is OK now:
|
4620 | |
|
4621 | |
<my:layer z-index=3 top=0 left=0> HTML </my:layer>
|
4622 | |
|
4623 | |
-Only remove outermost <SCRIPT> tags from global.asa
|
4624 | |
for IIS/PerlScript compatibility. Used to remove
|
4625 | |
all <SCRIPT> tags, which hurt when some subs in globa.asa
|
4626 | |
would be printing some JavaScript.
|
4627 | |
|
4628 | |
+$Response->{IsClientConnected} now updated correctly
|
4629 | |
before global.asa Script_OnStart. $Response->IsClientConnect()
|
4630 | |
can be used for accurate accounting, while
|
4631 | |
$Response->{IsClientConnected} only gets updated
|
4632 | |
after $Response->Flush(). Added test cases to response.t
|
4633 | |
|
4634 | |
+$Server->HTMLEncode(\$data) API extension, now can take
|
4635 | |
scalar ref, which can give a 5% improvement in benchmarks
|
4636 | |
for data 100K in size.
|
4637 | |
|
4638 | |
-Access to $Application is locked when Application_OnEnd &
|
4639 | |
Application_OnStart is called, creating a critical section
|
4640 | |
for use of $Application
|
4641 | |
|
4642 | |
++MLDBM::Sync used now for core DBM support in Apache::ASP::State.
|
4643 | |
This drastically simplifies/stabilizes the code in there
|
4644 | |
and will make it easier for future SQL database plugins.
|
4645 | |
|
4646 | |
+New API for accessing ASP object information in non content
|
4647 | |
handler phases:
|
4648 | |
|
4649 | |
use Apache::ASP;
|
4650 | |
sub My::Auth::handler {
|
4651 | |
my $r = shift;
|
4652 | |
my $ASP = Apache::ASP->new($r)
|
4653 | |
my $Session = $ASP->Session;
|
4654 | |
}
|
4655 | |
|
4656 | |
In the above example, $Session would be the same $Session
|
4657 | |
object created later while running the ASP script for this
|
4658 | |
same request.
|
4659 | |
|
4660 | |
Added t/asp_object.t test for this. Fixed global.asa to only
|
4661 | |
init StateDir when application.asp starts which is the first
|
4662 | |
test script to run.
|
4663 | |
|
4664 | |
-Fixed on Win32 to make Apache::ASP->new($r) able to create
|
4665 | |
multiple master ASP objects per request. Was not reentrant
|
4666 | |
safe before, particularly with state locking for dbms like
|
4667 | |
$Application & $Session.
|
4668 | |
|
4669 | |
++Output caching for includes, built on same layer ( extended )
|
4670 | |
as XSLTCache, test suite at t/cache.t. Enabled with special
|
4671 | |
arguments to
|
4672 | |
|
4673 | |
$Response->Include(\%args, @include_args)
|
4674 | |
$Response->TrapInclude(\%args, @include_args)
|
4675 | |
$Server->Execute(\%args, @include_args)
|
4676 | |
|
4677 | |
where %args = (
|
4678 | |
File => 'file.inc',
|
4679 | |
Cache => 1, # to activate cache layer
|
4680 | |
Expires => 3600, # to expire in one hour
|
4681 | |
LastModified => time() - 600, # to expire if cached before 10 minutes ago
|
4682 | |
Key => $Request->Form, # to cache based on checksum of serialized form data,
|
4683 | |
Clear => 1, # to not allow fetch from cache this time, will always execute include
|
4684 | |
);
|
4685 | |
|
4686 | |
Like the XSLTCache, it uses MLDBM::Sync::SDBM_File
|
4687 | |
by default, but can use DB_File or GDBM_File if
|
4688 | |
CacheDB is set to these.
|
4689 | |
|
4690 | |
See t/cache.t for API support until this is documented.
|
4691 | |
|
4692 | |
+CacheSize now supports units of M, K, B like
|
4693 | |
|
4694 | |
CacheSize 10M
|
4695 | |
CacheSize 10240K
|
4696 | |
CacheSize 10000000B
|
4697 | |
CacheSize 10000000
|
4698 | |
|
4699 | |
-Better handling of $Session->Abandon() so multiple
|
4700 | |
request to the same session while its being destroyed
|
4701 | |
will have the right effect.
|
4702 | |
|
4703 | |
+Optimized XMLSubs parsing. Scripts with lots lof XMLSubs
|
4704 | |
now parse faster for the first time. One test script with
|
4705 | |
almost 200 such tags went from a parse time of around 3 seconds
|
4706 | |
to .7 seconds after optimizations.
|
4707 | |
|
4708 | |
+Updated performance tuning docs, particularly for using
|
4709 | |
Apache::ASP->Loader()
|
4710 | |
|
4711 | |
+$Server->URL($url, \%params) now handles array refs
|
4712 | |
in the params values like
|
4713 | |
$Server->URL($url, { key => [ qw( value1 value2 ) ] })
|
4714 | |
|
4715 | |
This is so that query string data found in
|
4716 | |
$Request->QueryString that gets parsed into this form
|
4717 | |
from a string like: ?key=value&key=value2 would be
|
4718 | |
able to be reused passed back to $Server->URL to
|
4719 | |
create self referencing URLs more easily.
|
4720 | |
|
4721 | |
-Bug fix where XMLSubs like <s:td /> now works on perl
|
4722 | |
5.005xx, thanks to Philip Mak for reporting & fix.
|
4723 | |
|
4724 | |
+When searching for included files, will now join
|
4725 | |
the absolute path of the directory of the script
|
4726 | |
with the name of the file if its a relative file
|
4727 | |
name like ./header.inc. Before, would just look
|
4728 | |
for something like ././header.inc by using '.'
|
4729 | |
as the first directory to look for includes in.
|
4730 | |
|
4731 | |
The result of this is that scripts in two directories
|
4732 | |
configured with the same Global setting should be able
|
4733 | |
to have separate local header.inc files without causing
|
4734 | |
a cached namespace collision.
|
4735 | |
|
4736 | |
+$Server->Config() call will return a hash ref
|
4737 | |
to all the config setting for that request, like
|
4738 | |
Apache->dir_config would.
|
4739 | |
|
4740 | |
-StatINC setting with Apache::ASP->Loader() works again.
|
4741 | |
This makes StatINC & StatINCMatch settings viable
|
4742 | |
for production & development use when the system has
|
4743 | |
very many modules.
|
4744 | |
|
4745 | |
-Cookieless session support with configs like SessionQueryParse
|
4746 | |
and SessionQuery now work for URLs with frags in them
|
4747 | |
like http://localhost?arg=value#frag
|
4748 | |
|
4749 | |
+@rv = $Response->Include() now works where there are
|
4750 | |
multiple return values from an include like:
|
4751 | |
<% return(1,2); %>
|
|
4624 |
+Make sure a couple other small standard modules get loaded
|
|
4625 |
upon "PerlModule Apache::ASP", like Time::HiRes, Class::Struct,
|
|
4626 |
and MLDBM::Serializer::Data::Dumper. If not available
|
|
4627 |
these modules won't cause errors, but will promote child httpd
|
|
4628 |
RAM sharing if they are.
|
|
4629 |
|
|
4630 |
-XMLSubs args parsing fix so an arg like z-index
|
|
4631 |
does not error under UseStrict. This is OK now:
|
|
4632 |
|
|
4633 |
<my:layer z-index=3 top=0 left=0> HTML </my:layer>
|
|
4634 |
|
|
4635 |
-Only remove outermost <SCRIPT> tags from global.asa
|
|
4636 |
for IIS/PerlScript compatibility. Used to remove
|
|
4637 |
all <SCRIPT> tags, which hurt when some subs in globa.asa
|
|
4638 |
would be printing some JavaScript.
|
|
4639 |
|
|
4640 |
+$Response->{IsClientConnected} now updated correctly
|
|
4641 |
before global.asa Script_OnStart. $Response->IsClientConnect()
|
|
4642 |
can be used for accurate accounting, while
|
|
4643 |
$Response->{IsClientConnected} only gets updated
|
|
4644 |
after $Response->Flush(). Added test cases to response.t
|
|
4645 |
|
|
4646 |
+$Server->HTMLEncode(\$data) API extension, now can take
|
|
4647 |
scalar ref, which can give a 5% improvement in benchmarks
|
|
4648 |
for data 100K in size.
|
|
4649 |
|
|
4650 |
-Access to $Application is locked when Application_OnEnd &
|
|
4651 |
Application_OnStart is called, creating a critical section
|
|
4652 |
for use of $Application
|
|
4653 |
|
|
4654 |
++MLDBM::Sync used now for core DBM support in Apache::ASP::State.
|
|
4655 |
This drastically simplifies/stabilizes the code in there
|
|
4656 |
and will make it easier for future SQL database plugins.
|
|
4657 |
|
|
4658 |
+New API for accessing ASP object information in non content
|
|
4659 |
handler phases:
|
|
4660 |
|
|
4661 |
use Apache::ASP;
|
|
4662 |
sub My::Auth::handler {
|
|
4663 |
my $r = shift;
|
|
4664 |
my $ASP = Apache::ASP->new($r)
|
|
4665 |
my $Session = $ASP->Session;
|
|
4666 |
}
|
|
4667 |
|
|
4668 |
In the above example, $Session would be the same $Session
|
|
4669 |
object created later while running the ASP script for this
|
|
4670 |
same request.
|
|
4671 |
|
|
4672 |
Added t/asp_object.t test for this. Fixed global.asa to only
|
|
4673 |
init StateDir when application.asp starts which is the first
|
|
4674 |
test script to run.
|
|
4675 |
|
|
4676 |
-Fixed on Win32 to make Apache::ASP->new($r) able to create
|
|
4677 |
multiple master ASP objects per request. Was not reentrant
|
|
4678 |
safe before, particularly with state locking for dbms like
|
|
4679 |
$Application & $Session.
|
|
4680 |
|
|
4681 |
++Output caching for includes, built on same layer ( extended )
|
|
4682 |
as XSLTCache, test suite at t/cache.t. Enabled with special
|
|
4683 |
arguments to
|
|
4684 |
|
|
4685 |
$Response->Include(\%args, @include_args)
|
|
4686 |
$Response->TrapInclude(\%args, @include_args)
|
|
4687 |
$Server->Execute(\%args, @include_args)
|
|
4688 |
|
|
4689 |
where %args = (
|
|
4690 |
File => 'file.inc',
|
|
4691 |
Cache => 1, # to activate cache layer
|
|
4692 |
Expires => 3600, # to expire in one hour
|
|
4693 |
LastModified => time() - 600, # to expire if cached before 10 minutes ago
|
|
4694 |
Key => $Request->Form, # to cache based on checksum of serialized form data,
|
|
4695 |
Clear => 1, # to not allow fetch from cache this time, will always execute include
|
|
4696 |
);
|
|
4697 |
|
|
4698 |
Like the XSLTCache, it uses MLDBM::Sync::SDBM_File
|
|
4699 |
by default, but can use DB_File or GDBM_File if
|
|
4700 |
CacheDB is set to these.
|
|
4701 |
|
|
4702 |
See t/cache.t for API support until this is documented.
|
|
4703 |
|
|
4704 |
+CacheSize now supports units of M, K, B like
|
|
4705 |
|
|
4706 |
CacheSize 10M
|
|
4707 |
CacheSize 10240K
|
|
4708 |
CacheSize 10000000B
|
|
4709 |
CacheSize 10000000
|
|
4710 |
|
|
4711 |
-Better handling of $Session->Abandon() so multiple
|
|
4712 |
request to the same session while its being destroyed
|
|
4713 |
will have the right effect.
|
|
4714 |
|
|
4715 |
+Optimized XMLSubs parsing. Scripts with lots lof XMLSubs
|
|
4716 |
now parse faster for the first time. One test script with
|
|
4717 |
almost 200 such tags went from a parse time of around 3 seconds
|
|
4718 |
to .7 seconds after optimizations.
|
|
4719 |
|
|
4720 |
+Updated performance tuning docs, particularly for using
|
|
4721 |
Apache::ASP->Loader()
|
|
4722 |
|
|
4723 |
+$Server->URL($url, \%params) now handles array refs
|
|
4724 |
in the params values like
|
|
4725 |
$Server->URL($url, { key => [ qw( value1 value2 ) ] })
|
|
4726 |
|
|
4727 |
This is so that query string data found in
|
|
4728 |
$Request->QueryString that gets parsed into this form
|
|
4729 |
from a string like: ?key=value&key=value2 would be
|
|
4730 |
able to be reused passed back to $Server->URL to
|
|
4731 |
create self referencing URLs more easily.
|
|
4732 |
|
|
4733 |
-Bug fix where XMLSubs like <s:td /> now works on perl
|
|
4734 |
5.005xx, thanks to Philip Mak for reporting & fix.
|
|
4735 |
|
|
4736 |
+When searching for included files, will now join
|
|
4737 |
the absolute path of the directory of the script
|
|
4738 |
with the name of the file if its a relative file
|
|
4739 |
name like ./header.inc. Before, would just look
|
|
4740 |
for something like ././header.inc by using '.'
|
|
4741 |
as the first directory to look for includes in.
|
|
4742 |
|
|
4743 |
The result of this is that scripts in two directories
|
|
4744 |
configured with the same Global setting should be able
|
|
4745 |
to have separate local header.inc files without causing
|
|
4746 |
a cached namespace collision.
|
|
4747 |
|
|
4748 |
+$Server->Config() call will return a hash ref
|
|
4749 |
to all the config setting for that request, like
|
|
4750 |
Apache->dir_config would.
|
|
4751 |
|
|
4752 |
-StatINC setting with Apache::ASP->Loader() works again.
|
|
4753 |
This makes StatINC & StatINCMatch settings viable
|
|
4754 |
for production & development use when the system has
|
|
4755 |
very many modules.
|
|
4756 |
|
|
4757 |
-Cookieless session support with configs like SessionQueryParse
|
|
4758 |
and SessionQuery now work for URLs with frags in them
|
|
4759 |
like http://localhost?arg=value#frag
|
|
4760 |
|
|
4761 |
+@rv = $Response->Include() now works where there are
|
|
4762 |
multiple return values from an include like:
|
|
4763 |
<% return(1,2); %>
|
4752 | 4764 |
|
4753 | 4765 |
$VERSION = 2.21; $DATE="8/5/2001";
|
4754 | |
+Documented RequestParams config in CONFIG misc section.
|
4755 | |
|
4756 | |
+Documented new XSLT caching directives.
|
4757 | |
|
4758 | |
+Updated ./site/eg/.htaccess XSLT example config
|
4759 | |
to use XSLTCache setting.
|
4760 | |
|
4761 | |
+New FAQ section on why perl variables are sticky globals,
|
4762 | |
suggested by Mark Seger.
|
4763 | |
|
4764 | |
-push Global directory onto @INC during ASP script execution
|
4765 | |
Protect contents of original @INC with local. This makes
|
4766 | |
things compatible with .09 Apache::ASP where we always had
|
4767 | |
Global in @INC. Fixed needed by Henrik Tougaard
|
4768 | |
|
4769 | |
- ; is a valid separator like & for QueryString Parameters
|
4770 | |
Fixed wanted by Anders
|
4771 | |
|
4772 | |
-XSMLSubsMatch doc fix in CONFIG section
|
4773 | |
|
4774 | |
+Reduces number of Session groups to 16 from 32, so
|
4775 | |
session manager for small user sets will be that much faster.
|
4776 | |
|
4777 | |
+optimizations for internal database, $Application, and $Session
|
4778 | |
creation.
|
4779 | |
|
4780 | |
+XSLTCache must be set for XSLT caching to begin using CacheDir
|
4781 | |
|
4782 | |
+CacheDB like StateDB bug sets dbm format for caching, which
|
4783 | |
defaults to MLDBM::Sync::SDBM_File, which works well for caching
|
4784 | |
output sizes < 50K
|
4785 | |
|
4786 | |
+CacheDir config for XSLT caching ... defaults to StateDir
|
4787 | |
|
4788 | |
+CacheSize in bytes determines whether the caches in CacheDir
|
4789 | |
are deleted at the end of the request. A cache will be
|
4790 | |
reset in this way back to 0 bytes. Defaults to 10000000 bytes
|
4791 | |
or about 10M.
|
4792 | |
|
4793 | |
+Caching infrastructure work that is being used in XSLT
|
4794 | |
can be leveraged later for output caching of includes,
|
4795 | |
or arbitrary user caching.
|
4796 | |
|
4797 | |
-t/server_mail.t test now uses valid email for testing
|
4798 | |
purposes ... doesn't actually send a mail, but for SMTP
|
4799 | |
runtime validation purposes it should be OK.
|
4800 | |
|
4801 | |
+fixed where POST data was read from under MOD_PERL,
|
4802 | |
harmless bug this was that just generated the wrong
|
4803 | |
system debugging message.
|
|
4766 |
+Documented RequestParams config in CONFIG misc section.
|
|
4767 |
|
|
4768 |
+Documented new XSLT caching directives.
|
|
4769 |
|
|
4770 |
+Updated ./site/eg/.htaccess XSLT example config
|
|
4771 |
to use XSLTCache setting.
|
|
4772 |
|
|
4773 |
+New FAQ section on why perl variables are sticky globals,
|
|
4774 |
suggested by Mark Seger.
|
|
4775 |
|
|
4776 |
-push Global directory onto @INC during ASP script execution
|
|
4777 |
Protect contents of original @INC with local. This makes
|
|
4778 |
things compatible with .09 Apache::ASP where we always had
|
|
4779 |
Global in @INC. Fixed needed by Henrik Tougaard
|
|
4780 |
|
|
4781 |
- ; is a valid separator like & for QueryString Parameters
|
|
4782 |
Fixed wanted by Anders
|
|
4783 |
|
|
4784 |
-XSMLSubsMatch doc fix in CONFIG section
|
|
4785 |
|
|
4786 |
+Reduces number of Session groups to 16 from 32, so
|
|
4787 |
session manager for small user sets will be that much faster.
|
|
4788 |
|
|
4789 |
+optimizations for internal database, $Application, and $Session
|
|
4790 |
creation.
|
|
4791 |
|
|
4792 |
+XSLTCache must be set for XSLT caching to begin using CacheDir
|
|
4793 |
|
|
4794 |
+CacheDB like StateDB bug sets dbm format for caching, which
|
|
4795 |
defaults to MLDBM::Sync::SDBM_File, which works well for caching
|
|
4796 |
output sizes < 50K
|
|
4797 |
|
|
4798 |
+CacheDir config for XSLT caching ... defaults to StateDir
|
|
4799 |
|
|
4800 |
+CacheSize in bytes determines whether the caches in CacheDir
|
|
4801 |
are deleted at the end of the request. A cache will be
|
|
4802 |
reset in this way back to 0 bytes. Defaults to 10000000 bytes
|
|
4803 |
or about 10M.
|
|
4804 |
|
|
4805 |
+Caching infrastructure work that is being used in XSLT
|
|
4806 |
can be leveraged later for output caching of includes,
|
|
4807 |
or arbitrary user caching.
|
|
4808 |
|
|
4809 |
-t/server_mail.t test now uses valid email for testing
|
|
4810 |
purposes ... doesn't actually send a mail, but for SMTP
|
|
4811 |
runtime validation purposes it should be OK.
|
|
4812 |
|
|
4813 |
+fixed where POST data was read from under MOD_PERL,
|
|
4814 |
harmless bug this was that just generated the wrong
|
|
4815 |
system debugging message.
|
4804 | 4816 |
|
4805 | 4817 |
$VERSION = 2.19; $DATE="7/10/2001";
|
4806 | |
+update docs in various parts
|
4807 | |
|
4808 | |
+added ./make_httpd/build_httpds.sh scripts for quick builds
|
4809 | |
of apache + mod_perl + mod_ssl
|
4810 | |
|
4811 | |
++plain CGI mode available for ASP execution.
|
4812 | |
cgi/asp script can now be used to execute ASP
|
4813 | |
scripts in CGI mode. See CGI perldoc section for more info.
|
4814 | |
The examples in ./site/eg have been set up to run
|
4815 | |
in cgi mode if desired. Configuration in CGI section
|
4816 | |
only tested for Apache on Linux.
|
4817 | |
|
4818 | |
-Fixed some faulty or out of date docs in XML/XSLT section.
|
4819 | |
|
4820 | |
+added t/server_mail.t test for $Server->Mail(), requires
|
4821 | |
Net::SMTP to be configured properly to succeed.
|
4822 | |
|
4823 | |
+Net::SMTP debugging not enabled by Debug 1,2,3 configs,
|
4824 | |
not only when system debugging is set with Debug -1,-2,-3
|
4825 | |
However, a Debug param passed to $Server->Mail() will
|
4826 | |
sucessfully override the Debug -1,-2,-3 setting even
|
4827 | |
when its Debug => 0
|
4828 | |
|
4829 | |
-Check for undef values during stats for inline includes
|
4830 | |
so we don't trigger unintialized warnings
|
4831 | |
|
4832 | |
+Documented ';' may separate many directories in the IncludesDir
|
4833 | |
setting for creating a more flexible includes search path.
|
|
4818 |
+update docs in various parts
|
|
4819 |
|
|
4820 |
+added ./make_httpd/build_httpds.sh scripts for quick builds
|
|
4821 |
of apache + mod_perl + mod_ssl
|
|
4822 |
|
|
4823 |
++plain CGI mode available for ASP execution.
|
|
4824 |
cgi/asp script can now be used to execute ASP
|
|
4825 |
scripts in CGI mode. See CGI perldoc section for more info.
|
|
4826 |
The examples in ./site/eg have been set up to run
|
|
4827 |
in cgi mode if desired. Configuration in CGI section
|
|
4828 |
only tested for Apache on Linux.
|
|
4829 |
|
|
4830 |
-Fixed some faulty or out of date docs in XML/XSLT section.
|
|
4831 |
|
|
4832 |
+added t/server_mail.t test for $Server->Mail(), requires
|
|
4833 |
Net::SMTP to be configured properly to succeed.
|
|
4834 |
|
|
4835 |
+Net::SMTP debugging not enabled by Debug 1,2,3 configs,
|
|
4836 |
not only when system debugging is set with Debug -1,-2,-3
|
|
4837 |
However, a Debug param passed to $Server->Mail() will
|
|
4838 |
sucessfully override the Debug -1,-2,-3 setting even
|
|
4839 |
when its Debug => 0
|
|
4840 |
|
|
4841 |
-Check for undef values during stats for inline includes
|
|
4842 |
so we don't trigger unintialized warnings
|
|
4843 |
|
|
4844 |
+Documented ';' may separate many directories in the IncludesDir
|
|
4845 |
setting for creating a more flexible includes search path.
|
4834 | 4846 |
|
4835 | 4847 |
$VERSION = 2.17; $DATE="6/17/2001";
|
4836 | |
+Added ASP perl mmm-mode subclass and configuration
|
4837 | |
in editors/mmm-asp-perl.el file for better emacs support.
|
4838 | |
Updated SYNTAX/Editors documentation.
|
4839 | |
|
4840 | |
+Better debugging error message for Debug 2 or 3 settings
|
4841 | |
for global.asa errors. Limit debug output for lines
|
4842 | |
preceding rendered script.
|
4843 | |
|
4844 | |
-In old inline include mode, there should no longer
|
4845 | |
be the error "need id for includes" when using
|
4846 | |
$Response->Include() ... if DynamicIncludes were
|
4847 | |
enabled, this problem would not have likely occured
|
4848 | |
anyway. DynamicIncludes are preferrable to use so
|
4849 | |
that compiled includes can be shared between scripts.
|
4850 | |
This bug was likely introduced in version 2.11.
|
4851 | |
|
4852 | |
-Removed logging from $Response->BinaryWrite() in regular
|
4853 | |
debug mode 1 or 2. Logging still enabled in system Debug mode, -1 or -2
|
4854 | |
|
4855 | |
-Removed other extra system debugging call that is really not
|
4856 | |
necessary.
|
|
4848 |
+Added ASP perl mmm-mode subclass and configuration
|
|
4849 |
in editors/mmm-asp-perl.el file for better emacs support.
|
|
4850 |
Updated SYNTAX/Editors documentation.
|
|
4851 |
|
|
4852 |
+Better debugging error message for Debug 2 or 3 settings
|
|
4853 |
for global.asa errors. Limit debug output for lines
|
|
4854 |
preceding rendered script.
|
|
4855 |
|
|
4856 |
-In old inline include mode, there should no longer
|
|
4857 |
be the error "need id for includes" when using
|
|
4858 |
$Response->Include() ... if DynamicIncludes were
|
|
4859 |
enabled, this problem would not have likely occured
|
|
4860 |
anyway. DynamicIncludes are preferrable to use so
|
|
4861 |
that compiled includes can be shared between scripts.
|
|
4862 |
This bug was likely introduced in version 2.11.
|
|
4863 |
|
|
4864 |
-Removed logging from $Response->BinaryWrite() in regular
|
|
4865 |
debug mode 1 or 2. Logging still enabled in system Debug mode, -1 or -2
|
|
4866 |
|
|
4867 |
-Removed other extra system debugging call that is really not
|
|
4868 |
necessary.
|
4857 | 4869 |
|
4858 | 4870 |
$VERSION = 2.15; $DATE="06/12/2001";
|
4859 | |
-Fix for running under perl 5.6.1 by removing parser optimization
|
4860 | |
introduced in 2.11.
|
4861 | |
|
4862 | |
-Now file upload forms, forms with ENCTYPE="multipart/form-data"
|
4863 | |
can have multiple check boxes and select items marked for
|
4864 | |
@params = $Request->Form('param_name') functionality. This
|
4865 | |
will be demonstrated via the ./site/eg/file_upload.asp example.
|
|
4871 |
-Fix for running under perl 5.6.1 by removing parser optimization
|
|
4872 |
introduced in 2.11.
|
|
4873 |
|
|
4874 |
-Now file upload forms, forms with ENCTYPE="multipart/form-data"
|
|
4875 |
can have multiple check boxes and select items marked for
|
|
4876 |
@params = $Request->Form('param_name') functionality. This
|
|
4877 |
will be demonstrated via the ./site/eg/file_upload.asp example.
|
4866 | 4878 |
|
4867 | 4879 |
$VERSION = 2.11; $DATE="05/29/2001";
|
4868 | |
+Parser optimization from Dariusz Pietrzak
|
4869 | |
|
4870 | |
-work around for global destruction error message for perl 5.6
|
4871 | |
during install
|
4872 | |
|
4873 | |
+$Response->{IsClientConnected} now will be set
|
4874 | |
correctly with ! $r->connection->aborted after each
|
4875 | |
$Response->Flush()
|
4876 | |
|
4877 | |
+New XSLTParser config which can be set to XML::XSLT or
|
4878 | |
XML::Sablotron. XML::Sablotron renders 10 times faster,
|
4879 | |
but differently. XML::XSLT is pure perl, so has wider
|
4880 | |
platform support than XML::Sablotron. This config affects
|
4881 | |
both the XSLT config and the $Server->XSLT() method.
|
4882 | |
|
4883 | |
+New $Server->XSLT(\$xsl_data, \$xml_data) API which
|
4884 | |
allows runtime XSLT on components instead of having to process
|
4885 | |
the entire ASP output as XSLT.
|
4886 | |
|
4887 | |
-XSLT support for XML::XSL 0.32. Things broke after .24.
|
4888 | |
|
4889 | |
-XSLTCacheSize config no longer supported. Was a bad
|
4890 | |
Tie::Cache implementation. Should be file based cache
|
4891 | |
to greatly increases cache hit ratio.
|
4892 | |
|
4893 | |
++$Response->Include(), $Response->TrapInclude(),
|
4894 | |
and $Server->Execute() will all take a scalar ref
|
4895 | |
or \'asdfdsafa' type code as their first argument to execute
|
4896 | |
a raw script instead of a script file name. At this time,
|
4897 | |
compilation of such a script, will not be cached. It is
|
4898 | |
compiled/executed as an anonymous subroutine and will be freed
|
4899 | |
when it goes out of scope.
|
4900 | |
|
4901 | |
+ -p argument to cgi/asp script to set GlobalPackage
|
4902 | |
config for static site builds
|
4903 | |
|
4904 | |
-pod commenting fix where windows clients are used for
|
4905 | |
ASP script generation.
|
4906 | |
|
4907 | |
+Some nice performance enhancements, thank to submissions from
|
4908 | |
Ime Smits. Added some 1-2% per request execution speed.
|
4909 | |
|
4910 | |
+Added StateDB MLDBM::Sync::SDBM_File support for faster
|
4911 | |
$Session + $Application than DB_File, yet still overcomes
|
4912 | |
SDBM_File's 1024 bytes value limitation. Documented in
|
4913 | |
StateDB config, and added Makefile.PL entry.
|
4914 | |
|
4915 | |
+Removed deprecated MD5 use and replace with Digest::MD5 calls
|
4916 | |
|
4917 | |
+PerlSetVar InodeNames 1 config which will compile scripts hashed by
|
4918 | |
their device & inode identifiers, from a stat($file)[0,1] call.
|
4919 | |
This allows for script directories, the Global directory,
|
4920 | |
and IncludesDir directories to be symlinked to without
|
4921 | |
recompiling identical scripts. Likely only works on Unix
|
4922 | |
systems. Thanks to Ime Smits for this one.
|
4923 | |
|
4924 | |
+Streamlined code internally so that includes & scripts were
|
4925 | |
compiled by same code. This is a baby step toward fusing
|
4926 | |
include & script code compilation models, leading to being
|
4927 | |
able to compile bits of scripts on the fly as ASP subs,
|
4928 | |
and being able to garbage collect ASP code subroutines.
|
4929 | |
|
4930 | |
-removed @_ = () in script compilation which would trigger warnings
|
4931 | |
under PerlWarn being set, thanks for Carl Lipo for reporting this.
|
4932 | |
|
4933 | |
-StatINC/StatINCMatch fix for not undeffing compiled includes
|
4934 | |
and pages in the GlobalPackage namespace
|
4935 | |
|
4936 | |
-Create new HTML::FillInForm object for each FormFill
|
4937 | |
done, to avoid potential bug with multiple forms filled
|
4938 | |
by same object. Thanks to Jim Pavlick for the tip.
|
4939 | |
|
4940 | |
+Added PREREQ_PM to Makefile.PL, so CPAN installation will
|
4941 | |
pick up the necessary modules correctly, without having
|
4942 | |
to use Bundle::Apache::ASP, thanks to Michael Davis.
|
4943 | |
|
4944 | |
+ > mode for opening lock files, not >>, since its faster
|
4945 | |
|
4946 | |
+$Response->Flush() fixed, by giving $| = 1 perl hint
|
4947 | |
to $r->print() and the rest of the perl sub.
|
4948 | |
|
4949 | |
+$Response->{Cookies}{cookie_name}{Expires} = -86400 * 300;
|
4950 | |
works so negative relative time may be used to expire cookies.
|
4951 | |
|
4952 | |
+Count() + Key() Collection class API implementations
|
4953 | |
|
4954 | |
+Added editors/aasp.vim VIM syntax file for Apache::ASP,
|
4955 | |
courtesy of Jon Topper.
|
4956 | |
|
4957 | |
++Better line numbering with #line perl pragma. Especially
|
4958 | |
helps with inline includes. Lots of work here, & integrated
|
4959 | |
with Debug 2 runtime pretty print debugging.
|
4960 | |
|
4961 | |
+$Response->{Debug} member toggles on/off whether
|
4962 | |
$Response->Debug() is active, overriding the Debug setting
|
4963 | |
for this purpose. Documented.
|
4964 | |
|
4965 | |
-When Filter is on, Content-Length won't be set and compression
|
4966 | |
won't be used. These things would not work with a filtering
|
4967 | |
handler after Apache::ASP
|
|
4880 |
+Parser optimization from Dariusz Pietrzak
|
|
4881 |
|
|
4882 |
-work around for global destruction error message for perl 5.6
|
|
4883 |
during install
|
|
4884 |
|
|
4885 |
+$Response->{IsClientConnected} now will be set
|
|
4886 |
correctly with ! $r->connection->aborted after each
|
|
4887 |
$Response->Flush()
|
|
4888 |
|
|
4889 |
+New XSLTParser config which can be set to XML::XSLT or
|
|
4890 |
XML::Sablotron. XML::Sablotron renders 10 times faster,
|
|
4891 |
but differently. XML::XSLT is pure perl, so has wider
|
|
4892 |
platform support than XML::Sablotron. This config affects
|
|
4893 |
both the XSLT config and the $Server->XSLT() method.
|
|
4894 |
|
|
4895 |
+New $Server->XSLT(\$xsl_data, \$xml_data) API which
|
|
4896 |
allows runtime XSLT on components instead of having to process
|
|
4897 |
the entire ASP output as XSLT.
|
|
4898 |
|
|
4899 |
-XSLT support for XML::XSL 0.32. Things broke after .24.
|
|
4900 |
|
|
4901 |
-XSLTCacheSize config no longer supported. Was a bad
|
|
4902 |
Tie::Cache implementation. Should be file based cache
|
|
4903 |
to greatly increases cache hit ratio.
|
|
4904 |
|
|
4905 |
++$Response->Include(), $Response->TrapInclude(),
|
|
4906 |
and $Server->Execute() will all take a scalar ref
|
|
4907 |
or \'asdfdsafa' type code as their first argument to execute
|
|
4908 |
a raw script instead of a script file name. At this time,
|
|
4909 |
compilation of such a script, will not be cached. It is
|
|
4910 |
compiled/executed as an anonymous subroutine and will be freed
|
|
4911 |
when it goes out of scope.
|
|
4912 |
|
|
4913 |
+ -p argument to cgi/asp script to set GlobalPackage
|
|
4914 |
config for static site builds
|
|
4915 |
|
|
4916 |
-pod commenting fix where windows clients are used for
|
|
4917 |
ASP script generation.
|
|
4918 |
|
|
4919 |
+Some nice performance enhancements, thank to submissions from
|
|
4920 |
Ime Smits. Added some 1-2% per request execution speed.
|
|
4921 |
|
|
4922 |
+Added StateDB MLDBM::Sync::SDBM_File support for faster
|
|
4923 |
$Session + $Application than DB_File, yet still overcomes
|
|
4924 |
SDBM_File's 1024 bytes value limitation. Documented in
|
|
4925 |
StateDB config, and added Makefile.PL entry.
|
|
4926 |
|
|
4927 |
+Removed deprecated MD5 use and replace with Digest::MD5 calls
|
|
4928 |
|
|
4929 |
+PerlSetVar InodeNames 1 config which will compile scripts hashed by
|
|
4930 |
their device & inode identifiers, from a stat($file)[0,1] call.
|
|
4931 |
This allows for script directories, the Global directory,
|
|
4932 |
and IncludesDir directories to be symlinked to without
|
|
4933 |
recompiling identical scripts. Likely only works on Unix
|
|
4934 |
systems. Thanks to Ime Smits for this one.
|
|
4935 |
|
|
4936 |
+Streamlined code internally so that includes & scripts were
|
|
4937 |
compiled by same code. This is a baby step toward fusing
|
|
4938 |
include & script code compilation models, leading to being
|
|
4939 |
able to compile bits of scripts on the fly as ASP subs,
|
|
4940 |
and being able to garbage collect ASP code subroutines.
|
|
4941 |
|
|
4942 |
-removed @_ = () in script compilation which would trigger warnings
|
|
4943 |
under PerlWarn being set, thanks for Carl Lipo for reporting this.
|
|
4944 |
|
|
4945 |
-StatINC/StatINCMatch fix for not undeffing compiled includes
|
|
4946 |
and pages in the GlobalPackage namespace
|
|
4947 |
|
|
4948 |
-Create new HTML::FillInForm object for each FormFill
|
|
4949 |
done, to avoid potential bug with multiple forms filled
|
|
4950 |
by same object. Thanks to Jim Pavlick for the tip.
|
|
4951 |
|
|
4952 |
+Added PREREQ_PM to Makefile.PL, so CPAN installation will
|
|
4953 |
pick up the necessary modules correctly, without having
|
|
4954 |
to use Bundle::Apache::ASP, thanks to Michael Davis.
|
|
4955 |
|
|
4956 |
+ > mode for opening lock files, not >>, since its faster
|
|
4957 |
|
|
4958 |
+$Response->Flush() fixed, by giving $| = 1 perl hint
|
|
4959 |
to $r->print() and the rest of the perl sub.
|
|
4960 |
|
|
4961 |
+$Response->{Cookies}{cookie_name}{Expires} = -86400 * 300;
|
|
4962 |
works so negative relative time may be used to expire cookies.
|
|
4963 |
|
|
4964 |
+Count() + Key() Collection class API implementations
|
|
4965 |
|
|
4966 |
+Added editors/aasp.vim VIM syntax file for Apache::ASP,
|
|
4967 |
courtesy of Jon Topper.
|
|
4968 |
|
|
4969 |
++Better line numbering with #line perl pragma. Especially
|
|
4970 |
helps with inline includes. Lots of work here, & integrated
|
|
4971 |
with Debug 2 runtime pretty print debugging.
|
|
4972 |
|
|
4973 |
+$Response->{Debug} member toggles on/off whether
|
|
4974 |
$Response->Debug() is active, overriding the Debug setting
|
|
4975 |
for this purpose. Documented.
|
|
4976 |
|
|
4977 |
-When Filter is on, Content-Length won't be set and compression
|
|
4978 |
won't be used. These things would not work with a filtering
|
|
4979 |
handler after Apache::ASP
|
4968 | 4980 |
|
4969 | 4981 |
$VERSION = 2.09; $DATE="01/30/2001";
|
4970 | |
+Examples in ./site/eg are now UseStrict friendly.
|
4971 | |
Also fixed up ./site/eg/ssi_filter.ssi example.
|
4972 | |
|
4973 | |
+Auto purge of old stale session group directories, increasing
|
4974 | |
session manager performance when using Sessions when migrating
|
4975 | |
to Apache::ASP 2.09+ from older versions.
|
4976 | |
|
4977 | |
+SessionQueryParse now works for all $Response->{ContentType}
|
4978 | |
starting with 'text' ... before just worked with text/html,
|
4979 | |
now other text formats like wml will work too.
|
4980 | |
|
4981 | |
+32 groups instead of 64, better inactive site session group purging.
|
4982 | |
|
4983 | |
+Default session-id length back up to 32 hex bytes.
|
4984 | |
Better security vs. performance, security more important,
|
4985 | |
especially when performance difference was very little.
|
4986 | |
|
4987 | |
+PerlSetVar RequestParams 1 creates $Request->Params
|
4988 | |
object with combined contents of $Request->QueryString
|
4989 | |
and $Request->Form
|
4990 | |
|
4991 | |
++FormFill feature via HTML::FillInForm. Activate with
|
4992 | |
$Response->{FormFill} = 1 or PerlSetVar FormFill 1
|
4993 | |
See site/eg/formfill.asp for example.
|
4994 | |
|
4995 | |
++XMLSubs tags of the same name may be embedded in each other
|
4996 | |
recursively now.
|
4997 | |
|
4998 | |
+No umask() use on Win32 as it seems unclear what it would do
|
4999 | |
|
5000 | |
+simpler Apache::ASP::State file handle mode of >> when opening
|
5001 | |
lock file. saves doing a -e $file test.
|
5002 | |
|
5003 | |
+AuthServerVariables config to init $Request->ServerVariables
|
5004 | |
with basic auth data as documented. This used to be default
|
5005 | |
behavior, but triggers "need AuthName" warnings from recent
|
5006 | |
versions of Apache when AuthName is not set.
|
5007 | |
|
5008 | |
-Renamed Apache::ASP::Loader class to Apache::ASP::Load
|
5009 | |
as it collided with the Apache::ASP->Loader() function
|
5010 | |
namespace. Class used internally by Apache::ASP->Loader()
|
5011 | |
so no public API changed here.
|
5012 | |
|
5013 | |
+-Read of POST input for $Request->BinaryRead() even
|
5014 | |
if its not from a form. Only set up $Request->Form
|
5015 | |
if this is from a form POST.
|
5016 | |
|
5017 | |
+faster POST/GET param parsing
|
|
4982 |
+Examples in ./site/eg are now UseStrict friendly.
|
|
4983 |
Also fixed up ./site/eg/ssi_filter.ssi example.
|
|
4984 |
|
|
4985 |
+Auto purge of old stale session group directories, increasing
|
|
4986 |
session manager performance when using Sessions when migrating
|
|
4987 |
to Apache::ASP 2.09+ from older versions.
|
|
4988 |
|
|
4989 |
+SessionQueryParse now works for all $Response->{ContentType}
|
|
4990 |
starting with 'text' ... before just worked with text/html,
|
|
4991 |
now other text formats like wml will work too.
|
|
4992 |
|
|
4993 |
+32 groups instead of 64, better inactive site session group purging.
|
|
4994 |
|
|
4995 |
+Default session-id length back up to 32 hex bytes.
|
|
4996 |
Better security vs. performance, security more important,
|
|
4997 |
especially when performance difference was very little.
|
|
4998 |
|
|
4999 |
+PerlSetVar RequestParams 1 creates $Request->Params
|
|
5000 |
object with combined contents of $Request->QueryString
|
|
5001 |
and $Request->Form
|
|
5002 |
|
|
5003 |
++FormFill feature via HTML::FillInForm. Activate with
|
|
5004 |
$Response->{FormFill} = 1 or PerlSetVar FormFill 1
|
|
5005 |
See site/eg/formfill.asp for example.
|
|
5006 |
|
|
5007 |
++XMLSubs tags of the same name may be embedded in each other
|
|
5008 |
recursively now.
|
|
5009 |
|
|
5010 |
+No umask() use on Win32 as it seems unclear what it would do
|
|
5011 |
|
|
5012 |
+simpler Apache::ASP::State file handle mode of >> when opening
|
|
5013 |
lock file. saves doing a -e $file test.
|
|
5014 |
|
|
5015 |
+AuthServerVariables config to init $Request->ServerVariables
|
|
5016 |
with basic auth data as documented. This used to be default
|
|
5017 |
behavior, but triggers "need AuthName" warnings from recent
|
|
5018 |
versions of Apache when AuthName is not set.
|
|
5019 |
|
|
5020 |
-Renamed Apache::ASP::Loader class to Apache::ASP::Load
|
|
5021 |
as it collided with the Apache::ASP->Loader() function
|
|
5022 |
namespace. Class used internally by Apache::ASP->Loader()
|
|
5023 |
so no public API changed here.
|
|
5024 |
|
|
5025 |
+-Read of POST input for $Request->BinaryRead() even
|
|
5026 |
if its not from a form. Only set up $Request->Form
|
|
5027 |
if this is from a form POST.
|
|
5028 |
|
|
5029 |
+faster POST/GET param parsing
|
5018 | 5030 |
|
5019 | 5031 |
$VERSION = 2.07; $DATE="11/26/2000";
|
5020 | |
-+-+ Session Manager
|
5021 | |
empty state group directories are not removed, thus alleviating
|
5022 | |
one potential race condition. This impacted performance
|
5023 | |
on idle sites severely as there were now 256 directories
|
5024 | |
to check, so made many performance enhancements to the
|
5025 | |
session manager. The session manager is built to handle
|
5026 | |
up to 20,000 client sessions over a 20 minute period. It
|
5027 | |
will slow the system down as it approaches this capacity.
|
5028 | |
|
5029 | |
One such enhancement was session-ids now being 11 bytes long
|
5030 | |
so that its .lock file is only 16 characters in length.
|
5031 | |
Supposedly some file systems lookup files 16 characters or
|
5032 | |
less in a fast hashed lookup. This new session-id has
|
5033 | |
4.4 x 10^12 possible values. I try to keep this space as
|
5034 | |
large as possible to prevent a brute force attack.
|
5035 | |
|
5036 | |
Another enhancement was to limit the group directories
|
5037 | |
to 64 by only allowing the session-id prefix to be [0-3][0-f]
|
5038 | |
instead of [0-f][0-f], checking 64 empty directories on an
|
5039 | |
idle site takes little time for the session manager, compared
|
5040 | |
to 256 which felt significant from the client end, especially
|
5041 | |
on Win32 where requests are serialized.
|
5042 | |
|
5043 | |
If upgrading to this version, you would do well to delete
|
5044 | |
empty StateDir group directories while your site is idle.
|
5045 | |
Upgrading during an idle time will have a similar effect,
|
5046 | |
as old Apache::ASP versions would delete empty directories.
|
5047 | |
|
5048 | |
-$Application->GetSession($session_id) now creates
|
5049 | |
an session object that only lasts until the next
|
5050 | |
invocation of $Application->GetSession(). This is
|
5051 | |
to avoid opening too many file handles at once,
|
5052 | |
where each session requires opening a lock file.
|
5053 | |
|
5054 | |
+added experimental support for Apache::Filter 1.013
|
5055 | |
filter_register call
|
5056 | |
|
5057 | |
+make test cases for $Response->Include() and
|
5058 | |
$Response->TrapInclude()
|
5059 | |
|
5060 | |
+Documented CollectionItem config.
|
5061 | |
|
5062 | |
+New $Request->QueryString('multiple args')->Count()
|
5063 | |
interface implemented for CollectionItem config.
|
5064 | |
Also $Request->QueryString('multiple args')->Item(1) method.
|
5065 | |
Note ASP collections start counting at 1.
|
5066 | |
|
5067 | |
--fixed race condition, where multiple processes might
|
5068 | |
try creating the same state directory at the same time, with
|
5069 | |
one winning, and one generating an error. Now, web process
|
5070 | |
will recheck for directory existence and error if
|
5071 | |
it doesn't.
|
5072 | |
|
5073 | |
-global.asa compilation will be cached correctly, not
|
5074 | |
sure when this broke. It was getting reloaded every request.
|
5075 | |
|
5076 | |
-StateAllWrite config, when set creates state files
|
5077 | |
with a+rw or 0666 permissions, and state directories
|
5078 | |
with a+rwx or 0777 permissions. This allows web servers
|
5079 | |
running as different users on the same machine to share a
|
5080 | |
common StateDir config. Also StateGroupWrite config
|
5081 | |
with perms 0770 and 0660 respectively.
|
5082 | |
|
5083 | |
-Apache::ASP->Loader() now won't follow links to
|
5084 | |
directories when searching for scripts to load.
|
5085 | |
|
5086 | |
+New RegisterIncludes config which is on by default only
|
5087 | |
when using Apache::ASP->Loader(), for compiling includes
|
5088 | |
when precompiling scripts.
|
5089 | |
|
5090 | |
+Apache::ASP::CompileInclude path optimized, which underlies
|
5091 | |
$Response->Include()
|
5092 | |
|
5093 | |
+$Request->QueryString->('foo')->Item() syntax enabled
|
5094 | |
with CollectionItem config setting. Default syntax
|
5095 | |
supported is $Request->QueryString('foo') which is
|
5096 | |
in compatible. Other syntax like $Request->{Form}{foo}
|
5097 | |
and $Request->Form->Item('foo') will work in either case.
|
5098 | |
|
5099 | |
+New fix suggested for missing Apache reference in
|
5100 | |
Apache::ASP handler startup for RedHat RPMs. Added
|
5101 | |
to error message.
|
5102 | |
|
5103 | |
--Backup flock() unlocking try for QNX will not corrupt the
|
5104 | |
normal flock() LOCK_UN usage, after trying to unlock a file
|
5105 | |
that doesn't exist. This bug was uncovered from the below
|
5106 | |
group deletion race condition that existed.
|
5107 | |
|
5108 | |
-Session garbage collection will not delete new group
|
5109 | |
directories that have just been created but are empty.
|
5110 | |
There was a race condition where a new group directory would
|
5111 | |
be created, but then deleted by a garbage collector before
|
5112 | |
it could be initialized correctly with new state files.
|
5113 | |
|
5114 | |
+Better random session-id checksums for $Session creation.
|
5115 | |
per process srand() initialization, because srand()
|
5116 | |
may be called once prefork and never called again.
|
5117 | |
Call without arguments to rely on perl's decent rand
|
5118 | |
seeding. Then when calling rand() in Secret() we have
|
5119 | |
enough random data, that even if someone else calls srand()
|
5120 | |
to something fixed, should not mess things up terribly since
|
5121 | |
we checksum things like $$ & time, as well as perl memory
|
5122 | |
references.
|
5123 | |
|
5124 | |
+XMLSubs installation make test.
|
5125 | |
|
5126 | |
-Fix for multiline arguments for XMLSubs
|
|
5032 |
-+-+ Session Manager
|
|
5033 |
empty state group directories are not removed, thus alleviating
|
|
5034 |
one potential race condition. This impacted performance
|
|
5035 |
on idle sites severely as there were now 256 directories
|
|
5036 |
to check, so made many performance enhancements to the
|
|
5037 |
session manager. The session manager is built to handle
|
|
5038 |
up to 20,000 client sessions over a 20 minute period. It
|
|
5039 |
will slow the system down as it approaches this capacity.
|
|
5040 |
|
|
5041 |
One such enhancement was session-ids now being 11 bytes long
|
|
5042 |
so that its .lock file is only 16 characters in length.
|
|
5043 |
Supposedly some file systems lookup files 16 characters or
|
|
5044 |
less in a fast hashed lookup. This new session-id has
|
|
5045 |
4.4 x 10^12 possible values. I try to keep this space as
|
|
5046 |
large as possible to prevent a brute force attack.
|
|
5047 |
|
|
5048 |
Another enhancement was to limit the group directories
|
|
5049 |
to 64 by only allowing the session-id prefix to be [0-3][0-f]
|
|
5050 |
instead of [0-f][0-f], checking 64 empty directories on an
|
|
5051 |
idle site takes little time for the session manager, compared
|
|
5052 |
to 256 which felt significant from the client end, especially
|
|
5053 |
on Win32 where requests are serialized.
|
|
5054 |
|
|
5055 |
If upgrading to this version, you would do well to delete
|
|
5056 |
empty StateDir group directories while your site is idle.
|
|
5057 |
Upgrading during an idle time will have a similar effect,
|
|
5058 |
as old Apache::ASP versions would delete empty directories.
|
|
5059 |
|
|
5060 |
-$Application->GetSession($session_id) now creates
|
|
5061 |
an session object that only lasts until the next
|
|
5062 |
invocation of $Application->GetSession(). This is
|
|
5063 |
to avoid opening too many file handles at once,
|
|
5064 |
where each session requires opening a lock file.
|
|
5065 |
|
|
5066 |
+added experimental support for Apache::Filter 1.013
|
|
5067 |
filter_register call
|
|
5068 |
|
|
5069 |
+make test cases for $Response->Include() and
|
|
5070 |
$Response->TrapInclude()
|
|
5071 |
|
|
5072 |
+Documented CollectionItem config.
|
|
5073 |
|
|
5074 |
+New $Request->QueryString('multiple args')->Count()
|
|
5075 |
interface implemented for CollectionItem config.
|
|
5076 |
Also $Request->QueryString('multiple args')->Item(1) method.
|
|
5077 |
Note ASP collections start counting at 1.
|
|
5078 |
|
|
5079 |
--fixed race condition, where multiple processes might
|
|
5080 |
try creating the same state directory at the same time, with
|
|
5081 |
one winning, and one generating an error. Now, web process
|
|
5082 |
will recheck for directory existence and error if
|
|
5083 |
it doesn't.
|
|
5084 |
|
|
5085 |
-global.asa compilation will be cached correctly, not
|
|
5086 |
sure when this broke. It was getting reloaded every request.
|
|
5087 |
|
|
5088 |
-StateAllWrite config, when set creates state files
|
|
5089 |
with a+rw or 0666 permissions, and state directories
|
|
5090 |
with a+rwx or 0777 permissions. This allows web servers
|
|
5091 |
running as different users on the same machine to share a
|
|
5092 |
common StateDir config. Also StateGroupWrite config
|
|
5093 |
with perms 0770 and 0660 respectively.
|
|
5094 |
|
|
5095 |
-Apache::ASP->Loader() now won't follow links to
|
|
5096 |
directories when searching for scripts to load.
|
|
5097 |
|
|
5098 |
+New RegisterIncludes config which is on by default only
|
|
5099 |
when using Apache::ASP->Loader(), for compiling includes
|
|
5100 |
when precompiling scripts.
|
|
5101 |
|
|
5102 |
+Apache::ASP::CompileInclude path optimized, which underlies
|
|
5103 |
$Response->Include()
|
|
5104 |
|
|
5105 |
+$Request->QueryString->('foo')->Item() syntax enabled
|
|
5106 |
with CollectionItem config setting. Default syntax
|
|
5107 |
supported is $Request->QueryString('foo') which is
|
|
5108 |
in compatible. Other syntax like $Request->{Form}{foo}
|
|
5109 |
and $Request->Form->Item('foo') will work in either case.
|
|
5110 |
|
|
5111 |
+New fix suggested for missing Apache reference in
|
|
5112 |
Apache::ASP handler startup for RedHat RPMs. Added
|
|
5113 |
to error message.
|
|
5114 |
|
|
5115 |
--Backup flock() unlocking try for QNX will not corrupt the
|
|
5116 |
normal flock() LOCK_UN usage, after trying to unlock a file
|
|
5117 |
that doesn't exist. This bug was uncovered from the below
|
|
5118 |
group deletion race condition that existed.
|
|
5119 |
|
|
5120 |
-Session garbage collection will not delete new group
|
|
5121 |
directories that have just been created but are empty.
|
|
5122 |
There was a race condition where a new group directory would
|
|
5123 |
be created, but then deleted by a garbage collector before
|
|
5124 |
it could be initialized correctly with new state files.
|
|
5125 |
|
|
5126 |
+Better random session-id checksums for $Session creation.
|
|
5127 |
per process srand() initialization, because srand()
|
|
5128 |
may be called once prefork and never called again.
|
|
5129 |
Call without arguments to rely on perl's decent rand
|
|
5130 |
seeding. Then when calling rand() in Secret() we have
|
|
5131 |
enough random data, that even if someone else calls srand()
|
|
5132 |
to something fixed, should not mess things up terribly since
|
|
5133 |
we checksum things like $$ & time, as well as perl memory
|
|
5134 |
references.
|
|
5135 |
|
|
5136 |
+XMLSubs installation make test.
|
|
5137 |
|
|
5138 |
-Fix for multiline arguments for XMLSubs
|
5127 | 5139 |
|
5128 | 5140 |
$VERSION = 2.03; $DATE="08/01/2000";
|
5129 | |
+License change to GPL. See LICENSE section.
|
5130 | |
|
5131 | |
+Setup of www.apache-asp.org site, finally!
|
5132 | |
|
5133 | |
-get rid of Apache::ASP->Loader() warning message for perl 5.6.0
|
|
5141 |
+License change to GPL. See LICENSE section.
|
|
5142 |
|
|
5143 |
+Setup of www.apache-asp.org site, finally!
|
|
5144 |
|
|
5145 |
-get rid of Apache::ASP->Loader() warning message for perl 5.6.0
|
5134 | 5146 |
|
5135 | 5147 |
$VERSION = 2.01; $DATE="07/22/2000";
|
5136 | |
+$data_ref = $Response->TrapInclude('file.inc') API
|
5137 | |
extension which allows for easy post processing of
|
5138 | |
data from includes
|
5139 | |
|
5140 | |
+./site/eg/source.inc syntax highlighting improvements
|
5141 | |
|
5142 | |
+XMLSubsMatch compile time parsing performance improvement
|
|
5148 |
+$data_ref = $Response->TrapInclude('file.inc') API
|
|
5149 |
extension which allows for easy post processing of
|
|
5150 |
data from includes
|
|
5151 |
|
|
5152 |
+./site/eg/source.inc syntax highlighting improvements
|
|
5153 |
|
|
5154 |
+XMLSubsMatch compile time parsing performance improvement
|
5143 | 5155 |
|
5144 | 5156 |
$VERSION = 2.00; $DATE="07/15/2000";
|
5145 | |
-UniquePackages config works again, broke a couple versions back
|
5146 | |
|
5147 | |
+better error handling for methods called on $Application
|
5148 | |
that don't exist, hard to debug before
|
|
5157 |
-UniquePackages config works again, broke a couple versions back
|
|
5158 |
|
|
5159 |
+better error handling for methods called on $Application
|
|
5160 |
that don't exist, hard to debug before
|
5149 | 5161 |
|
5150 | 5162 |
$VERSION = 1.95; $DATE="07/10/2000";
|
5151 | |
!!!!! EXAMPLES SECURITY BUG FOUND & FIXED !!!!!
|
5152 | |
|
5153 | |
--FIXED: distribution example ./site/eg/source.asp now parses
|
5154 | |
out special characters of the open() call when reading local
|
5155 | |
files.
|
5156 | |
|
5157 | |
This bug would allow a malicious user possible writing
|
5158 | |
of files in the same directory as the source.asp script. This
|
5159 | |
writing exploit would only have effect if the web server user
|
5160 | |
has write permission on those files.
|
5161 | |
|
5162 | |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
5163 | |
|
5164 | |
-$0 now set to transferred file, when using $Server->Transfer
|
5165 | |
|
5166 | |
-Fix for XMLSubsMatch parsing on cases with 2 or more args passed
|
5167 | |
to tag sub that was standalone like
|
5168 | |
<Apps:header type="header" title="Moo" foo="moo" />
|
|
5163 |
!!!!! EXAMPLES SECURITY BUG FOUND & FIXED !!!!!
|
|
5164 |
|
|
5165 |
--FIXED: distribution example ./site/eg/source.asp now parses
|
|
5166 |
out special characters of the open() call when reading local
|
|
5167 |
files.
|
|
5168 |
|
|
5169 |
This bug would allow a malicious user possible writing
|
|
5170 |
of files in the same directory as the source.asp script. This
|
|
5171 |
writing exploit would only have effect if the web server user
|
|
5172 |
has write permission on those files.
|
|
5173 |
|
|
5174 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
5175 |
|
|
5176 |
-$0 now set to transferred file, when using $Server->Transfer
|
|
5177 |
|
|
5178 |
-Fix for XMLSubsMatch parsing on cases with 2 or more args passed
|
|
5179 |
to tag sub that was standalone like
|
|
5180 |
<Apps:header type="header" title="Moo" foo="moo" />
|
5169 | 5181 |
|
5170 | 5182 |
$VERSION = 1.93; $DATE="07/03/2000";
|
5171 | |
-sub second timing with Time::HiRes was adding <!-- -->
|
5172 | |
comments by HTML by default, which would possibly
|
5173 | |
break specific programs looking for precise HTML output.
|
5174 | |
Now this behavior must be explicitly turned on with
|
5175 | |
the TimeHiRes config setting.
|
5176 | |
|
5177 | |
These comments will only appear in HTML only if
|
5178 | |
Debug is enabled as well.
|
5179 | |
|
5180 | |
Timed log entries will only occur if
|
5181 | |
system debugging is enabled, with Debug -1 or -2
|
|
5183 |
-sub second timing with Time::HiRes was adding <!-- -->
|
|
5184 |
comments by HTML by default, which would possibly
|
|
5185 |
break specific programs looking for precise HTML output.
|
|
5186 |
Now this behavior must be explicitly turned on with
|
|
5187 |
the TimeHiRes config setting.
|
|
5188 |
|
|
5189 |
These comments will only appear in HTML only if
|
|
5190 |
Debug is enabled as well.
|
|
5191 |
|
|
5192 |
Timed log entries will only occur if
|
|
5193 |
system debugging is enabled, with Debug -1 or -2
|
5182 | 5194 |
|
5183 | 5195 |
$VERSION = 1.91; $DATE="07/02/2000";
|
5184 | |
+Documented XMLSubsMatch & XSLT* configuration
|
5185 | |
settings in CONFIG section.
|
5186 | |
|
5187 | |
+XSLT XSL template is now first executed as an
|
5188 | |
ASP script just like the XML scripts. This is
|
5189 | |
just one step away now from implementing XSP logic.
|
5190 | |
|
5191 | |
+$Server->Execute and $Server->Transfer API extensions
|
5192 | |
implemented. Execute is the same as $Request->Include()
|
5193 | |
and $Server->Transfer is like an apache internal redirect
|
5194 | |
but keeps the current ASP objects for the next script.
|
5195 | |
|
5196 | |
Added examples, transfer.htm, and modified dynamic_includes.htm.
|
5197 | |
|
5198 | |
+Better compile time error debugging with Debug 2 or -2.
|
5199 | |
Will hilite/link the buggy line for global.asa errors,
|
5200 | |
include errors, and XML/XSLT errors just like with
|
5201 | |
ASP scripts before.
|
5202 | |
|
5203 | |
+Nice source hiliting when viewing source for the example
|
5204 | |
scripts.
|
5205 | |
|
5206 | |
+Runtime string writing optimization for static HTML going
|
5207 | |
through $Response.
|
5208 | |
|
5209 | |
+New version numbering just like everyone else. Starting at 1.91
|
5210 | |
since I seem to be off by a factor of 10, last release would have
|
5211 | |
been 1.9.
|
|
5196 |
+Documented XMLSubsMatch & XSLT* configuration
|
|
5197 |
settings in CONFIG section.
|
|
5198 |
|
|
5199 |
+XSLT XSL template is now first executed as an
|
|
5200 |
ASP script just like the XML scripts. This is
|
|
5201 |
just one step away now from implementing XSP logic.
|
|
5202 |
|
|
5203 |
+$Server->Execute and $Server->Transfer API extensions
|
|
5204 |
implemented. Execute is the same as $Request->Include()
|
|
5205 |
and $Server->Transfer is like an apache internal redirect
|
|
5206 |
but keeps the current ASP objects for the next script.
|
|
5207 |
|
|
5208 |
Added examples, transfer.htm, and modified dynamic_includes.htm.
|
|
5209 |
|
|
5210 |
+Better compile time error debugging with Debug 2 or -2.
|
|
5211 |
Will hilite/link the buggy line for global.asa errors,
|
|
5212 |
include errors, and XML/XSLT errors just like with
|
|
5213 |
ASP scripts before.
|
|
5214 |
|
|
5215 |
+Nice source hiliting when viewing source for the example
|
|
5216 |
scripts.
|
|
5217 |
|
|
5218 |
+Runtime string writing optimization for static HTML going
|
|
5219 |
through $Response.
|
|
5220 |
|
|
5221 |
+New version numbering just like everyone else. Starting at 1.91
|
|
5222 |
since I seem to be off by a factor of 10, last release would have
|
|
5223 |
been 1.9.
|
5212 | 5224 |
|
5213 | 5225 |
$VERSION = 0.19; $DATE="NOT RELEASED";
|
5214 | |
+XMLSubsMatch and XSLT* settings documented in
|
5215 | |
the XML/XSLT section of the site/README.
|
5216 | |
|
5217 | |
-XMLSubsMatch will strip parens in a pattern match
|
5218 | |
so it does not interfere with internal matching use.
|
5219 | |
|
5220 | |
+XSLT integration allowing XML to be rendered by XSLT
|
5221 | |
on the fly. XSLT specifies XSL file to transform XML.
|
5222 | |
XSLTMatch is a regexp that matches XML file names, like \.xml$,
|
5223 | |
which will be transformed by XSLT setting, default .*
|
|
5226 |
+XMLSubsMatch and XSLT* settings documented in
|
|
5227 |
the XML/XSLT section of the site/README.
|
|
5228 |
|
|
5229 |
-XMLSubsMatch will strip parens in a pattern match
|
|
5230 |
so it does not interfere with internal matching use.
|
|
5231 |
|
|
5232 |
+XSLT integration allowing XML to be rendered by XSLT
|
|
5233 |
on the fly. XSLT specifies XSL file to transform XML.
|
|
5234 |
XSLTMatch is a regexp that matches XML file names, like \.xml$,
|
|
5235 |
which will be transformed by XSLT setting, default .*
|
5224 | 5236 |
|
5225 | |
XSLTCacheSize when specified uses Tie::Cache to cached XML DOMs
|
5226 | |
internally and cache XSLT transformations output per XML/XSL
|
5227 | |
combination. XML DOM objects can take a lot of RAM, so use
|
5228 | |
this setting judiciously like setting to 100. Definitely
|
5229 | |
experiment with this value.
|
5230 | |
|
5231 | |
+More client info in the error mail feature, including
|
5232 | |
client IP, form data, query string, and HTTP_* client headers
|
5233 | |
|
5234 | |
+With Time::HiRes loaded, and Debug set to non 0,
|
5235 | |
will add a <!-- Apache::ASP served request in xx.xx seconds -->
|
5236 | |
to text/html output, similar to Cocoon, per user request
|
5237 | |
Will also add this to the system debug error log output
|
5238 | |
when Debug is < 0
|
5239 | |
|
5240 | |
-bug fix on object initialization optimization earlier
|
5241 | |
in this release, that was introduced for faster event
|
5242 | |
handler execution.
|
5243 | |
|
5244 | |
+Apache::ASP::Parse() takes a file name, scalar, or
|
5245 | |
scalar ref for arguments of data to parse for greater
|
5246 | |
integration ability with other applications.
|
5247 | |
|
5248 | |
+PodComments optimization, small speed increase at
|
5249 | |
compilation time.
|
5250 | |
|
5251 | |
+String optimization on internal rendering that avoids
|
5252 | |
unnecessary copying of static html, by using refs. Should
|
5253 | |
make a small difference on sites with large amounts of
|
5254 | |
static html.
|
5255 | |
|
5256 | |
+CompressGzip setting which, when Compress::Zlib is installed,
|
5257 | |
will compress text/html automatically going out to the web
|
5258 | |
browser if the client supports gzip encoding.
|
5259 | |
|
5260 | |
++Script_OnFlush event handler, and auxiliary work optimizing
|
5261 | |
asp events in general. $Response->{BinaryRef} created which
|
5262 | |
is a reference to outgoing output, which can be used
|
5263 | |
to modify the data at runtime before it goes out to the client.
|
5264 | |
|
5265 | |
+Some code optimizations that boost speed from 22 to 24
|
5266 | |
hits per second when using Sessions without $Application,
|
5267 | |
on a simple hello world benchmark on a WinNT PII300.
|
5268 | |
|
5269 | |
++Better SessionManagement, more aware of server farms that
|
5270 | |
don't have reliable NFS locking. The key here is to have only
|
5271 | |
one process on one server in charge of session garbage collection
|
5272 | |
at any one time, and try to create this situation with a snazzy
|
5273 | |
CleanupMaster routine. This is done by having a process register
|
5274 | |
itself in the internal database with a server key created at
|
5275 | |
apache start time. If this key gets stale, another process can
|
5276 | |
become the master, and this period will not exceed the period
|
5277 | |
SessionTimeout / StateManager.
|
5278 | |
|
5279 | |
** Work on session manager sponsored by LRN, http://www.lrn.com. **
|
5280 | |
** This work was used to deploy a server farm in production with **
|
5281 | |
** NFS mounted StateDir. Thanks to Craig Samuel for his belief in **
|
5282 | |
** open source. :) **
|
5283 | |
|
5284 | |
Future work for server farm capabilities might include breaking
|
5285 | |
up the internal database into one of 256 internal databases
|
5286 | |
hashed by the first 2 chars of the session id. Also on the plate
|
5287 | |
is Apache::Session like abilities with locking and/or data storage
|
5288 | |
occuring in a SQL database. The first dbs to be done will include
|
5289 | |
MySQL & Oracle.
|
5290 | |
|
5291 | |
+Better session security which will create a new session id for an
|
5292 | |
incoming session id that does not match one already seen. This will
|
5293 | |
help for those with Search engines that have bookmarked
|
5294 | |
pages with the session ids in the query strings. This breaks away
|
5295 | |
from standard ASP session id implementation which will automatically
|
5296 | |
use the session id presented by the browser, now a new session id will
|
5297 | |
be returned if the presented one is invalid or expired.
|
5298 | |
|
5299 | |
-$Application->GetSession will only return a session if
|
5300 | |
one already existed. It would create one before by default.
|
5301 | |
|
5302 | |
+Script_OnFlush global.asa event handler, and $Response->{BinaryRef}
|
5303 | |
member which is a scalar reference to the content about to be flushed.
|
5304 | |
See ./site/eg/global.asa for example usage, used in this case to
|
5305 | |
insert font tags on the fly into the output.
|
5306 | |
|
5307 | |
+Highlighting and linking of line error when Debug is set to 2 or -2.
|
5308 | |
|
5309 | |
--removed fork() call from flock() backup routine? How did
|
5310 | |
that get in there? Oh right, testing on Win32. :(
|
5311 | |
Very painful lesson this one, sorry to whom it may concern.
|
5312 | |
|
5313 | |
+$Application->SessionCount support turned off by default
|
5314 | |
must enable with SessionCount config option. This feature
|
5315 | |
puts an unnecessary load on busy sites, so not default
|
5316 | |
behavior now.
|
5317 | |
|
5318 | |
++XMLSubsMatch setting that allows the developer to
|
5319 | |
create custom tags XML style that execute perl subroutines.
|
5320 | |
See ./site/eg/xml_subs.asp
|
5321 | |
|
5322 | |
+MailFrom config option that defaults the From: field for
|
5323 | |
mails sent via the Mail* configs and $Server->Mail()
|
5324 | |
|
5325 | |
+$Server->Mail(\%mail, %smtp_args) API extension
|
5326 | |
|
5327 | |
+MailErrorsTo & MailAlertTo now can take comma
|
5328 | |
separated email addresses for multiple recipients.
|
5329 | |
|
5330 | |
-tracking of subroutines defined in scripts and includes so
|
5331 | |
StatINC won't undefine them when reloading the GlobalPackage,
|
5332 | |
and so an warning will be logged when another script redefines
|
5333 | |
the same subroutine name, which has been the bane of at least
|
5334 | |
a few developers.
|
5335 | |
|
5336 | |
-Loader() will now recompile dynamic includes that
|
5337 | |
have changed, even if main including script has not.
|
5338 | |
This is useful if you are using Loader() in a
|
5339 | |
PerlRestartHandler, for reloading scripts when
|
5340 | |
gracefully restarting apache.
|
5341 | |
|
5342 | |
-Apache::ASP used to always set the status to 200 by
|
5343 | |
default explicitly with $r->status(). This would be
|
5344 | |
a problem if a script was being used to as a 404
|
5345 | |
ErrorDocument, because it would always return a 200 error
|
5346 | |
code, which is just wrong. $Response->{Status} is now
|
5347 | |
undefined by default and will only be used if set by
|
5348 | |
the developer.
|
5349 | |
|
5350 | |
Note that by default a script will still return a 200 status,
|
5351 | |
but $Response->{Status} may be used to override this behavior.
|
5352 | |
|
5353 | |
+$Server->Config($setting) API extension that allows developer
|
5354 | |
to access config settings like Global, StateDir, etc., and is a
|
5355 | |
wrapper around Apache->dir_config($setting)
|
5356 | |
|
5357 | |
+Loader() will log the number of scripts
|
5358 | |
recompiled and the number of scripts checked, instead
|
5359 | |
of just the number of scripts recompiled, which is
|
5360 | |
misleading as it reports 0 for child httpds after
|
5361 | |
a parent fork that used Loader() upon startup.
|
5362 | |
|
5363 | |
-Apache::ASP->Loader() would have a bad error if it didn't load
|
5364 | |
any scripts when given a directory, prints "loaded 0 scripts" now
|
|
5237 |
XSLTCacheSize when specified uses Tie::Cache to cached XML DOMs
|
|
5238 |
internally and cache XSLT transformations output per XML/XSL
|
|
5239 |
combination. XML DOM objects can take a lot of RAM, so use
|
|
5240 |
this setting judiciously like setting to 100. Definitely
|
|
5241 |
experiment with this value.
|
|
5242 |
|
|
5243 |
+More client info in the error mail feature, including
|
|
5244 |
client IP, form data, query string, and HTTP_* client headers
|
|
5245 |
|
|
5246 |
+With Time::HiRes loaded, and Debug set to non 0,
|
|
5247 |
will add a <!-- Apache::ASP served request in xx.xx seconds -->
|
|
5248 |
to text/html output, similar to Cocoon, per user request
|
|
5249 |
Will also add this to the system debug error log output
|
|
5250 |
when Debug is < 0
|
|
5251 |
|
|
5252 |
-bug fix on object initialization optimization earlier
|
|
5253 |
in this release, that was introduced for faster event
|
|
5254 |
handler execution.
|
|
5255 |
|
|
5256 |
+Apache::ASP::Parse() takes a file name, scalar, or
|
|
5257 |
scalar ref for arguments of data to parse for greater
|
|
5258 |
integration ability with other applications.
|
|
5259 |
|
|
5260 |
+PodComments optimization, small speed increase at
|
|
5261 |
compilation time.
|
|
5262 |
|
|
5263 |
+String optimization on internal rendering that avoids
|
|
5264 |
unnecessary copying of static html, by using refs. Should
|
|
5265 |
make a small difference on sites with large amounts of
|
|
5266 |
static html.
|
|
5267 |
|
|
5268 |
+CompressGzip setting which, when Compress::Zlib is installed,
|
|
5269 |
will compress text/html automatically going out to the web
|
|
5270 |
browser if the client supports gzip encoding.
|
|
5271 |
|
|
5272 |
++Script_OnFlush event handler, and auxiliary work optimizing
|
|
5273 |
asp events in general. $Response->{BinaryRef} created which
|
|
5274 |
is a reference to outgoing output, which can be used
|
|
5275 |
to modify the data at runtime before it goes out to the client.
|
|
5276 |
|
|
5277 |
+Some code optimizations that boost speed from 22 to 24
|
|
5278 |
hits per second when using Sessions without $Application,
|
|
5279 |
on a simple hello world benchmark on a WinNT PII300.
|
|
5280 |
|
|
5281 |
++Better SessionManagement, more aware of server farms that
|
|
5282 |
don't have reliable NFS locking. The key here is to have only
|
|
5283 |
one process on one server in charge of session garbage collection
|
|
5284 |
at any one time, and try to create this situation with a snazzy
|
|
5285 |
CleanupMaster routine. This is done by having a process register
|
|
5286 |
itself in the internal database with a server key created at
|
|
5287 |
apache start time. If this key gets stale, another process can
|
|
5288 |
become the master, and this period will not exceed the period
|
|
5289 |
SessionTimeout / StateManager.
|
|
5290 |
|
|
5291 |
** Work on session manager sponsored by LRN, http://www.lrn.com. **
|
|
5292 |
** This work was used to deploy a server farm in production with **
|
|
5293 |
** NFS mounted StateDir. Thanks to Craig Samuel for his belief in **
|
|
5294 |
** open source. :) **
|
|
5295 |
|
|
5296 |
Future work for server farm capabilities might include breaking
|
|
5297 |
up the internal database into one of 256 internal databases
|
|
5298 |
hashed by the first 2 chars of the session id. Also on the plate
|
|
5299 |
is Apache::Session like abilities with locking and/or data storage
|
|
5300 |
occuring in a SQL database. The first dbs to be done will include
|
|
5301 |
MySQL & Oracle.
|
|
5302 |
|
|
5303 |
+Better session security which will create a new session id for an
|
|
5304 |
incoming session id that does not match one already seen. This will
|
|
5305 |
help for those with Search engines that have bookmarked
|
|
5306 |
pages with the session ids in the query strings. This breaks away
|
|
5307 |
from standard ASP session id implementation which will automatically
|
|
5308 |
use the session id presented by the browser, now a new session id will
|
|
5309 |
be returned if the presented one is invalid or expired.
|
|
5310 |
|
|
5311 |
-$Application->GetSession will only return a session if
|
|
5312 |
one already existed. It would create one before by default.
|
|
5313 |
|
|
5314 |
+Script_OnFlush global.asa event handler, and $Response->{BinaryRef}
|
|
5315 |
member which is a scalar reference to the content about to be flushed.
|
|
5316 |
See ./site/eg/global.asa for example usage, used in this case to
|
|
5317 |
insert font tags on the fly into the output.
|
|
5318 |
|
|
5319 |
+Highlighting and linking of line error when Debug is set to 2 or -2.
|
|
5320 |
|
|
5321 |
--removed fork() call from flock() backup routine? How did
|
|
5322 |
that get in there? Oh right, testing on Win32. :(
|
|
5323 |
Very painful lesson this one, sorry to whom it may concern.
|
|
5324 |
|
|
5325 |
+$Application->SessionCount support turned off by default
|
|
5326 |
must enable with SessionCount config option. This feature
|
|
5327 |
puts an unnecessary load on busy sites, so not default
|
|
5328 |
behavior now.
|
|
5329 |
|
|
5330 |
++XMLSubsMatch setting that allows the developer to
|
|
5331 |
create custom tags XML style that execute perl subroutines.
|
|
5332 |
See ./site/eg/xml_subs.asp
|
|
5333 |
|
|
5334 |
+MailFrom config option that defaults the From: field for
|
|
5335 |
mails sent via the Mail* configs and $Server->Mail()
|
|
5336 |
|
|
5337 |
+$Server->Mail(\%mail, %smtp_args) API extension
|
|
5338 |
|
|
5339 |
+MailErrorsTo & MailAlertTo now can take comma
|
|
5340 |
separated email addresses for multiple recipients.
|
|
5341 |
|
|
5342 |
-tracking of subroutines defined in scripts and includes so
|
|
5343 |
StatINC won't undefine them when reloading the GlobalPackage,
|
|
5344 |
and so an warning will be logged when another script redefines
|
|
5345 |
the same subroutine name, which has been the bane of at least
|
|
5346 |
a few developers.
|
|
5347 |
|
|
5348 |
-Loader() will now recompile dynamic includes that
|
|
5349 |
have changed, even if main including script has not.
|
|
5350 |
This is useful if you are using Loader() in a
|
|
5351 |
PerlRestartHandler, for reloading scripts when
|
|
5352 |
gracefully restarting apache.
|
|
5353 |
|
|
5354 |
-Apache::ASP used to always set the status to 200 by
|
|
5355 |
default explicitly with $r->status(). This would be
|
|
5356 |
a problem if a script was being used to as a 404
|
|
5357 |
ErrorDocument, because it would always return a 200 error
|
|
5358 |
code, which is just wrong. $Response->{Status} is now
|
|
5359 |
undefined by default and will only be used if set by
|
|
5360 |
the developer.
|
|
5361 |
|
|
5362 |
Note that by default a script will still return a 200 status,
|
|
5363 |
but $Response->{Status} may be used to override this behavior.
|
|
5364 |
|
|
5365 |
+$Server->Config($setting) API extension that allows developer
|
|
5366 |
to access config settings like Global, StateDir, etc., and is a
|
|
5367 |
wrapper around Apache->dir_config($setting)
|
|
5368 |
|
|
5369 |
+Loader() will log the number of scripts
|
|
5370 |
recompiled and the number of scripts checked, instead
|
|
5371 |
of just the number of scripts recompiled, which is
|
|
5372 |
misleading as it reports 0 for child httpds after
|
|
5373 |
a parent fork that used Loader() upon startup.
|
|
5374 |
|
|
5375 |
-Apache::ASP->Loader() would have a bad error if it didn't load
|
|
5376 |
any scripts when given a directory, prints "loaded 0 scripts" now
|
5365 | 5377 |
|
5366 | 5378 |
$VERSION = 0.18; $DATE="02/03/2000";
|
5367 | |
+Documented SessionQuery* & $Server->URL() and
|
5368 | |
cleaned up formatting some, as well as redoing
|
5369 | |
some of the sections ordering for better readability.
|
5370 | |
Document the cookieless session functionality more
|
5371 | |
in a new SESSIONS section. Also documented new
|
5372 | |
FileUpload configs and $Request->FileUpload collection.
|
5373 | |
Documented StatScripts.
|
5374 | |
|
5375 | |
+StatScripts setting which if set to 0 will not reload
|
5376 | |
includes, global.asa, or scripts when changed.
|
5377 | |
|
5378 | |
+FileUpload file handles cleanup at garbage collection
|
5379 | |
time so developer does not have to worry about lazy coding
|
5380 | |
and undeffing filehandles used in code. Also set
|
5381 | |
uploaded filehandles to binmode automatically on Win32
|
5382 | |
platforms, saving the developer yet more typing.
|
5383 | |
|
5384 | |
+FileUploadTemp setting, default 0, if set will leave
|
5385 | |
a temp file on disk during the request, which may be
|
5386 | |
helpful for processing by other programs, but is also
|
5387 | |
a security risk in that others could potentially read
|
5388 | |
this file while the script is running.
|
5389 | |
|
5390 | |
The path to the temp file will be available at
|
5391 | |
$Request->{FileUpload}{$form_field}{TempFile}.
|
5392 | |
The regular use of file uploads remains the same
|
5393 | |
with the <$filehandle> to the upload at
|
5394 | |
$Request->{Form}{$form_field}.
|
5395 | |
|
5396 | |
+FileUploadMax setting, default 0, currently an
|
5397 | |
alias for $CGI::POST_MAX, which determines the
|
5398 | |
max size for a file upload in bytes.
|
5399 | |
|
5400 | |
+SessionQueryParse only auto parses session-ids
|
5401 | |
into links when a session-id COOKIE is NOT found.
|
5402 | |
This feature is only enabled then when a user has
|
5403 | |
disabled cookies, so the runtime penalty of this
|
5404 | |
feature won't drag down the whole site, since most
|
5405 | |
users will have cookies turned on.
|
5406 | |
|
5407 | |
-StatINC & StatINCMatch will not undef Fnctl.pm flock
|
5408 | |
functions constants like O_RDWR, because the code references
|
5409 | |
are not well trackable. This would result in sporadic 500 server
|
5410 | |
errors when a changed module was reloaded that imported O_* flock
|
5411 | |
functions from Fnctl.
|
5412 | |
|
5413 | |
+SessionQueryParse & SessionQueryParseMatch
|
5414 | |
settings that enable auto parsing session ids into
|
5415 | |
URLs for cookieless sessions. Will pick up URLs in
|
5416 | |
<a href>, <area href>, <form action>, <frame src>,
|
5417 | |
<iframe src>, <img src>, <input src>, <link href>
|
5418 | |
$Response->Redirect($URL) and the first URL in
|
5419 | |
script tags like <script>*.location.href=$URL</script>
|
5420 | |
|
5421 | |
These settings require that buffering be enabled, as
|
5422 | |
Apache::ASP will parse through the buffer to parse the URLs.
|
5423 | |
|
5424 | |
With SessionQueryParse on, it will just parse non-absolute
|
5425 | |
URLs, but with SessionQueryParseMatch set to some server
|
5426 | |
url regexp, like ^http://localhost , will also parse
|
5427 | |
in the session id for URLs that match that.
|
5428 | |
|
5429 | |
When testing, the performance hit from this parsing
|
5430 | |
a script dropped from 12.5 hits/sec on my WinNT box
|
5431 | |
to 11.7 hits per second for 1K of buffered output.
|
5432 | |
The difference is .007 of my PII300's processing power
|
5433 | |
per second.
|
5434 | |
|
5435 | |
For 10K of output then, my guess is that this speed
|
5436 | |
of script, would be slowed to 6.8 hits per second.
|
5437 | |
This kind of performance hit would also slow a
|
5438 | |
script running at 40 hits per second on a UNIX box
|
5439 | |
to 31 hits/sec for 1K, and to 11 hits/sec for 10K parsed.
|
5440 | |
|
5441 | |
Your mileage may vary and you will have to test the difference
|
5442 | |
yourself. Get yourself a valid URL with a session-id in
|
5443 | |
it, and run it through ab, or Socrates, with SessionQuery
|
5444 | |
turned on, and then with SessionQueryParse set to see
|
5445 | |
the difference. SessionQuery just enables of session id
|
5446 | |
setting from the query string but will not auto parse urls.
|
5447 | |
|
5448 | |
-If buffering, Content-Length will again be set.
|
5449 | |
It broke, probably while I was tuning in the past
|
5450 | |
couple versions.
|
5451 | |
|
5452 | |
+UseStrict setting compiles all scripts including
|
5453 | |
global.asa with "use strict" turned on for catching
|
5454 | |
more coding errors. With this setting enabled,
|
5455 | |
use strict errors die during compilation forcing
|
5456 | |
Apache::ASP to try to recompile the script until
|
5457 | |
successful.
|
5458 | |
|
5459 | |
-Object use in includes like $Response->Write()
|
5460 | |
no longer error with "use strict" programming.
|
5461 | |
|
5462 | |
+SessionQuery config setting with $Server->URL($url, { %params } )
|
5463 | |
alpha API extensions to enable cookieless sessions.
|
5464 | |
|
5465 | |
+Debugging not longer produces internal debugging
|
5466 | |
by default. Set to -1,-2 for internal debugging
|
5467 | |
for Debug settings 1 & 2.
|
5468 | |
|
5469 | |
+Both StateSerializer & StateDB can be changed
|
5470 | |
without affecting a live web site, by storing
|
5471 | |
the configurations for $Application & $Session
|
5472 | |
in an internal database, so that if $Session was
|
5473 | |
created with SDBM_File for the StateDB (default),
|
5474 | |
it will keep this StateDB setting until it ends.
|
5475 | |
|
5476 | |
+StateSerializer config setting. Default Data::Dumper,
|
5477 | |
can also be set to Storable. Controls how data is
|
5478 | |
serialized before writing to $Application & $Session.
|
5479 | |
|
5480 | |
+Beefed up the make test suite.
|
5481 | |
|
5482 | |
+Improved the locking, streamlining a bit of the
|
5483 | |
$Application / $Session setup process. Bench is up to
|
5484 | |
22 from 21 hits / sec on dev NT box.
|
5485 | |
|
5486 | |
+Cut more fat for faster startup, now on my dev box
|
5487 | |
I get 44 hits per sec Apache::ASP vs. 48 Embperl
|
5488 | |
vs. 52 CGI via Apache::Registry for the HelloWorld Scripts.
|
5489 | |
|
5490 | |
-Improved linking for the online site documentation,
|
5491 | |
where a few links before were bad.
|
|
5379 |
+Documented SessionQuery* & $Server->URL() and
|
|
5380 |
cleaned up formatting some, as well as redoing
|
|
5381 |
some of the sections ordering for better readability.
|
|
5382 |
Document the cookieless session functionality more
|
|
5383 |
in a new SESSIONS section. Also documented new
|
|
5384 |
FileUpload configs and $Request->FileUpload collection.
|
|
5385 |
Documented StatScripts.
|
|
5386 |
|
|
5387 |
+StatScripts setting which if set to 0 will not reload
|
|
5388 |
includes, global.asa, or scripts when changed.
|
|
5389 |
|
|
5390 |
+FileUpload file handles cleanup at garbage collection
|
|
5391 |
time so developer does not have to worry about lazy coding
|
|
5392 |
and undeffing filehandles used in code. Also set
|
|
5393 |
uploaded filehandles to binmode automatically on Win32
|
|
5394 |
platforms, saving the developer yet more typing.
|
|
5395 |
|
|
5396 |
+FileUploadTemp setting, default 0, if set will leave
|
|
5397 |
a temp file on disk during the request, which may be
|
|
5398 |
helpful for processing by other programs, but is also
|
|
5399 |
a security risk in that others could potentially read
|
|
5400 |
this file while the script is running.
|
|
5401 |
|
|
5402 |
The path to the temp file will be available at
|
|
5403 |
$Request->{FileUpload}{$form_field}{TempFile}.
|
|
5404 |
The regular use of file uploads remains the same
|
|
5405 |
with the <$filehandle> to the upload at
|
|
5406 |
$Request->{Form}{$form_field}.
|
|
5407 |
|
|
5408 |
+FileUploadMax setting, default 0, currently an
|
|
5409 |
alias for $CGI::POST_MAX, which determines the
|
|
5410 |
max size for a file upload in bytes.
|
|
5411 |
|
|
5412 |
+SessionQueryParse only auto parses session-ids
|
|
5413 |
into links when a session-id COOKIE is NOT found.
|
|
5414 |
This feature is only enabled then when a user has
|
|
5415 |
disabled cookies, so the runtime penalty of this
|
|
5416 |
feature won't drag down the whole site, since most
|
|
5417 |
users will have cookies turned on.
|
|
5418 |
|
|
5419 |
-StatINC & StatINCMatch will not undef Fnctl.pm flock
|
|
5420 |
functions constants like O_RDWR, because the code references
|
|
5421 |
are not well trackable. This would result in sporadic 500 server
|
|
5422 |
errors when a changed module was reloaded that imported O_* flock
|
|
5423 |
functions from Fnctl.
|
|
5424 |
|
|
5425 |
+SessionQueryParse & SessionQueryParseMatch
|
|
5426 |
settings that enable auto parsing session ids into
|
|
5427 |
URLs for cookieless sessions. Will pick up URLs in
|
|
5428 |
<a href>, <area href>, <form action>, <frame src>,
|
|
5429 |
<iframe src>, <img src>, <input src>, <link href>
|
|
5430 |
$Response->Redirect($URL) and the first URL in
|
|
5431 |
script tags like <script>*.location.href=$URL</script>
|
|
5432 |
|
|
5433 |
These settings require that buffering be enabled, as
|
|
5434 |
Apache::ASP will parse through the buffer to parse the URLs.
|
|
5435 |
|
|
5436 |
With SessionQueryParse on, it will just parse non-absolute
|
|
5437 |
URLs, but with SessionQueryParseMatch set to some server
|
|
5438 |
url regexp, like ^http://localhost , will also parse
|
|
5439 |
in the session id for URLs that match that.
|
|
5440 |
|
|
5441 |
When testing, the performance hit from this parsing
|
|
5442 |
a script dropped from 12.5 hits/sec on my WinNT box
|
|
5443 |
to 11.7 hits per second for 1K of buffered output.
|
|
5444 |
The difference is .007 of my PII300's processing power
|
|
5445 |
per second.
|
|
5446 |
|
|
5447 |
For 10K of output then, my guess is that this speed
|
|
5448 |
of script, would be slowed to 6.8 hits per second.
|
|
5449 |
This kind of performance hit would also slow a
|
|
5450 |
script running at 40 hits per second on a UNIX box
|
|
5451 |
to 31 hits/sec for 1K, and to 11 hits/sec for 10K parsed.
|
|
5452 |
|
|
5453 |
Your mileage may vary and you will have to test the difference
|
|
5454 |
yourself. Get yourself a valid URL with a session-id in
|
|
5455 |
it, and run it through ab, or Socrates, with SessionQuery
|
|
5456 |
turned on, and then with SessionQueryParse set to see
|
|
5457 |
the difference. SessionQuery just enables of session id
|
|
5458 |
setting from the query string but will not auto parse urls.
|
|
5459 |
|
|
5460 |
-If buffering, Content-Length will again be set.
|
|
5461 |
It broke, probably while I was tuning in the past
|
|
5462 |
couple versions.
|
|
5463 |
|
|
5464 |
+UseStrict setting compiles all scripts including
|
|
5465 |
global.asa with "use strict" turned on for catching
|
|
5466 |
more coding errors. With this setting enabled,
|
|
5467 |
use strict errors die during compilation forcing
|
|
5468 |
Apache::ASP to try to recompile the script until
|
|
5469 |
successful.
|
|
5470 |
|
|
5471 |
-Object use in includes like $Response->Write()
|
|
5472 |
no longer error with "use strict" programming.
|
|
5473 |
|
|
5474 |
+SessionQuery config setting with $Server->URL($url, { %params } )
|
|
5475 |
alpha API extensions to enable cookieless sessions.
|
|
5476 |
|
|
5477 |
+Debugging not longer produces internal debugging
|
|
5478 |
by default. Set to -1,-2 for internal debugging
|
|
5479 |
for Debug settings 1 & 2.
|
|
5480 |
|
|
5481 |
+Both StateSerializer & StateDB can be changed
|
|
5482 |
without affecting a live web site, by storing
|
|
5483 |
the configurations for $Application & $Session
|
|
5484 |
in an internal database, so that if $Session was
|
|
5485 |
created with SDBM_File for the StateDB (default),
|
|
5486 |
it will keep this StateDB setting until it ends.
|
|
5487 |
|
|
5488 |
+StateSerializer config setting. Default Data::Dumper,
|
|
5489 |
can also be set to Storable. Controls how data is
|
|
5490 |
serialized before writing to $Application & $Session.
|
|
5491 |
|
|
5492 |
+Beefed up the make test suite.
|
|
5493 |
|
|
5494 |
+Improved the locking, streamlining a bit of the
|
|
5495 |
$Application / $Session setup process. Bench is up to
|
|
5496 |
22 from 21 hits / sec on dev NT box.
|
|
5497 |
|
|
5498 |
+Cut more fat for faster startup, now on my dev box
|
|
5499 |
I get 44 hits per sec Apache::ASP vs. 48 Embperl
|
|
5500 |
vs. 52 CGI via Apache::Registry for the HelloWorld Scripts.
|
|
5501 |
|
|
5502 |
-Improved linking for the online site documentation,
|
|
5503 |
where a few links before were bad.
|
5492 | 5504 |
|
5493 | 5505 |
$VERSION = 0.17; $DATE="11/15/99";
|
5494 | |
++20%+ faster startup script execution, as measured by the
|
5495 | |
HelloWorld bench. I cut a lot of the fat out of
|
5496 | |
the code, and is now at least 20% faster on startup
|
5497 | |
both with and without state.
|
5498 | |
|
5499 | |
On my dev (NT, apache 1.3.6+mod_perl) machine, I now get:
|
5500 | |
|
5501 | |
42 hits per sec on Apache::ASP HelloWorld bench
|
5502 | |
46 hits per sec on Embperl (1.2b10) and
|
5503 | |
51 hits per sec for CGI Apache::Registry scripts
|
5504 | |
|
5505 | |
Before Apache::ASP was clocking some 31 hits per sec.
|
5506 | |
Apache::ASP also went from 75 to 102 hits per second
|
5507 | |
on Solaris.
|
5508 | |
|
5509 | |
+PerlTaintCheck On friendly. This is mod_perl's way
|
5510 | |
of providing -T taint checking. When Apache::ASP
|
5511 | |
is used with state objects like $Session or $Application,
|
5512 | |
MLDBM must also be made taint friendly with:
|
5513 | |
|
5514 | |
$MLDBM::RemoveTaint = 1;
|
5515 | |
|
5516 | |
which could be put in the global.asa. Documented.
|
5517 | |
|
5518 | |
+Added $Response->ErrorDocument($error_code, $uri_or_string)
|
5519 | |
API extension which allows for setting of Apache's error
|
5520 | |
document at runtime. This is really just a wrapper
|
5521 | |
for Apache->custom_response() renamed so it syncs with
|
5522 | |
the Apache ErrorDocument config setting. Updated
|
5523 | |
documentation, and added error_document.htm example.
|
5524 | |
|
5525 | |
=OrderCollections setting was added, but then REMOVED
|
5526 | |
because it was not going to be used. It bound
|
5527 | |
$Request->* collections/hashes to Tie::IxHash, so that data
|
5528 | |
in those collections would be read in the order the
|
5529 | |
browser sent it, when eaching through or with keys.
|
5530 | |
|
5531 | |
-global.asa will be reloaded when changed. This broke
|
5532 | |
when I optimized the modification times with (stat($file))[9]
|
5533 | |
rather than "use File::stat; stat($file)->mtime"
|
5534 | |
|
5535 | |
-Make Apache::ASP->Loader() PerlRestartHandler safe,
|
5536 | |
had some unstrict code that was doing the wrong thing.
|
5537 | |
|
5538 | |
-IncludesDir config now works with DynamicIncludes.
|
5539 | |
|
5540 | |
+DebugBufferLength feature added, giving control to
|
5541 | |
how much buffered output gets shown when debugging errors.
|
5542 | |
|
5543 | |
++Tuning of $Response->Write(), which processes all
|
5544 | |
static html internally, to be almost 50% faster for
|
5545 | |
its typical use, when BufferingOn is enabled, and
|
5546 | |
CgiHeaders are disabled, both being defaults.
|
5547 | |
|
5548 | |
This can show significant speed improvements for tight
|
5549 | |
loops that render ASP output.
|
5550 | |
|
5551 | |
+Auto linking of ./site/eg/ text to example scripts
|
5552 | |
at web site.
|
5553 | |
|
5554 | |
+$Application->GetSession($session_id) API extension, useful
|
5555 | |
for managing active user sessions when storing session ids
|
5556 | |
in $Application. Documented.
|
5557 | |
|
5558 | |
-disable use of flock() on Win95/98 where it is unimplemented
|
5559 | |
|
5560 | |
-@array context of $Request->Form('name') returns
|
5561 | |
undef when value for 'name' is undefined. Put extra
|
5562 | |
logic in there to make sure this happens.
|
|
5506 |
++20%+ faster startup script execution, as measured by the
|
|
5507 |
HelloWorld bench. I cut a lot of the fat out of
|
|
5508 |
the code, and is now at least 20% faster on startup
|
|
5509 |
both with and without state.
|
|
5510 |
|
|
5511 |
On my dev (NT, apache 1.3.6+mod_perl) machine, I now get:
|
|
5512 |
|
|
5513 |
42 hits per sec on Apache::ASP HelloWorld bench
|
|
5514 |
46 hits per sec on Embperl (1.2b10) and
|
|
5515 |
51 hits per sec for CGI Apache::Registry scripts
|
|
5516 |
|
|
5517 |
Before Apache::ASP was clocking some 31 hits per sec.
|
|
5518 |
Apache::ASP also went from 75 to 102 hits per second
|
|
5519 |
on Solaris.
|
|
5520 |
|
|
5521 |
+PerlTaintCheck On friendly. This is mod_perl's way
|
|
5522 |
of providing -T taint checking. When Apache::ASP
|
|
5523 |
is used with state objects like $Session or $Application,
|
|
5524 |
MLDBM must also be made taint friendly with:
|
|
5525 |
|
|
5526 |
$MLDBM::RemoveTaint = 1;
|
|
5527 |
|
|
5528 |
which could be put in the global.asa. Documented.
|
|
5529 |
|
|
5530 |
+Added $Response->ErrorDocument($error_code, $uri_or_string)
|
|
5531 |
API extension which allows for setting of Apache's error
|
|
5532 |
document at runtime. This is really just a wrapper
|
|
5533 |
for Apache->custom_response() renamed so it syncs with
|
|
5534 |
the Apache ErrorDocument config setting. Updated
|
|
5535 |
documentation, and added error_document.htm example.
|
|
5536 |
|
|
5537 |
=OrderCollections setting was added, but then REMOVED
|
|
5538 |
because it was not going to be used. It bound
|
|
5539 |
$Request->* collections/hashes to Tie::IxHash, so that data
|
|
5540 |
in those collections would be read in the order the
|
|
5541 |
browser sent it, when eaching through or with keys.
|
|
5542 |
|
|
5543 |
-global.asa will be reloaded when changed. This broke
|
|
5544 |
when I optimized the modification times with (stat($file))[9]
|
|
5545 |
rather than "use File::stat; stat($file)->mtime"
|
|
5546 |
|
|
5547 |
-Make Apache::ASP->Loader() PerlRestartHandler safe,
|
|
5548 |
had some unstrict code that was doing the wrong thing.
|
|
5549 |
|
|
5550 |
-IncludesDir config now works with DynamicIncludes.
|
|
5551 |
|
|
5552 |
+DebugBufferLength feature added, giving control to
|
|
5553 |
how much buffered output gets shown when debugging errors.
|
|
5554 |
|
|
5555 |
++Tuning of $Response->Write(), which processes all
|
|
5556 |
static html internally, to be almost 50% faster for
|
|
5557 |
its typical use, when BufferingOn is enabled, and
|
|
5558 |
CgiHeaders are disabled, both being defaults.
|
|
5559 |
|
|
5560 |
This can show significant speed improvements for tight
|
|
5561 |
loops that render ASP output.
|
|
5562 |
|
|
5563 |
+Auto linking of ./site/eg/ text to example scripts
|
|
5564 |
at web site.
|
|
5565 |
|
|
5566 |
+$Application->GetSession($session_id) API extension, useful
|
|
5567 |
for managing active user sessions when storing session ids
|
|
5568 |
in $Application. Documented.
|
|
5569 |
|
|
5570 |
-disable use of flock() on Win95/98 where it is unimplemented
|
|
5571 |
|
|
5572 |
-@array context of $Request->Form('name') returns
|
|
5573 |
undef when value for 'name' is undefined. Put extra
|
|
5574 |
logic in there to make sure this happens.
|
5563 | 5575 |
|
5564 | 5576 |
$VERSION = 0.16; $DATE="09/22/99";
|
5565 | |
-$Response->{Buffer} and PerlSetVar BufferingOn
|
5566 | |
configs now work when set to 0, to unbuffer output,
|
5567 | |
and send it out to the web client as the script generates it.
|
5568 | |
|
5569 | |
Buffering is enabled by default, as it is faster, and
|
5570 | |
allows a script to error cleanly in the middle of execution.
|
5571 | |
|
5572 | |
+more bullet proof loading of Apache::Symbol, changed the
|
5573 | |
way Apache::ASP loads modules in general. It used to
|
5574 | |
check for the module to load every time, if it hadn't loaded
|
5575 | |
successfully before, but now it just tries once per httpd,
|
5576 | |
so the web server will have to be restarted to see new installed
|
5577 | |
modules. This is just for modules that Apache::ASP relies on.
|
5578 | |
|
5579 | |
Old modules that are changed or updated with an installation
|
5580 | |
are still reloaded with the StatINC settings if so configured.
|
5581 | |
|
5582 | |
+ASP web site wraps <font face="courier new"> around <pre>
|
5583 | |
tags now to override the other font used for the text
|
5584 | |
areas. The spacing was all weird in Netscape before
|
5585 | |
for <pre> sections.
|
5586 | |
|
5587 | |
-Fixed Content-Length calculation when using the Clean
|
5588 | |
option, so that the length is calculated after the HTML
|
5589 | |
is clean, not before. This would cause a browser to
|
5590 | |
hang sometimes.
|
5591 | |
|
5592 | |
+Added IncludesDir config option that if set will also be
|
5593 | |
used to check for includes, so that includes may easily be
|
5594 | |
shared between applications. By default only Global and
|
5595 | |
the directory the script is in are checked for includes.
|
5596 | |
|
5597 | |
Also added IncludesDir as a possible configuration option
|
5598 | |
for Apache::ASP->Loader()
|
5599 | |
|
5600 | |
-Re-enabled the Application_OnStart & OnEnd events, after
|
5601 | |
breaking them when implementing the AllowApplicationState
|
5602 | |
config setting.
|
5603 | |
|
5604 | |
+Better pre-fork caching ... StatINC & StatINCMatch are now
|
5605 | |
args for Apache::ASP->Loader(), so StatINC symbols loading
|
5606 | |
may be done pre-fork and shared between httpds. This lowers
|
5607 | |
the child httpd init cost of StatINC. Documented.
|
5608 | |
|
5609 | |
+Made Apache::ASP Basic Authorization friendly so authentication
|
5610 | |
can be handled by ASP scripts. If AuthName and AuthType Apache
|
5611 | |
config directives are set, and a $Response->{Status} is set to
|
5612 | |
401, a user will be prompted for username/password authentication
|
5613 | |
and the entered data will show up in ServerVariables as:
|
5614 | |
$env = $Request->ServerVariables
|
5615 | |
$env->{REMOTE_USER} = $env->{AUTH_USER} = username
|
5616 | |
$env->{AUTH_PASSWD} = password
|
5617 | |
$env->{AUTH_NAME} = your realm
|
5618 | |
$env->{AUTH_TYPE} = 'Basic'
|
5619 | |
|
5620 | |
This is the same place to find auth data as if Apache had some
|
5621 | |
authentication handler deal with the auth phase separately.
|
5622 | |
|
5623 | |
-MailErrorsTo should report the right file now that generates
|
5624 | |
the error.
|
|
5577 |
-$Response->{Buffer} and PerlSetVar BufferingOn
|
|
5578 |
configs now work when set to 0, to unbuffer output,
|
|
5579 |
and send it out to the web client as the script generates it.
|
|
5580 |
|
|
5581 |
Buffering is enabled by default, as it is faster, and
|
|
5582 |
allows a script to error cleanly in the middle of execution.
|
|
5583 |
|
|
5584 |
+more bullet proof loading of Apache::Symbol, changed the
|
|
5585 |
way Apache::ASP loads modules in general. It used to
|
|
5586 |
check for the module to load every time, if it hadn't loaded
|
|
5587 |
successfully before, but now it just tries once per httpd,
|
|
5588 |
so the web server will have to be restarted to see new installed
|
|
5589 |
modules. This is just for modules that Apache::ASP relies on.
|
|
5590 |
|
|
5591 |
Old modules that are changed or updated with an installation
|
|
5592 |
are still reloaded with the StatINC settings if so configured.
|
|
5593 |
|
|
5594 |
+ASP web site wraps <font face="courier new"> around <pre>
|
|
5595 |
tags now to override the other font used for the text
|
|
5596 |
areas. The spacing was all weird in Netscape before
|
|
5597 |
for <pre> sections.
|
|
5598 |
|
|
5599 |
-Fixed Content-Length calculation when using the Clean
|
|
5600 |
option, so that the length is calculated after the HTML
|
|
5601 |
is clean, not before. This would cause a browser to
|
|
5602 |
hang sometimes.
|
|
5603 |
|
|
5604 |
+Added IncludesDir config option that if set will also be
|
|
5605 |
used to check for includes, so that includes may easily be
|
|
5606 |
shared between applications. By default only Global and
|
|
5607 |
the directory the script is in are checked for includes.
|
|
5608 |
|
|
5609 |
Also added IncludesDir as a possible configuration option
|
|
5610 |
for Apache::ASP->Loader()
|
|
5611 |
|
|
5612 |
-Re-enabled the Application_OnStart & OnEnd events, after
|
|
5613 |
breaking them when implementing the AllowApplicationState
|
|
5614 |
config setting.
|
|
5615 |
|
|
5616 |
+Better pre-fork caching ... StatINC & StatINCMatch are now
|
|
5617 |
args for Apache::ASP->Loader(), so StatINC symbols loading
|
|
5618 |
may be done pre-fork and shared between httpds. This lowers
|
|
5619 |
the child httpd init cost of StatINC. Documented.
|
|
5620 |
|
|
5621 |
+Made Apache::ASP Basic Authorization friendly so authentication
|
|
5622 |
can be handled by ASP scripts. If AuthName and AuthType Apache
|
|
5623 |
config directives are set, and a $Response->{Status} is set to
|
|
5624 |
401, a user will be prompted for username/password authentication
|
|
5625 |
and the entered data will show up in ServerVariables as:
|
|
5626 |
$env = $Request->ServerVariables
|
|
5627 |
$env->{REMOTE_USER} = $env->{AUTH_USER} = username
|
|
5628 |
$env->{AUTH_PASSWD} = password
|
|
5629 |
$env->{AUTH_NAME} = your realm
|
|
5630 |
$env->{AUTH_TYPE} = 'Basic'
|
|
5631 |
|
|
5632 |
This is the same place to find auth data as if Apache had some
|
|
5633 |
authentication handler deal with the auth phase separately.
|
|
5634 |
|
|
5635 |
-MailErrorsTo should report the right file now that generates
|
|
5636 |
the error.
|
5625 | 5637 |
|
5626 | 5638 |
$VERSION = 0.15; $DATE="08/24/1999";
|
5627 | |
--State databases like $Session, $Application are
|
5628 | |
now tied/untied to every lock/unlock triggered by read/write
|
5629 | |
access. This was necessary for correctness issues, so that
|
5630 | |
database file handles are flushed appropriately between writes
|
5631 | |
in a highly concurrent multi-process environment.
|
5632 | |
|
5633 | |
This problem raised its ugly head because under high volume,
|
5634 | |
a DB_File can become corrupt if not flushed correctly.
|
5635 | |
Unfortunately, there is no way to flush SDBM_Files & DB_Files
|
5636 | |
consistently other than to tie/untie the databases every access.
|
5637 | |
|
5638 | |
DB_File may be used optionally for StateDB, but the default is
|
5639 | |
to use SDBM_File which is much faster, but limited to 1024 byte
|
5640 | |
key/value pairs.
|
5641 | |
|
5642 | |
For SDBM_Files before, if there were too many concurrent
|
5643 | |
writes to a shared database like $Application, some of the
|
5644 | |
writes would not be saved because another process
|
5645 | |
might overwrite the changes with its own.
|
5646 | |
|
5647 | |
There is now a 10 fold performance DECREASE associated
|
5648 | |
with reading from and writing to files like $Session
|
5649 | |
and $Application. With rough benchmarks I can get about
|
5650 | |
100 increments (++) now per second to $Session->{count}, where
|
5651 | |
before I could get 1000 increments / second.
|
5652 | |
|
5653 | |
You can improve this if you have many reads / writes happening
|
5654 | |
at the same time, by placing locking code around the group like
|
|
5639 |
--State databases like $Session, $Application are
|
|
5640 |
now tied/untied to every lock/unlock triggered by read/write
|
|
5641 |
access. This was necessary for correctness issues, so that
|
|
5642 |
database file handles are flushed appropriately between writes
|
|
5643 |
in a highly concurrent multi-process environment.
|
|
5644 |
|
|
5645 |
This problem raised its ugly head because under high volume,
|
|
5646 |
a DB_File can become corrupt if not flushed correctly.
|
|
5647 |
Unfortunately, there is no way to flush SDBM_Files & DB_Files
|
|
5648 |
consistently other than to tie/untie the databases every access.
|
|
5649 |
|
|
5650 |
DB_File may be used optionally for StateDB, but the default is
|
|
5651 |
to use SDBM_File which is much faster, but limited to 1024 byte
|
|
5652 |
key/value pairs.
|
|
5653 |
|
|
5654 |
For SDBM_Files before, if there were too many concurrent
|
|
5655 |
writes to a shared database like $Application, some of the
|
|
5656 |
writes would not be saved because another process
|
|
5657 |
might overwrite the changes with its own.
|
|
5658 |
|
|
5659 |
There is now a 10 fold performance DECREASE associated
|
|
5660 |
with reading from and writing to files like $Session
|
|
5661 |
and $Application. With rough benchmarks I can get about
|
|
5662 |
100 increments (++) now per second to $Session->{count}, where
|
|
5663 |
before I could get 1000 increments / second.
|
|
5664 |
|
|
5665 |
You can improve this if you have many reads / writes happening
|
|
5666 |
at the same time, by placing locking code around the group like
|
5655 | 5667 |
|
5656 | |
$Session->Lock();
|
5657 | |
$Session->{count}++;
|
5658 | |
$Session->{count}++;
|
5659 | |
$Session->{count}++;
|
5660 | |
$Session->UnLock();
|
5661 | |
|
5662 | |
This method will reduce the number of ties to the $Session database
|
5663 | |
from 6 to 1 for this kind of code, and will improve the performance
|
5664 | |
dramatically.
|
5665 | |
|
5666 | |
Also, instead of using explicit $Session locking, you can
|
5667 | |
create an automatic lock on $Session per script by setting
|
5668 | |
SessionSerialize in your config to 1. The danger here is
|
5669 | |
if you have any long running scripts, the user will have
|
5670 | |
to wait for it to finish before another script can be run.
|
5671 | |
|
5672 | |
To see the number of lock/unlocks or ties/unties to each database
|
5673 | |
during a script execution, look at the last lines of debug output
|
5674 | |
to your error log when Debug is set to 1. This can help you
|
5675 | |
performance tweak access to these databases.
|
5676 | |
|
5677 | |
+Updated documentation with new config settings and
|
5678 | |
API extensions.
|
5679 | |
|
5680 | |
+Added AllowApplicationState config option which allows
|
5681 | |
you to leave $Application undefined, and will not
|
5682 | |
execute Application_OnStart or Application_OnEnd.
|
5683 | |
This can be a slight performance increase of 2-3% if
|
5684 | |
you are not using $Application, but are using $Session.
|
5685 | |
|
5686 | |
+Added $Session->Lock() / $Session->UnLock() API routines
|
5687 | |
necessary additions since access to session is not
|
5688 | |
serialized by default like IIS ASP. Also prompted
|
5689 | |
by change in locking code which retied to SDBM_File
|
5690 | |
or DB_File each lock. If you $Session->Lock / UnLock
|
5691 | |
around many read/writes, you will increase performance.
|
5692 | |
|
5693 | |
+Added StateCache config which, if set will cache
|
5694 | |
the file handle locks for $Application and an internal
|
5695 | |
database used for tracking $Session info. This caching can
|
5696 | |
make an ASP application perform up to 10% faster,
|
5697 | |
at a cost of each web server process holding 2 more
|
5698 | |
cached file handles open, per ASP application using
|
5699 | |
this configuration. The data written to or read from
|
5700 | |
these state databases is not cached, just the locking
|
5701 | |
file handles are held open.
|
5702 | |
|
5703 | |
-Added in much more locking in session manager
|
5704 | |
and session garbage collector to help avoid collisions
|
5705 | |
between the two. There were definite windows that the
|
5706 | |
two would collide in, during which bad things could
|
5707 | |
happen on a high volume site.
|
5708 | |
|
5709 | |
-Fixed some warnings in DESTROY and ParseParams()
|
|
5668 |
$Session->Lock();
|
|
5669 |
$Session->{count}++;
|
|
5670 |
$Session->{count}++;
|
|
5671 |
$Session->{count}++;
|
|
5672 |
$Session->UnLock();
|
|
5673 |
|
|
5674 |
This method will reduce the number of ties to the $Session database
|
|
5675 |
from 6 to 1 for this kind of code, and will improve the performance
|
|
5676 |
dramatically.
|
|
5677 |
|
|
5678 |
Also, instead of using explicit $Session locking, you can
|
|
5679 |
create an automatic lock on $Session per script by setting
|
|
5680 |
SessionSerialize in your config to 1. The danger here is
|
|
5681 |
if you have any long running scripts, the user will have
|
|
5682 |
to wait for it to finish before another script can be run.
|
|
5683 |
|
|
5684 |
To see the number of lock/unlocks or ties/unties to each database
|
|
5685 |
during a script execution, look at the last lines of debug output
|
|
5686 |
to your error log when Debug is set to 1. This can help you
|
|
5687 |
performance tweak access to these databases.
|
|
5688 |
|
|
5689 |
+Updated documentation with new config settings and
|
|
5690 |
API extensions.
|
|
5691 |
|
|
5692 |
+Added AllowApplicationState config option which allows
|
|
5693 |
you to leave $Application undefined, and will not
|
|
5694 |
execute Application_OnStart or Application_OnEnd.
|
|
5695 |
This can be a slight performance increase of 2-3% if
|
|
5696 |
you are not using $Application, but are using $Session.
|
|
5697 |
|
|
5698 |
+Added $Session->Lock() / $Session->UnLock() API routines
|
|
5699 |
necessary additions since access to session is not
|
|
5700 |
serialized by default like IIS ASP. Also prompted
|
|
5701 |
by change in locking code which retied to SDBM_File
|
|
5702 |
or DB_File each lock. If you $Session->Lock / UnLock
|
|
5703 |
around many read/writes, you will increase performance.
|
|
5704 |
|
|
5705 |
+Added StateCache config which, if set will cache
|
|
5706 |
the file handle locks for $Application and an internal
|
|
5707 |
database used for tracking $Session info. This caching can
|
|
5708 |
make an ASP application perform up to 10% faster,
|
|
5709 |
at a cost of each web server process holding 2 more
|
|
5710 |
cached file handles open, per ASP application using
|
|
5711 |
this configuration. The data written to or read from
|
|
5712 |
these state databases is not cached, just the locking
|
|
5713 |
file handles are held open.
|
|
5714 |
|
|
5715 |
-Added in much more locking in session manager
|
|
5716 |
and session garbage collector to help avoid collisions
|
|
5717 |
between the two. There were definite windows that the
|
|
5718 |
two would collide in, during which bad things could
|
|
5719 |
happen on a high volume site.
|
|
5720 |
|
|
5721 |
-Fixed some warnings in DESTROY and ParseParams()
|
5710 | 5722 |
|
5711 | 5723 |
$VERSION = 0.14; $DATE="07/29/1999";
|
5712 | |
-CGI & StatINC or StatINCMatch would have bad results
|
5713 | |
at times, with StatINC deleting dynamically compiled
|
5714 | |
CGI subroutines, that were imported into other scripts
|
5715 | |
and modules namespaces.
|
5716 | |
|
5717 | |
A couple tweaks, and now StatINC & CGI play nice again ;)
|
5718 | |
StatINCMatch should be safe to use in production with CGI.
|
5719 | |
This affects in particular environments that use file upload,
|
5720 | |
since CGI is loaded automatically by Apache::ASP to handle
|
5721 | |
file uploads.
|
5722 | |
|
5723 | |
This fix should also affect other seemingly random
|
5724 | |
times when StatINC or StatINCMatch don't seem to do
|
5725 | |
the right thing.
|
5726 | |
|
5727 | |
+use of ASP objects like $Response are now "use strict"
|
5728 | |
safe in scripts, while UniquePackages config is set.
|
5729 | |
|
5730 | |
+Better handling of "use strict" errors in ASP scripts.
|
5731 | |
The error is detected, and the developer is pointed to the
|
5732 | |
Apache error log for the exact error.
|
5733 | |
|
5734 | |
The script with "use strict" errors will be recompiled again. Its seems
|
5735 | |
though that "use strict" will only throw its error once, so that a script
|
5736 | |
can be recompiled with the same errors, and work w/o any use strict
|
5737 | |
error messaging.
|
|
5724 |
-CGI & StatINC or StatINCMatch would have bad results
|
|
5725 |
at times, with StatINC deleting dynamically compiled
|
|
5726 |
CGI subroutines, that were imported into other scripts
|
|
5727 |
and modules namespaces.
|
|
5728 |
|
|
5729 |
A couple tweaks, and now StatINC & CGI play nice again ;)
|
|
5730 |
StatINCMatch should be safe to use in production with CGI.
|
|
5731 |
This affects in particular environments that use file upload,
|
|
5732 |
since CGI is loaded automatically by Apache::ASP to handle
|
|
5733 |
file uploads.
|
|
5734 |
|
|
5735 |
This fix should also affect other seemingly random
|
|
5736 |
times when StatINC or StatINCMatch don't seem to do
|
|
5737 |
the right thing.
|
|
5738 |
|
|
5739 |
+use of ASP objects like $Response are now "use strict"
|
|
5740 |
safe in scripts, while UniquePackages config is set.
|
|
5741 |
|
|
5742 |
+Better handling of "use strict" errors in ASP scripts.
|
|
5743 |
The error is detected, and the developer is pointed to the
|
|
5744 |
Apache error log for the exact error.
|
|
5745 |
|
|
5746 |
The script with "use strict" errors will be recompiled again. Its seems
|
|
5747 |
though that "use strict" will only throw its error once, so that a script
|
|
5748 |
can be recompiled with the same errors, and work w/o any use strict
|
|
5749 |
error messaging.
|
5738 | 5750 |
|
5739 | 5751 |
$VERSION = 0.12; $DATE="07/01/1999";
|
5740 | |
-Compiles are now 10 +times faster for scripts with lots of big
|
5741 | |
embedded perl blocks <% #perl %>
|
5742 | |
|
5743 | |
Compiles were slow because of an old PerlScript compatibility
|
5744 | |
parsing trick where $Request->QueryString('hi')->{item}
|
5745 | |
would be parsed to $Request->QueryString('hi') which works.
|
5746 | |
I think the regexp that I was using had O(n^2) characteristics
|
5747 | |
and it took a really big perl block to 10 +seconds to parse
|
5748 | |
to understand there was a problem :(
|
5749 | |
|
5750 | |
I doubt anyone needed this compatibility, I don't even see
|
5751 | |
any code that looks like this in the online PerlScript examples,
|
5752 | |
so I've commented out this parsing trick for now. If you
|
5753 | |
need me to bring back this functionality, it will be in the
|
5754 | |
form of a config setting.
|
5755 | |
|
5756 | |
For information on PerlScript compatibility, see the PerlScript
|
5757 | |
section in the ASP docs.
|
5758 | |
|
5759 | |
-Added UniquePackages config option, that if set brings back
|
5760 | |
the old method of compiling each ASP script into its own
|
5761 | |
separate package. As of v.10, scripts are compiled by default
|
5762 | |
into the same package, so that scripts, dynamic includes & global.asa
|
5763 | |
can share globals. This BROKE scripts in the same ASP Application
|
5764 | |
that defined the same sub routines, as their subs would redefine
|
5765 | |
each other.
|
5766 | |
|
5767 | |
UniquePackages has scripts compiled into separate perl packages,
|
5768 | |
so they may define subs with the same name, w/o fear of overlap.
|
5769 | |
Under this settings, scripts will not be able to share globals.
|
5770 | |
|
5771 | |
-Secure field for cookies in $Response->Cookies() must be TRUE to
|
5772 | |
force cookie to be secure. Before, it just had to be defined,
|
5773 | |
which gave wrong behavior for Secure => 0.
|
5774 | |
|
5775 | |
+$Response->{IsClientConnected} set to one by default. Will
|
5776 | |
work out a real value when I upgrade to apache 1.3.6. This
|
5777 | |
value has no meaning before, as apache aborts the perl code
|
5778 | |
when a client drops its connection in earlier versions.
|
5779 | |
|
5780 | |
+better compile time debugging of dynamic includes, with
|
5781 | |
Debug 2 setting
|
5782 | |
|
5783 | |
+"use strict" friendly handling of compiling dynamic includes
|
5784 | |
with errors
|
|
5752 |
-Compiles are now 10 +times faster for scripts with lots of big
|
|
5753 |
embedded perl blocks <% #perl %>
|
|
5754 |
|
|
5755 |
Compiles were slow because of an old PerlScript compatibility
|
|
5756 |
parsing trick where $Request->QueryString('hi')->{item}
|
|
5757 |
would be parsed to $Request->QueryString('hi') which works.
|
|
5758 |
I think the regexp that I was using had O(n^2) characteristics
|
|
5759 |
and it took a really big perl block to 10 +seconds to parse
|
|
5760 |
to understand there was a problem :(
|
|
5761 |
|
|
5762 |
I doubt anyone needed this compatibility, I don't even see
|
|
5763 |
any code that looks like this in the online PerlScript examples,
|
|
5764 |
so I've commented out this parsing trick for now. If you
|
|
5765 |
need me to bring back this functionality, it will be in the
|
|
5766 |
form of a config setting.
|
|
5767 |
|
|
5768 |
For information on PerlScript compatibility, see the PerlScript
|
|
5769 |
section in the ASP docs.
|
|
5770 |
|
|
5771 |
-Added UniquePackages config option, that if set brings back
|
|
5772 |
the old method of compiling each ASP script into its own
|
|
5773 |
separate package. As of v.10, scripts are compiled by default
|
|
5774 |
into the same package, so that scripts, dynamic includes & global.asa
|
|
5775 |
can share globals. This BROKE scripts in the same ASP Application
|
|
5776 |
that defined the same sub routines, as their subs would redefine
|
|
5777 |
each other.
|
|
5778 |
|
|
5779 |
UniquePackages has scripts compiled into separate perl packages,
|
|
5780 |
so they may define subs with the same name, w/o fear of overlap.
|
|
5781 |
Under this settings, scripts will not be able to share globals.
|
|
5782 |
|
|
5783 |
-Secure field for cookies in $Response->Cookies() must be TRUE to
|
|
5784 |
force cookie to be secure. Before, it just had to be defined,
|
|
5785 |
which gave wrong behavior for Secure => 0.
|
|
5786 |
|
|
5787 |
+$Response->{IsClientConnected} set to one by default. Will
|
|
5788 |
work out a real value when I upgrade to apache 1.3.6. This
|
|
5789 |
value has no meaning before, as apache aborts the perl code
|
|
5790 |
when a client drops its connection in earlier versions.
|
|
5791 |
|
|
5792 |
+better compile time debugging of dynamic includes, with
|
|
5793 |
Debug 2 setting
|
|
5794 |
|
|
5795 |
+"use strict" friendly handling of compiling dynamic includes
|
|
5796 |
with errors
|
5785 | 5797 |
|
5786 | 5798 |
$VERSION = 0.11; $DATE="06/24/1999";
|
5787 | |
+Lots of documentation updates
|
5788 | |
|
5789 | |
+The MailHost config option is the smtp server used for
|
5790 | |
relay emails for the Mail* config options.
|
5791 | |
|
5792 | |
+MailAlertTo config option used for sending a short administrative
|
5793 | |
alert for an internal ASP error, server code 500. This is the
|
5794 | |
compliment to MailErrorsTo, but is suited for sending a to a
|
5795 | |
small text based pager. The email sent by MailErrorsTo would
|
5796 | |
then be checked by the web admin for quick response & debugging
|
5797 | |
for the incident.
|
5798 | |
|
5799 | |
The MailAlertPeriod config specifies the time in minutes during
|
5800 | |
which only one alert will be sent, which defaults to 20.
|
5801 | |
|
5802 | |
+MailErrorsTo config options sends the results of a 500 error
|
5803 | |
to the email address specified as if Debug were set to 2.
|
5804 | |
If Debug 2 is set, this config will not be on, as it is
|
5805 | |
for production use only. Debug settings less than 2 only
|
5806 | |
log errors to the apache server error log.
|
5807 | |
|
5808 | |
-StatINCMatch / StatINC can be used in production and work
|
5809 | |
even after a server graceful restart, which is essential for
|
5810 | |
a production server.
|
5811 | |
|
5812 | |
-Content-Length header is set again, if BufferingOn is set, and
|
5813 | |
haven't $Response->Flush()'d. This broke when I introduce
|
5814 | |
the Script_OnEnd event handler.
|
5815 | |
|
5816 | |
+Optimized reloading of the GlobalPackage perl module upon changes,
|
5817 | |
so that scripts and dynamic includes don't have to be recompiled.
|
5818 | |
The global.asa will still have to be though. Since we started
|
5819 | |
compiling all routines into a package that can be named with
|
5820 | |
GlobalPackage, we've been undeffing compiled scripts and includes
|
5821 | |
when the real GlobalPackage changed on disk, as we do a full sweep
|
5822 | |
through the namespace. Now, we skip those subs that we know to
|
5823 | |
be includes or scripts.
|
5824 | |
|
5825 | |
-Using Apache::Symbol::undef() to undefine precompiled scripts
|
5826 | |
and includes when reloading those scripts. Doing just an undef()
|
5827 | |
would sometimes result in an "active subroutine undef" error.
|
5828 | |
This bug came out when I started thrashing the StatINC system
|
5829 | |
for production use.
|
5830 | |
|
5831 | |
+StatINCMatch setting created for production use reloading of
|
5832 | |
perl modules. StatINCMatch allows StatINC reloading of a
|
5833 | |
subset of all the modules defined in %INC, those that match
|
5834 | |
$module =~ /$StatINCMatch/, where module is some module name
|
5835 | |
like Class/Struct.pm
|
5836 | |
|
5837 | |
+Reoptimized pod comment parsing. I slowed it down to sync
|
5838 | |
lines numbers in the last version, but found another corner I could cut.
|
|
5799 |
+Lots of documentation updates
|
|
5800 |
|
|
5801 |
+The MailHost config option is the smtp server used for
|
|
5802 |
relay emails for the Mail* config options.
|
|
5803 |
|
|
5804 |
+MailAlertTo config option used for sending a short administrative
|
|
5805 |
alert for an internal ASP error, server code 500. This is the
|
|
5806 |
compliment to MailErrorsTo, but is suited for sending a to a
|
|
5807 |
small text based pager. The email sent by MailErrorsTo would
|
|
5808 |
then be checked by the web admin for quick response & debugging
|
|
5809 |
for the incident.
|
|
5810 |
|
|
5811 |
The MailAlertPeriod config specifies the time in minutes during
|
|
5812 |
which only one alert will be sent, which defaults to 20.
|
|
5813 |
|
|
5814 |
+MailErrorsTo config options sends the results of a 500 error
|
|
5815 |
to the email address specified as if Debug were set to 2.
|
|
5816 |
If Debug 2 is set, this config will not be on, as it is
|
|
5817 |
for production use only. Debug settings less than 2 only
|
|
5818 |
log errors to the apache server error log.
|
|
5819 |
|
|
5820 |
-StatINCMatch / StatINC can be used in production and work
|
|
5821 |
even after a server graceful restart, which is essential for
|
|
5822 |
a production server.
|
|
5823 |
|
|
5824 |
-Content-Length header is set again, if BufferingOn is set, and
|
|
5825 |
haven't $Response->Flush()'d. This broke when I introduce
|
|
5826 |
the Script_OnEnd event handler.
|
|
5827 |
|
|
5828 |
+Optimized reloading of the GlobalPackage perl module upon changes,
|
|
5829 |
so that scripts and dynamic includes don't have to be recompiled.
|
|
5830 |
The global.asa will still have to be though. Since we started
|
|
5831 |
compiling all routines into a package that can be named with
|
|
5832 |
GlobalPackage, we've been undeffing compiled scripts and includes
|
|
5833 |
when the real GlobalPackage changed on disk, as we do a full sweep
|
|
5834 |
through the namespace. Now, we skip those subs that we know to
|
|
5835 |
be includes or scripts.
|
|
5836 |
|
|
5837 |
-Using Apache::Symbol::undef() to undefine precompiled scripts
|
|
5838 |
and includes when reloading those scripts. Doing just an undef()
|
|
5839 |
would sometimes result in an "active subroutine undef" error.
|
|
5840 |
This bug came out when I started thrashing the StatINC system
|
|
5841 |
for production use.
|
|
5842 |
|
|
5843 |
+StatINCMatch setting created for production use reloading of
|
|
5844 |
perl modules. StatINCMatch allows StatINC reloading of a
|
|
5845 |
subset of all the modules defined in %INC, those that match
|
|
5846 |
$module =~ /$StatINCMatch/, where module is some module name
|
|
5847 |
like Class/Struct.pm
|
|
5848 |
|
|
5849 |
+Reoptimized pod comment parsing. I slowed it down to sync
|
|
5850 |
lines numbers in the last version, but found another corner I could cut.
|
5839 | 5851 |
|
5840 | 5852 |
$VERSION = 0.10; $DATE="05/24/1999";
|
5841 | |
+= improvement; - = bug fix
|
5842 | |
|
5843 | |
+Added index.html file to ./eg to help people wade through
|
5844 | |
the examples. This one has been long overdue.
|
5845 | |
|
5846 | |
+Clean config option, or setting $Response->{Clean} to 1 - 9,
|
5847 | |
uses HTML::Clean to compress text/html output of ASP scripts.
|
5848 | |
I like the Clean 1 setting which is lightweight, stripping
|
5849 | |
white space for about 10% compression, at a cost of less than
|
5850 | |
a 5% performance penalty.
|
5851 | |
|
5852 | |
+Using pod style commenting no longer confuses the line
|
5853 | |
numbering. ASP script line numbers are almost exactly match
|
5854 | |
their compiled perl version, except that normal inline includes
|
5855 | |
(not dynamic) insert extra text which can confuse line numbering.
|
5856 | |
If you want perl error line numbers to entirely sync with your
|
5857 | |
ASP scripts, I would suggest learning how to use dynamic includes,
|
5858 | |
as opposed to inline includes.
|
5859 | |
|
5860 | |
-Wrapped StatINC reloading of libs in an eval, and capturing
|
5861 | |
error for Debug 2 setting. This makes changing libs with StatINC
|
5862 | |
on a little more friendly when there are errors.
|
5863 | |
|
5864 | |
-$Request->QueryString() now stores multiple values for the
|
5865 | |
same key, just as $Request->Form() has since v.07. In
|
5866 | |
wantarray() context like @vals = $Request->QueryString('dupkey'),
|
5867 | |
@vals will store whatever values where associated with dupkey
|
5868 | |
in the query string like (1,2) from: ?dupkey=1&dupkey=2
|
5869 | |
|
5870 | |
+The GlobalPackage config directive may be defined
|
5871 | |
to explicitly set the perl module that all scripts and global.asa
|
5872 | |
are compiled into.
|
5873 | |
|
5874 | |
-Dynamic includes may be in the Global directory, just like
|
5875 | |
normal includes.
|
5876 | |
|
5877 | |
+Perl script generated from asp scripts should match line
|
5878 | |
for line, seen in errors, except when using inline (default)
|
5879 | |
includes, pod comments, or <% #comment %> perl comments, which
|
5880 | |
will throw off the line counts by adding text, removing
|
5881 | |
text, or having an extra newline added, respectively.
|
5882 | |
|
5883 | |
-Script_OnEnd may now send output to the browser. Before
|
5884 | |
$main::Response->End() was being called at the end of the
|
5885 | |
main script preventing further output.
|
5886 | |
|
5887 | |
++All scripts are compiled as routines in a namespace uniquely defined by
|
5888 | |
the global.asa of the ASP application. Thus, scripts, includes, and
|
5889 | |
global.asa routines will share all globals defined in the global.asa
|
5890 | |
namespace. This means that globals between scripts will be shared, and
|
5891 | |
globals defined in a global.asa will be available to scripts.
|
5892 | |
|
5893 | |
Scripts used to have their own namespace, thus globals
|
5894 | |
were not shared between them.
|
5895 | |
|
5896 | |
+a -o $output_dir switch on the ./cgi/asp script allows
|
5897 | |
it to execute scripts and write their output to an output
|
5898 | |
directory. Useful for building static html sites, based on
|
5899 | |
asp scripts. An example use would be:
|
5900 | |
|
5901 | |
asp -b -o out *.asp
|
5902 | |
|
5903 | |
Without an output directory, script output is written to STDOUT
|
|
5853 |
+= improvement; - = bug fix
|
|
5854 |
|
|
5855 |
+Added index.html file to ./eg to help people wade through
|
|
5856 |
the examples. This one has been long overdue.
|
|
5857 |
|
|
5858 |
+Clean config option, or setting $Response->{Clean} to 1 - 9,
|
|
5859 |
uses HTML::Clean to compress text/html output of ASP scripts.
|
|
5860 |
I like the Clean 1 setting which is lightweight, stripping
|
|
5861 |
white space for about 10% compression, at a cost of less than
|
|
5862 |
a 5% performance penalty.
|
|
5863 |
|
|
5864 |
+Using pod style commenting no longer confuses the line
|
|
5865 |
numbering. ASP script line numbers are almost exactly match
|
|
5866 |
their compiled perl version, except that normal inline includes
|
|
5867 |
(not dynamic) insert extra text which can confuse line numbering.
|
|
5868 |
If you want perl error line numbers to entirely sync with your
|
|
5869 |
ASP scripts, I would suggest learning how to use dynamic includes,
|
|
5870 |
as opposed to inline includes.
|
|
5871 |
|
|
5872 |
-Wrapped StatINC reloading of libs in an eval, and capturing
|
|
5873 |
error for Debug 2 setting. This makes changing libs with StatINC
|
|
5874 |
on a little more friendly when there are errors.
|
|
5875 |
|
|
5876 |
-$Request->QueryString() now stores multiple values for the
|
|
5877 |
same key, just as $Request->Form() has since v.07. In
|
|
5878 |
wantarray() context like @vals = $Request->QueryString('dupkey'),
|
|
5879 |
@vals will store whatever values where associated with dupkey
|
|
5880 |
in the query string like (1,2) from: ?dupkey=1&dupkey=2
|
|
5881 |
|
|
5882 |
+The GlobalPackage config directive may be defined
|
|
5883 |
to explicitly set the perl module that all scripts and global.asa
|
|
5884 |
are compiled into.
|
|
5885 |
|
|
5886 |
-Dynamic includes may be in the Global directory, just like
|
|
5887 |
normal includes.
|
|
5888 |
|
|
5889 |
+Perl script generated from asp scripts should match line
|
|
5890 |
for line, seen in errors, except when using inline (default)
|
|
5891 |
includes, pod comments, or <% #comment %> perl comments, which
|
|
5892 |
will throw off the line counts by adding text, removing
|
|
5893 |
text, or having an extra newline added, respectively.
|
|
5894 |
|
|
5895 |
-Script_OnEnd may now send output to the browser. Before
|
|
5896 |
$main::Response->End() was being called at the end of the
|
|
5897 |
main script preventing further output.
|
|
5898 |
|
|
5899 |
++All scripts are compiled as routines in a namespace uniquely defined
|
|
5900 |
by the global.asa of the ASP application. Thus, scripts, includes, and
|
|
5901 |
global.asa routines will share all globals defined in the global.asa
|
|
5902 |
namespace. This means that globals between scripts will be shared, and
|
|
5903 |
globals defined in a global.asa will be available to scripts.
|
|
5904 |
|
|
5905 |
Scripts used to have their own namespace, thus globals
|
|
5906 |
were not shared between them.
|
|
5907 |
|
|
5908 |
+a -o $output_dir switch on the ./cgi/asp script allows
|
|
5909 |
it to execute scripts and write their output to an output
|
|
5910 |
directory. Useful for building static html sites, based on
|
|
5911 |
asp scripts. An example use would be:
|
|
5912 |
|
|
5913 |
asp -b -o out *.asp
|
|
5914 |
|
|
5915 |
Without an output directory, script output is written to STDOUT
|
5904 | 5916 |
|
5905 | 5917 |
$VERSION = 0.09; $DATE="04/22/1999";
|
5906 | |
+Updated Makefile.PL optional modules output for CGI & DB_File
|
5907 | |
|
5908 | |
+Improved docs on $Response->Cookies() and $Request->Cookies()
|
5909 | |
|
5910 | |
+Added PERFORMANCE doc to main README, and added sub section
|
5911 | |
on precompiling scripts with Apache::ASP->Loader()
|
5912 | |
|
5913 | |
+Naming of CompileIncludes switched over to DynamicIncludes
|
5914 | |
for greater clarity.
|
5915 | |
|
5916 | |
+Dynamic includes can now reference ASP objects like $Session
|
5917 | |
w/o the $main::* syntax. These subs are no longer anonymous
|
5918 | |
subs, and are now compiled into the namespace of the global.asa package.
|
5919 | |
|
5920 | |
+Apache::ASP->Loader() precompiles dynamic includes too. Making this work
|
5921 | |
required fixing some subtle bugs / dependencies in the compiling process.
|
5922 | |
|
5923 | |
+Added Apache::ASP->Loader() similar to Apache::RegistryLoader for
|
5924 | |
precompiling ASP scripts. Precompile a whole site at server
|
5925 | |
startup with one function call.
|
5926 | |
|
5927 | |
+Prettied the error messaging with Debug 2.
|
5928 | |
|
5929 | |
+$Response->Debug(@args) debugging extension, which
|
5930 | |
allows a developer to hook into the module's debugging,
|
5931 | |
and only have @args be written to error_log when Debug is greater
|
5932 | |
than 0.
|
5933 | |
|
5934 | |
-Put write locking code around State writes, like $Session
|
5935 | |
and $Application. I thought I fixed this bug a while ago.
|
5936 | |
|
5937 | |
-API change: converted $Session->Timeout() and $Session->SessionID()
|
5938 | |
methods into $Session->{Timeout} and $Session->{SessionID} properties.
|
5939 | |
The use of these properties as methods is deprecated, but
|
5940 | |
backwards compatibility will remain. Updated ./eg/session.asp
|
5941 | |
to use these new properties.
|
5942 | |
|
5943 | |
+Implemented $Response->{PICS} which if set sends out a PICS-Label
|
5944 | |
HTTP header, useful for ratings.
|
5945 | |
|
5946 | |
+Implemented $Response->{CacheControl} and $Response->{Charset} members.
|
5947 | |
By default, CacheControl is 'private', and this value gets sent out
|
5948 | |
every request as HTTP header Cache-Control. Charset appends itself
|
5949 | |
onto the content type header.
|
5950 | |
|
5951 | |
+Implemented $Request->BinaryRead(), $Request->{TotalBytes},
|
5952 | |
documented them, and updated ./eg/form.asp for an example usage.
|
5953 | |
|
5954 | |
+Implemented $Response->BinaryWrite(), documented, and created
|
5955 | |
and example in ./eg/binary_write.htm
|
5956 | |
|
5957 | |
+Implemented $Server->MapPath() and created example of its use
|
5958 | |
in ./eg/server.htm
|
5959 | |
|
5960 | |
-$Request->Form() now reads file uploads correctly with
|
5961 | |
the latest CGI.pm, where $Request->Form('file_field') returns
|
5962 | |
the actual file name uploaded, which can be used as a file handle
|
5963 | |
to read in the data. Before, $Request->Form('file_field') would
|
5964 | |
return a glob that looks like *Fh::filename, so to get the file
|
5965 | |
name, you would have to parse it like =~ s/^\*Fh\:\://,
|
5966 | |
which you no longer have to do. As long as parsing was done as
|
5967 | |
mentioned, the change should be backwards compatible.
|
5968 | |
|
5969 | |
+Updated +enhanced documentation on file uploads. Created extra
|
5970 | |
comments about it as an FAQ, and under $Response->Form(), the latter
|
5971 | |
being an obvious place for a developer to look for it.
|
5972 | |
|
5973 | |
+Updated ./eg/file_upload.asp to show use of non file form data,
|
5974 | |
with which we had a bug before.
|
5975 | |
|
5976 | |
+Finished retieing *STDIN to cached STDIN contents, so that
|
5977 | |
CGI input routines may be used transparently, along side with
|
5978 | |
use of $Request->Form()
|
5979 | |
|
5980 | |
+Cleaned up and optimized $Request code
|
5981 | |
|
5982 | |
+Updated documentation for CGI input & file uploads. Created
|
5983 | |
file upload FAQ.
|
5984 | |
|
5985 | |
+Reworked ./eg/cgi.htm example to use CGI input routines
|
5986 | |
after doing a native read of STDIN.
|
5987 | |
|
5988 | |
++Added dynamic includes with <!--include file=file args=@args-->
|
5989 | |
extension. This style of include is compiled as an anonymous sub &
|
5990 | |
cached, and then executed with @args passed to the subroutine for
|
5991 | |
execution. This is include may also be rewritten as a new API
|
5992 | |
extension: $Response->Include('file', @args)
|
5993 | |
|
5994 | |
+Added ./eg/compiled_includes.htm example documenting new dynamic includes.
|
5995 | |
|
5996 | |
+Documented SSI: native file includes, and the rest with filtering
|
5997 | |
to Apache::SSI
|
5998 | |
|
5999 | |
+Turned the documentation of Filter config to value of Off so
|
6000 | |
people won't cut and paste the On config by default.
|
6001 | |
|
6002 | |
+Added SecureSession config option, which forces session cookie to
|
6003 | |
be sent only under https secured www page requests.
|
6004 | |
|
6005 | |
+Added StateDB config option allows use of DB_File for $Session, since
|
6006 | |
default use of SDBM_File is limited. See StateDB in README.
|
6007 | |
|
6008 | |
+file include syntax w/o quotes supported like <!--#include file=test.inc-->
|
6009 | |
|
6010 | |
+Nested includes are supported, with includes including each other.
|
6011 | |
Recursive includes are detected and errors out when an include has been
|
6012 | |
included 100 times for a script. Better to quit early than
|
6013 | |
have a process spin out of control. (PORTABLE ? probably not)
|
6014 | |
|
6015 | |
+Allow <!--include file=file.inc--> notation w/o quotes around file names
|
6016 | |
|
6017 | |
-PerlSetEnv apache conf setting now get passed through to
|
6018 | |
$Request->ServerVariables. This update has ServerVariables
|
6019 | |
getting data from %ENV instead of $r->cgi_env
|
6020 | |
|
6021 | |
+README FAQ for PerlHandler errors
|
|
5918 |
+Updated Makefile.PL optional modules output for CGI & DB_File
|
|
5919 |
|
|
5920 |
+Improved docs on $Response->Cookies() and $Request->Cookies()
|
|
5921 |
|
|
5922 |
+Added PERFORMANCE doc to main README, and added sub section
|
|
5923 |
on precompiling scripts with Apache::ASP->Loader()
|
|
5924 |
|
|
5925 |
+Naming of CompileIncludes switched over to DynamicIncludes
|
|
5926 |
for greater clarity.
|
|
5927 |
|
|
5928 |
+Dynamic includes can now reference ASP objects like $Session
|
|
5929 |
w/o the $main::* syntax. These subs are no longer anonymous
|
|
5930 |
subs, and are now compiled into the namespace of the global.asa package.
|
|
5931 |
|
|
5932 |
+Apache::ASP->Loader() precompiles dynamic includes too. Making this work
|
|
5933 |
required fixing some subtle bugs / dependencies in the compiling process.
|
|
5934 |
|
|
5935 |
+Added Apache::ASP->Loader() similar to Apache::RegistryLoader for
|
|
5936 |
precompiling ASP scripts. Precompile a whole site at server
|
|
5937 |
startup with one function call.
|
|
5938 |
|
|
5939 |
+Prettied the error messaging with Debug 2.
|
|
5940 |
|
|
5941 |
+$Response->Debug(@args) debugging extension, which
|
|
5942 |
allows a developer to hook into the module's debugging,
|
|
5943 |
and only have @args be written to error_log when Debug is greater
|
|
5944 |
than 0.
|
|
5945 |
|
|
5946 |
-Put write locking code around State writes, like $Session
|
|
5947 |
and $Application. I thought I fixed this bug a while ago.
|
|
5948 |
|
|
5949 |
-API change: converted $Session->Timeout() and $Session->SessionID()
|
|
5950 |
methods into $Session->{Timeout} and $Session->{SessionID} properties.
|
|
5951 |
The use of these properties as methods is deprecated, but
|
|
5952 |
backwards compatibility will remain. Updated ./eg/session.asp
|
|
5953 |
to use these new properties.
|
|
5954 |
|
|
5955 |
+Implemented $Response->{PICS} which if set sends out a PICS-Label
|
|
5956 |
HTTP header, useful for ratings.
|
|
5957 |
|
|
5958 |
+Implemented $Response->{CacheControl} and $Response->{Charset} members.
|
|
5959 |
By default, CacheControl is 'private', and this value gets sent out
|
|
5960 |
every request as HTTP header Cache-Control. Charset appends itself
|
|
5961 |
onto the content type header.
|
|
5962 |
|
|
5963 |
+Implemented $Request->BinaryRead(), $Request->{TotalBytes},
|
|
5964 |
documented them, and updated ./eg/form.asp for an example usage.
|
|
5965 |
|
|
5966 |
+Implemented $Response->BinaryWrite(), documented, and created
|
|
5967 |
and example in ./eg/binary_write.htm
|
|
5968 |
|
|
5969 |
+Implemented $Server->MapPath() and created example of its use
|
|
5970 |
in ./eg/server.htm
|
|
5971 |
|
|
5972 |
-$Request->Form() now reads file uploads correctly with
|
|
5973 |
the latest CGI.pm, where $Request->Form('file_field') returns
|
|
5974 |
the actual file name uploaded, which can be used as a file handle
|
|
5975 |
to read in the data. Before, $Request->Form('file_field') would
|
|
5976 |
return a glob that looks like *Fh::filename, so to get the file
|
|
5977 |
name, you would have to parse it like =~ s/^\*Fh\:\://,
|
|
5978 |
which you no longer have to do. As long as parsing was done as
|
|
5979 |
mentioned, the change should be backwards compatible.
|
|
5980 |
|
|
5981 |
+Updated +enhanced documentation on file uploads. Created extra
|
|
5982 |
comments about it as an FAQ, and under $Response->Form(), the latter
|
|
5983 |
being an obvious place for a developer to look for it.
|
|
5984 |
|
|
5985 |
+Updated ./eg/file_upload.asp to show use of non file form data,
|
|
5986 |
with which we had a bug before.
|
|
5987 |
|
|
5988 |
+Finished retieing *STDIN to cached STDIN contents, so that
|
|
5989 |
CGI input routines may be used transparently, along side with
|
|
5990 |
use of $Request->Form()
|
|
5991 |
|
|
5992 |
+Cleaned up and optimized $Request code
|
|
5993 |
|
|
5994 |
+Updated documentation for CGI input & file uploads. Created
|
|
5995 |
file upload FAQ.
|
|
5996 |
|
|
5997 |
+Reworked ./eg/cgi.htm example to use CGI input routines
|
|
5998 |
after doing a native read of STDIN.
|
|
5999 |
|
|
6000 |
++Added dynamic includes with <!--include file=file args=@args-->
|
|
6001 |
extension. This style of include is compiled as an anonymous sub &
|
|
6002 |
cached, and then executed with @args passed to the subroutine for
|
|
6003 |
execution. This is include may also be rewritten as a new API
|
|
6004 |
extension: $Response->Include('file', @args)
|
|
6005 |
|
|
6006 |
+Added ./eg/compiled_includes.htm example documenting new dynamic includes.
|
|
6007 |
|
|
6008 |
+Documented SSI: native file includes, and the rest with filtering
|
|
6009 |
to Apache::SSI
|
|
6010 |
|
|
6011 |
+Turned the documentation of Filter config to value of Off so
|
|
6012 |
people won't cut and paste the On config by default.
|
|
6013 |
|
|
6014 |
+Added SecureSession config option, which forces session cookie to
|
|
6015 |
be sent only under https secured www page requests.
|
|
6016 |
|
|
6017 |
+Added StateDB config option allows use of DB_File for $Session, since
|
|
6018 |
default use of SDBM_File is limited. See StateDB in README.
|
|
6019 |
|
|
6020 |
+file include syntax w/o quotes supported like <!--#include file=test.inc-->
|
|
6021 |
|
|
6022 |
+Nested includes are supported, with includes including each other.
|
|
6023 |
Recursive includes are detected and errors out when an include has been
|
|
6024 |
included 100 times for a script. Better to quit early than
|
|
6025 |
have a process spin out of control. (PORTABLE ? probably not)
|
|
6026 |
|
|
6027 |
+Allow <!--include file=file.inc--> notation w/o quotes around file names
|
|
6028 |
|
|
6029 |
-PerlSetEnv apache conf setting now get passed through to
|
|
6030 |
$Request->ServerVariables. This update has ServerVariables
|
|
6031 |
getting data from %ENV instead of $r->cgi_env
|
|
6032 |
|
|
6033 |
+README FAQ for PerlHandler errors
|
6022 | 6034 |
|
6023 | 6035 |
$VERSION = 0.08; $DATE="02/06/1999";
|
6024 | |
++SSI with Apache::Filter & Apache::SSI, see config options & ./eg files
|
6025 | |
Currently filtering only works in the direction Apache::ASP -> Apache::SSI,
|
6026 | |
will not work the other way around, as SSI must come last in a set of filters
|
6027 | |
|
6028 | |
+SSI file includes may reference files in the Global directory, better
|
6029 | |
code sharing
|
6030 | |
|
6031 | |
- <% @array... %> no longer dropped from code.
|
6032 | |
|
6033 | |
+perl =pod comments are stripped from script before compiling, and associated
|
6034 | |
PodComments configuration options.
|
6035 | |
|
6036 | |
+Command line cgi/asp script takes various options, and allows execution
|
6037 | |
of multiple asp scripts at one time. This script should be used for
|
6038 | |
command line debugging. This is also the beginning of building
|
6039 | |
a static site from asp scripts with the -b option, suppressing headers.
|
6040 | |
|
6041 | |
+$Response->AddHeader('Set-Cookie') works for multiple cookies.
|
6042 | |
|
6043 | |
-$Response->Cookies('foo', '0') works, was dropping 0 because of boolean test
|
6044 | |
|
6045 | |
-Fixed up some config doc errors.
|
|
6036 |
++SSI with Apache::Filter & Apache::SSI, see config options & ./eg files
|
|
6037 |
Currently filtering only works in the direction Apache::ASP -> Apache::SSI,
|
|
6038 |
will not work the other way around, as SSI must come last in a set of filters
|
|
6039 |
|
|
6040 |
+SSI file includes may reference files in the Global directory, better
|
|
6041 |
code sharing
|
|
6042 |
|
|
6043 |
- <% @array... %> no longer dropped from code.
|
|
6044 |
|
|
6045 |
+perl =pod comments are stripped from script before compiling, and associated
|
|
6046 |
PodComments configuration options.
|
|
6047 |
|
|
6048 |
+Command line cgi/asp script takes various options, and allows execution
|
|
6049 |
of multiple asp scripts at one time. This script should be used for
|
|
6050 |
command line debugging. This is also the beginning of building
|
|
6051 |
a static site from asp scripts with the -b option, suppressing headers.
|
|
6052 |
|
|
6053 |
+$Response->AddHeader('Set-Cookie') works for multiple cookies.
|
|
6054 |
|
|
6055 |
-$Response->Cookies('foo', '0') works, was dropping 0 because of boolean test
|
|
6056 |
|
|
6057 |
-Fixed up some config doc errors.
|
6046 | 6058 |
|
6047 | 6059 |
$VERSION = 0.07; $DATE="01/20/1999";
|
6048 | |
-removed SIG{__WARN__} handler, it was a bad idea.
|
6049 | |
|
6050 | |
-fixes file locking on QNX, work around poor flock porting
|
6051 | |
|
6052 | |
+removed message about Win32::OLE on UNIX platforms from Makefile.PL
|
6053 | |
|
6054 | |
-Better lock garbage collection. Works with StatINC seamlessly.
|
6055 | |
|
6056 | |
-Multiple select forms now work in array context with $Response->Form()
|
6057 | |
@values = $Response->Form('multi');
|
6058 | |
|
6059 | |
-Better CGI.pm compatibility with $r->header_out('Content-type'),
|
6060 | |
improved garbage collection under modperl, esp. w/ file uploads
|
|
6060 |
-removed SIG{__WARN__} handler, it was a bad idea.
|
|
6061 |
|
|
6062 |
-fixes file locking on QNX, work around poor flock porting
|
|
6063 |
|
|
6064 |
+removed message about Win32::OLE on UNIX platforms from Makefile.PL
|
|
6065 |
|
|
6066 |
-Better lock garbage collection. Works with StatINC seamlessly.
|
|
6067 |
|
|
6068 |
-Multiple select forms now work in array context with $Response->Form()
|
|
6069 |
@values = $Response->Form('multi');
|
|
6070 |
|
|
6071 |
-Better CGI.pm compatibility with $r->header_out('Content-type'),
|
|
6072 |
improved garbage collection under modperl, esp. w/ file uploads
|
6061 | 6073 |
|
6062 | 6074 |
$VERSION = 0.06; $DATE="12/21/1998";
|
6063 | |
+Application_OnStart & Application_OnEnd event handlers support.
|
6064 | |
|
6065 | |
-Compatible with CGI.pm 2.46 headers()
|
6066 | |
|
6067 | |
-Compatible with CGI.pm $q = new CGI({}), caveat: does not set params
|
6068 | |
|
6069 | |
+use strict; followed by use of objects like $Session is fine.
|
6070 | |
|
6071 | |
-Multiple cookies may be set per script execution.
|
6072 | |
|
6073 | |
+file upload implemented via CGI.pm
|
6074 | |
|
6075 | |
++global.asa implemented with events Session_OnStart and Session_OnEnd
|
6076 | |
working appropriately.
|
6077 | |
|
6078 | |
+StateDir configuration directive implemented.
|
6079 | |
StateDir allows the session state directory to be specified separately
|
6080 | |
from the Global directory, useful for operating systems with caching file
|
6081 | |
systems.
|
6082 | |
|
6083 | |
+StateManager config directive. StateManager specifies how frequently
|
6084 | |
Sessions are cleaned up, with 10 (default) meaning that old Sessions
|
6085 | |
will be cleaned up 10 times per SessionTimeout period (default 20 minutes).
|
6086 | |
|
6087 | |
+$Application->SessionCount() implemented, non-portable method.
|
6088 | |
: returns the number of currently active sessions
|
6089 | |
|
6090 | |
-STOP button fix. Users may hit STOP button during script
|
6091 | |
execution, and Apache::ASP will cleanup with a routine registered
|
6092 | |
in Apache's $r->register_cleanup. Works well supposedly.
|
6093 | |
|
6094 | |
+PerlScript compatibility work, trying to make ports smoother.
|
6095 | |
: Collection emulator, no ->{Count} property
|
6096 | |
: $.*(.*)->{Item} parsed automatically,
|
6097 | |
shedding the ->{Item} for Collection support (? better way ?)
|
6098 | |
: No VBScript dates support, just HTTP RFC dates with HTTP::Date
|
6099 | |
: Win32::OLE::in not supported, just use "keys %{$Collection}"
|
6100 | |
|
6101 | |
+./cgi/asp script for testing scripts from the command line
|
6102 | |
: will be upgraded to CGI method of doing asp
|
6103 | |
: is not "correct" in anyway, so not documented for now
|
6104 | |
but still useful
|
6105 | |
|
6106 | |
+strips DOS carriage returns from scripts automatically, so that
|
6107 | |
programs like FrontPage can upload pages to UNIX servers
|
6108 | |
without perl choking on the extra \r characters.
|
|
6075 |
+Application_OnStart & Application_OnEnd event handlers support.
|
|
6076 |
|
|
6077 |
-Compatible with CGI.pm 2.46 headers()
|
|
6078 |
|
|
6079 |
-Compatible with CGI.pm $q = new CGI({}), caveat: does not set params
|
|
6080 |
|
|
6081 |
+use strict; followed by use of objects like $Session is fine.
|
|
6082 |
|
|
6083 |
-Multiple cookies may be set per script execution.
|
|
6084 |
|
|
6085 |
+file upload implemented via CGI.pm
|
|
6086 |
|
|
6087 |
++global.asa implemented with events Session_OnStart and Session_OnEnd
|
|
6088 |
working appropriately.
|
|
6089 |
|
|
6090 |
+StateDir configuration directive implemented.
|
|
6091 |
StateDir allows the session state directory to be specified separately
|
|
6092 |
from the Global directory, useful for operating systems with caching file
|
|
6093 |
systems.
|
|
6094 |
|
|
6095 |
+StateManager config directive. StateManager specifies how frequently
|
|
6096 |
Sessions are cleaned up, with 10 (default) meaning that old Sessions
|
|
6097 |
will be cleaned up 10 times per SessionTimeout period (default 20 minutes).
|
|
6098 |
|
|
6099 |
+$Application->SessionCount() implemented, non-portable method.
|
|
6100 |
: returns the number of currently active sessions
|
|
6101 |
|
|
6102 |
-STOP button fix. Users may hit STOP button during script
|
|
6103 |
execution, and Apache::ASP will cleanup with a routine registered
|
|
6104 |
in Apache's $r->register_cleanup. Works well supposedly.
|
|
6105 |
|
|
6106 |
+PerlScript compatibility work, trying to make ports smoother.
|
|
6107 |
: Collection emulator, no ->{Count} property
|
|
6108 |
: $.*(.*)->{Item} parsed automatically,
|
|
6109 |
shedding the ->{Item} for Collection support (? better way ?)
|
|
6110 |
: No VBScript dates support, just HTTP RFC dates with HTTP::Date
|
|
6111 |
: Win32::OLE::in not supported, just use "keys %{$Collection}"
|
|
6112 |
|
|
6113 |
+./cgi/asp script for testing scripts from the command line
|
|
6114 |
: will be upgraded to CGI method of doing asp
|
|
6115 |
: is not "correct" in anyway, so not documented for now
|
|
6116 |
but still useful
|
|
6117 |
|
|
6118 |
+strips DOS carriage returns from scripts automatically, so that
|
|
6119 |
programs like FrontPage can upload pages to UNIX servers
|
|
6120 |
without perl choking on the extra \r characters.
|
6109 | 6121 |
|
6110 | 6122 |
$VERSION = 0.05; $DATE="10/19/1998";
|
6111 | |
+Added PERFORMANCE doc, which includes benchmarks +hints.
|
6112 | |
|
6113 | |
+Better installation warnings and errors for other modules required.
|
6114 | |
|
6115 | |
-Turned off StatINC in eg/.htaccess, as not everyone installs Devel::Symdump
|
6116 | |
|
6117 | |
-Fixed AUTOLOAD state bug, which wouldn't let you each through state
|
6118 | |
objects, like %{$Session}, or each %$Session, (bug introduced in v.04)
|
6119 | |
|
6120 | |
+Parses ASP white space better. HTML output matches author's intent
|
6121 | |
by better dealing with white space surrounding <% perl blocks %>
|
6122 | |
|
6123 | |
-Scalar insertion code <%=$foo%> can now span many lines.
|
6124 | |
|
6125 | |
+Added include.t test script for includes.
|
6126 | |
|
6127 | |
+Script recompiles when included files change.
|
6128 | |
|
6129 | |
+Files can be included in script with
|
6130 | |
SSI <!--#include file="filename"--> syntax, needs to be
|
6131 | |
done in ASP module to allow compilation of included code and html
|
6132 | |
into script. Future chaining with Apache::SSI will allow static
|
6133 | |
html includes, and other SSI directives
|
|
6123 |
+Added PERFORMANCE doc, which includes benchmarks +hints.
|
|
6124 |
|
|
6125 |
+Better installation warnings and errors for other modules required.
|
|
6126 |
|
|
6127 |
-Turned off StatINC in eg/.htaccess, as not everyone installs Devel::Symdump
|
|
6128 |
|
|
6129 |
-Fixed AUTOLOAD state bug, which wouldn't let you each through state
|
|
6130 |
objects, like %{$Session}, or each %$Session, (bug introduced in v.04)
|
|
6131 |
|
|
6132 |
+Parses ASP white space better. HTML output matches author's intent
|
|
6133 |
by better dealing with white space surrounding <% perl blocks %>
|
|
6134 |
|
|
6135 |
-Scalar insertion code <%=$foo%> can now span many lines.
|
|
6136 |
|
|
6137 |
+Added include.t test script for includes.
|
|
6138 |
|
|
6139 |
+Script recompiles when included files change.
|
|
6140 |
|
|
6141 |
+Files can be included in script with
|
|
6142 |
SSI <!--#include file="filename"--> syntax, needs to be
|
|
6143 |
done in ASP module to allow compilation of included code and html
|
|
6144 |
into script. Future chaining with Apache::SSI will allow static
|
|
6145 |
html includes, and other SSI directives
|
6134 | 6146 |
|
6135 | 6147 |
$VERSION = 0.04; $DATE="10/14/1998";
|
6136 | |
+Example script eg/cgi.htm demonstrating CGI.pm use for output.
|
6137 | |
|
6138 | |
+Optimized ASP parsing, faster and more legible executing code
|
6139 | |
: try 'die();' in code with setting PerlSetVar Debug 2
|
6140 | |
|
6141 | |
+Cleaned up code for running with 'use strict'
|
6142 | |
|
6143 | |
-Fixed directory handle leak on Solaris, from not closing after opendir()
|
6144 | |
|
6145 | |
+StatINC overhaul. StatINC setting now works as it should, with
|
6146 | |
the caveat that exported functions will not be refreshed.
|
6147 | |
|
6148 | |
+NoState setting optimization, disallows $Application & $Session
|
6149 | |
|
6150 | |
+$Application->*Lock() functions implemented
|
6151 | |
|
6152 | |
-SoftRedirect setting for those who want scripts to keep running
|
6153 | |
after a Redirect()
|
6154 | |
|
6155 | |
+SessionSerialize setting to lock session while script is running
|
6156 | |
: Microsoft ASP style session locking
|
6157 | |
: For a session, scripts execute one at a time
|
6158 | |
: NOT recommended use, please see note.
|
6159 | |
|
6160 | |
-MLDBM can be used for other things without messing up internal use
|
6161 | |
: before if it was used with different DB's and serializers,
|
6162 | |
internal state could be lost.
|
6163 | |
|
6164 | |
--State file locking. Corruption worries, and loss of data no more.
|
6165 | |
|
6166 | |
+CGI header support, developer can use CGI.pm for *output*, or just print()
|
6167 | |
: print "Set-Cookie: test=cookie\n", and things will just work
|
6168 | |
: use CGI.pm for output
|
6169 | |
: utilizes $r->send_cgi_header(), thanks Doug!
|
6170 | |
|
6171 | |
+Improved Cookie implementation, more flexible and complete
|
6172 | |
- Domain cookie key now works
|
6173 | |
: Expire times now taken from time(), and relative time in sec
|
6174 | |
: Request->Cookies() reading more flexible, with wantarray()
|
6175 | |
on hash cookie values, %hash = $Request->Cookie('test');
|
6176 | |
|
6177 | |
-make test module naming correction, was t.pm, now T.pm for Unix
|
6178 | |
|
6179 | |
+POD / README cleanup, formatting and HTML friendly.
|
|
6148 |
+Example script eg/cgi.htm demonstrating CGI.pm use for output.
|
|
6149 |
|
|
6150 |
+Optimized ASP parsing, faster and more legible executing code
|
|
6151 |
: try 'die();' in code with setting PerlSetVar Debug 2
|
|
6152 |
|
|
6153 |
+Cleaned up code for running with 'use strict'
|
|
6154 |
|
|
6155 |
-Fixed directory handle leak on Solaris, from not closing after opendir()
|
|
6156 |
|
|
6157 |
+StatINC overhaul. StatINC setting now works as it should, with
|
|
6158 |
the caveat that exported functions will not be refreshed.
|
|
6159 |
|
|
6160 |
+NoState setting optimization, disallows $Application & $Session
|
|
6161 |
|
|
6162 |
+$Application->*Lock() functions implemented
|
|
6163 |
|
|
6164 |
-SoftRedirect setting for those who want scripts to keep running
|
|
6165 |
after a Redirect()
|
|
6166 |
|
|
6167 |
+SessionSerialize setting to lock session while script is running
|
|
6168 |
: Microsoft ASP style session locking
|
|
6169 |
: For a session, scripts execute one at a time
|
|
6170 |
: NOT recommended use, please see note.
|
|
6171 |
|
|
6172 |
-MLDBM can be used for other things without messing up internal use
|
|
6173 |
: before if it was used with different DB's and serializers,
|
|
6174 |
internal state could be lost.
|
|
6175 |
|
|
6176 |
--State file locking. Corruption worries, and loss of data no more.
|
|
6177 |
|
|
6178 |
+CGI header support, developer can use CGI.pm for *output*, or just print()
|
|
6179 |
: print "Set-Cookie: test=cookie\n", and things will just work
|
|
6180 |
: use CGI.pm for output
|
|
6181 |
: utilizes $r->send_cgi_header(), thanks Doug!
|
|
6182 |
|
|
6183 |
+Improved Cookie implementation, more flexible and complete
|
|
6184 |
- Domain cookie key now works
|
|
6185 |
: Expire times now taken from time(), and relative time in sec
|
|
6186 |
: Request->Cookies() reading more flexible, with wantarray()
|
|
6187 |
on hash cookie values, %hash = $Request->Cookie('test');
|
|
6188 |
|
|
6189 |
-make test module naming correction, was t.pm, now T.pm for Unix
|
|
6190 |
|
|
6191 |
+POD / README cleanup, formatting and HTML friendly.
|
6180 | 6192 |
|
6181 | 6193 |
$VERSION = 0.03; $DATE="09/14/1998";
|
6182 | |
+Installation 'make test' now works
|
6183 | |
|
6184 | |
+ActiveX objects on Win32 implemented with $Server->CreateObject()
|
6185 | |
|
6186 | |
+Cookies implemented: $Response->Cookies() & $Request->Cookies()
|
6187 | |
|
6188 | |
-Fixed $Response object API, converting some methods to object members.
|
6189 | |
Deprecated methods, but backwards compatible.
|
6190 | |
|
6191 | |
+Improved error messaging, debug output
|
6192 | |
|
6193 | |
+$, influences $Response->Write(@strings) behavior
|
6194 | |
|
6195 | |
+perl print() works, sending output to $Response object
|
6196 | |
|
6197 | |
+$Response->Write() prints scalars, arrays, and hashes. Before only scalars.
|
6198 | |
|
6199 | |
+Begin implementation of $Server object.
|
6200 | |
|
6201 | |
+Implemented $Response->{Expires} and $Response->{ExpiresAbsolute}
|
6202 | |
|
6203 | |
+Added "PerlSetVar StatINC" config option
|
6204 | |
|
6205 | |
+$0 is aliased to current script filename
|
6206 | |
|
6207 | |
+ASP Objects ($Response, etc.) are set in main package
|
6208 | |
Thus notation like $main::Response->Write() can be used anywhere.
|
|
6194 |
+Installation 'make test' now works
|
|
6195 |
|
|
6196 |
+ActiveX objects on Win32 implemented with $Server->CreateObject()
|
|
6197 |
|
|
6198 |
+Cookies implemented: $Response->Cookies() & $Request->Cookies()
|
|
6199 |
|
|
6200 |
-Fixed $Response object API, converting some methods to object members.
|
|
6201 |
Deprecated methods, but backwards compatible.
|
|
6202 |
|
|
6203 |
+Improved error messaging, debug output
|
|
6204 |
|
|
6205 |
+$, influences $Response->Write(@strings) behavior
|
|
6206 |
|
|
6207 |
+perl print() works, sending output to $Response object
|
|
6208 |
|
|
6209 |
+$Response->Write() prints scalars, arrays, and hashes. Before only scalars.
|
|
6210 |
|
|
6211 |
+Begin implementation of $Server object.
|
|
6212 |
|
|
6213 |
+Implemented $Response->{Expires} and $Response->{ExpiresAbsolute}
|
|
6214 |
|
|
6215 |
+Added "PerlSetVar StatINC" config option
|
|
6216 |
|
|
6217 |
+$0 is aliased to current script filename
|
|
6218 |
|
|
6219 |
+ASP Objects ($Response, etc.) are set in main package
|
|
6220 |
Thus notation like $main::Response->Write() can be used anywhere.
|
6209 | 6221 |
|
6210 | 6222 |
$VERSION = 0.02; $DATE="07/12/1998";
|
6211 | |
++Session Manager, won't break under denial of service attack
|
6212 | |
|
6213 | |
+Fleshed out $Response, $Session objects, almost full implementation.
|
6214 | |
|
6215 | |
+Enormously more documentation.
|
6216 | |
|
6217 | |
-Fixed error handling with Debug = 2.
|
6218 | |
|
6219 | |
-Documentation fixed for pod2man support. README now more man-like.
|
6220 | |
|
6221 | |
-Stripped \r\n dos characters from installation files
|
6222 | |
|
6223 | |
-755 mode set for session state directory when created
|
6224 | |
|
6225 | |
-Loads Win32/OLE properly, won't break with UNIX
|
|
6223 |
++Session Manager, won't break under denial of service attack
|
|
6224 |
|
|
6225 |
+Fleshed out $Response, $Session objects, almost full implementation.
|
|
6226 |
|
|
6227 |
+Enormously more documentation.
|
|
6228 |
|
|
6229 |
-Fixed error handling with Debug = 2.
|
|
6230 |
|
|
6231 |
-Documentation fixed for pod2man support. README now more man-like.
|
|
6232 |
|
|
6233 |
-Stripped \r\n dos characters from installation files
|
|
6234 |
|
|
6235 |
-755 mode set for session state directory when created
|
|
6236 |
|
|
6237 |
-Loads Win32/OLE properly, won't break with UNIX
|
6226 | 6238 |
|
6227 | 6239 |
$VERSION = 0.01; $DATE="06/26/1998";
|
6228 | |
Syntax Support
|
6229 | |
--------------
|
6230 | |
Initial release, could be considered alpha software.
|
6231 | |
Allows developers to embed perl in html ASP style.
|
6232 | |
|
6233 | |
<!-- sample here -->
|
6234 | |
<html>
|
6235 | |
<body>
|
6236 | |
<% for(1..10) { %>
|
6237 | |
counting: <%=$_%> <br>
|
6238 | |
<% } %>
|
6239 | |
</body>
|
6240 | |
</html>
|
6241 | |
|
6242 | |
ASP Objects
|
6243 | |
-----------
|
6244 | |
$Session, $Application, $Response, $Request objects available
|
6245 | |
for use in asp pages.
|
6246 | |
|
6247 | |
$Session & $Application data is preserved using SDBM files.
|
6248 | |
|
6249 | |
$Session id's are tracked through the use of cookies.
|
6250 | |
|
6251 | |
Security
|
6252 | |
--------
|
6253 | |
Timeouts any attempt to use a session id that doesn't already
|
6254 | |
exist. Should stop hackers, since there is no wire speed guessing
|
6255 | |
cookies.
|
|
6240 |
Syntax Support
|
|
6241 |
--------------
|
|
6242 |
Initial release, could be considered alpha software.
|
|
6243 |
Allows developers to embed perl in html ASP style.
|
|
6244 |
|
|
6245 |
<!-- sample here -->
|
|
6246 |
<html>
|
|
6247 |
<body>
|
|
6248 |
<% for(1..10) { %>
|
|
6249 |
counting: <%=$_%> <br>
|
|
6250 |
<% } %>
|
|
6251 |
</body>
|
|
6252 |
</html>
|
|
6253 |
|
|
6254 |
ASP Objects
|
|
6255 |
-----------
|
|
6256 |
$Session, $Application, $Response, $Request objects available
|
|
6257 |
for use in asp pages.
|
|
6258 |
|
|
6259 |
$Session & $Application data is preserved using SDBM files.
|
|
6260 |
|
|
6261 |
$Session id's are tracked through the use of cookies.
|
|
6262 |
|
|
6263 |
Security
|
|
6264 |
--------
|
|
6265 |
Timeouts any attempt to use a session id that doesn't already
|
|
6266 |
exist. Should stop hackers, since there is no wire speed guessing
|
|
6267 |
cookies.
|
6256 | 6268 |
|
6257 | 6269 |
LICENSE
|
6258 | |
Copyright (c) 1998-2008, Josh Chamas, Chamas Enterprises Inc. All rights
|
6259 | |
reserved. This program is free software; you can redistribute it and/or
|
6260 | |
modify it under the same terms as Perl itself.
|
|
6270 |
Copyright (c) 1998-2018, Josh Chamas
|
|
6271 |
|
|
6272 |
All rights reserved. This program is free software; you can redistribute it
|
|
6273 |
and/or modify it under the same terms as Perl itself.
|
6261 | 6274 |
|
6262 | 6275 |
Apache::ASP is a perl native port of Active Server Pages for Apache and
|
6263 | 6276 |
mod_perl.
|