Apache-ASP

 view release on metacpan or  search on metacpan

site/changes.html  view on Meta::CPAN

 -XMLSubsMatch will strip parens in a pattern match
  so it does not interfere with internal matching use.

 +XSLT integration allowing XML to be rendered by XSLT
  on the fly.  XSLT specifies XSL file to transform XML.
  XSLTMatch is a regexp that matches XML file names, like \.xml$,
  which will be transformed by XSLT setting, default .*
  
  XSLTCacheSize when specified uses Tie::Cache to cached XML DOMs 
  internally and cache XSLT transformations output per XML/XSL 
  combination.  XML DOM objects can take a lot of RAM, so use
  this setting judiciously like setting to 100.  Definitely 
  experiment with this value.

 +More client info in the error mail feature, including
  client IP, form data, query string, and HTTP_* client headers

 +With Time::HiRes loaded, and Debug set to non 0, 
  will add a <!-- Apache::ASP served request in xx.xx seconds -->
  to text/html output, similar to Cocoon, per user request  
  Will also add this to the system debug error log output
  when Debug is < 0

 -bug fix on object initialization optimization earlier
  in this release, that was introduced for faster event
  handler execution.

 +Apache::ASP::Parse() takes a file name, scalar, or
  scalar ref for arguments of data to parse for greater
  integration ability with other applications.

 +PodComments optimization, small speed increase at
  compilation time.

 +String optimization on internal rendering that avoids 
  unnecessary copying of static html, by using refs.  Should 
  make a small difference on sites with large amounts of 
  static html.

 +CompressGzip setting which, when Compress::Zlib is installed,
  will compress text/html automatically going out to the web
  browser if the client supports gzip encoding.

 ++Script_OnFlush event handler, and auxiliary work optimizing
  asp events in general.  $Response->{BinaryRef} created which
  is a reference to outgoing output, which can be used 
  to modify the data at runtime before it goes out to the client. 

 +Some code optimizations that boost speed from 22 to 24 
  hits per second when using Sessions without $Application,
  on a simple hello world benchmark on a WinNT PII300.

 ++Better SessionManagement, more aware of server farms that 
  don't have reliable NFS locking.  The key here is to have only
  one process on one server in charge of session garbage collection
  at any one time, and try to create this situation with a snazzy
  CleanupMaster routine.  This is done by having a process register
  itself in the internal database with a server key created at
  apache start time.  If this key gets stale, another process can 
  become the master, and this period will not exceed the period
  SessionTimeout / StateManager.

  ** Work on session manager sponsored by LRN, <a href=http://www.lrn.com>http://www.lrn.com</a>.  **
  ** This work was used to deploy a server farm in production with  **
  ** NFS mounted StateDir. Thanks to Craig Samuel for his belief in **
  ** open source. :)                                                **

  Future work for server farm capabilities might include breaking
  up the internal database into one of 256 internal databases 
  hashed by the first 2 chars of the session id.  Also on the plate
  is Apache::Session like abilities with locking and/or data storage
  occuring in a SQL database.  The first dbs to be done will include
  MySQL &amp; Oracle.

 +Better session security which will create a new session id for an 
  incoming session id that does not match one already seen.  This will
  help for those with Search engines that have bookmarked
  pages with the session ids in the query strings.  This breaks away
  from standard ASP session id implementation which will automatically
  use the session id presented by the browser, now a new session id will
  be returned if the presented one is invalid or expired.

 -$Application-&gt;GetSession will only return a session if
  one already existed.  It would create one before by default.

 +Script_OnFlush global.asa event handler, and $Response-&gt;{BinaryRef}
  member which is a scalar reference to the content about to be flushed.
  See <a href=eg/global.asa>./site/eg/global.asa</a> for example usage, used in this case to
  insert font tags on the fly into the output.

 +Highlighting and linking of line error when Debug is set to 2 or -2.

 --removed fork() call from flock() backup routine? How did 
   that get in there?  Oh right, testing on Win32. :(
   Very painful lesson this one, sorry to whom it may concern.

 +$Application-&gt;SessionCount support turned off by default
  must enable with SessionCount config option.  This feature
  puts an unnecessary load on busy sites, so not default 
  behavior now.  

 ++XMLSubsMatch setting that allows the developer to 
  create custom tags XML style that execute perl subroutines.
  See <a href=eg/xml_subs.asp>./site/eg/xml_subs.asp</a>

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

 +$Server-&gt;Mail(\%mail, %smtp_args) API extension

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

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

 -Loader() will now recompile dynamic includes that 
  have changed, even if main including script has not.

site/changes.html  view on Meta::CPAN

  text, or having an extra newline added, respectively.

 -Script_OnEnd may now send output to the browser.  Before
  $main::Response-&gt;End() was being called at the end of the
  main script preventing further output.
</pre></font>++All scripts are compiled as routines in a namespace uniquely
<font face="courier new" size=3><pre>  defined by the global.asa of the ASP application.  Thus,
  scripts, includes, and global.asa routines will share
  all globals defined in the global.asa namespace.   This means
  that globals between scripts will be shared, and globals
  defined in a global.asa will be available to scripts.

  Scripts used to have their own namespace, thus globals
  were not shared between them.

 +a -o $output_dir switch on the ./cgi/asp script allows
  it to execute scripts and write their output to an output
  directory.  Useful for building static html sites, based on
  asp scripts.  An example use would be:

    asp -b -o out *.asp

  Without an output directory, script output is written to STDOUT
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2005ee189f2></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.09; $DATE="04/22/1999";</b></font>
<font face="courier new" size=3><pre>
 +Updated Makefile.PL optional modules output for CGI &amp; DB_File

 +Improved docs on $Response-&gt;Cookies() and $Request-&gt;Cookies()

 +Added PERFORMANCE doc to main README, and added sub section
  on precompiling scripts with Apache::ASP-&gt;Loader()

 +Naming of CompileIncludes switched over to DynamicIncludes 
  for greater clarity.

 +Dynamic includes can now reference ASP objects like $Session
  w/o the $main::* syntax.  These subs are no longer anonymous
  subs, and are now compiled into the namespace of the global.asa package.

 +Apache::ASP-&gt;Loader() precompiles dynamic includes too. Making this work
  required fixing some subtle bugs / dependencies in the compiling process.

 +Added Apache::ASP-&gt;Loader() similar to Apache::RegistryLoader for
  precompiling ASP scripts.  Precompile a whole site at server 
  startup with one function call.

 +Prettied the error messaging with Debug 2.

 +$Response-&gt;Debug(@args) debugging extension, which
  allows a developer to hook into the module&#39;s debugging,
  and only have @args be written to error_log when Debug is greater
  than 0.

 -Put write locking code around State writes, like $Session
  and $Application.  I thought I fixed this bug a while ago.

 -API change: converted $Session-&gt;Timeout() and $Session-&gt;SessionID() 
  methods into $Session-&gt;{Timeout} and $Session-&gt;{SessionID} properties.
  The use of these properties as methods is deprecated, but 
  backwards compatibility will remain.  Updated ./eg/session.asp
  to use these new properties.

 +Implemented $Response-&gt;{PICS} which if set sends out a PICS-Label
  HTTP header, useful for ratings.

 +Implemented $Response-&gt;{CacheControl} and $Response-&gt;{Charset} members.
  By default, CacheControl is &#39;private&#39;, and this value gets sent out
  every request as HTTP header Cache-Control.  Charset appends itself
  onto the content type header.

 +Implemented $Request-&gt;BinaryRead(), $Request-&gt;{TotalBytes},
  documented them, and updated ./eg/form.asp for an example usage. 

 +Implemented $Response-&gt;BinaryWrite(), documented, and created
  and example in ./eg/binary_write.htm

 +Implemented $Server-&gt;MapPath() and created example of its use
  in ./eg/server.htm

 -$Request-&gt;Form() now reads file uploads correctly with 
  the latest CGI.pm, where $Request-&gt;Form(&#39;file_field&#39;) returns
  the actual file name uploaded, which can be used as a file handle
  to read in the data.  Before, $Request-&gt;Form(&#39;file_field&#39;) would
  return a glob that looks like *Fh::filename, so to get the file
  name, you would have to parse it like =~ s/^\*Fh\:\://,
  which you no longer have to do.  As long as parsing was done as
  mentioned, the change should be backwards compatible.

 +Updated  +enhanced documentation on file uploads.  Created extra
  comments about it as an FAQ, and under $Response-&gt;Form(), the latter
  being an obvious place for a developer to look for it.

 +Updated ./eg/file_upload.asp to show use of non file form data, 
  with which we had a bug before.

 +Finished retieing *STDIN to cached STDIN contents, so that 
  CGI input routines may be used transparently, along side with
  use of $Request-&gt;Form()

 +Cleaned up and optimized $Request code

 +Updated documentation for CGI input &amp; file uploads.  Created
  file upload FAQ.

 +Reworked ./eg/cgi.htm example to use CGI input routines
  after doing a native read of STDIN.

 ++Added dynamic includes with &lt;!--include file=file args=@args--&gt;
  extension.  This style of include is compiled as an anonymous sub &amp; 
  cached, and then executed with @args passed to the subroutine for 
  execution.  This is include may also be rewritten as a new API 
  extension: $Response-&gt;Include(&#39;file&#39;, @args)

 +Added ./eg/compiled_includes.htm example documenting new dynamic includes.

 +Documented SSI: native file includes, and the rest with filtering 
  to Apache::SSI

site/changes.html  view on Meta::CPAN

 +perl =pod comments are stripped from script before compiling, and associated
  PodComments configuration options.

 +Command line cgi/asp script takes various options, and allows execution
  of multiple asp scripts at one time.  This script should be used for
  command line debugging.  This is also the beginning of building
  a static site from asp scripts with the -b option, suppressing headers.

 +$Response-&gt;AddHeader(&#39;Set-Cookie&#39;) works for multiple cookies.

 -$Response-&gt;Cookies(&#39;foo&#39;, &#39;0&#39;) works, was dropping 0 because of boolean test

 -Fixed up some config doc errors.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2003960e08a></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.07; $DATE="01/20/1999";</b></font>
<font face="courier new" size=3><pre>
 -removed SIG{__WARN__} handler, it was a bad idea.

 -fixes file locking on QNX, work around poor flock porting

 +removed message about Win32::OLE on UNIX platforms from Makefile.PL

 -Better lock garbage collection.  Works with StatINC seamlessly.

 -Multiple select forms now work in array context with $Response-&gt;Form()
	@values = $Response-&gt;Form(&#39;multi&#39;);

 -Better CGI.pm compatibility with $r-&gt;header_out(&#39;Content-type&#39;),
  improved garbage collection under modperl, esp. w/ file uploads
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%200394bbc7f></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.06; $DATE="12/21/1998";</b></font>
<font face="courier new" size=3><pre>
 +Application_OnStart &amp; Application_OnEnd event handlers support.

 -Compatible with CGI.pm 2.46 headers() 

 -Compatible with CGI.pm $q = new CGI({}), caveat: does not set params 

 +use strict; followed by use of objects like $Session is fine.

 -Multiple cookies may be set per script execution.

 +file upload implemented via CGI.pm

 ++global.asa implemented with events Session_OnStart and Session_OnEnd
  working appropriately.

 +StateDir configuration directive implemented.
  StateDir allows the session state directory to be specified separately 
  from the Global directory, useful for operating systems with caching file 
  systems.

 +StateManager config directive.  StateManager specifies how frequently
  Sessions are cleaned up, with 10 (default) meaning that old Sessions
  will be cleaned up 10 times per SessionTimeout period (default 20 minutes).

 +$Application-&gt;SessionCount() implemented, non-portable method.
	: returns the number of currently active sessions

 -STOP button fix.  Users may hit STOP button during script 
  execution, and Apache::ASP will cleanup with a routine registered
  in Apache&#39;s $r-&gt;register_cleanup.  Works well supposedly.

 +PerlScript compatibility work, trying to make ports smoother.
	: Collection emulator, no -&gt;{Count} property
	: $.*(.*)-&gt;{Item} parsed automatically, 
	  shedding the -&gt;{Item} for Collection support (? better way ?)
	: No VBScript dates support, just HTTP RFC dates with HTTP::Date
	: Win32::OLE::in not supported, just use &quot;keys %{$Collection}&quot;	

 +./cgi/asp script for testing scripts from the command line
	: will be upgraded to CGI method of doing asp
	: is not &quot;correct&quot; in anyway, so not documented for now
	  but still useful

 +strips DOS carriage returns from scripts automatically, so that
  programs like FrontPage can upload pages to UNIX servers
  without perl choking on the extra \r characters.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2003a5fe2db></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.05; $DATE="10/19/1998";</b></font>
<font face="courier new" size=3><pre>
 +Added PERFORMANCE doc, which includes benchmarks  +hints.

 +Better installation warnings and errors for other modules required. 

 -Turned off StatINC in eg/.htaccess, as not everyone installs Devel::Symdump

 -Fixed AUTOLOAD state bug, which wouldn&#39;t let you each through state
  objects, like %{$Session}, or each %$Session, (bug introduced in v.04)

 +Parses ASP white space better.  HTML output matches author&#39;s intent
  by better dealing with white space surrounding &lt;% perl blocks %&gt;

 -Scalar insertion code &lt;%=$foo%&gt; can now span many lines.

 +Added include.t test script for includes.

 +Script recompiles when included files change.

 +Files can be included in script with 
  SSI &lt;!--#include file=&quot;filename&quot;--&gt; syntax, needs to be
  done in ASP module to allow compilation of included code and html 
  into script.  Future chaining with Apache::SSI will allow static 
  html includes, and other SSI directives
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2009ffce1f9></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.04; $DATE="10/14/1998";</b></font>
<font face="courier new" size=3><pre>
 +Example script eg/cgi.htm demonstrating CGI.pm use for output.

site/changes.html  view on Meta::CPAN

 +Implemented $Response-&gt;{Expires} and $Response-&gt;{ExpiresAbsolute}

 +Added &quot;PerlSetVar StatINC&quot; config option

 +$0 is aliased to current script filename

 +ASP Objects ($Response, etc.) are set in main package
  Thus notation like $main::Response-&gt;Write() can be used anywhere.
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%20055b248f9></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.02; $DATE="07/12/1998";</b></font>
<font face="courier new" size=3><pre>
 ++Session Manager, won&#39;t break under denial of service attack

 +Fleshed out $Response, $Session objects, almost full implementation.

 +Enormously more documentation.

 -Fixed error handling with Debug = 2.

 -Documentation fixed for pod2man support.  README now more man-like.

 -Stripped \r\n dos characters from installation files

 -755 mode set for session state directory when created

 -Loads Win32/OLE properly, won&#39;t break with UNIX
</pre></font>
	
	<p>
	<a name=%24VERSION%20%3D%2009faee67f></a>
	<font face=verdana><font class=title size=+0 color=#555555><b>$VERSION = 0.01; $DATE="06/26/1998";</b></font>
<font face="courier new" size=3><pre>
 Syntax Support
 --------------
 Initial release, could be considered alpha software.
 Allows developers to embed perl in html ASP style.

 &lt;!-- sample here --&gt;
 &lt;html&gt;
 &lt;body&gt;
 &lt;% for(1..10) { %&gt;
 	counting: &lt;%=$_%&gt; &lt;br&gt;
 &lt;% } %&gt;
 &lt;/body&gt;
 &lt;/html&gt;

 ASP Objects
 -----------
 $Session, $Application, $Response, $Request objects available
 for use in asp pages.

 $Session &amp; $Application data is preserved using SDBM files.

 $Session id&#39;s are tracked through the use of cookies.

 Security
 --------
 Timeouts any attempt to use a session id that doesn&#39;t already 
 exist.  Should stop hackers, since there is no wire speed guessing
 cookies.
</pre></font>
	

</font>
</td>

<td bgcolor=white valign=top>
&nbsp;
</td>

</tr>
</table>

</td></tr>
</table>
</center>

</body>
</html>



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