<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://panoptic.com/mediawiki/aolserver/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://panoptic.com/mediawiki/aolserver/api.php?action=feedcontributions&amp;user=Dossy&amp;feedformat=atom</id>
		<title>AOLserver Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://panoptic.com/mediawiki/aolserver/api.php?action=feedcontributions&amp;user=Dossy&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Special:Contributions/Dossy"/>
		<updated>2012-05-17T11:18:47Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.18.1</generator>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Sites_That_Run_On_AOLserver</id>
		<title>Sites That Run On AOLserver</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Sites_That_Run_On_AOLserver"/>
				<updated>2010-09-21T18:59:27Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edits by Cargames (Talk) to last revision by Markm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is (a probably incomplete) list of sites that run on AOLserver.  Some you will recognize, some you probably won't.&lt;br /&gt;
&lt;br /&gt;
Note: Please add entries in the following format:&lt;br /&gt;
* Site name | Version | URL | description (optional)&lt;br /&gt;
&lt;br /&gt;
In order to appear on this list, the server '''MUST''' respond with a &amp;quot;Server:&amp;quot; header in the HTTP response which indicates that it is running AOLserver, and what version.&lt;br /&gt;
&lt;br /&gt;
The following is a list of sites running some version of AOLserver at AOL:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;tabulardata&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- class=&amp;quot;header&amp;quot;&lt;br /&gt;
! Site name !! Version !! URL !! Description (optional)&lt;br /&gt;
|-&lt;br /&gt;
| AOL.COM || AOLserver/3.4.2 || http://aol.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Netscape || AOLserver/3.5.5 || http://home.netscape.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Digital City || AOLserver/4.0 || http://home.digitalcity.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| AOL Mail || AOLserver/3.5.9 || http://webmail.aol.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Moviefone || ArtBlast/3.5.4 || http://www.moviefone.com/ ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These are non-AOL sites that also use some version of AOLserver:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;tabulardata&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- class=&amp;quot;header&amp;quot;&lt;br /&gt;
! Site name !! Version !! URL !! Description (optional)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 4.1.x'''&lt;br /&gt;
|-&lt;br /&gt;
| the CodeMill || AOLserver/4.1.0 || http://www.thecodemill.biz || host of the #aolserver IRC logs[http://www.thecodemill.biz/services/aolserver/irc/]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 4.0.x'''&lt;br /&gt;
|-&lt;br /&gt;
| [[Panoptic Computer Network]] || AOLserver/4.0.10a || http://panoptic.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| NS_SHUTDOWN || AOLserver/4.0.10a || http://www.nsshutdown.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Bayt.com || AOLserver/4.0.10 || http://www.bayt.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| CiteULike || AOLserver/4.0.10 || http://www.citeulike.org/ ||&lt;br /&gt;
|-&lt;br /&gt;
| OpenACS || AOLserver/4.0.9 || http://openacs.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Creative Commons || AOLserver/4.0.8 || http://creativecommons.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Volunteer Solutions || AOLserver/4.0.8 || http://www.volunteersolutions.org/ ||&lt;br /&gt;
|-&lt;br /&gt;
| jongriffin.com || AOLserver/4.0.5 || http://www.jongriffin.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Rate Your Music || AOLserver/4.0.10 || http://rateyourmusic.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Salsa Blanca || AOLserver/4.0.5 || http://www.salsablanca.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Kurup.org || AOLserver/4.0.10 || http://kurup.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Seven Sisters Trading || AOLserver/4.0.3 || http://www.7-sisters.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| AIESEC.net || AOLserver/4.0 || http://www.aiesec.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| Don Baccus Photography || AOLserver/4.0 || http://donb.photo.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| M³ Beratungsgesellschaft || AOLserver/4.0 || http://www.m3-beratung.de/ ||&lt;br /&gt;
|-&lt;br /&gt;
| photo.net || AOLserver/4.0 || http://www.photo.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| Treffpunkt || AOLserver/4.0.10 || http://www.treffpunktsystems.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Uptime || Aolserver/4.0.10 || http://uptime.openacs.org||&lt;br /&gt;
|-&lt;br /&gt;
| Myturl || Aolserver/4.0.10 || http://myturl.com || tinyurl clone&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.5.x'''&lt;br /&gt;
|-&lt;br /&gt;
| OneWeek || AOLserver/3.5.10 || http://oneweek.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Vitamist Spray Vitamins || AOLserver/3.5.6 || http://www.vitamist.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Anchor Baptist Church || AOLserver/3.5.0 || http://www.anchorbaptist.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Blue Ridge Amateur Radio Club || NaviServer/2.0 AOLserver/3.5.0 || http://www.radioclub.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Irish Tribute || AOLserver/3.5.0 || http://www.irishtribute.com/ || IrishAbroad's tribute site for the WTC dead and missing&lt;br /&gt;
|-&lt;br /&gt;
| online.ie || AOLserver/3.5.0 || http://www.online.ie/ || Irish news portal&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.4.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Polska.pl || AOLserver/3.4z4l || http://www.polska.pl/ || &lt;br /&gt;
|-&lt;br /&gt;
| AMTDA || AOLserver/3.4.2 || http://www.amtda.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Away.com || AOLserver 3.4.2 || http://www.away.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Onet.pl || AOLserver/3.4.2 || http://www.onet.pl/ || &lt;br /&gt;
|-&lt;br /&gt;
| Techspex || AOLserver/3.4.2 || http://www.techspex.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| University of Hawaii Athletics || AOLserver/3.4.2 || http://uhathletics.hawaii.edu/ || &lt;br /&gt;
|-&lt;br /&gt;
| Vivtek || AOLserver/3.4.2 || http://www.vivtek.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| unresponsive.net || AOLserver/3.4 || http://www.unresponsive.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| DolphinGames || AOLserver/3.4.2 || http://www.dolphingames.cz/ || &amp;quot;Server:&amp;quot; header renamed to DolphinGames/1.0.0; online wap and sms games; internal run also 4.0.x aol servers&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.3.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Akoor || AOLserver/3.3.1+ad13 || http://www.akoor.com/ || a cultural french quiz site&lt;br /&gt;
|-&lt;br /&gt;
| Bitzi || AOLserver/3.3.1+ad13 || http://bitzi.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Caltech || AOLserver/3.3.1+ad13 || http://www.caltech.edu/ || &lt;br /&gt;
|-&lt;br /&gt;
| Greatest Networker dot.Community || AOLserver/3.3.1+ad13 || http://www.greatestnetworker.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Infogettable.net Backgammon || AOLserver/3.3.1+ad13 || http://backgammon.infogettable.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| thedesignexperience || AOLserver/3.3.1+ad13 || http://www.thedesignexperience.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| ]project-open[  || AOLserver/3.3.1+ad13 || http://projop.dnsalias.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| ]project-consulting[ Demoserver || AOLserver/3.3.1+ad13 || http://pcdemo.dnsalias.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| ]project-translation[ Demoserver || AOLserver/3.3.1+ad13 || http://ptdemo.dnsalias.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.2.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Investsberbank || AOLserver/3.2 || http://www.isb.ru/ || Joint-Stock Bank &amp;quot;Investsberbank&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| MyWorkoutProgram || AOLserver/3.2+ad12 || http://www.myworkoutprogram.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 2.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Asimba Trainer Pro || NaviServer/2.0 AOLserver/2.3.3 || http://www.asimbatrainerpro.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Fitrex.com || NaviServer/2.0 AOLserver/2.3.3 || http://www.fitrex.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| WGCR Radio || NaviServer/2.0 AOLserver/2.3.3 || http://www.wgcr.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| British Cattle Movement Service || NaviServer/2.0 AOLserver/2.3.3 || http://www.bcms.gov.uk/ || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also, every website on this list is should be using AOLserver as well: http://openacs.org/community/sites/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''&lt;br /&gt;
&lt;br /&gt;
'''Why MUST?''' Some people turn that off as part of their security principles. A known bug in Version 4.x would allow an attacker do simply grep through the following list. Could we please take that into consideration? How many sites would, e.g., introduce .adp pages just to get it on this _huge_ (irony) list?&lt;br /&gt;
&lt;br /&gt;
''If anyone takes &amp;quot;security through obscurity&amp;quot; seriously enough to obfuscate the Server: header that's returned, then they also shouldn't want to be included on this list for the same reasons, so that people don't know they run AOLserver.  Everyone else is free to advertise their sites here to try and ensure they get picked up by web server surveys like Netcraft, et. al.''&lt;br /&gt;
&lt;br /&gt;
Ok, good point. You're perfectly right. Maybe I was just annoyed by being deleted from the list without explanation about the reason (which was added later). But why reject sites that don't expose the Server header for whatever reason? It is very easy to test that a site is running AOLserver (as easy as testing if a bug exists, of course). Why should we insist on detailed versioning?&lt;br /&gt;
&lt;br /&gt;
''It makes maintaining the list easier.  It'd be annoying for folks to add sites to this list and claim they run AOLserver, and then three months later the site switches to Apache.  Who has the time to go poking and prodding to do server detection?  It's easy to automate a script that asks &amp;quot;do I get a Server: AOLserver/xxx in the HTTP response?&amp;quot; and have it automatically keep the list fresh, which is what I currently have and run periodically.  If folks running Apache/IIS want to falsely report AOLserver, that's annoying because the list will be inaccurate, but at least AOLserver will get the credit for the sites.  :-)''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Sites that claim to run AOLserver 3.x, because the person who entered it into this Wiki assured it at that point in time. It may happen that the site runs Apache when you visit it and that may result in immediate pain, suffering or death. You have been warned!'''&lt;br /&gt;
* removed&lt;br /&gt;
&lt;br /&gt;
''The links on the pages look awfully Vignette CURL-like.  Is this site really running AOLserver?  How can you prove it?''&lt;br /&gt;
&lt;br /&gt;
How does a label in the header prove it? But we had this already. I started this rubric ''Sites that claim to run...'' to go around it. But I have absolutely no problem to remove all my sites (including the ones who have the header) from this wiki page in order to satisfy this principle.&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Modules</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Modules"/>
				<updated>2010-09-21T18:58:00Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Undo revision 5721 by 3qdesigns123 (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''See also: [[Toolkits]] and [[Languages]]''&lt;br /&gt;
&lt;br /&gt;
''[[Jamie Rasmussen]] maintains a list of AOLserver modules tested against Windows[http://empoweringminds.spd.dcu.ie/openacs/aolserver_modules].  (Not recently updated - JR)''&lt;br /&gt;
&lt;br /&gt;
== Standard Modules ==&lt;br /&gt;
&lt;br /&gt;
AOLserver ships with the following modules:&lt;br /&gt;
&lt;br /&gt;
* [[nscgi]] -- Standard CGI support for running external C programs, perl scripts etc.&lt;br /&gt;
* [[nscp]] -- Admin/debug support via a telnet like interface into a running server.&lt;br /&gt;
* [[nsdb]] -- The database interface, loads database specific drivers (below).&lt;br /&gt;
* [[nsext]] -- Communicates with external database drivers via proxy daemon.&lt;br /&gt;
* [[nslog]] -- Common log format or extended common log format access logging.&lt;br /&gt;
* [[nsperm]] -- Access control lists for groups/users, supports basic auth.&lt;br /&gt;
* [[nsproxy]] -- Execute Tcl scripts in an external process &lt;br /&gt;
* [[nssock]] -- Standard [[socket driver]], used for HTTP requests.&lt;br /&gt;
* [[nsssl]] -- SSL [[socket driver]], links against proprietary RSA BSAFE library (not supplied).&lt;br /&gt;
&lt;br /&gt;
== Database Drivers ==&lt;br /&gt;
&lt;br /&gt;
AOLserver database drivers are either internal or external.  Internal drivers are shared libraries that are loaded in-process with the webserver -- they provide the best performance.  External drivers are shared libraries which are loaded by the AOLserver database proxy daemon [[nsext]], which communicates with the webserver process via sockets.  The advantage of running the database driver external to the webserver is that it isolates buggy, non-threadsafe database access libraries.  These days however this is largely unneccessary, and the external drivers are usually slower due to context switching overhead.&lt;br /&gt;
&lt;br /&gt;
* [[nsfb]] -- Internal '''Firebird|Interbase''' driver.&lt;br /&gt;
* [[dqd_db2]] -- Internal '''IBM DB2''' driver (unmaintained).&lt;br /&gt;
* [[nsberkeleydb]] -- Internal '''BerkeleyDB''' driver.&lt;br /&gt;
* [[nsfreetds]] -- Internal MS '''SQL Server'''/'''Sybase''' driver.&lt;br /&gt;
* [[nsinformix]] -- Internal '''Informix''' driver.&lt;br /&gt;
* [[nsingres]] -- Internal '''Ingres r3''' driver.&lt;br /&gt;
* [[nsibasepd]] -- External '''Interbase''' driver.&lt;br /&gt;
* [[nsmysql]] -- Internal '''MySQL''' driver.&lt;br /&gt;
* [[nsodbc]] -- Internal '''ODBC''' driver.&lt;br /&gt;
* [[nsoracle]] -- Internal '''Oracle''' driver.&lt;br /&gt;
* [[nspostgres]] -- Internal '''PostgreSQL''' driver.&lt;br /&gt;
* [[nssolid]] -- Internal '''Solid''' driver.&lt;br /&gt;
* [[nssqlite2]] -- Internal '''SQLite v2''' driver.&lt;br /&gt;
* [[nssqlite3]] -- Internal '''SQLite v3''' driver.&lt;br /&gt;
* [[nsunixodbc]] -- Internal ODBC driver which uses the '''unixODBC''' driver.&lt;br /&gt;
&lt;br /&gt;
== Encryption / Security ==&lt;br /&gt;
&lt;br /&gt;
* [[nsblowfish]] -- Encrypt Tcl strings with Blowfish cypher and hex encode.&lt;br /&gt;
* [[nsencrypt]] -- Uses OpenSSL to encrypt using the AES, Blowfish, Cast5, IDEA and DES cyphers.&lt;br /&gt;
* [[nsnss]] -- New SSL [[socket driver]], links against Netscape's portable runtime (NSPR) and security services (NSS) libraries.&lt;br /&gt;
* [[nsopenssl]] -- SSL [[socket driver]] links against OpenSSL, and also provides client connection capabilities.&lt;br /&gt;
* [[nspasswd]] -- CRYPT, MD5, SMD5, SHA and SSHA hashing algorithms.&lt;br /&gt;
* [[nssha1]] -- AOLserver module to perform SHA1 hashes.&lt;br /&gt;
* [[nspam]] -- Interface to Pluggable Authentication Modules (PAM).&lt;br /&gt;
* [[nsdigest]] -- Access control lists for groups/users (like [[nsperm]]), supports digest authentication.&lt;br /&gt;
* [[nsmhash]] -- Implementation of mhash library interface to hash, hmac and keygen algorithms (MD5,SHA1, ...). Available shared with nsv_*.&lt;br /&gt;
* [[nsmcrypt]] -- Implementation of mcrypt library interface to crypt,decrypt algorithms (blowfish, des, ...). Available shared with nsv_*.&lt;br /&gt;
&lt;br /&gt;
== Virtual Hosting ==&lt;br /&gt;
&lt;br /&gt;
AOLserver 2.x and 4.x have built-in support for software or name-based [[virtual hosting]], but AOLserver 3.x does not.  Hardware virtual hosting (each server on its own port or IP) is supported across all three versions.&lt;br /&gt;
&lt;br /&gt;
* [[nsvhr]] -- Redirecting proxy, passes virtualy hosted requests back to standalone server.&lt;br /&gt;
* [[nsunix]] -- [[socket driver]] for unix domain sockets, complements '''nsvhr'''.&lt;br /&gt;
* Patches to nsvhr and nsunix by [[Jerry Asher]] [http://web.hollyjerry.org:16080/]&lt;br /&gt;
* [[nssmartvh]] -- C and Tcl based smart virtual hosting module, by [[Zoro]]&lt;br /&gt;
* [[vat]] -- Tcl based Vhost Abstract Template Module, by [[Tom Jackson]]&lt;br /&gt;
* C-based virtual hosting module [http://deadlock.et.tudelft.nl/~daniel/vhost.html]&lt;br /&gt;
* [[nsvirthost]]&lt;br /&gt;
&lt;br /&gt;
== Charting ==&lt;br /&gt;
&lt;br /&gt;
* [[nsgdchart]] -- Generate png/jpg charts using open source gd library.&lt;br /&gt;
* [[nschartdir]] -- Generate charts using proprietary ChartDirector library.&lt;br /&gt;
* [[nsgd]] -- Generate png,jpg,wbmp,gif,... images using open source gd library.&lt;br /&gt;
* [[nsgraph]] -- &lt;br /&gt;
* i-no graphing module using gd library (defunct: [http://www.i-no.com/art/inochart.html])&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
&lt;br /&gt;
* [[tDOM]] -- a Tcl extension which provides XML/XSLT functionality.&lt;br /&gt;
* [[nsxml]] -- &lt;br /&gt;
* [[nsexpat]] -- Interface to Expat&lt;br /&gt;
&lt;br /&gt;
== Web Services ==&lt;br /&gt;
&lt;br /&gt;
* [[nssoap]] -- ''unfinnished, unsupported''&lt;br /&gt;
* [[nsxmlrpc]] -- XML-RPC server and client API [http://openacs.org/sdm/one-package.tcl?package_id=12]&lt;br /&gt;
&lt;br /&gt;
== WebDAV ==&lt;br /&gt;
&lt;br /&gt;
* [[nsdav]] -- Port of Apache's WebDAV [http://www.webdav.org/mod_dav/] support for AOLserver.&lt;br /&gt;
* [[nswebdav]] -- &lt;br /&gt;
* [[tDAV]] -- A WebDAV server module that uses [[tDOM]].&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
* [[dqd_log]] -- Makes AOLserver log to a file descriptor.&lt;br /&gt;
* [[dqd_threadpool]] -- Job scheduling system with Tcl interface.&lt;br /&gt;
* [[dqd_utils]] -- collection of half a dozen small utility procs.&lt;br /&gt;
* [[nsadmin]] -- Database admin/log viewing features from v2 ported to v3.&lt;br /&gt;
* [[nsaspell]] -- Aspell Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsbinarysupport]] -- Write 8bit strings to connection without translation.&lt;br /&gt;
* [[nscache]] -- Tcl interface to AOLserver's caching API ([[ns_cache]] is builtin in AOLserver 4.5.1 or newer)&lt;br /&gt;
* [[nsclamav]] -- ClamAV Anti-Virus Interface Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsdci]] -- AOL's Digital City extensions (distributed cache, among other goodies) (http://code.google.com/p/nsdci/)&lt;br /&gt;
* [[nsdns]] -- DNS Server/Proxy Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsdqe]] -- Collection of utilities including caching, page counter, virtual hosting etc.&lt;br /&gt;
* [[nsexample]] -- An example module to help guide new module writers.&lt;br /&gt;
* [[nsfortune]] - Fortune like game module, uses real fortune files&lt;br /&gt;
* [[nsftp]] -- FTP server front end for AOLserver.&lt;br /&gt;
* [[nsfts]] -- Interface to Postgres full text search engine.&lt;br /&gt;
* [[nsimage]] -- returns sizes of various modules, implements [[ns_image]] &amp;amp; [[ns_pngsize]], replaces  [[ns_jpegsize]] &amp;amp; [[ns_gifsize]]&lt;br /&gt;
* [[nsimap]] -- IMAP Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsjabber]] --&lt;br /&gt;
* [[nsjk2]] -- Jakarta connector&lt;br /&gt;
* [[nsldap]] -- LDAP client&lt;br /&gt;
* [[nsmaverix]] -- SMTP Proxy with anti-spam/anti-virus/whitelist/greylist/blacklist capabilities and Web interface [http://www.crystalballinc.com/vlad/software/maverix/]&lt;br /&gt;
* [[nsmsg]] - IPC message module for AOLserver&lt;br /&gt;
* [[ns_pkg]] -- Dynamic Tcl package loading.&lt;br /&gt;
* [[nspool]] -- Pools of sockets, pipes and external processes.&lt;br /&gt;
* [[nsprofile]] -- Time execution of Tcl commands.&lt;br /&gt;
* [[nsreturnz]] -- Gzip content encoding for dynamic requests.&lt;br /&gt;
* [[nsrewrite]] -- &lt;br /&gt;
* [[nsroaming]] -- Netscape Navigator 4 Roaming Profiles.&lt;br /&gt;
* [[nssavi]] -- SOPHOS Anti-Virus Interface Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nssession]] -- Session Management&lt;br /&gt;
* [[nssession (C module)]] -- Sessions implemented as a C module&lt;br /&gt;
* [[nssnmp]] -- SNMP Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nssys]] - Unix system calls, including chmod, ioctl, fsstat, syslog, signal&lt;br /&gt;
* [[nstelemetry]] -- &lt;br /&gt;
* [[nsthreadpool]] -- &lt;br /&gt;
* [[nsuuid]] -- UUID generator module&lt;br /&gt;
* [[nszlib]] -- Zlib Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsperl]] -- Embedded Perl module (not production ready) [http://jam.sessionsnet.org/files/file?file_id=5477]&lt;br /&gt;
&lt;br /&gt;
== Additional Software ==&lt;br /&gt;
&lt;br /&gt;
* [[jk-voting]] -- Example DB based Voting Booth&lt;br /&gt;
* [http://bas.scheffers.net/aolserver/ Cache Tools], by [[Bas Scheffers]] -- I haven't worked with this or tested it in years, would like to hear from users!&lt;br /&gt;
* Tcl AutoLoader for AOLServer by Hal Heisler [http://www.heisler.net/hal]&lt;br /&gt;
* AOLserver 3.x Remote Administration Modules [http://www.scriptkitties.com/]&lt;br /&gt;
* HTTP Cookie Library [http://www.scriptkitties.com/]&lt;br /&gt;
* Simple-Templating System [http://www.oakroad.net/simple-templates/]&lt;br /&gt;
* [[nstest]]&lt;br /&gt;
* [[William Webb]] has a list of some unmaintained AOLserver software he created which may still be useful to you.&lt;br /&gt;
* AM.net[http://aolserver.am.net] maintains a page of AOLserver resources which includes an [[ADP]] pareser module and a module which fetches web pages.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Modules]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Modules</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Modules"/>
				<updated>2010-09-21T18:55:33Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edits by Poersz (Talk) to last revision by 3qdesigns123&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''See also: [[Toolkits]] and [[Languages]]''&lt;br /&gt;
&lt;br /&gt;
''[[Jamie Rasmussen]] maintains a list of AOLserver modules tested against Windows[http://empoweringminds.spd.dcu.ie/openacs/aolserver_modules].  (Not recently updated - JR)''&lt;br /&gt;
&lt;br /&gt;
== Standard Modules ==&lt;br /&gt;
&lt;br /&gt;
AOLserver ships with the following modules:&lt;br /&gt;
&lt;br /&gt;
* [[nscgi]] -- Standard CGI support for running external C programs, perl scripts etc.&lt;br /&gt;
* [[nscp]] -- Admin/debug support via a telnet like interface into a running server.&lt;br /&gt;
* [[nsdb]] -- The database interface, loads database specific drivers (below).&lt;br /&gt;
* [[nsext]] -- Communicates with external database drivers via proxy daemon.&lt;br /&gt;
* [[nslog]] -- Common log format or extended common log format access logging.&lt;br /&gt;
* [[nsperm]] -- Access control lists for groups/users, supports basic auth.&lt;br /&gt;
* [[nsproxy]] -- Execute Tcl scripts in an external process &lt;br /&gt;
* [[nssock]] -- Standard [[socket driver]], used for HTTP requests.&lt;br /&gt;
* [[nsssl]] -- SSL [[socket driver]], links against proprietary RSA BSAFE library (not supplied).&lt;br /&gt;
&lt;br /&gt;
== Database Drivers ==&lt;br /&gt;
&lt;br /&gt;
AOLserver database drivers are either internal or external.  Internal drivers are shared libraries that are loaded in-process with the webserver -- they provide the best performance.  External drivers are shared libraries which are loaded by the AOLserver database proxy daemon [[nsext]], which communicates with the webserver process via sockets.  The advantage of running the database driver external to the webserver is that it isolates buggy, non-threadsafe database access libraries.  These days however this is largely unneccessary, and the external drivers are usually slower due to context switching overhead.&lt;br /&gt;
&lt;br /&gt;
* [[nsfb]] -- Internal '''Firebird|Interbase''' driver.&lt;br /&gt;
* [[dqd_db2]] -- Internal '''IBM DB2''' driver (unmaintained).&lt;br /&gt;
* [[nsberkeleydb]] -- Internal '''BerkeleyDB''' driver.&lt;br /&gt;
* [[nsfreetds]] -- Internal MS '''SQL Server'''/'''Sybase''' driver.&lt;br /&gt;
* [[nsinformix]] -- Internal '''Informix''' driver.&lt;br /&gt;
* [[nsingres]] -- Internal '''Ingres r3''' driver.&lt;br /&gt;
* [[nsibasepd]] -- External '''Interbase''' driver.&lt;br /&gt;
* [[nsmysql]] -- Internal '''MySQL''' driver.&lt;br /&gt;
* [[nsodbc]] -- Internal '''ODBC''' driver.&lt;br /&gt;
* [[nsoracle]] -- Internal '''Oracle''' driver.&lt;br /&gt;
* [[nspostgres]] -- Internal '''PostgreSQL''' driver.&lt;br /&gt;
* [[nssolid]] -- Internal '''Solid''' driver.&lt;br /&gt;
* [[nssqlite2]] -- Internal '''SQLite v2''' driver.&lt;br /&gt;
* [[nssqlite3]] -- Internal '''SQLite v3''' driver.&lt;br /&gt;
* [[nsunixodbc]] -- Internal ODBC driver which uses the '''unixODBC''' driver.&lt;br /&gt;
&lt;br /&gt;
== Encryption / Security ==&lt;br /&gt;
&lt;br /&gt;
* [[nsblowfish]] -- Encrypt Tcl strings with Blowfish cypher and hex encode.&lt;br /&gt;
* [[nsencrypt]] -- Uses OpenSSL to encrypt using the AES, Blowfish, Cast5, IDEA and DES cyphers.&lt;br /&gt;
* [[nsnss]] -- New SSL [[socket driver]], links against Netscape's portable runtime (NSPR) and security services (NSS) libraries.&lt;br /&gt;
* [[nsopenssl]] -- SSL [[socket driver]] links against OpenSSL, and also provides client connection capabilities.&lt;br /&gt;
* [[nspasswd]] -- CRYPT, MD5, SMD5, SHA and SSHA hashing algorithms.&lt;br /&gt;
* [[nssha1]] -- AOLserver module to perform SHA1 hashes.&lt;br /&gt;
* [[nspam]] -- Interface to Pluggable Authentication Modules (PAM).&lt;br /&gt;
* [[nsdigest]] -- Access control lists for groups/users (like [[nsperm]]), supports digest authentication.&lt;br /&gt;
* [[nsmhash]] -- Implementation of mhash library interface to hash, hmac and keygen algorithms (MD5,SHA1, ...). Available shared with nsv_*.&lt;br /&gt;
* [[nsmcrypt]] -- Implementation of mcrypt library interface to crypt,decrypt algorithms (blowfish, des, ...). Available shared with nsv_*.&lt;br /&gt;
&lt;br /&gt;
== Virtual Hosting ==&lt;br /&gt;
&lt;br /&gt;
AOLserver 2.x and 4.x have built-in support for software or name-based [[virtual hosting]], but AOLserver 3.x does not.  Hardware virtual hosting (each server on its own port or IP) is supported across all three versions.&lt;br /&gt;
&lt;br /&gt;
* [[nsvhr]] -- Redirecting proxy, passes virtualy hosted requests back to standalone server.&lt;br /&gt;
* [[nsunix]] -- [[socket driver]] for unix domain sockets, complements '''nsvhr'''.&lt;br /&gt;
* Patches to nsvhr and nsunix by [[Jerry Asher]] [http://web.hollyjerry.org:16080/]&lt;br /&gt;
* [[nssmartvh]] -- C and Tcl based smart virtual hosting module, by [[Zoro]]&lt;br /&gt;
* [[vat]] -- Tcl based Vhost Abstract Template Module, by [[Tom Jackson]]&lt;br /&gt;
* C-based virtual hosting module [http://deadlock.et.tudelft.nl/~daniel/vhost.html]&lt;br /&gt;
* [[nsvirthost]]&lt;br /&gt;
&lt;br /&gt;
== Charting ==&lt;br /&gt;
&lt;br /&gt;
* [[nsgdchart]] -- Generate png/jpg charts using open source gd library.&lt;br /&gt;
* [[nschartdir]] -- Generate charts using proprietary ChartDirector library.&lt;br /&gt;
* [[nsgd]] -- Generate png,jpg,wbmp,gif,... images using open source gd library.&lt;br /&gt;
* [[nsgraph]] -- &lt;br /&gt;
* i-no graphing module using gd library (defunct: [http://www.i-no.com/art/inochart.html])&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;br /&gt;
&lt;br /&gt;
* [[tDOM]] -- a Tcl extension which provides XML/XSLT functionality.&lt;br /&gt;
* [[nsxml]] -- &lt;br /&gt;
* [[nsexpat]] -- Interface to Expat&lt;br /&gt;
&lt;br /&gt;
== Web Services ==&lt;br /&gt;
&lt;br /&gt;
* [[nssoap]] -- ''unfinnished, unsupported''&lt;br /&gt;
* [[nsxmlrpc]] -- XML-RPC server and client API [http://openacs.org/sdm/one-package.tcl?package_id=12]&lt;br /&gt;
&lt;br /&gt;
== WebDAV ==&lt;br /&gt;
&lt;br /&gt;
* [[nsdav]] -- Port of Apache's WebDAV [http://www.webdav.org/mod_dav/] support for AOLserver.&lt;br /&gt;
* [[nswebdav]] -- &lt;br /&gt;
* [[tDAV]] -- A WebDAV server module that uses [[tDOM]].&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
* [[dqd_log]] -- Makes AOLserver log to a file descriptor.&lt;br /&gt;
* [[dqd_threadpool]] -- Job scheduling system with Tcl interface.&lt;br /&gt;
* [[dqd_utils]] -- collection of half a dozen small utility procs.&lt;br /&gt;
* [[nsadmin]] -- Database admin/log viewing features from v2 ported to v3.&lt;br /&gt;
* [[nsaspell]] -- Aspell Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsbinarysupport]] -- Write 8bit strings to connection without translation.&lt;br /&gt;
* [[nscache]] -- Tcl interface to AOLserver's caching API ([[ns_cache]] is builtin in AOLserver 4.5.1 or newer)&lt;br /&gt;
* [[nsclamav]] -- ClamAV Anti-Virus Interface Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsdci]] -- AOL's Digital City extensions (distributed cache, among other goodies) (http://code.google.com/p/nsdci/)&lt;br /&gt;
* [[nsdns]] -- DNS Server/Proxy Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsdqe]] -- Collection of utilities including caching, page counter, virtual hosting etc.&lt;br /&gt;
* [[nsexample]] -- An example module to help guide new module writers.&lt;br /&gt;
* [[nsfortune]] - Fortune like game module, uses real fortune files&lt;br /&gt;
* [[nsftp]] -- FTP server front end for AOLserver.&lt;br /&gt;
* [[nsfts]] -- Interface to Postgres full text search engine.&lt;br /&gt;
* [[nsimage]] -- returns sizes of various modules, implements [[ns_image]] &amp;amp; [[ns_pngsize]], replaces  [[ns_jpegsize]] &amp;amp; [[ns_gifsize]]&lt;br /&gt;
* [[nsimap]] -- IMAP Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsjabber]] --&lt;br /&gt;
* [[nsjk2]] -- Jakarta connector&lt;br /&gt;
* [[nsldap]] -- LDAP client&lt;br /&gt;
* [[nsmaverix]] -- SMTP Proxy with anti-spam/anti-virus/whitelist/greylist/blacklist capabilities and Web interface [http://www.crystalballinc.com/vlad/software/maverix/]&lt;br /&gt;
* [[nsmsg]] - IPC message module for AOLserver&lt;br /&gt;
* [[ns_pkg]] -- Dynamic Tcl package loading.&lt;br /&gt;
* [[nspool]] -- Pools of sockets, pipes and external processes.&lt;br /&gt;
* [[nsprofile]] -- Time execution of Tcl commands.&lt;br /&gt;
* [[nsreturnz]] -- Gzip content encoding for dynamic requests.&lt;br /&gt;
* [[nsrewrite]] -- &lt;br /&gt;
* [[nsroaming]] -- Netscape Navigator 4 Roaming Profiles.&lt;br /&gt;
* [[nssavi]] -- SOPHOS Anti-Virus Interface Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nssession]] -- Session Management&lt;br /&gt;
* [[nssession (C module)]] -- Sessions implemented as a C module&lt;br /&gt;
* [[nssnmp]] -- SNMP Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nssys]] - Unix system calls, including chmod, ioctl, fsstat, syslog, signal&lt;br /&gt;
* [[nstelemetry]] -- &lt;br /&gt;
* [[nsthreadpool]] -- &lt;br /&gt;
* [[nsuuid]] -- UUID [http://portablegeneratorsforsale.net/ portable generators] module&lt;br /&gt;
* [[nszlib]] -- Zlib Module [http://www.crystalballinc.com/vlad/software/]&lt;br /&gt;
* [[nsperl]] -- Embedded Perl module (not production ready) [http://jam.sessionsnet.org/files/file?file_id=5477]&lt;br /&gt;
&lt;br /&gt;
== Additional Software ==&lt;br /&gt;
&lt;br /&gt;
* [[jk-voting]] -- Example DB based Voting Booth&lt;br /&gt;
* [http://bas.scheffers.net/aolserver/ Cache Tools], by [[Bas Scheffers]] -- I haven't worked with this or tested it in years, would like to hear from users!&lt;br /&gt;
* Tcl AutoLoader for AOLServer by Hal Heisler [http://www.heisler.net/hal]&lt;br /&gt;
* AOLserver 3.x Remote Administration Modules [http://www.scriptkitties.com/]&lt;br /&gt;
* HTTP Cookie Library [http://www.scriptkitties.com/]&lt;br /&gt;
* Simple-Templating System [http://www.oakroad.net/simple-templates/]&lt;br /&gt;
* [[nstest]]&lt;br /&gt;
* [[William Webb]] has a list of some unmaintained AOLserver software he created which may still be useful to you.&lt;br /&gt;
* AM.net[http://aolserver.am.net] maintains a page of AOLserver resources which includes an [[ADP]] pareser module and a module which fetches web pages.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Modules]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/AOLserver_Wiki</id>
		<title>AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/AOLserver_Wiki"/>
				<updated>2010-09-02T19:50:48Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Protected &amp;quot;AOLserver Wiki&amp;quot; ([edit=sysop] (indefinite) [move=sysop] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.aolserver.com AOLserver] is a high performance web server with a powerful customization API.  The AOLserver Wiki is a comprehensive resource for all things AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
If you're new to [[wiki]]'s, then [[Welcome, New Visitors]]!  Before you start editing, you may want to read over the [[Formatting Rules]].  To find pages grouped by category, [[Special:Categories|start here]].&lt;br /&gt;
&lt;br /&gt;
== Topics of Conversation ==&lt;br /&gt;
&lt;br /&gt;
* [[What is AOLserver]]?&lt;br /&gt;
* What [[Web Applications for AOLserver]] would you like to see? &lt;br /&gt;
* What [[AOLserver Bugs and Problems]] are you experiencing? &lt;br /&gt;
* What features does AOLserver need? Add them to the [[AOLserver Wishlist]]. &lt;br /&gt;
&lt;br /&gt;
* [[What's new in 4.5]] -- New features in version 4.5 of AOLserver.  This is the current major release of AOLserver.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Resources: ==&lt;br /&gt;
&lt;br /&gt;
* [[Downloads]] -- Access to various AOLserver files and resources.&lt;br /&gt;
* [[Modules]] -- Complete list of '''over 70''' AOLserver extension modules and other [[AOLserver Contributed Software]].&lt;br /&gt;
* [[Toolkits]] -- Everything you need to build a complete website, fast.&lt;br /&gt;
* [[Languages]] -- Build websites in a varierty of different programming languages.&lt;br /&gt;
* [[Documentation]] -- Tcl and C API references, tutorials and guides.&lt;br /&gt;
* [[FAQ]] -- Frequently Asked Questions about AOLserver.&lt;br /&gt;
* [[AOLserver Improvement Proposals]]&lt;br /&gt;
* The [[AOLserver Cookbook]] -- A collection of questions, and code examples to answer them.&lt;br /&gt;
* [[AOLserver Packages]] -- Binary distributions of AOLserver in popular package management formats.&lt;br /&gt;
* [[Useful Links]]&lt;br /&gt;
* [http://panoptic.com/wiki/aolserver/Special:Recentchanges?feed=rss RSS 2.0 syndication] of this wiki's recent changes.&lt;br /&gt;
&lt;br /&gt;
== Developers' Guide (A Work In Progress) ==&lt;br /&gt;
&lt;br /&gt;
* [[AOLserver Developer's Guide]] -- A growing, community generated guide on how to develop, deploy and maintain applications using AOLserver including discussions of internals, troubleshooting, debugging, testing and tuning.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Community ==&lt;br /&gt;
&lt;br /&gt;
* The AOLserver project [[Roadmap]], as well as the planned [[Features]] and changes.&lt;br /&gt;
* The [[People]] who work on and contribute to AOLserver, organized into [[Project Teams]].&lt;br /&gt;
* Come join us in our [http://www.aolserver.com/chat/ online chat], or just read the [http://panoptic.com/aolserver/chat/ chat logs].  You can participate on the chat either via IRC (irc.freenode.net:6667 #aolserver) or via AIM.&lt;br /&gt;
* There's also an [http://www.livejournal.com/community/aolserver/ AOLserver LiveJournal community].&lt;br /&gt;
* [[Sites That Run On AOLserver]]&lt;br /&gt;
* The [[OpenACS]] Project.&lt;br /&gt;
* The [[ProjectOpen]] Project (project management based on [[OpenACS]])&lt;br /&gt;
* [[AOLserver User Groups]]&lt;br /&gt;
* [[AOLserver Jobs]]&lt;br /&gt;
&lt;br /&gt;
== AOLserver Core Developers ==&lt;br /&gt;
&lt;br /&gt;
* [[Vision Statement]]&lt;br /&gt;
* [[CVS Commit Guidelines]]&lt;br /&gt;
* [http://www.aolserver.com/docs/devel/tech/standards.html AOLserver Engineering Standards Manual]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/AOLserver_Wiki</id>
		<title>AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/AOLserver_Wiki"/>
				<updated>2010-09-02T19:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Revert a whole bunch of spam edits.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.aolserver.com AOLserver] is a high performance web server with a powerful customization API.  The AOLserver Wiki is a comprehensive resource for all things AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
If you're new to [[wiki]]'s, then [[Welcome, New Visitors]]!  Before you start editing, you may want to read over the [[Formatting Rules]].  To find pages grouped by category, [[Special:Categories|start here]].&lt;br /&gt;
&lt;br /&gt;
== Topics of Conversation ==&lt;br /&gt;
&lt;br /&gt;
* [[What is AOLserver]]?&lt;br /&gt;
* What [[Web Applications for AOLserver]] would you like to see? &lt;br /&gt;
* What [[AOLserver Bugs and Problems]] are you experiencing? &lt;br /&gt;
* What features does AOLserver need? Add them to the [[AOLserver Wishlist]]. &lt;br /&gt;
&lt;br /&gt;
* [[What's new in 4.5]] -- New features in version 4.5 of AOLserver.  This is the current major release of AOLserver.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Resources: ==&lt;br /&gt;
&lt;br /&gt;
* [[Downloads]] -- Access to various AOLserver files and resources.&lt;br /&gt;
* [[Modules]] -- Complete list of '''over 70''' AOLserver extension modules and other [[AOLserver Contributed Software]].&lt;br /&gt;
* [[Toolkits]] -- Everything you need to build a complete website, fast.&lt;br /&gt;
* [[Languages]] -- Build websites in a varierty of different programming languages.&lt;br /&gt;
* [[Documentation]] -- Tcl and C API references, tutorials and guides.&lt;br /&gt;
* [[FAQ]] -- Frequently Asked Questions about AOLserver.&lt;br /&gt;
* [[AOLserver Improvement Proposals]]&lt;br /&gt;
* The [[AOLserver Cookbook]] -- A collection of questions, and code examples to answer them.&lt;br /&gt;
* [[AOLserver Packages]] -- Binary distributions of AOLserver in popular package management formats.&lt;br /&gt;
* [[Useful Links]]&lt;br /&gt;
* [http://panoptic.com/wiki/aolserver/Special:Recentchanges?feed=rss RSS 2.0 syndication] of this wiki's recent changes.&lt;br /&gt;
&lt;br /&gt;
== Developers' Guide (A Work In Progress) ==&lt;br /&gt;
&lt;br /&gt;
* [[AOLserver Developer's Guide]] -- A growing, community generated guide on how to develop, deploy and maintain applications using AOLserver including discussions of internals, troubleshooting, debugging, testing and tuning.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Community ==&lt;br /&gt;
&lt;br /&gt;
* The AOLserver project [[Roadmap]], as well as the planned [[Features]] and changes.&lt;br /&gt;
* The [[People]] who work on and contribute to AOLserver, organized into [[Project Teams]].&lt;br /&gt;
* Come join us in our [http://www.aolserver.com/chat/ online chat], or just read the [http://panoptic.com/aolserver/chat/ chat logs].  You can participate on the chat either via IRC (irc.freenode.net:6667 #aolserver) or via AIM.&lt;br /&gt;
* There's also an [http://www.livejournal.com/community/aolserver/ AOLserver LiveJournal community].&lt;br /&gt;
* [[Sites That Run On AOLserver]]&lt;br /&gt;
* The [[OpenACS]] Project.&lt;br /&gt;
* The [[ProjectOpen]] Project (project management based on [[OpenACS]])&lt;br /&gt;
* [[AOLserver User Groups]]&lt;br /&gt;
* [[AOLserver Jobs]]&lt;br /&gt;
&lt;br /&gt;
== AOLserver Core Developers ==&lt;br /&gt;
&lt;br /&gt;
* [[Vision Statement]]&lt;br /&gt;
* [[CVS Commit Guidelines]]&lt;br /&gt;
* [http://www.aolserver.com/docs/devel/tech/standards.html AOLserver Engineering Standards Manual]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/AOLserver_Wiki</id>
		<title>AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/AOLserver_Wiki"/>
				<updated>2010-09-02T19:49:22Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Revert a whole bunch of spam edits.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.aolserver.com AOLserver] is a high performance web server with a powerful customization API.  The AOLserver Wiki is a comprehensive resource for all things AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
If you're new to [[wiki]]'s, then [[Welcome, New Visitors]]!  Before you start editing, you may want to read over the [[Formatting Rules]].  To find pages grouped by category, [[Special:Categories|start here]].&lt;br /&gt;
&lt;br /&gt;
== Topics of Conversation ==&lt;br /&gt;
&lt;br /&gt;
* [[What is AOLserver]]?&lt;br /&gt;
[http://uk.bestessays.com essays]&lt;br /&gt;
* What [[Web Applications for AOLserver]] would you like to see? &lt;br /&gt;
* What [[AOLserver Bugs and Problems]] are you experiencing? &lt;br /&gt;
[http://www.essaywriter.co.uk/custom-essays.aspx custom essays] | [http://www.florela.co.uk/ Christmas Wreath] | [http://www.best-webhost-review.com web hosting reviews]&lt;br /&gt;
* What features does AOLserver need? Add them to the [[AOLserver Wishlist]]. &lt;br /&gt;
&lt;br /&gt;
* [[What's new in 4.5]] -- New features in version 4.5 of AOLserver.  This is the current major release of AOLserver.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Resources: ==&lt;br /&gt;
&lt;br /&gt;
* [[Downloads]] -- Access to various AOLserver files and resources.&lt;br /&gt;
* [[Modules]] -- Complete list of '''over 70''' AOLserver extension modules and other [[AOLserver Contributed Software]].&lt;br /&gt;
* [[Toolkits]] -- Everything you need to build a complete website, fast.&lt;br /&gt;
* [[Languages]] -- Build websites in a varierty of different programming languages.&lt;br /&gt;
* [[Documentation]] -- Tcl and C API references, tutorials and guides.&lt;br /&gt;
* [[FAQ]] -- Frequently Asked Questions about AOLserver.&lt;br /&gt;
* [[AOLserver Improvement Proposals]]&lt;br /&gt;
* The [[AOLserver Cookbook]] -- A collection of questions, and code examples to answer them.&lt;br /&gt;
* [[AOLserver Packages]] -- Binary distributions of AOLserver in popular package management formats.&lt;br /&gt;
* [[Useful Links]]&lt;br /&gt;
* [http://panoptic.com/wiki/aolserver/Special:Recentchanges?feed=rss RSS 2.0 syndication] of this wiki's recent changes.&lt;br /&gt;
* [http://www.lsbf.org.uk MBA college london]&lt;br /&gt;
&lt;br /&gt;
== Developers' Guide (A Work In Progress) ==&lt;br /&gt;
&lt;br /&gt;
* [[AOLserver Developer's Guide]] -- A growing, community generated guide on how to develop, deploy and maintain applications using AOLserver including discussions of internals, troubleshooting, debugging, testing and tuning.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Community ==&lt;br /&gt;
&lt;br /&gt;
* The AOLserver project [[Roadmap]], as well as the planned [[Features]] and changes.&lt;br /&gt;
* The [[People]] who work on and contribute to AOLserver, organized into [[Project Teams]].&lt;br /&gt;
* Come join us in our [http://www.aolserver.com/chat/ online chat], or just read the [http://panoptic.com/aolserver/chat/ chat logs].  You can participate on the chat either via IRC (irc.freenode.net:6667 #aolserver) or via AIM.&lt;br /&gt;
* There's also an [http://www.livejournal.com/community/aolserver/ AOLserver LiveJournal community].&lt;br /&gt;
* [[Sites That Run On AOLserver]]&lt;br /&gt;
* The [[OpenACS]] Project.&lt;br /&gt;
* The [[ProjectOpen]] Project (project management based on [[OpenACS]])&lt;br /&gt;
* [[AOLserver User Groups]]&lt;br /&gt;
* [[AOLserver Jobs]]&lt;br /&gt;
&lt;br /&gt;
== AOLserver Core Developers ==&lt;br /&gt;
&lt;br /&gt;
* [[Vision Statement]]&lt;br /&gt;
* [[CVS Commit Guidelines]]&lt;br /&gt;
* [http://www.aolserver.com/docs/devel/tech/standards.html AOLserver Engineering Standards Manual]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_schedule_proc</id>
		<title>Ns schedule proc</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_schedule_proc"/>
				<updated>2010-04-10T05:23:51Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: remove spam link that snuck by&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_schedule_proc.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_schedule_proc - Schedule a script to run after a certain number of seconds&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_schedule_proc''' ''?-once? ?-thread? interval script''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command schedules a script to be run after a certain number of seconds.  Returns the ID of the newly scheduled script.  If ''-once'' is specified, then the script is run once and then unscheduled, otherwise it will continue to run every ''interval'' seconds.  If ''-thread'' is specified, then the script will be run in its own thread, otherwise it will run in the scheduler's thread.  If the script is long-running, this may interfere with the running of other scheduled scripts, so long-running scripts should be run in their own threads.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % set id [[ns_schedule_proc -once 60 { ns_log notice &amp;quot;this should run in 60 seconds&amp;quot; }]]&lt;br /&gt;
    123&lt;br /&gt;
&lt;br /&gt;
    % ns_unschedule_proc $id&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_after]], [[ns_info]] scheduled, [[ns_pause]], [[ns_resume]], [[ns_schedule_daily]], [[ns_schedule_weekly]], [[ns_unschedule_proc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]] - [[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_schedule_proc</id>
		<title>Ns schedule proc</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_schedule_proc"/>
				<updated>2010-04-10T05:22:34Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edits by StacieLott (Talk) to last revision by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_schedule_proc.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_schedule_proc - Schedule a script to run after a certain number of seconds&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_schedule_proc''' ''?-once? ?-thread? interval script''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command schedules a script to be run after a certain number of seconds.  Returns the ID of the newly scheduled script.  If ''-once'' is specified, then the script is run once and then unscheduled, otherwise it will continue to run every ''interval'' seconds.  If ''-thread'' is specified, then the script will be run in its own thread, otherwise it will run in the scheduler's thread.  If the script is long-running, this may interfere with the running of other scheduled scripts, so long-running scripts should be run in their own threads.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % set id [[ns_schedule_proc -once 60 { ns_log notice &amp;quot;this should run in 60 seconds&amp;quot; }]]&lt;br /&gt;
    123&lt;br /&gt;
&lt;br /&gt;
    % ns_unschedule_proc $id&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_after]], [[ns_info]] scheduled, [[ns_pause]], [http://www.rushessay.com essay], [[ns_resume]], [[ns_schedule_daily]], [[ns_schedule_weekly]], [[ns_unschedule_proc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]] - [[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/User_talk:Josephbui</id>
		<title>User talk:Josephbui</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/User_talk:Josephbui"/>
				<updated>2010-03-15T16:36:34Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Joseph: Thanks for your help cleaning up the wiki vandalism.  Would you like Admin privileges to take care of deletes and blocks? -- [[User:Dossy|Dossy]] 14:30, 15 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Dossy: Sure, thanks! [[User:Josephbui|Josephbui]] 16:25, 15 March 2010 (UTC)&lt;br /&gt;
* OK, done.  Thanks - would love to hear your thoughts on AOLserver and Tcl at some point ... -- [[User:Dossy|Dossy]] 16:36, 15 March 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/User_talk:Josephbui</id>
		<title>User talk:Josephbui</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/User_talk:Josephbui"/>
				<updated>2010-03-15T14:30:51Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Created page with 'Joseph: Thanks for your help cleaning up the wiki vandalism.  Would you like Admin privileges to take care of deletes and blocks? -- ~~~~'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Joseph: Thanks for your help cleaning up the wiki vandalism.  Would you like Admin privileges to take care of deletes and blocks? -- [[User:Dossy|Dossy]] 14:30, 15 March 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_schedule_proc</id>
		<title>Ns schedule proc</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_schedule_proc"/>
				<updated>2010-03-15T14:24:11Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Undo revision 5678 by Patersonmaikl3 (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_schedule_proc.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_schedule_proc - Schedule a script to run after a certain number of seconds&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_schedule_proc''' ''?-once? ?-thread? interval script''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command schedules a script to be run after a certain number of seconds.  Returns the ID of the newly scheduled script.  If ''-once'' is specified, then the script is run once and then unscheduled, otherwise it will continue to run every ''interval'' seconds.  If ''-thread'' is specified, then the script will be run in its own thread, otherwise it will run in the scheduler's thread.  If the script is long-running, this may interfere with the running of other scheduled scripts, so long-running scripts should be run in their own threads.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % set id [[ns_schedule_proc -once 60 { ns_log notice &amp;quot;this should run in 60 seconds&amp;quot; }]]&lt;br /&gt;
    123&lt;br /&gt;
&lt;br /&gt;
    % ns_unschedule_proc $id&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_after]], [[ns_info]] scheduled, [[ns_pause]], [http://www.rushessay.com essay], [[ns_resume]], [[ns_schedule_daily]], [[ns_schedule_weekly]], [[ns_unschedule_proc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]] - [[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_register_proc</id>
		<title>Ns register proc</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_register_proc"/>
				<updated>2010-03-15T14:19:30Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edits by HelenArchibald (Talk) to last revision by Umbrella13&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{manpage|ns_proc}}&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_register_proc - Register a procedure for a method/URL combination&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_register_proc''' ''?-noinherit? method URL myproc ?args?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_register_proc''' registers the procname to handle the specified method/URL combination.  When the server gets a matching request, it calls procname with the connection id and any arguments specified here.&lt;br /&gt;
&lt;br /&gt;
: If ''-noinherit'' is specified, the requested URL must match the specified URL exactly.  For example, if the URL specified with '''ns_register_proc''' is /foo/bar, procname will not be called unless the requested URL is exactly /foo/bar.&lt;br /&gt;
&lt;br /&gt;
: If ''-noinherit'' is not specified, the requested URL can match the specified URL or any URL below it.  For example, if the URL specified with '''ns_register_proc''' is /foo/bar, procname will be called for /foo/bar, /foo/bar/hmm, and any other URL below /foo/bar, provided there is not already another procedure registered for that exact URL or for an URL with a closer match.&lt;br /&gt;
&lt;br /&gt;
: Note that you must use a glob-style matching character if you want inheritance for file names.  For example, if you want /foo/bar to match /foo/bar.html, you must use: &lt;br /&gt;
&lt;br /&gt;
    ns_register_proc /foo/bar*&lt;br /&gt;
&lt;br /&gt;
: You can register two procedures for any given method/URL combination by calling '''ns_register_proc''' once with the ''-noinherit'' flag set and once without it.  Only one of the procedures will be called for any given request, depending on whether the URL was an exact match or not.  For example:&lt;br /&gt;
&lt;br /&gt;
    ns_register_proc -noinherit GET /foo/bar Aproc&lt;br /&gt;
    ns_register_proc GET /foo/bar Bproc&lt;br /&gt;
    ns_register_proc GET /foo/bar/hmm Cproc&lt;br /&gt;
&lt;br /&gt;
: Aproc will be called when the requested URL is exactly /foo/bar.  Bproc will be called when the requested URL is below /foo/bar, provided there is not already another procedure registered to be called for that exact URL or for an URL with a closer match.  Cproc (not Bproc) will be called when the requested URL is equal to or below /foo/bar/hmm.  Syntax for the registered procedure The conn (connection) argument is optional for procedures registered by '''ns_register_proc''' if the procedure has 0 or 1 arguments (not including conn).  The following [http://www.umbrellaonline.com real estate] examples show the variations that can be used in this case:&lt;br /&gt;
&lt;br /&gt;
    ns_register_proc GET /noargs noargs&lt;br /&gt;
    ns_register_proc GET /context context fnord&lt;br /&gt;
    ns_register_proc GET /conncontext conncontext greeblev&lt;br /&gt;
    &lt;br /&gt;
    proc noargs { } {&lt;br /&gt;
        ns_returnnotice 200 &amp;quot;noargs&amp;quot;&lt;br /&gt;
    } ;# noargs&lt;br /&gt;
    &lt;br /&gt;
    proc context { context } {&lt;br /&gt;
        ns_returnnotice 200 &amp;quot;context is $context&amp;quot;&lt;br /&gt;
    } ;# context&lt;br /&gt;
    &lt;br /&gt;
    proc conncontext { conn context } {&lt;br /&gt;
        ns_returnnotice 200 &amp;quot;conncontext is $context&amp;quot;&lt;br /&gt;
    } ;# conncontext&lt;br /&gt;
&lt;br /&gt;
: The ''conn'' (connection) argument is required for procedures registered by '''ns_register_proc''' if the procedure has 2 or more arguments (not including ''conn'').  The ''conn'' argument will be filled automatically with the connection information.  The first argument following ''conn'' will always take the value supplied by '''ns_register_proc''', if there is one, or an empty value.  All other arguments must supply a default value.  The following examples show the variations that can be used in this case:&lt;br /&gt;
&lt;br /&gt;
    ns_register_proc GET /twoargs twoargs fnord&lt;br /&gt;
    ns_register_proc GET /threeargs threeargs fnord fjord&lt;br /&gt;
    &lt;br /&gt;
    proc twoargs { conn context { greeble bork } } {&lt;br /&gt;
        # Do stuff...&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    proc threeargs { conn context {greeble bork } { hoover quark } {&lt;br /&gt;
        # Do stuff...&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
: When a GET of /twoargs is requested, the conn argument will be filled automatically, the context argument will be assigned &amp;quot;fnord&amp;quot; and the greeble argument will be assigned the default value &amp;quot;bork&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: When a GET of /threeargs is requested, the conn argument will be filled automatically, the context argument will be assigned &amp;quot;fnord&amp;quot; and the greeble argument will be assigned &amp;quot;fjord&amp;quot;, and the hoover argument will be assigned the default value &amp;quot;quark&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_unregister_proc]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]] [[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_schedule_proc</id>
		<title>Ns schedule proc</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_schedule_proc"/>
				<updated>2010-03-15T14:17:02Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edits by Umbrella13 (Talk) to last revision by Patersonmaikl3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_schedule_proc.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_schedule_proc - Schedule a script to run after a certain number of seconds&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_schedule_proc''' ''?-once? ?-thread? interval script''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command schedules a script to be run after a certain number of seconds.  Returns the ID of the newly scheduled script.  If ''-once'' is specified, then the script is run once and then unscheduled, otherwise it will continue to run every ''interval'' seconds.  If ''-thread'' is specified, then the script will be run in its own thread, otherwise it will run in the scheduler's thread.  If the script is long-running, this may interfere with the running of other scheduled scripts, so long-running scripts should be run in their own threads.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % set id [[ns_schedule_proc -once 60 { ns_log notice &amp;quot;this should run in 60 seconds&amp;quot; }]]&lt;br /&gt;
    123&lt;br /&gt;
&lt;br /&gt;
    % ns_unschedule_proc $id&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_after]], [[ns_info]] scheduled, [[ns_pause]], [http://www.rushessay.com essay], [http://www.standoutessay.com/essay-writers essay writers], [[ns_resume]], [[ns_schedule_daily]], [[ns_schedule_weekly]], [[ns_unschedule_proc]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]] - [[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/User_talk:Caveman</id>
		<title>User talk:Caveman</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/User_talk:Caveman"/>
				<updated>2009-10-20T20:50:35Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: New section: Sysop and Bureaucrat rights&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== towards a data and authentication layer ==&lt;br /&gt;
&lt;br /&gt;
It is possible that similar exists elsewhere (non-OpenACS) but I enjoy framework construction anyway. Services provided:&lt;br /&gt;
# authentication (password check)&lt;br /&gt;
# sequences&lt;br /&gt;
# data layer&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Authentication/Authorization config (nsz):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# config: &amp;quot;/security/password/expression&amp;quot;&lt;br /&gt;
# {::sha1::hmac [lindex $args 1] [lindex $args 0]}&lt;br /&gt;
# config: &amp;quot;/security/password/query&amp;quot;&lt;br /&gt;
# {select password, salt from users where name=[ns_dbquotevalue [lindex $args 0]]}&lt;br /&gt;
# config: &amp;quot;/security/salt/length&amp;quot; &amp;quot;64&amp;quot;&lt;br /&gt;
# config: &amp;quot;/security/salt/dictionary&amp;quot; &amp;quot;0123456789abcdefghijkl...&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Basically the &amp;quot;expression&amp;quot; is used in a function, '''nsz_password''' to format a given clear-text password (varargs &amp;quot;args&amp;quot; to allow additional arguments to the function). The first argument is always the password.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;query&amp;quot; is executed as part of password-based authentication. The form handler reaches '''nsz_auth &amp;quot;myname&amp;quot; &amp;quot;mypassword&amp;quot;''' and the query is executed using the input list &amp;quot;myname&amp;quot;. All row data beyond the first column, which must always be the password, is appended to the input password &amp;quot;mypassword&amp;quot; to produce the hash/salted/hash input &amp;quot;xpassword&amp;quot;. This input &amp;quot;xpassword&amp;quot; is compared with the result of the returned value for the first column from the database query. If there is a match, password authentication succeeds for the user.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nsz_auth &amp;quot;sam&amp;quot; &amp;quot;correctpassword&amp;quot;&lt;br /&gt;
# Query returns &amp;quot;sadf8vcx8vxasd7f7...&amp;quot;,&amp;quot;asduf7z6dfa...&amp;quot;&lt;br /&gt;
# Expression eval for input passes &amp;quot;correctpassword&amp;quot;,&amp;quot;asduf7z6dfa...&amp;quot; and returns &amp;quot;sadf8vcx8vxasd7f7...&amp;quot;&lt;br /&gt;
# Return value matches query&lt;br /&gt;
# nsz_auth returns &amp;quot;sam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
nsz_auth &amp;quot;sam&amp;quot; &amp;quot;badpassword&amp;quot;&lt;br /&gt;
# Query returns &amp;quot;sadf8vcx8vxasd7f7...&amp;quot;,&amp;quot;asduf7z6dfa...&amp;quot;&lt;br /&gt;
# Expression eval for input passes &amp;quot;badpassword&amp;quot;,&amp;quot;asduf7z6dfa...&amp;quot; and returns &amp;quot;yyzkfosd232cx7c...&amp;quot;&lt;br /&gt;
# Return value does not match query&lt;br /&gt;
# nsz_auth raises error &amp;quot;bad password&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Different configurations could use simple clear-text passwords, no salt, etc, simply by changing their configuration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# config: &amp;quot;nsz/security/password/expression&amp;quot;&lt;br /&gt;
# {lindex $args 0}&lt;br /&gt;
# config: &amp;quot;nsz/security/password/query&amp;quot;&lt;br /&gt;
# {select password from users where name=[ns_dbquotevalue [lindex $args 0]]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above would be the default configuration. For salt, the default would be size of 8 and dictionary of alphanumerics.&lt;br /&gt;
&lt;br /&gt;
Function '''nsz_salt''' can take 0, 1, or 2 arguments and returns the generated salt. The first argument is the length of the salt, defaults to config value. The second argument is the dictionary for the salt, default to config value.&lt;br /&gt;
&lt;br /&gt;
'''Question:''' How to make &amp;quot;users&amp;quot; table configurable? What about configuring which database pool to use? What about multiple authentication realms?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Sequences configuration should be as simple as specifying the database pool to use (default by default), the name of the sequence table, the size of the sequence chunk to claim when the local cache runs out of sequence numbers, and the number of retries before error during chunk claim. It could however be more complex, to specify the column names for the &amp;quot;name&amp;quot; and &amp;quot;value&amp;quot; of the sequence.&lt;br /&gt;
&lt;br /&gt;
Config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# config: &amp;quot;nso/sequence/default/poolname&amp;quot; (default by default)&lt;br /&gt;
# config: &amp;quot;nso/sequence/default/size&amp;quot; &amp;quot;100&amp;quot;&lt;br /&gt;
# config: &amp;quot;nso/sequence/default/retry&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
# config: &amp;quot;nso/sequence/default/table&amp;quot; &amp;quot;sequences_table&amp;quot;&lt;br /&gt;
# config: &amp;quot;nso/sequence/default/name&amp;quot; &amp;quot;name_field&amp;quot;&lt;br /&gt;
# config: &amp;quot;nso/sequence/default/value&amp;quot; &amp;quot;value_field&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sequence defaults could be over-written per-sequence in similar fashion.&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set nextId [nso_sequence next &amp;quot;my_seq_name&amp;quot;]&lt;br /&gt;
# returns 53 or error if fail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The function '''nso_sequence''' would thread-safe return the next sequence number it had available in its local nsv data, or if not available, claim the next chunk of 100 sequences numbers from the database:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# select value_field from sequences_table where name_field='my_seq_name'&lt;br /&gt;
# result is 125, attempt to claim 100 values&lt;br /&gt;
# update cave_sequences set value=225 where name_field='my_seq_name' and value_field=125&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be retried up to ''5'' times.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Data layer notes:&lt;br /&gt;
&lt;br /&gt;
Config would map names like &amp;quot;users&amp;quot; to database pools and table names. Default would be default database pool and identity table name.&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set nssValues [ns_set create]&lt;br /&gt;
# ns_set update $nssValues &amp;quot;name&amp;quot; &amp;quot;sam&amp;quot;&lt;br /&gt;
# ns_set update $nssValues &amp;quot;password&amp;quot; &amp;quot;mypassword&amp;quot;&lt;br /&gt;
# ns_set put $nssValues &amp;quot;mail&amp;quot; &amp;quot;sam@caveman.org&amp;quot;&lt;br /&gt;
# set nssUserKey [nso_row create &amp;quot;users&amp;quot; $nssValues]&lt;br /&gt;
# set nssNewValues [ns_set create]&lt;br /&gt;
# ns_set put $nssNewValues &amp;quot;mail&amp;quot; &amp;quot;samuelmb@gmail.com&amp;quot;&lt;br /&gt;
# nso_row update &amp;quot;users&amp;quot; $nssUserKey $nssNewValues&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using ns_set instead of a model type-checking &amp;quot;nso_set&amp;quot; at least for now for simplicity and it would be the simple case.&lt;br /&gt;
&lt;br /&gt;
Additional config allows for data transforms:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# multi stage of filters and expressions:&lt;br /&gt;
#&lt;br /&gt;
# stage 0: accept-data-filter&lt;br /&gt;
#   e.g. &amp;quot;require a password is not null&amp;quot;&lt;br /&gt;
#   e.g. &amp;quot;require this integer be above zero&amp;quot;&lt;br /&gt;
#   e.g. &amp;quot;require id not be set&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
# stage 1: transform-data-filter&lt;br /&gt;
# config: expressions to apply to row:&lt;br /&gt;
#   e.g. &amp;quot;generate a salt&amp;quot;&lt;br /&gt;
#     ns_set update $nssData &amp;quot;salt&amp;quot; [nsz_salt]&lt;br /&gt;
#   e.g. &amp;quot;transform the password&amp;quot;&lt;br /&gt;
#     ns_set update $nssData &amp;quot;password&amp;quot; [nsz_password [ns_set get $nssData &amp;quot;password&amp;quot;] [ns_set get $nssData &amp;quot;salt&amp;quot;]]&lt;br /&gt;
#   e.g. &amp;quot;generate the next id from sequence&amp;quot;&lt;br /&gt;
#     ns_set update $nssData &amp;quot;id&amp;quot; [nso_sequence next &amp;quot;my_seq_name&amp;quot;]&lt;br /&gt;
#&lt;br /&gt;
# stage 2: veto-data-filter?&lt;br /&gt;
#&lt;br /&gt;
# allow multiple &amp;quot;inheritance&amp;quot; of data rules? or just defining rules that&lt;br /&gt;
# can be referenced by multiple tables?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''very draft state''&lt;br /&gt;
&lt;br /&gt;
== useful links ==&lt;br /&gt;
[http://philip.greenspun.com/doc/ philip.greenspun.com/doc/]&lt;br /&gt;
&lt;br /&gt;
[http://philip.greenspun.com/doc/data-pipeline data-pipeline]&lt;br /&gt;
&lt;br /&gt;
== AJAX/JSON support in AOLserver ==&lt;br /&gt;
&lt;br /&gt;
# HTTP request hits AOLserver, returns HTML including JavaScript with AJAX (or JSON-RPC, whatever) features.&lt;br /&gt;
# Client interacts with rendered HTML application, resulting in AJAX calls to AOLserver.&lt;br /&gt;
# AOLserver handles the AJAX calls and responds.&lt;br /&gt;
# Client potentially modified by result of AJAX call without reload.&lt;br /&gt;
&lt;br /&gt;
Use cases:&lt;br /&gt;
# Rate something and store the rating without reload of page.&lt;br /&gt;
# Stateful drag and drop of tiles (shopping cart, wish list).&lt;br /&gt;
# Background saving of application state (e.g. word processor, calendar, etc) without page reload.&lt;br /&gt;
# Reload portions of the view (e.g. portlet) without reloading the whole page. E.g. stock tickers, chat windows, log viewers, etc.&lt;br /&gt;
# Add/remove item from cart statefully without reload of page.&lt;br /&gt;
# Recalculate shopping cart prices/totals without reload of page.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
# Allows &amp;quot;Web 2.0&amp;quot; sites such as Digg and Gmail to be run on massively scalable AOLserver platform.&lt;br /&gt;
# It's an itch. We scratch these things.&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [http://www.writely.com/ writely -- the web word processor]&lt;br /&gt;
* [http://www.digg.com/spy digg spy -- show console data e.g. log, recent searches, monitoring, stocks, etc]&lt;br /&gt;
* [http://www.kiko.com/ kiko -- online calendar]&lt;br /&gt;
* [http://mail.google.com/ google mail]&lt;br /&gt;
* [http://maps.google.com/ google maps]&lt;br /&gt;
* [http://www.crockford.com/javascript/ javascript link collection]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/AJAX wikipedia article on AJAX]&lt;br /&gt;
* [http://rajshekhar.net/blog/archives/85-Rasmus-30-second-AJAX-Tutorial.html 30 second intro to AJAX]&lt;br /&gt;
&lt;br /&gt;
== Sysop and Bureaucrat rights ==&lt;br /&gt;
&lt;br /&gt;
Hi, Sam - I've granted you Sysop and Bureaucrat rights, so you can delete wiki pages and such.  You seem to watch the wiki and police it for spam a lot more than I can these days.  Thanks! -- [[User:Dossy|Dossy]] 16:50, 20 October 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/SMLserver</id>
		<title>SMLserver</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/SMLserver"/>
				<updated>2008-04-14T20:39:10Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: provide some factual information about SMLserver when it was AOLserver-related&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Early SMLserver releases provided a Stanard ML module for AOLserver (nssml.so).&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* A Functional Approach to Web Publishing ([http://www.itu.dk/~mael/mypapers/smlserver-4.1.0.pdf smlserver-4.1.0.pdf]), by Martin Elsman and Niels Hallenberg.&lt;br /&gt;
* [http://www.springerlink.com/content/vbkf26yab0elru3g/ Web Programming with SMLserver], ISBN 978-3-540-00389-2.&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Talk:Ns_url2file</id>
		<title>Talk:Ns url2file</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Talk:Ns_url2file"/>
				<updated>2007-12-06T14:31:11Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: /* What happens to special characters? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What happens to special characters? ==&lt;br /&gt;
&lt;br /&gt;
If the url contains, e.g., the '+' character or the sequence '%20', does ns_url2file unencode it the same as the underlying page finding code does?&lt;br /&gt;
&lt;br /&gt;
In AOLServer 3.4.2, it doesn't look like it does.  Say I request the url '/foo%20bar.html'. If I use a Tcl library function as a &amp;quot;404&amp;quot; handler (using the file-system-as-cache technique), and generate my file via &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set file [open &amp;quot;[ns_url2file $url]&amp;quot; w]&lt;br /&gt;
puts $file $content&lt;br /&gt;
close $file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the '$url' is still Not Found on the next request.  I'm getting the URL by directly reading the request header (since I'm in a redirection routine, the value of [ns_conn url] is my redirected URL, not the URL originally requested).&lt;br /&gt;
&lt;br /&gt;
Thought I'd ask here since it would be nice if the wiki page got updated with the answer....&lt;br /&gt;
&lt;br /&gt;
: ''Indeed, there's a &amp;quot;bug&amp;quot; in the URL encoding code with respect to &amp;quot;+&amp;quot; and &amp;quot;%20&amp;quot; and whitespace.  At some point, we have to &amp;quot;fix&amp;quot; this--but it'll result in a break in backward compatibility and can cause published URLs that expect the previous behavior to become 404's.  Perhaps if this is clearly documented and made very clear, it'll be okay to make the change ... your thoughts?'' --[[User:Dossy|Dossy]] 09:31, 6 December 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Sites_That_Run_On_AOLserver</id>
		<title>Sites That Run On AOLserver</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Sites_That_Run_On_AOLserver"/>
				<updated>2007-11-21T13:11:04Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: added CiteULike&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is (a probably incomplete) list of sites that run on AOLserver.  Some you will recognize, some you probably won't.&lt;br /&gt;
&lt;br /&gt;
Note: Please add entries in the following format:&lt;br /&gt;
* Site name | Version | URL | description (optional)&lt;br /&gt;
&lt;br /&gt;
In order to appear on this list, the server '''MUST''' respond with a &amp;quot;Server:&amp;quot; header in the HTTP response which indicates that it is running AOLserver, and what version.&lt;br /&gt;
&lt;br /&gt;
The following is a list of sites running some version of AOLserver at AOL:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;tabulardata&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- class=&amp;quot;header&amp;quot;&lt;br /&gt;
! Site name !! Version !! URL !! Description (optional)&lt;br /&gt;
|-&lt;br /&gt;
| AOL.COM || AOLserver/3.4.2 || http://aol.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Netscape || AOLserver/3.5.5 || http://home.netscape.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Digital City || AOLserver/4.0 || http://home.digitalcity.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| AOL Mail || AOLserver/3.5.9 || http://webmail.aol.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Moviefone || ArtBlast/3.5.4 || http://www.moviefone.com/ ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These are non-AOL sites that also use some version of AOLserver:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;tabulardata&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- class=&amp;quot;header&amp;quot;&lt;br /&gt;
! Site name !! Version !! URL !! Description (optional)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 4.5.x'''&lt;br /&gt;
|-&lt;br /&gt;
| WhatsThisIP.com || AOLserver/4.5.0 || http://WhatsThisIP.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 4.1.x'''&lt;br /&gt;
|-&lt;br /&gt;
| the CodeMill || AOLserver/4.1.0 || http://www.thecodemill.biz || host of the #aolserver IRC logs[http://www.thecodemill.biz/services/aolserver/irc/]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 4.0.x'''&lt;br /&gt;
|-&lt;br /&gt;
| [[Panoptic Computer Network]] || AOLserver/4.0.10a || http://panoptic.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| NS_SHUTDOWN || AOLserver/4.0.10a || http://www.nsshutdown.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Bayt.com || AOLserver/4.0.10 || http://www.bayt.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| CiteULike || AOLserver/4.0.10 || http://www.citeulike.org/ ||&lt;br /&gt;
|-&lt;br /&gt;
| OpenACS || AOLserver/4.0.9 || http://openacs.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Creative Commons || AOLserver/4.0.8 || http://creativecommons.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Volunteer Solutions || AOLserver/4.0.8 || http://www.volunteersolutions.org/ ||&lt;br /&gt;
|-&lt;br /&gt;
| jongriffin.com || AOLserver/4.0.5 || http://www.jongriffin.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Rate Your Music || AOLserver/4.0.10 || http://rateyourmusic.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Salsa Blanca || AOLserver/4.0.5 || http://www.salsablanca.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Kurup.org || AOLserver/4.0.10 || http://kurup.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Seven Sisters Trading || AOLserver/4.0.3 || http://www.7-sisters.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| AIESEC.net || AOLserver/4.0 || http://www.aiesec.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| Don Baccus Photography || AOLserver/4.0 || http://donb.photo.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| M³ Beratungsgesellschaft || AOLserver/4.0 || http://www.m3-beratung.de/ ||&lt;br /&gt;
|-&lt;br /&gt;
| photo.net || AOLserver/4.0 || http://www.photo.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| Treffpunkt || AOLserver/4.0.10 || http://www.treffpunktsystems.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Uptime || Aolserver/4.0.10 || http://uptime.openacs.org||&lt;br /&gt;
|-&lt;br /&gt;
| Myturl || Aolserver/4.0.10 || http://myturl.com || tinyurl clone&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.5.x'''&lt;br /&gt;
|-&lt;br /&gt;
| OneWeek || AOLserver/3.5.10 || http://oneweek.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Vitamist Spray Vitamins || AOLserver/3.5.6 || http://www.vitamist.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Anchor Baptist Church || AOLserver/3.5.0 || http://www.anchorbaptist.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Blue Ridge Amateur Radio Club || NaviServer/2.0 AOLserver/3.5.0 || http://www.radioclub.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Irish Tribute || AOLserver/3.5.0 || http://www.irishtribute.com/ || IrishAbroad's tribute site for the WTC dead and missing&lt;br /&gt;
|-&lt;br /&gt;
| online.ie || AOLserver/3.5.0 || http://www.online.ie/ || Irish news portal&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.4.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Polska.pl || AOLserver/3.4z4l || http://www.polska.pl/ || &lt;br /&gt;
|-&lt;br /&gt;
| AMTDA || AOLserver/3.4.2 || http://www.amtda.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Away.com || AOLserver 3.4.2 || http://www.away.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Onet.pl || AOLserver/3.4.2 || http://www.onet.pl/ || &lt;br /&gt;
|-&lt;br /&gt;
| Techspex || AOLserver/3.4.2 || http://www.techspex.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| University of Hawaii Athletics || AOLserver/3.4.2 || http://uhathletics.hawaii.edu/ || &lt;br /&gt;
|-&lt;br /&gt;
| Vivtek || AOLserver/3.4.2 || http://www.vivtek.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| unresponsive.net || AOLserver/3.4 || http://www.unresponsive.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| DolphinGames || AOLserver/3.4.2 || http://www.dolphingames.cz/ || &amp;quot;Server:&amp;quot; header renamed to DolphinGames/1.0.0; online wap and sms games; internal run also 4.0.x aol servers&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.3.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Akoor || AOLserver/3.3.1+ad13 || http://www.akoor.com/ || a cultural french quiz site&lt;br /&gt;
|-&lt;br /&gt;
| Bitzi || AOLserver/3.3.1+ad13 || http://bitzi.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Caltech || AOLserver/3.3.1+ad13 || http://www.caltech.edu/ || &lt;br /&gt;
|-&lt;br /&gt;
| Greatest Networker dot.Community || AOLserver/3.3.1+ad13 || http://www.greatestnetworker.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Infogettable.net Backgammon || AOLserver/3.3.1+ad13 || http://backgammon.infogettable.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| thedesignexperience || AOLserver/3.3.1+ad13 || http://www.thedesignexperience.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| ]project-open[  || AOLserver/3.3.1+ad13 || http://projop.dnsalias.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| ]project-consulting[ Demoserver || AOLserver/3.3.1+ad13 || http://pcdemo.dnsalias.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| ]project-translation[ Demoserver || AOLserver/3.3.1+ad13 || http://ptdemo.dnsalias.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.2.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Investsberbank || AOLserver/3.2 || http://www.isb.ru/ || Joint-Stock Bank &amp;quot;Investsberbank&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| MyWorkoutProgram || AOLserver/3.2+ad12 || http://www.myworkoutprogram.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 2.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Asimba Trainer Pro || NaviServer/2.0 AOLserver/2.3.3 || http://www.asimbatrainerpro.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Fitrex.com || NaviServer/2.0 AOLserver/2.3.3 || http://www.fitrex.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| WGCR Radio || NaviServer/2.0 AOLserver/2.3.3 || http://www.wgcr.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| British Cattle Movement Service || NaviServer/2.0 AOLserver/2.3.3 || http://www.bcms.gov.uk/ || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also, every website on this list is should be using AOLserver as well: http://openacs.org/community/sites/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''&lt;br /&gt;
&lt;br /&gt;
'''Why MUST?''' Some people turn that off as part of their security principles. A known bug in Version 4.x would allow an attacker do simply grep through the following list. Could we please take that into consideration? How many sites would, e.g., introduce .adp pages just to get it on this _huge_ (irony) list?&lt;br /&gt;
&lt;br /&gt;
''If anyone takes &amp;quot;security through obscurity&amp;quot; seriously enough to obfuscate the Server: header that's returned, then they also shouldn't want to be included on this list for the same reasons, so that people don't know they run AOLserver.  Everyone else is free to advertise their sites here to try and ensure they get picked up by web server surveys like Netcraft, et. al.''&lt;br /&gt;
&lt;br /&gt;
Ok, good point. You're perfectly right. Maybe I was just annoyed by being deleted from the list without explanation about the reason (which was added later). But why reject sites that don't expose the Server header for whatever reason? It is very easy to test that a site is running AOLserver (as easy as testing if a bug exists, of course). Why should we insist on detailed versioning?&lt;br /&gt;
&lt;br /&gt;
''It makes maintaining the list easier.  It'd be annoying for folks to add sites to this list and claim they run AOLserver, and then three months later the site switches to Apache.  Who has the time to go poking and prodding to do server detection?  It's easy to automate a script that asks &amp;quot;do I get a Server: AOLserver/xxx in the HTTP response?&amp;quot; and have it automatically keep the list fresh, which is what I currently have and run periodically.  If folks running Apache/IIS want to falsely report AOLserver, that's annoying because the list will be inaccurate, but at least AOLserver will get the credit for the sites.  :-)''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Sites that claim to run AOLserver 3.x, because the person who entered it into this Wiki assured it at that point in time. It may happen that the site runs Apache when you visit it and that may result in immediate pain, suffering or death. You have been warned!'''&lt;br /&gt;
* removed&lt;br /&gt;
&lt;br /&gt;
''The links on the pages look awfully Vignette CURL-like.  Is this site really running AOLserver?  How can you prove it?''&lt;br /&gt;
&lt;br /&gt;
How does a label in the header prove it? But we had this already. I started this rubric ''Sites that claim to run...'' to go around it. But I have absolutely no problem to remove all my sites (including the ones who have the header) from this wiki page in order to satisfy this principle.&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_adp_safeeval</id>
		<title>Ns adp safeeval</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_adp_safeeval"/>
				<updated>2007-09-25T22:14:48Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: fixup wiki category links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''NAME'''&lt;br /&gt;
&lt;br /&gt;
:  ns_adp_safeeval - Safely evaluate an ADP block&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_adp_safeeval''' ''page ?args ...?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This function evaluates the ADP specified by ''page'' just as [[ns_adp_eval]] does, except that it ignores inline scripts &amp;quot;&amp;lt;% ... %&amp;gt;&amp;quot;;  only adp registered tags are executed.  This is useful for providing a limited execution environment for untrusted code (such as user-created templates) without allowing potentially damaging code to run on the server.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_adp_abort]], [[ns_adp_append]], [[ns_adp_argc]], [[ns_adp_argv]], [[ns_adp_bind_args]], [[ns_adp_break]], [[ns_adp_debug]], [[ns_adp_debuginit]], [[ns_adp_dir]], [[ns_adp_dump]], [[ns_adp_exception]], [[ns_adp_include]], [[ns_adp_mime]], [[ns_adp_mimetype]], [[ns_adp_parse]], [[ns_adp_puts]], [[ns_adp_registeradp]], [[ns_adp_registerproc]], [[ns_adp_registertag]], [[ns_adp_return]], [[ns_adp_safeeval]], [[ns_adp_stats]], [[ns_adp_stream]], [[ns_adp_tell]], [[ns_adp_trunc]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Downloads</id>
		<title>Downloads</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Downloads"/>
				<updated>2007-06-16T03:11:29Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looking to download AOLserver related files and resources?  Here's a list of what's available:&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=3152 AOLserver Files at SourceForge] &lt;br /&gt;
* Latest 4.0.x release, 4.0.10: [http://aolserver.com/downloads/aolserver-4.0.10-src.tar.gz aolserver-4.0.10-src.tar.gz]&lt;br /&gt;
* Latest 4.5.x release, 4.5.0: [http://aolserver.com/downloads/aolserver-4.5.0-src.tar.gz aolserver-4.5.0-src.tar.gz]&lt;br /&gt;
&lt;br /&gt;
Nightly CVS snapshots, refreshed daily at 01:00 AM US/Pacific time (as long as SourceForge is working):&lt;br /&gt;
&lt;br /&gt;
* AOLserver HEAD: [http://aolserver.com/files/aolserver-HEAD-src.tar.gz aolserver-HEAD-src.tar.gz]&lt;br /&gt;
* AOLserver aolserver_v40_bp branch: [http://aolserver.com/files/aolserver-aolserver_v40_bp-src.tar.gz aolserver-aolserver_v40_bp-src.tar.gz]&lt;br /&gt;
* AOLserver aolserver_v45_bp branch: [http://aolserver.com/files/aolserver-aolserver_v45_bp-src.tar.gz aolserver-aolserver_v45_bp-src.tar.gz]&lt;br /&gt;
* nsopenssl HEAD: [http://aolserver.com/files/nsopenssl-HEAD-src.tar.gz nsopenssl-HEAD-src.tar.gz]&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Batteries Included&amp;quot; binary distributions ==&lt;br /&gt;
&lt;br /&gt;
If a &amp;quot;[[Batteries Included]]&amp;quot; binary distribution of AOLserver were to be made available, downloads for it would be available here.&lt;br /&gt;
&lt;br /&gt;
== AOLserver on Win32 ==&lt;br /&gt;
&lt;br /&gt;
These binary releases are unsupported and considered alpha-quality at best.  Use them at your own risk, but if you do find any issues, please file a [http://sourceforge.net/tracker/?group_id=3152&amp;amp;atid=103152 bug report].  Thanks!&lt;br /&gt;
&lt;br /&gt;
* [http://static.panoptic.com/aolserver/AOLserver-4.0.10-2-Win32-Setup.exe AOLserver-4.0.10-2-Win32-Setup.exe]: AOLserver 4.0.10 (built 20070615) and Tcl 8.4.15 for Win32. [http://dossy.org/archives/000461.html]&lt;br /&gt;
&lt;br /&gt;
* [http://aolserver.com/downloads/aolserver-4.1.0a-win32-20040821.zip AOLserver 4.1.0a (built 20040821) and Tcl 8.4.6 for Win32]&lt;br /&gt;
* [http://aolserver.com/downloads/aolserver-4.0.7-win32.zip AOLserver 4.0.7 and Tcl 8.4.6 for Win32]&lt;br /&gt;
&lt;br /&gt;
If you want to build your own binaries for Win32, you should read [[How to build AOLserver on Win32]].&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/AOLserver_and_Tcl_Crash_Course</id>
		<title>AOLserver and Tcl Crash Course</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/AOLserver_and_Tcl_Crash_Course"/>
				<updated>2007-06-16T03:09:39Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: outdent code examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
The following is a working draft in progress for an introductory guide to AOLserver and Tcl.&lt;br /&gt;
&lt;br /&gt;
== ADP Pages ==&lt;br /&gt;
&lt;br /&gt;
Hello &amp;lt;Yourname&amp;gt; - Simple page, user submits form, displays name&lt;br /&gt;
&lt;br /&gt;
=== ADP example ===&lt;br /&gt;
&lt;br /&gt;
hello-world.adp:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% set name [ns_queryget name &amp;quot;world&amp;quot;] %&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Hello &amp;lt;%= [ns_quotehtml $name] %&amp;gt;!&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Hello &amp;lt;%= [ns_quotehtml $name] %&amp;gt;!&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;form&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Name: &amp;lt;input name=&amp;quot;name&amp;quot; value=&amp;quot;&amp;lt;%= [ns_quotehtml $name] %&amp;gt;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Go&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tcl example ===&lt;br /&gt;
&lt;br /&gt;
hello-world.tcl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set name [ns_queryget name &amp;quot;world&amp;quot;]&lt;br /&gt;
ns_return 200 text/html &amp;quot;&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Hello [ns_quotehtml $name]!&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Hello [ns_quotehtml $name]!&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;form&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Name: &amp;lt;input name=&amp;quot;name&amp;quot; value=&amp;quot;[ns_quotehtml $name]&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Go&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tcl Basics ==&lt;br /&gt;
&lt;br /&gt;
** Explain Minimalist Syntax&lt;br /&gt;
*** Commands, Subcommands (Evaluated and Non-Evaluated)&lt;br /&gt;
*** Working with variables set, expr&lt;br /&gt;
** Control Structures&lt;br /&gt;
*** if, while, etc.&lt;br /&gt;
*** procedures&lt;br /&gt;
&lt;br /&gt;
== Fetching GET and POST ==&lt;br /&gt;
&lt;br /&gt;
** Including / Referring to other pages&lt;br /&gt;
** Controlling Output&lt;br /&gt;
** Databases&lt;br /&gt;
*** Defining the connection from as a pool in the config.tcl&lt;br /&gt;
*** Selecting from the pool&lt;br /&gt;
*** Executing Queries, Retrieving Values&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
* Where does ADP excel?&lt;br /&gt;
* What practices should PHP, ASP, JSP developers stop doing?&lt;br /&gt;
* How can one use Tcl to write very concise and readable code?&lt;br /&gt;
* How does one efficiently separate pages into MVC components if the wanted?&lt;br /&gt;
* How and why should one write a domain specific sublanguage?&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Template:TOCright</id>
		<title>Template:TOCright</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Template:TOCright"/>
				<updated>2007-06-16T03:08:06Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: some attempt at a Template:TOCright&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; style=&amp;quot;clear: right; margin-bottom: .5em; float: right; padding: .5em 0 .8em 1.4em; background: none; width: auto;&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/AOLserver_and_Tcl_Crash_Course</id>
		<title>AOLserver and Tcl Crash Course</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/AOLserver_and_Tcl_Crash_Course"/>
				<updated>2007-06-16T03:06:16Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: fixup wiki markup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
The following is a working draft in progress for an introductory guide to AOLserver and Tcl.&lt;br /&gt;
&lt;br /&gt;
== ADP Pages ==&lt;br /&gt;
&lt;br /&gt;
Hello &amp;lt;Yourname&amp;gt; - Simple page, user submits form, displays name&lt;br /&gt;
&lt;br /&gt;
=== ADP example ===&lt;br /&gt;
&lt;br /&gt;
hello-world.adp:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;% set name [ns_queryget name &amp;quot;world&amp;quot;] %&amp;gt;&lt;br /&gt;
   &amp;lt;html&amp;gt;&lt;br /&gt;
   &amp;lt;head&amp;gt;&lt;br /&gt;
     &amp;lt;title&amp;gt;Hello &amp;lt;%= [ns_quotehtml $name] %&amp;gt;!&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;/head&amp;gt;&lt;br /&gt;
   &amp;lt;body&amp;gt;&lt;br /&gt;
     &amp;lt;p&amp;gt;Hello &amp;lt;%= [ns_quotehtml $name] %&amp;gt;!&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;form&amp;gt;&lt;br /&gt;
     &amp;lt;p&amp;gt;Name: &amp;lt;input name=&amp;quot;name&amp;quot; value=&amp;quot;&amp;lt;%= [ns_quotehtml $name] %&amp;gt;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;p&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Go&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;/form&amp;gt;&lt;br /&gt;
   &amp;lt;/body&amp;gt;&lt;br /&gt;
   &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tcl example ===&lt;br /&gt;
&lt;br /&gt;
hello-world.tcl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   set name [ns_queryget name &amp;quot;world&amp;quot;]&lt;br /&gt;
   ns_return 200 text/html &amp;quot;&amp;lt;html&amp;gt;&lt;br /&gt;
       &amp;lt;head&amp;gt;&lt;br /&gt;
         &amp;lt;title&amp;gt;Hello [ns_quotehtml $name]!&amp;lt;/title&amp;gt;&lt;br /&gt;
       &amp;lt;/head&amp;gt;&lt;br /&gt;
       &amp;lt;body&amp;gt;&lt;br /&gt;
         &amp;lt;p&amp;gt;Hello [ns_quotehtml $name]!&amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;form&amp;gt;&lt;br /&gt;
         &amp;lt;p&amp;gt;Name: &amp;lt;input name=&amp;quot;name&amp;quot; value=&amp;quot;[ns_quotehtml $name]&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;p&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Go&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/form&amp;gt;&lt;br /&gt;
       &amp;lt;/body&amp;gt;&lt;br /&gt;
       &amp;lt;/html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tcl Basics ==&lt;br /&gt;
&lt;br /&gt;
** Explain Minimalist Syntax&lt;br /&gt;
*** Commands, Subcommands (Evaluated and Non-Evaluated)&lt;br /&gt;
*** Working with variables set, expr&lt;br /&gt;
** Control Structures&lt;br /&gt;
*** if, while, etc.&lt;br /&gt;
*** procedures&lt;br /&gt;
&lt;br /&gt;
== Fetching GET and POST ==&lt;br /&gt;
&lt;br /&gt;
** Including / Referring to other pages&lt;br /&gt;
** Controlling Output&lt;br /&gt;
** Databases&lt;br /&gt;
*** Defining the connection from as a pool in the config.tcl&lt;br /&gt;
*** Selecting from the pool&lt;br /&gt;
*** Executing Queries, Retrieving Values&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
* Where does ADP excel?&lt;br /&gt;
* What practices should PHP, ASP, JSP developers stop doing?&lt;br /&gt;
* How can one use Tcl to write very concise and readable code?&lt;br /&gt;
* How does one efficiently separate pages into MVC components if the wanted?&lt;br /&gt;
* How and why should one write a domain specific sublanguage?&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/AOLserver_and_Tcl_Crash_Course</id>
		<title>AOLserver and Tcl Crash Course</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/AOLserver_and_Tcl_Crash_Course"/>
				<updated>2007-06-16T02:54:58Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: added the &amp;quot;hello world&amp;quot; ADP example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Draft Outline ==&lt;br /&gt;
&lt;br /&gt;
* ADP Pages&lt;br /&gt;
** Hello &amp;lt;Yourname&amp;gt; - Simple page, user submits form, displays name&lt;br /&gt;
*** DOSSY: Create this example with very simple Tcl.&lt;br /&gt;
&lt;br /&gt;
   # hello-world.adp&lt;br /&gt;
   &amp;lt;% set name [ns_queryget name &amp;quot;world&amp;quot;] %&amp;gt;&lt;br /&gt;
   &amp;lt;html&amp;gt;&lt;br /&gt;
   &amp;lt;head&amp;gt;&lt;br /&gt;
     &amp;lt;title&amp;gt;Hello &amp;lt;%= [ns_quotehtml $name] %&amp;gt;!&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;/head&amp;gt;&lt;br /&gt;
   &amp;lt;body&amp;gt;&lt;br /&gt;
     &amp;lt;p&amp;gt;Hello &amp;lt;%= [ns_quotehtml $name] %&amp;gt;!&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;form&amp;gt;&lt;br /&gt;
     &amp;lt;p&amp;gt;Name: &amp;lt;input name=&amp;quot;name&amp;quot; value=&amp;quot;&amp;lt;%= [ns_quotehtml $name] %&amp;gt;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;p&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Go&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;/form&amp;gt;&lt;br /&gt;
   &amp;lt;/body&amp;gt;&lt;br /&gt;
   &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   # hello-world.tcl&lt;br /&gt;
   set form [ns_getform]&lt;br /&gt;
   set name [string trim [ns_set get $form name]]&lt;br /&gt;
   if {$name eq &amp;quot;&amp;quot;} {&lt;br /&gt;
       set name &amp;quot;world&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   ns_return 200 text/html &amp;quot;&amp;lt;html&amp;gt;&lt;br /&gt;
       &amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Hello [ns_quotehtml $name]!&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
       &amp;lt;body&amp;gt;&lt;br /&gt;
       Hello [ns_quotehtml $name]!&lt;br /&gt;
       &amp;lt;form action='hello-world.tcl' method='post'&amp;gt;&lt;br /&gt;
       Name: &amp;lt;input name='name' value='[ns_quotehtml $name]'&amp;gt;&lt;br /&gt;
       &amp;lt;input type='submit'&amp;gt;&lt;br /&gt;
       &amp;lt;/form&amp;gt;&lt;br /&gt;
       &amp;lt;/body&amp;gt;&lt;br /&gt;
       &amp;lt;/html&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Tcl Basics&lt;br /&gt;
** Explain Minimalist Syntax&lt;br /&gt;
*** Commands, Subcommands (Evaluated and Non-Evaluated)&lt;br /&gt;
*** Working with variables set, expr&lt;br /&gt;
** Control Structures&lt;br /&gt;
*** if, while, etc.&lt;br /&gt;
*** procedures&lt;br /&gt;
* Fetching GET and POST&lt;br /&gt;
** Including / Referring to other pages&lt;br /&gt;
** Controlling Output&lt;br /&gt;
** Databases&lt;br /&gt;
*** Defining the connection from as a pool in the config.tcl&lt;br /&gt;
*** Selecting from the pool&lt;br /&gt;
*** Executing Queries, Retrieving Values&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
* Where does ADP excel?&lt;br /&gt;
* What practices should PHP, ASP, JSP developers stop doing?&lt;br /&gt;
* How can one use Tcl to write very concise and readable code?&lt;br /&gt;
* How does one efficiently separate pages into MVC components if the wanted?&lt;br /&gt;
* How and why should one write a domain specific sublanguage?&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_dbquery</id>
		<title>Ns dbquery</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_dbquery"/>
				<updated>2007-06-12T14:56:19Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# ns_dbquery --&lt;br /&gt;
#&lt;br /&gt;
#   Execute a SQL query against either a pool or an opened db handle,&lt;br /&gt;
#   and return the resultset as a list of lists.  The first list&lt;br /&gt;
#   contains the column names.&lt;br /&gt;
#&lt;br /&gt;
#   If the statement was a statement which does not return rows, the&lt;br /&gt;
#   result is an empty list.  TODO:  Perhaps return the number of rows&lt;br /&gt;
#   updated?&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
proc ns_dbquery {args} {&lt;br /&gt;
    if {([llength $args] - 1) % 2 != 0} {&lt;br /&gt;
        error &amp;quot;wrong # args: should be \&amp;quot;ns_dbquery ?-pool name\&lt;br /&gt;
            | -handle dbId? ?-timeout secs? sql\&amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    foreach {key value} [lrange $args 0 end-1] {&lt;br /&gt;
        switch -exact -- $key {&lt;br /&gt;
            -pool { set pool $value }&lt;br /&gt;
            -handle { set handle $value }&lt;br /&gt;
            -timeout { set timeout $value }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    if {![info exists timeout]} {&lt;br /&gt;
        set timeout 0&lt;br /&gt;
    }&lt;br /&gt;
    if {[info exists pool]} {&lt;br /&gt;
        set db [ns_db gethandle -timeout $timeout $pool]&lt;br /&gt;
    } elseif {[info exists handle]} {&lt;br /&gt;
        set db $handle&lt;br /&gt;
    } else {&lt;br /&gt;
        # Use default pool, if configured.&lt;br /&gt;
        set db [ns_db gethandle -timeout $timeout]&lt;br /&gt;
    }&lt;br /&gt;
    if {![string length $db]} {&lt;br /&gt;
        error &amp;quot;couldn't get db handle&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    set res [catch {&lt;br /&gt;
        set resultset [list]&lt;br /&gt;
        if {[ns_db exec $db [lindex $args end]] eq &amp;quot;NS_ROWS&amp;quot;} {&lt;br /&gt;
            set row [ns_db bindrow $db]&lt;br /&gt;
            set columns [list]&lt;br /&gt;
            foreach {key value} [ns_set array $row] {&lt;br /&gt;
                lappend columns $key&lt;br /&gt;
            }&lt;br /&gt;
            lappend resultset $columns&lt;br /&gt;
            while {[ns_db getrow $db $row]} {&lt;br /&gt;
                set data [list]&lt;br /&gt;
                foreach {key value} [ns_set array $row] {&lt;br /&gt;
                    lappend data $value&lt;br /&gt;
                }&lt;br /&gt;
                lappend resultset $data&lt;br /&gt;
            }&lt;br /&gt;
            ns_set free $row&lt;br /&gt;
        }&lt;br /&gt;
    } err]&lt;br /&gt;
    if {![info exists handle]} {&lt;br /&gt;
        ns_db releasehandle $db&lt;br /&gt;
    }&lt;br /&gt;
    if {$res} {&lt;br /&gt;
        error $err&lt;br /&gt;
    }&lt;br /&gt;
    return $resultset&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Dossy_Shiobara</id>
		<title>Dossy Shiobara</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Dossy_Shiobara"/>
				<updated>2007-01-03T23:38:30Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: /* Articles */ adding Linux Magazine Spain article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: [mailto:dossy@panoptic.com]&lt;br /&gt;
: Location: US, NJ/NY/VA&lt;br /&gt;
&lt;br /&gt;
[[Category:Person|Shiobara, Dossy]]&lt;br /&gt;
&lt;br /&gt;
I run the [[AOLserver Wiki]] at [[Panoptic]].  If there are any problems with it, ''abuse me''.&lt;br /&gt;
&lt;br /&gt;
My blog is at http://dossy.org/ aka [http://dossy.org/ Dossy's Blog] -- I try to post regularly (at least once a day, minimally once a week) and I often try to post about AOLserver-related matters.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
My current AOLserver-related projects are to:&lt;br /&gt;
&lt;br /&gt;
* Ensure we meet all our goals and milestones for the AOLserver Project according to the published 2004 [[Roadmap]].&lt;br /&gt;
* Start formalizing the testing/QA procedures and pre-release checklist that will go into every release: [[How are releases tested]]?&lt;br /&gt;
* [[nssic]] -- the Server Inter-Connect module&lt;br /&gt;
&lt;br /&gt;
The following items are old and need to be updated:&lt;br /&gt;
&lt;br /&gt;
* Stress-test and release version 0.6 of [[nsmysql]] (an internal database driver for MySQL)&lt;br /&gt;
* Write a configuration tool which will manage and generate nsd.tcl files&lt;br /&gt;
* Work on the [[AOLserver Packages]] - Binary distribution of AOLserver in the many popular package mangement formats like RedHat's RPM, Debian's .deb, FreeBSD's ports, Solaris's .pkg&lt;br /&gt;
* Write a server-side session management module, [[nssession]]&lt;br /&gt;
* Clean up version 0.1pre of [[nsfreetds]] (an internal database driver that connects to Microsoft SQL Server or Sybase using FreeTDS 0.51)&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
&lt;br /&gt;
I'm starting to collect articles written about AOLserver that are available on the web.  Eventually, these will move to their own wiki page:&lt;br /&gt;
&lt;br /&gt;
* [http://www.eveandersson.com/arsdigita/asj/aolserver/introduction-1 Introduction to AOLserver, Part 1] by Philip Greenspun (LinuxWorld.com, July 1999)&lt;br /&gt;
* [http://www.linuxgazette.com/issue58/washington.html AOLserver - a web development platform] by Irving Washington (Issue 58, Linux Gazette, October 2000) &lt;br /&gt;
* [http://www.linuxgazette.com/issue63/washington.html XML parsing in AOLserver] by Irving Washington (Issue 63, Linux Gazette, February 2001)&lt;br /&gt;
* [http://www.webdeveloper.pl/aolserver__1,293,1,1,pl.html AOLserver (1)] by [[Wojciech Kocjan]] (WEBdeveloper.pl, February 2002)&lt;br /&gt;
* [http://www.webdeveloper.pl/aolserver__2,294,1,1,pl.html AOLserver (2)] by [[Wojciech Kocjan]] (WEBdeveloper.pl, March 2002)&lt;br /&gt;
* [http://www.linuxjournal.com/article/6164 Introducing AOLserver] by Reuven Lerner (Issue 101, Linux Journal, August/September 2002)&lt;br /&gt;
* [http://www.serverwatch.com/sreviews/article.php/2232651 Does AOLserver Have What It Takes to Stand Out?] by Michael Hall (ServerWatch, July 2003)&lt;br /&gt;
* [http://www.internetnews.com/dev-news/article.php/3462701 AOL Updates Its Open Source Web Server] by Sean Michael Kerner (InternetNews.com, January 2005)&lt;br /&gt;
* [http://www.linux-magazine.es/issue/12/AOLServer.pdf AOLServer: Un servidor web avanzado y abierto] (PDF) by Pietro Zuco (Issue 12, Linux Magazine Spain, November 2005)&lt;br /&gt;
* [https://www.linux-magazine.es/issue/15/AOLServer.pdf AOLServer II - Programación TCL, SQL y ADP] (PDF) by Pietro Zuco (Issue 15, Linux Magazine Spain, February 2006)&lt;br /&gt;
* [http://www.linuxjournal.com/article/8986 Play Ball: Introducing Fungoes] by Mat Kovach (LinuxJournal.com, April 2006)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Just saving a funny joke that's really relevant to the work I do: [[see if it happens again]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
My current scratch pad or whiteboard contents:&lt;br /&gt;
&lt;br /&gt;
Current idiom:&lt;br /&gt;
&lt;br /&gt;
    set lock [ns_mutex create lock]&lt;br /&gt;
    ns_mutex lock $lock&lt;br /&gt;
    catch {&lt;br /&gt;
        # synchronized code here&lt;br /&gt;
    }&lt;br /&gt;
    ns_mutex unlock $lock&lt;br /&gt;
&lt;br /&gt;
Proposed change:&lt;br /&gt;
&lt;br /&gt;
    set lock [ns_mutex create lock]&lt;br /&gt;
    ns_mutex eval $lock $script&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Dossy's Blog ==&lt;br /&gt;
&lt;br /&gt;
Here's the three most recent RSS entries from my blog.  This is just testing out a MediaWiki 1.5 extension I'm working on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;feed limit=&amp;quot;3&amp;quot;&amp;gt;http://dossy.org/index.xml&amp;lt;/feed&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Dossy_Shiobara</id>
		<title>Dossy Shiobara</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Dossy_Shiobara"/>
				<updated>2007-01-03T19:50:47Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: /* Articles */ add article from Linux Magazine Spain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: [mailto:dossy@panoptic.com]&lt;br /&gt;
: Location: US, NJ/NY/VA&lt;br /&gt;
&lt;br /&gt;
[[Category:Person|Shiobara, Dossy]]&lt;br /&gt;
&lt;br /&gt;
I run the [[AOLserver Wiki]] at [[Panoptic]].  If there are any problems with it, ''abuse me''.&lt;br /&gt;
&lt;br /&gt;
My blog is at http://dossy.org/ aka [http://dossy.org/ Dossy's Blog] -- I try to post regularly (at least once a day, minimally once a week) and I often try to post about AOLserver-related matters.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
My current AOLserver-related projects are to:&lt;br /&gt;
&lt;br /&gt;
* Ensure we meet all our goals and milestones for the AOLserver Project according to the published 2004 [[Roadmap]].&lt;br /&gt;
* Start formalizing the testing/QA procedures and pre-release checklist that will go into every release: [[How are releases tested]]?&lt;br /&gt;
* [[nssic]] -- the Server Inter-Connect module&lt;br /&gt;
&lt;br /&gt;
The following items are old and need to be updated:&lt;br /&gt;
&lt;br /&gt;
* Stress-test and release version 0.6 of [[nsmysql]] (an internal database driver for MySQL)&lt;br /&gt;
* Write a configuration tool which will manage and generate nsd.tcl files&lt;br /&gt;
* Work on the [[AOLserver Packages]] - Binary distribution of AOLserver in the many popular package mangement formats like RedHat's RPM, Debian's .deb, FreeBSD's ports, Solaris's .pkg&lt;br /&gt;
* Write a server-side session management module, [[nssession]]&lt;br /&gt;
* Clean up version 0.1pre of [[nsfreetds]] (an internal database driver that connects to Microsoft SQL Server or Sybase using FreeTDS 0.51)&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
&lt;br /&gt;
I'm starting to collect articles written about AOLserver that are available on the web.  Eventually, these will move to their own wiki page:&lt;br /&gt;
&lt;br /&gt;
* [http://www.eveandersson.com/arsdigita/asj/aolserver/introduction-1 Introduction to AOLserver, Part 1] by Philip Greenspun (LinuxWorld.com, July 1999)&lt;br /&gt;
* [http://www.linuxgazette.com/issue58/washington.html AOLserver - a web development platform] by Irving Washington (Issue 58, Linux Gazette, October 2000) &lt;br /&gt;
* [http://www.linuxgazette.com/issue63/washington.html XML parsing in AOLserver] by Irving Washington (Issue 63, Linux Gazette, February 2001)&lt;br /&gt;
* [http://www.webdeveloper.pl/aolserver__1,293,1,1,pl.html AOLserver (1)] by [[Wojciech Kocjan]] (WEBdeveloper.pl, February 2002)&lt;br /&gt;
* [http://www.webdeveloper.pl/aolserver__2,294,1,1,pl.html AOLserver (2)] by [[Wojciech Kocjan]] (WEBdeveloper.pl, March 2002)&lt;br /&gt;
* [http://www.linuxjournal.com/article/6164 Introducing AOLserver] by Reuven Lerner (Issue 101, Linux Journal, August/September 2002)&lt;br /&gt;
* [http://www.serverwatch.com/sreviews/article.php/2232651 Does AOLserver Have What It Takes to Stand Out?] by Michael Hall (ServerWatch, July 2003)&lt;br /&gt;
* [http://www.internetnews.com/dev-news/article.php/3462701 AOL Updates Its Open Source Web Server] by Sean Michael Kerner (InternetNews.com, January 2005)&lt;br /&gt;
* [http://www.linux-magazine.es/issue/12/AOLServer.pdf AOLServer: Un servidor web avanzado y abierto] (PDF) by Pietro Zuco (Issue 12, Linux Magazine Spain, August 2005)&lt;br /&gt;
* [http://www.linuxjournal.com/article/8986 Play Ball: Introducing Fungoes] by Mat Kovach (LinuxJournal.com, April 2006)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Just saving a funny joke that's really relevant to the work I do: [[see if it happens again]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
My current scratch pad or whiteboard contents:&lt;br /&gt;
&lt;br /&gt;
Current idiom:&lt;br /&gt;
&lt;br /&gt;
    set lock [ns_mutex create lock]&lt;br /&gt;
    ns_mutex lock $lock&lt;br /&gt;
    catch {&lt;br /&gt;
        # synchronized code here&lt;br /&gt;
    }&lt;br /&gt;
    ns_mutex unlock $lock&lt;br /&gt;
&lt;br /&gt;
Proposed change:&lt;br /&gt;
&lt;br /&gt;
    set lock [ns_mutex create lock]&lt;br /&gt;
    ns_mutex eval $lock $script&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Dossy's Blog ==&lt;br /&gt;
&lt;br /&gt;
Here's the three most recent RSS entries from my blog.  This is just testing out a MediaWiki 1.5 extension I'm working on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;feed limit=&amp;quot;3&amp;quot;&amp;gt;http://dossy.org/index.xml&amp;lt;/feed&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/User_talk:Juanjose</id>
		<title>User talk:Juanjose</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/User_talk:Juanjose"/>
				<updated>2006-12-18T19:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am feeling so alone... ;) Please, tell me something! :D&lt;br /&gt;
&lt;br /&gt;
: ''Looks like you're able to get on the wiki now.  :-)'' -- [[User:Dossy|Dossy]] 14:00, 18 December 2006 (EST)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Frequently_Asked_Questions</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Frequently_Asked_Questions"/>
				<updated>2006-12-15T16:30:24Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
(Please add new questions at the very bottom  of the list.  Thanks.)&lt;br /&gt;
&lt;br /&gt;
== What is AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
AOLserver is America Online's Open Source web server.  AOLserver is the backbone of the largest and busiest production environments in the world.&lt;br /&gt;
&lt;br /&gt;
AOLserver is a multithreaded, Tcl-enabled, massively-scalable and extensible web server tuned for large scale, dynamic web sites. AOLserver also includes complete database integration and a dynamic page scripting language.&lt;br /&gt;
&lt;br /&gt;
== What is the latest version of AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
* The latest stable 3.4.x version is 3.4.2 released 18 September 2001.&lt;br /&gt;
* The latest stable 3.5.x version is 3.5.11 released 17 October 2003.&lt;br /&gt;
* The latest stable 4.0.x version is 4.0.10 released 18 January 2005.&lt;br /&gt;
* The latest stable 4.5.x version is 4.5.0 released 27 June 2006.&lt;br /&gt;
* Current development (CVS HEAD) is 4.5.0.&lt;br /&gt;
&lt;br /&gt;
== Where can I get AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
The AOLserver project is hosted at [http://sourceforge.net/ SourceForge], and file releases are available for [[download]] in the [http://sourceforge.net/project/showfiles.php?group_id=3152 AOLserver Project Filelist].&lt;br /&gt;
&lt;br /&gt;
== What platforms does AOLserver support? ==&lt;br /&gt;
&lt;br /&gt;
'''AOLserver''' is known to compile and run on the following platforms:&lt;br /&gt;
* Linux 2.2 (i386), 2.4 and 2.6&lt;br /&gt;
* Windows 95/98/NT/2K/XP (i386) (partially supported, see #6)&lt;br /&gt;
* FreeBSD 3.4 (i386)&lt;br /&gt;
* OpenBSD 2.5 (i386)&lt;br /&gt;
* UnixWare 7.x (i386)&lt;br /&gt;
* DEC Tru64 &amp;amp; OSF/1 4.0 (alpha)&lt;br /&gt;
* Solaris 2.x (sparc), Solaris 2.10 (x86)&lt;br /&gt;
* HP/UX 10 &amp;amp; 11 (hppa)&lt;br /&gt;
* Irix 6.x (mips)&lt;br /&gt;
* Apple MacOS X 10.3 (ppc), 10.4 (ppc)&lt;br /&gt;
&lt;br /&gt;
== How is AOLserver licensed and distributed? ==&lt;br /&gt;
&lt;br /&gt;
Via the [[AOLserver Public License]], viewable at http://aolserver.com/license/.&lt;br /&gt;
&lt;br /&gt;
== How does AOLserver performance compare to other major servers? ==&lt;br /&gt;
&lt;br /&gt;
[[Brady Wetherington]] says:  On Unix, AOLserver can generate many, many dynamic pages very quickly and reliably. It also has some special code paths designed to speed up processing of static pages (fastpath), though I don't use that very much, personally.  Along with the database connection pools, it's definitely one of the highest-performance web-based database systems I've used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How is it different from Apache HTTP Server? ==&lt;br /&gt;
&lt;br /&gt;
The current Apache HTTP Server&lt;br /&gt;
* is part of / a project of the Apache Software Foundation. The process of development and decision making is working for years and accepted by all participants&lt;br /&gt;
* allows to run applications in a process-pre-forking or multi-threaded environment by design&lt;br /&gt;
* is the leading webserver, so it is widely known, accepted and supported&lt;br /&gt;
* is itself a subproject accompanied by lots of well known other projects and frameworks (like Ant, Jakarta, Struts...)&lt;br /&gt;
&lt;br /&gt;
In contrast AOLserver&lt;br /&gt;
* can do lots of use cases that are done with Apache modules with a few lines of TCL code (via registered filters and procs)&lt;br /&gt;
* is bound to its multi-threaded architecture that has its own disadvantages, depending on what you want to do&lt;br /&gt;
&lt;br /&gt;
== How is it different from &amp;lt;insert other webserver&amp;gt;? ==&lt;br /&gt;
&lt;br /&gt;
???&lt;br /&gt;
&lt;br /&gt;
== Where is AOLserver appropriate?  Where is it not? ==&lt;br /&gt;
&lt;br /&gt;
It is not appropriate...&lt;br /&gt;
* when you want to do virtual hosting for multiple customers.  For static content, AOLserver is fine - you're just serving static content.  For dynamic, server-side functionality, to get the level of privilege separation necessary, you'd have to run a separate nsd per customer to ensure that one customer can't access the content/data of another's.  There are apparently some folks out there who have set up AOLserver just this way and are doing just this.&lt;br /&gt;
* when the code you want to use is not thread-safe (and you are not able to change that)&lt;br /&gt;
* when your main application makes heavy use of cgi-tools or other scripting languages like PHP or Phython (in general: where currently no active dedicated maintainer for corresponding modules is known)&lt;br /&gt;
* when you need backup of a large world wide community that uses tools, modules and code you can find and read in every single computer magazine. AOLserver and TCL are niche products, which only means they are not sexy to the broad audience, but are used intensively by a sophisticated, intelligent minority&lt;br /&gt;
* when you know you would need more than one day to convince your customer to use it (in other words: if you use technology the first time don't let your most important customer be the beta tester)&lt;br /&gt;
&lt;br /&gt;
It is appropriate...&lt;br /&gt;
* when you want to make maximum use of your machines hardware ressources: AOLserver is a highly configurable beast that allows you to run big websites&lt;br /&gt;
* when you plan to run a website that makes heavy use of one or more databases (using pooled connections)&lt;br /&gt;
* when you want to cache lots or all of your static files (.html,.gif,.css.,.js ...) in your servers memory (via modules fastpath and nscache)&lt;br /&gt;
* when you like the good feeling of running and coding your apps on a well-tested multi-threaded server architecture. The server never has been a process-forking one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is if you know your requirements and your scope is fairly stable and you feel comfortable you can predict the future, and if all signs point to the app. remaining small-to-medium in usage/traffic, then pick whatever platform or technology you like the best -- it really won't make a difference.  But, if you think that it's a very real possibility you'll need&lt;br /&gt;
to scale up capacity to meet growing demand/traffic, possibly indefinitely, then yes, the hidden cost of re-architecting or migrating to a different technology can be a killer when you have to use the words &amp;quot;sunk cost&amp;quot; to describe the originally developed system.  In that case, you may be better off starting with implementing with AOLserver, as its performance &amp;quot;ceiling&amp;quot; so to speak is higher than other technologies.  (TODO: Benchmarks demonstrating this empirically?)&lt;br /&gt;
&lt;br /&gt;
== How do I get started with AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;need to link to a newbie guide HOWTO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How can I learn more about AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
Start by reading the [[Documentation]], which is still a work-in-progress.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;package require&amp;quot; doesn't work!  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
Here's the relevant portion of a message [[Dossy Shiobara]] sent to the AOLserver mailing list back on 16 June 2000:&lt;br /&gt;
&lt;br /&gt;
  set tcl_library [file join $tcl_pkgPath tcl${tcl_version}]&lt;br /&gt;
  source [file join $tcl_library init.tcl]&lt;br /&gt;
&lt;br /&gt;
  package require works like a charm after that :-)&lt;br /&gt;
&lt;br /&gt;
There you have it.  Perhaps, some day, this won't be a necessary step.  But, in the meantime ...&lt;br /&gt;
&lt;br /&gt;
''As of AOLserver 4.0 and perhaps even a late version of 3.5.x, this step is no longer necessary.''&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;ns_set update [ns_conn outputheaders] Content-Type&amp;quot; results in the server sending two copies of the Content-Type header.  Why? ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;ns_set update [ns_conn outputheaders $conn] Content-Type {application/x-tcl}&amp;quot; does not work in .adp files as I wish.  The server always returns two copies of the Content-Type header, one as application/x-tcl, another as text/html and clients(galeon, tcl http package) always use the second.  How do I remove the second Content-Type?'''&lt;br /&gt;
&lt;br /&gt;
Good question -- this is really a bug that needs to be fixed in the server code itself.&lt;br /&gt;
&lt;br /&gt;
== How can I get Tclet scripts served from AOLserver to run inside the Tcl Plugin? ==&lt;br /&gt;
&lt;br /&gt;
Someone asks: ''I have an aolserver for OpenACS.  I installed Tcl Plugin which works well with classic Tclets on Tcl Plugin Home Pages.  But with Aolserver, it doesn't work.... Do you know the answer of this?''&lt;br /&gt;
&lt;br /&gt;
== How can I compile AOLserver on HP-UX, both 10.20 and 11.x? ==&lt;br /&gt;
&lt;br /&gt;
[[Dossy]]: Good question.  If I had easy access to HP-UX machines, I'd try it myself.  AOLserver 4.x should hopefully build on HP-UX without any changes, but I'm only guessing.&lt;br /&gt;
&lt;br /&gt;
HPUX doesn't implement a lot of BSD/POSIX IPC functions, or so I hear.&lt;br /&gt;
&lt;br /&gt;
== I'm getting an error compiling AOLserver about POLLIN, POLLOUT and POLLPRI being redefined.  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
AOLserver requires that the &amp;quot;configure&amp;quot; script be run using the GNU C (gcc) compiler.  Try running the configure script like this:&lt;br /&gt;
&lt;br /&gt;
    $ CC=gcc ./configure --args...&lt;br /&gt;
&lt;br /&gt;
== Does AOLserver support HTTP Keep-Alive?  I'm sending a HTTP/1.1 request via httperf and AOLserver isn't doing Keep-Alive like Apache does!  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
Actually, nothing is wrong. You just need to tell httperf to include the headers that tell AOLserver to expect multiple requests per connection. Add '--add_header &amp;quot;Connection: Keep-Alive\n&amp;quot;' to your httperf request. &lt;br /&gt;
&lt;br /&gt;
The issue is that Apache and AOLserver chose opposite default behaviors when interpretting [http://www.ietf.org/rfc/rfc2068.txt RFC 2068 section 8.1.2.1]:&lt;br /&gt;
&lt;br /&gt;
   An HTTP/1.1 server MAY assume that a HTTP/1.1 client intends to&lt;br /&gt;
   maintain a persistent connection unless a Connection header including&lt;br /&gt;
   the connection-token &amp;quot;close&amp;quot; was sent in the request. If the server&lt;br /&gt;
   chooses to close the connection immediately after sending the&lt;br /&gt;
   response, it SHOULD send a Connection header including the&lt;br /&gt;
   connection-token close.&lt;br /&gt;
&lt;br /&gt;
   An HTTP/1.1 client MAY expect a connection to remain open, but would&lt;br /&gt;
   decide to keep it open based on whether the response from a server&lt;br /&gt;
   contains a Connection header with the connection-token close. In case&lt;br /&gt;
   the client does not want to maintain a connection for more than that&lt;br /&gt;
   request, it SHOULD send a Connection header including the&lt;br /&gt;
   connection-token close.&lt;br /&gt;
&lt;br /&gt;
The key here is &amp;quot;MAY&amp;quot; -- AOLserver (currently, as of 4.0.10) chooses not to assume a Keep-Alive connection unless the client explicitly requests it by sending &amp;quot;Connection: Keep-Alive&amp;quot; in the HTTP request header.  This may change in the future (HTTP/1.1 requests default to Keep-Alive unless the client explicitly sends &amp;quot;Connection: close&amp;quot; -- apparently this is how Apache works).&lt;br /&gt;
&lt;br /&gt;
== AOLserver 4.0.10 is consuming all my memory ==&lt;br /&gt;
&lt;br /&gt;
[http://www.mail-archive.com/aolserver%40listserv.aol.com/msg09104.html Bas Scheffers says]: What version of Tcl did you use? Use 8.4.11 or 8.4.6, but nothing in between as they have a big memory leak.&lt;br /&gt;
&lt;br /&gt;
Note that debian sarge includes tcl 8.4.9 (as of 2006-01-03).&lt;br /&gt;
&lt;br /&gt;
== How do I customize standard HTTP responses? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Internal redirects&lt;br /&gt;
#&lt;br /&gt;
ns_section &amp;quot;ns/server/${servername}/redirects&amp;quot;&lt;br /&gt;
ns_param   404 &amp;quot;/notfound.html&amp;quot;      ;# Not Found error page&lt;br /&gt;
ns_param   500 &amp;quot;/servererror.html&amp;quot;   ;# Server Error page&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/FAQ</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/FAQ"/>
				<updated>2006-12-15T16:30:13Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: FAQ moved to Frequently Asked Questions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Frequently Asked Questions]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Frequently_Asked_Questions</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Frequently_Asked_Questions"/>
				<updated>2006-12-15T16:30:13Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: FAQ moved to Frequently Asked Questions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
= Frequently Asked Questions =&lt;br /&gt;
&lt;br /&gt;
(Please add new questions at the very bottom  of the list.  Thanks.)&lt;br /&gt;
&lt;br /&gt;
== What is AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
AOLserver is America Online's Open Source web server.  AOLserver is the backbone of the largest and busiest production environments in the world.&lt;br /&gt;
&lt;br /&gt;
AOLserver is a multithreaded, Tcl-enabled, massively-scalable and extensible web server tuned for large scale, dynamic web sites. AOLserver also includes complete database integration and a dynamic page scripting language.&lt;br /&gt;
&lt;br /&gt;
== What is the latest version of AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
* The latest stable 3.4.x version is 3.4.2 released 18 September 2001.&lt;br /&gt;
* The latest stable 3.5.x version is 3.5.11 released 17 October 2003.&lt;br /&gt;
* The latest stable 4.0.x version is 4.0.10 released 18 January 2005.&lt;br /&gt;
* The latest stable 4.5.x version is 4.5.0 released 27 June 2006.&lt;br /&gt;
* Current development (CVS HEAD) is 4.5.0.&lt;br /&gt;
&lt;br /&gt;
== Where can I get AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
The AOLserver project is hosted at [http://sourceforge.net/ SourceForge], and file releases are available for [[download]] in the [http://sourceforge.net/project/showfiles.php?group_id=3152 AOLserver Project Filelist].&lt;br /&gt;
&lt;br /&gt;
== What platforms does AOLserver support? ==&lt;br /&gt;
&lt;br /&gt;
'''AOLserver''' is known to compile and run on the following platforms:&lt;br /&gt;
* Linux 2.2 (i386), 2.4 and 2.6&lt;br /&gt;
* Windows 95/98/NT/2K/XP (i386) (partially supported, see #6)&lt;br /&gt;
* FreeBSD 3.4 (i386)&lt;br /&gt;
* OpenBSD 2.5 (i386)&lt;br /&gt;
* UnixWare 7.x (i386)&lt;br /&gt;
* DEC Tru64 &amp;amp; OSF/1 4.0 (alpha)&lt;br /&gt;
* Solaris 2.x (sparc), Solaris 2.10 (x86)&lt;br /&gt;
* HP/UX 10 &amp;amp; 11 (hppa)&lt;br /&gt;
* Irix 6.x (mips)&lt;br /&gt;
* Apple MacOS X 10.3 (ppc), 10.4 (ppc)&lt;br /&gt;
&lt;br /&gt;
== How is AOLserver licensed and distributed? ==&lt;br /&gt;
&lt;br /&gt;
Via the [[AOLserver Public License]], viewable at http://aolserver.com/license/.&lt;br /&gt;
&lt;br /&gt;
== How does AOLserver performance compare to other major servers? ==&lt;br /&gt;
&lt;br /&gt;
[[Brady Wetherington]] says:  On Unix, AOLserver can generate many, many dynamic pages very quickly and reliably. It also has some special code paths designed to speed up processing of static pages (fastpath), though I don't use that very much, personally.  Along with the database connection pools, it's definitely one of the highest-performance web-based database systems I've used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How is it different from Apache HTTP Server? ==&lt;br /&gt;
&lt;br /&gt;
The current Apache HTTP Server&lt;br /&gt;
* is part of / a project of the Apache Software Foundation. The process of development and decision making is working for years and accepted by all participants&lt;br /&gt;
* allows to run applications in a process-pre-forking or multi-threaded environment by design&lt;br /&gt;
* is the leading webserver, so it is widely known, accepted and supported&lt;br /&gt;
* is itself a subproject accompanied by lots of well known other projects and frameworks (like Ant, Jakarta, Struts...)&lt;br /&gt;
&lt;br /&gt;
In contrast AOLserver&lt;br /&gt;
* can do lots of use cases that are done with Apache modules with a few lines of TCL code (via registered filters and procs)&lt;br /&gt;
* is bound to its multi-threaded architecture that has its own disadvantages, depending on what you want to do&lt;br /&gt;
&lt;br /&gt;
== How is it different from &amp;lt;insert other webserver&amp;gt;? ==&lt;br /&gt;
&lt;br /&gt;
???&lt;br /&gt;
&lt;br /&gt;
== Where is AOLserver appropriate?  Where is it not? ==&lt;br /&gt;
&lt;br /&gt;
It is not appropriate...&lt;br /&gt;
* when you want to do virtual hosting for multiple customers.  For static content, AOLserver is fine - you're just serving static content.  For dynamic, server-side functionality, to get the level of privilege separation necessary, you'd have to run a separate nsd per customer to ensure that one customer can't access the content/data of another's.  There are apparently some folks out there who have set up AOLserver just this way and are doing just this.&lt;br /&gt;
* when the code you want to use is not thread-safe (and you are not able to change that)&lt;br /&gt;
* when your main application makes heavy use of cgi-tools or other scripting languages like PHP or Phython (in general: where currently no active dedicated maintainer for corresponding modules is known)&lt;br /&gt;
* when you need backup of a large world wide community that uses tools, modules and code you can find and read in every single computer magazine. AOLserver and TCL are niche products, which only means they are not sexy to the broad audience, but are used intensively by a sophisticated, intelligent minority&lt;br /&gt;
* when you know you would need more than one day to convince your customer to use it (in other words: if you use technology the first time don't let your most important customer be the beta tester)&lt;br /&gt;
&lt;br /&gt;
It is appropriate...&lt;br /&gt;
* when you want to make maximum use of your machines hardware ressources: AOLserver is a highly configurable beast that allows you to run big websites&lt;br /&gt;
* when you plan to run a website that makes heavy use of one or more databases (using pooled connections)&lt;br /&gt;
* when you want to cache lots or all of your static files (.html,.gif,.css.,.js ...) in your servers memory (via modules fastpath and nscache)&lt;br /&gt;
* when you like the good feeling of running and coding your apps on a well-tested multi-threaded server architecture. The server never has been a process-forking one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is if you know your requirements and your scope is fairly stable and you feel comfortable you can predict the future, and if all signs point to the app. remaining small-to-medium in usage/traffic, then pick whatever platform or technology you like the best -- it really won't make a difference.  But, if you think that it's a very real possibility you'll need&lt;br /&gt;
to scale up capacity to meet growing demand/traffic, possibly indefinitely, then yes, the hidden cost of re-architecting or migrating to a different technology can be a killer when you have to use the words &amp;quot;sunk cost&amp;quot; to describe the originally developed system.  In that case, you may be better off starting with implementing with AOLserver, as its performance &amp;quot;ceiling&amp;quot; so to speak is higher than other technologies.  (TODO: Benchmarks demonstrating this empirically?)&lt;br /&gt;
&lt;br /&gt;
== How do I get started with AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;need to link to a newbie guide HOWTO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How can I learn more about AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
Start by reading the [[Documentation]], which is still a work-in-progress.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;package require&amp;quot; doesn't work!  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
Here's the relevant portion of a message [[Dossy Shiobara]] sent to the AOLserver mailing list back on 16 June 2000:&lt;br /&gt;
&lt;br /&gt;
  set tcl_library [file join $tcl_pkgPath tcl${tcl_version}]&lt;br /&gt;
  source [file join $tcl_library init.tcl]&lt;br /&gt;
&lt;br /&gt;
  package require works like a charm after that :-)&lt;br /&gt;
&lt;br /&gt;
There you have it.  Perhaps, some day, this won't be a necessary step.  But, in the meantime ...&lt;br /&gt;
&lt;br /&gt;
''As of AOLserver 4.0 and perhaps even a late version of 3.5.x, this step is no longer necessary.''&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;ns_set update [ns_conn outputheaders] Content-Type&amp;quot; results in the server sending two copies of the Content-Type header.  Why? ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;ns_set update [ns_conn outputheaders $conn] Content-Type {application/x-tcl}&amp;quot; does not work in .adp files as I wish.  The server always returns two copies of the Content-Type header, one as application/x-tcl, another as text/html and clients(galeon, tcl http package) always use the second.  How do I remove the second Content-Type?'''&lt;br /&gt;
&lt;br /&gt;
Good question -- this is really a bug that needs to be fixed in the server code itself.&lt;br /&gt;
&lt;br /&gt;
== How can I get Tclet scripts served from AOLserver to run inside the Tcl Plugin? ==&lt;br /&gt;
&lt;br /&gt;
Someone asks: ''I have an aolserver for OpenACS.  I installed Tcl Plugin which works well with classic Tclets on Tcl Plugin Home Pages.  But with Aolserver, it doesn't work.... Do you know the answer of this?''&lt;br /&gt;
&lt;br /&gt;
== How can I compile AOLserver on HP-UX, both 10.20 and 11.x? ==&lt;br /&gt;
&lt;br /&gt;
[[Dossy]]: Good question.  If I had easy access to HP-UX machines, I'd try it myself.  AOLserver 4.x should hopefully build on HP-UX without any changes, but I'm only guessing.&lt;br /&gt;
&lt;br /&gt;
HPUX doesn't implement a lot of BSD/POSIX IPC functions, or so I hear.&lt;br /&gt;
&lt;br /&gt;
== I'm getting an error compiling AOLserver about POLLIN, POLLOUT and POLLPRI being redefined.  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
AOLserver requires that the &amp;quot;configure&amp;quot; script be run using the GNU C (gcc) compiler.  Try running the configure script like this:&lt;br /&gt;
&lt;br /&gt;
    $ CC=gcc ./configure --args...&lt;br /&gt;
&lt;br /&gt;
== Does AOLserver support HTTP Keep-Alive?  I'm sending a HTTP/1.1 request via httperf and AOLserver isn't doing Keep-Alive like Apache does!  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
Actually, nothing is wrong. You just need to tell httperf to include the headers that tell AOLserver to expect multiple requests per connection. Add '--add_header &amp;quot;Connection: Keep-Alive\n&amp;quot;' to your httperf request. &lt;br /&gt;
&lt;br /&gt;
The issue is that Apache and AOLserver chose opposite default behaviors when interpretting [http://www.ietf.org/rfc/rfc2068.txt RFC 2068 section 8.1.2.1]:&lt;br /&gt;
&lt;br /&gt;
   An HTTP/1.1 server MAY assume that a HTTP/1.1 client intends to&lt;br /&gt;
   maintain a persistent connection unless a Connection header including&lt;br /&gt;
   the connection-token &amp;quot;close&amp;quot; was sent in the request. If the server&lt;br /&gt;
   chooses to close the connection immediately after sending the&lt;br /&gt;
   response, it SHOULD send a Connection header including the&lt;br /&gt;
   connection-token close.&lt;br /&gt;
&lt;br /&gt;
   An HTTP/1.1 client MAY expect a connection to remain open, but would&lt;br /&gt;
   decide to keep it open based on whether the response from a server&lt;br /&gt;
   contains a Connection header with the connection-token close. In case&lt;br /&gt;
   the client does not want to maintain a connection for more than that&lt;br /&gt;
   request, it SHOULD send a Connection header including the&lt;br /&gt;
   connection-token close.&lt;br /&gt;
&lt;br /&gt;
The key here is &amp;quot;MAY&amp;quot; -- AOLserver (currently, as of 4.0.10) chooses not to assume a Keep-Alive connection unless the client explicitly requests it by sending &amp;quot;Connection: Keep-Alive&amp;quot; in the HTTP request header.  This may change in the future (HTTP/1.1 requests default to Keep-Alive unless the client explicitly sends &amp;quot;Connection: close&amp;quot; -- apparently this is how Apache works).&lt;br /&gt;
&lt;br /&gt;
== AOLserver 4.0.10 is consuming all my memory ==&lt;br /&gt;
&lt;br /&gt;
[http://www.mail-archive.com/aolserver%40listserv.aol.com/msg09104.html Bas Scheffers says]: What version of Tcl did you use? Use 8.4.11 or 8.4.6, but nothing in between as they have a big memory leak.&lt;br /&gt;
&lt;br /&gt;
Note that debian sarge includes tcl 8.4.9 (as of 2006-01-03).&lt;br /&gt;
&lt;br /&gt;
== How do I customize standard HTTP responses? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Internal redirects&lt;br /&gt;
#&lt;br /&gt;
ns_section &amp;quot;ns/server/${servername}/redirects&amp;quot;&lt;br /&gt;
ns_param   404 &amp;quot;/notfound.html&amp;quot;      ;# Not Found error page&lt;br /&gt;
ns_param   500 &amp;quot;/servererror.html&amp;quot;   ;# Server Error page&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Frequently_Asked_Questions</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Frequently_Asked_Questions"/>
				<updated>2006-12-15T16:29:53Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
= Frequently Asked Questions =&lt;br /&gt;
&lt;br /&gt;
(Please add new questions at the very bottom  of the list.  Thanks.)&lt;br /&gt;
&lt;br /&gt;
== What is AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
AOLserver is America Online's Open Source web server.  AOLserver is the backbone of the largest and busiest production environments in the world.&lt;br /&gt;
&lt;br /&gt;
AOLserver is a multithreaded, Tcl-enabled, massively-scalable and extensible web server tuned for large scale, dynamic web sites. AOLserver also includes complete database integration and a dynamic page scripting language.&lt;br /&gt;
&lt;br /&gt;
== What is the latest version of AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
* The latest stable 3.4.x version is 3.4.2 released 18 September 2001.&lt;br /&gt;
* The latest stable 3.5.x version is 3.5.11 released 17 October 2003.&lt;br /&gt;
* The latest stable 4.0.x version is 4.0.10 released 18 January 2005.&lt;br /&gt;
* The latest stable 4.5.x version is 4.5.0 released 27 June 2006.&lt;br /&gt;
* Current development (CVS HEAD) is 4.5.0.&lt;br /&gt;
&lt;br /&gt;
== Where can I get AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
The AOLserver project is hosted at [http://sourceforge.net/ SourceForge], and file releases are available for [[download]] in the [http://sourceforge.net/project/showfiles.php?group_id=3152 AOLserver Project Filelist].&lt;br /&gt;
&lt;br /&gt;
== What platforms does AOLserver support? ==&lt;br /&gt;
&lt;br /&gt;
'''AOLserver''' is known to compile and run on the following platforms:&lt;br /&gt;
* Linux 2.2 (i386), 2.4 and 2.6&lt;br /&gt;
* Windows 95/98/NT/2K/XP (i386) (partially supported, see #6)&lt;br /&gt;
* FreeBSD 3.4 (i386)&lt;br /&gt;
* OpenBSD 2.5 (i386)&lt;br /&gt;
* UnixWare 7.x (i386)&lt;br /&gt;
* DEC Tru64 &amp;amp; OSF/1 4.0 (alpha)&lt;br /&gt;
* Solaris 2.x (sparc), Solaris 2.10 (x86)&lt;br /&gt;
* HP/UX 10 &amp;amp; 11 (hppa)&lt;br /&gt;
* Irix 6.x (mips)&lt;br /&gt;
* Apple MacOS X 10.3 (ppc), 10.4 (ppc)&lt;br /&gt;
&lt;br /&gt;
== How is AOLserver licensed and distributed? ==&lt;br /&gt;
&lt;br /&gt;
Via the [[AOLserver Public License]], viewable at http://aolserver.com/license/.&lt;br /&gt;
&lt;br /&gt;
== How does AOLserver performance compare to other major servers? ==&lt;br /&gt;
&lt;br /&gt;
[[Brady Wetherington]] says:  On Unix, AOLserver can generate many, many dynamic pages very quickly and reliably. It also has some special code paths designed to speed up processing of static pages (fastpath), though I don't use that very much, personally.  Along with the database connection pools, it's definitely one of the highest-performance web-based database systems I've used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How is it different from Apache HTTP Server? ==&lt;br /&gt;
&lt;br /&gt;
The current Apache HTTP Server&lt;br /&gt;
* is part of / a project of the Apache Software Foundation. The process of development and decision making is working for years and accepted by all participants&lt;br /&gt;
* allows to run applications in a process-pre-forking or multi-threaded environment by design&lt;br /&gt;
* is the leading webserver, so it is widely known, accepted and supported&lt;br /&gt;
* is itself a subproject accompanied by lots of well known other projects and frameworks (like Ant, Jakarta, Struts...)&lt;br /&gt;
&lt;br /&gt;
In contrast AOLserver&lt;br /&gt;
* can do lots of use cases that are done with Apache modules with a few lines of TCL code (via registered filters and procs)&lt;br /&gt;
* is bound to its multi-threaded architecture that has its own disadvantages, depending on what you want to do&lt;br /&gt;
&lt;br /&gt;
== How is it different from &amp;lt;insert other webserver&amp;gt;? ==&lt;br /&gt;
&lt;br /&gt;
???&lt;br /&gt;
&lt;br /&gt;
== Where is AOLserver appropriate?  Where is it not? ==&lt;br /&gt;
&lt;br /&gt;
It is not appropriate...&lt;br /&gt;
* when you want to do virtual hosting for multiple customers.  For static content, AOLserver is fine - you're just serving static content.  For dynamic, server-side functionality, to get the level of privilege separation necessary, you'd have to run a separate nsd per customer to ensure that one customer can't access the content/data of another's.  There are apparently some folks out there who have set up AOLserver just this way and are doing just this.&lt;br /&gt;
* when the code you want to use is not thread-safe (and you are not able to change that)&lt;br /&gt;
* when your main application makes heavy use of cgi-tools or other scripting languages like PHP or Phython (in general: where currently no active dedicated maintainer for corresponding modules is known)&lt;br /&gt;
* when you need backup of a large world wide community that uses tools, modules and code you can find and read in every single computer magazine. AOLserver and TCL are niche products, which only means they are not sexy to the broad audience, but are used intensively by a sophisticated, intelligent minority&lt;br /&gt;
* when you know you would need more than one day to convince your customer to use it (in other words: if you use technology the first time don't let your most important customer be the beta tester)&lt;br /&gt;
&lt;br /&gt;
It is appropriate...&lt;br /&gt;
* when you want to make maximum use of your machines hardware ressources: AOLserver is a highly configurable beast that allows you to run big websites&lt;br /&gt;
* when you plan to run a website that makes heavy use of one or more databases (using pooled connections)&lt;br /&gt;
* when you want to cache lots or all of your static files (.html,.gif,.css.,.js ...) in your servers memory (via modules fastpath and nscache)&lt;br /&gt;
* when you like the good feeling of running and coding your apps on a well-tested multi-threaded server architecture. The server never has been a process-forking one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is if you know your requirements and your scope is fairly stable and you feel comfortable you can predict the future, and if all signs point to the app. remaining small-to-medium in usage/traffic, then pick whatever platform or technology you like the best -- it really won't make a difference.  But, if you think that it's a very real possibility you'll need&lt;br /&gt;
to scale up capacity to meet growing demand/traffic, possibly indefinitely, then yes, the hidden cost of re-architecting or migrating to a different technology can be a killer when you have to use the words &amp;quot;sunk cost&amp;quot; to describe the originally developed system.  In that case, you may be better off starting with implementing with AOLserver, as its performance &amp;quot;ceiling&amp;quot; so to speak is higher than other technologies.  (TODO: Benchmarks demonstrating this empirically?)&lt;br /&gt;
&lt;br /&gt;
== How do I get started with AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;need to link to a newbie guide HOWTO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How can I learn more about AOLserver? ==&lt;br /&gt;
&lt;br /&gt;
Start by reading the [[Documentation]], which is still a work-in-progress.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;package require&amp;quot; doesn't work!  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
Here's the relevant portion of a message [[Dossy Shiobara]] sent to the AOLserver mailing list back on 16 June 2000:&lt;br /&gt;
&lt;br /&gt;
  set tcl_library [file join $tcl_pkgPath tcl${tcl_version}]&lt;br /&gt;
  source [file join $tcl_library init.tcl]&lt;br /&gt;
&lt;br /&gt;
  package require works like a charm after that :-)&lt;br /&gt;
&lt;br /&gt;
There you have it.  Perhaps, some day, this won't be a necessary step.  But, in the meantime ...&lt;br /&gt;
&lt;br /&gt;
''As of AOLserver 4.0 and perhaps even a late version of 3.5.x, this step is no longer necessary.''&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;ns_set update [ns_conn outputheaders] Content-Type&amp;quot; results in the server sending two copies of the Content-Type header.  Why? ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;ns_set update [ns_conn outputheaders $conn] Content-Type {application/x-tcl}&amp;quot; does not work in .adp files as I wish.  The server always returns two copies of the Content-Type header, one as application/x-tcl, another as text/html and clients(galeon, tcl http package) always use the second.  How do I remove the second Content-Type?'''&lt;br /&gt;
&lt;br /&gt;
Good question -- this is really a bug that needs to be fixed in the server code itself.&lt;br /&gt;
&lt;br /&gt;
== How can I get Tclet scripts served from AOLserver to run inside the Tcl Plugin? ==&lt;br /&gt;
&lt;br /&gt;
Someone asks: ''I have an aolserver for OpenACS.  I installed Tcl Plugin which works well with classic Tclets on Tcl Plugin Home Pages.  But with Aolserver, it doesn't work.... Do you know the answer of this?''&lt;br /&gt;
&lt;br /&gt;
== How can I compile AOLserver on HP-UX, both 10.20 and 11.x? ==&lt;br /&gt;
&lt;br /&gt;
[[Dossy]]: Good question.  If I had easy access to HP-UX machines, I'd try it myself.  AOLserver 4.x should hopefully build on HP-UX without any changes, but I'm only guessing.&lt;br /&gt;
&lt;br /&gt;
HPUX doesn't implement a lot of BSD/POSIX IPC functions, or so I hear.&lt;br /&gt;
&lt;br /&gt;
== I'm getting an error compiling AOLserver about POLLIN, POLLOUT and POLLPRI being redefined.  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
AOLserver requires that the &amp;quot;configure&amp;quot; script be run using the GNU C (gcc) compiler.  Try running the configure script like this:&lt;br /&gt;
&lt;br /&gt;
    $ CC=gcc ./configure --args...&lt;br /&gt;
&lt;br /&gt;
== Does AOLserver support HTTP Keep-Alive?  I'm sending a HTTP/1.1 request via httperf and AOLserver isn't doing Keep-Alive like Apache does!  What's wrong? ==&lt;br /&gt;
&lt;br /&gt;
Actually, nothing is wrong. You just need to tell httperf to include the headers that tell AOLserver to expect multiple requests per connection. Add '--add_header &amp;quot;Connection: Keep-Alive\n&amp;quot;' to your httperf request. &lt;br /&gt;
&lt;br /&gt;
The issue is that Apache and AOLserver chose opposite default behaviors when interpretting [http://www.ietf.org/rfc/rfc2068.txt RFC 2068 section 8.1.2.1]:&lt;br /&gt;
&lt;br /&gt;
   An HTTP/1.1 server MAY assume that a HTTP/1.1 client intends to&lt;br /&gt;
   maintain a persistent connection unless a Connection header including&lt;br /&gt;
   the connection-token &amp;quot;close&amp;quot; was sent in the request. If the server&lt;br /&gt;
   chooses to close the connection immediately after sending the&lt;br /&gt;
   response, it SHOULD send a Connection header including the&lt;br /&gt;
   connection-token close.&lt;br /&gt;
&lt;br /&gt;
   An HTTP/1.1 client MAY expect a connection to remain open, but would&lt;br /&gt;
   decide to keep it open based on whether the response from a server&lt;br /&gt;
   contains a Connection header with the connection-token close. In case&lt;br /&gt;
   the client does not want to maintain a connection for more than that&lt;br /&gt;
   request, it SHOULD send a Connection header including the&lt;br /&gt;
   connection-token close.&lt;br /&gt;
&lt;br /&gt;
The key here is &amp;quot;MAY&amp;quot; -- AOLserver (currently, as of 4.0.10) chooses not to assume a Keep-Alive connection unless the client explicitly requests it by sending &amp;quot;Connection: Keep-Alive&amp;quot; in the HTTP request header.  This may change in the future (HTTP/1.1 requests default to Keep-Alive unless the client explicitly sends &amp;quot;Connection: close&amp;quot; -- apparently this is how Apache works).&lt;br /&gt;
&lt;br /&gt;
== AOLserver 4.0.10 is consuming all my memory ==&lt;br /&gt;
&lt;br /&gt;
[http://www.mail-archive.com/aolserver%40listserv.aol.com/msg09104.html Bas Scheffers says]: What version of Tcl did you use? Use 8.4.11 or 8.4.6, but nothing in between as they have a big memory leak.&lt;br /&gt;
&lt;br /&gt;
Note that debian sarge includes tcl 8.4.9 (as of 2006-01-03).&lt;br /&gt;
&lt;br /&gt;
== How do I customize standard HTTP responses? ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Internal redirects&lt;br /&gt;
#&lt;br /&gt;
ns_section &amp;quot;ns/server/${servername}/redirects&amp;quot;&lt;br /&gt;
ns_param   404 &amp;quot;/notfound.html&amp;quot;      ;# Not Found error page&lt;br /&gt;
ns_param   500 &amp;quot;/servererror.html&amp;quot;   ;# Server Error page&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Talk:Ns_stats</id>
		<title>Talk:Ns stats</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Talk:Ns_stats"/>
				<updated>2006-11-07T12:56:30Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The link at the top of the page doesn't point to anything.&lt;br /&gt;
&lt;br /&gt;
The rendering of the example at the bottom is broken; the source appears good, but the rendering is flawed.&lt;br /&gt;
&lt;br /&gt;
: ''Actually, the source formatting was messed up--this was another victim of the WiKit-to-MediaWiki switch.  I've updated the formatting--give it another shot and let me know if it's still wrong.'' -- [[User:Dossy|Dossy]] 07:56, 7 November 2006 (EST)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_stats</id>
		<title>Ns stats</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_stats"/>
				<updated>2006-11-07T12:55:26Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_stats.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
ns_stats - Return command stats information&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
'''ns_stats''' ''?option? ?pattern?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
This command returns proc call stats for procs which match the glob ''pattern''.  Results are sorted based on ''option'' which can be one of the following:&lt;br /&gt;
* '''-count''': results are sorted by count in descending order (default)&lt;br /&gt;
* '''-name''': results are sorted by proc name in ascending order&lt;br /&gt;
&lt;br /&gt;
In order to instruct AOLserver to keep these stats, you must define two settings in your nsd.tcl, in section ns/server/${server_name}/tcl:&lt;br /&gt;
&lt;br /&gt;
  ns_section ns/server/${server_name}/tcl&lt;br /&gt;
  ns_param statlevel x&lt;br /&gt;
  ns_param statmaxbuf y&lt;br /&gt;
&lt;br /&gt;
Stats will be collected if statlevel is greater than 0.  It gets passed to Tcl_CreateTrace() like so:&lt;br /&gt;
&lt;br /&gt;
  Tcl_CreateTrace(interp, nsconf.tcl.statlevel, StatsTrace, NULL);&lt;br /&gt;
&lt;br /&gt;
If statsmaxbuf is less than or equal to zero, there will be no stats buffer and the global table will be updated directly, according to the comment:&lt;br /&gt;
&lt;br /&gt;
    236     /*&lt;br /&gt;
    237      * If buffering is not enabled, update the global table directly&lt;br /&gt;
    238      * (this could be a source of lock contention).  Otherwise, update&lt;br /&gt;
    239      * this thread's table, flushing if the buffer limit is exceeded.&lt;br /&gt;
    240      */&lt;br /&gt;
&lt;br /&gt;
Otherwise, statmaxbuf specifies the number of entries in the stats buffer hash table.&lt;br /&gt;
&lt;br /&gt;
This is all documented from AOLserver 3.4.2, nsd/tclstats.c.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
Here is a sample ns_stats.adp to use to display the output of ns_stats:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;xmp&amp;gt;&lt;br /&gt;
  &amp;lt;%&lt;br /&gt;
  ns_adp_puts [format &amp;quot;%-60s %s&amp;quot; command {times invoked}]&lt;br /&gt;
  ns_adp_puts &amp;quot;[string repeat = 60] [string repeat = 13]&amp;quot;&lt;br /&gt;
  foreach {key value} [ns_stats] {&lt;br /&gt;
      ns_adp_puts [format &amp;quot;%-60s %lu&amp;quot; $key $value]&lt;br /&gt;
  }&lt;br /&gt;
  %&amp;gt;&lt;br /&gt;
  &amp;lt;/xmp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_http</id>
		<title>Ns http</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_http"/>
				<updated>2006-09-09T20:10:26Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: fix wikitext for code examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;manpage&amp;gt;ns_http&amp;lt;/manpage&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_http - Simple HTTP client functionality&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_http''' ''option ?arg arg ...?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command provides a simple HTTP client mechanism.&lt;br /&gt;
&lt;br /&gt;
: The legal ''option''s (which may be abbreviated) are:&lt;br /&gt;
:* '''ns_http cancel''' ''id''&lt;br /&gt;
:* '''ns_http cleanup'''&lt;br /&gt;
:* '''ns_http queue''' ''method url ?body? ?headers?''&lt;br /&gt;
&lt;br /&gt;
: ''body'' is the value which will be sent as the HTTP request body.  ''headers'' is the [[ns_set]] ID containing the additional headers to include in the HTTP request.&lt;br /&gt;
:* '''ns_http wait''' ''id resultsVar ?timeout? ?headers? ?-servicetime svcTime?''&lt;br /&gt;
&lt;br /&gt;
: ''resultsVar'' is the name of a variable that should be used to store the HTTP response body.  Default ''timeout'' is &amp;quot;2:0&amp;quot; (2s, 0usec).  ''headers'' is the [[ns_set]] ID which will receive the headers from the HTTP response.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
Valid HTTP GET:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  % set id [ns_http queue GET http://aolserver.com/]&lt;br /&gt;
  http0&lt;br /&gt;
  % set status [ns_http wait $id results]&lt;br /&gt;
  1&lt;br /&gt;
  % string range $results 0 60&lt;br /&gt;
  &amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Timed out HTTP GET:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  % set id [ns_http queue GET http://aolserver.com:12345/]&lt;br /&gt;
  http0&lt;br /&gt;
  % set status [ns_http wait $id results 0]&lt;br /&gt;
  0&lt;br /&gt;
  % set results&lt;br /&gt;
  timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bogus HTTP GET:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  % catch {ns_http queue GET http://nonexistant.domain/} err&lt;br /&gt;
  1&lt;br /&gt;
  % set err&lt;br /&gt;
  could not connect to : http://nonexistant.domain/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_httpopen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Downloads</id>
		<title>Downloads</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Downloads"/>
				<updated>2006-09-05T21:10:43Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: add aolserver_v45_bp branch tarball snapshot link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looking to download AOLserver related files and resources?  Here's a list of what's available:&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=3152 AOLserver Files at SourceForge] &lt;br /&gt;
* Latest 4.0.x release, 4.0.10: [http://aolserver.com/downloads/aolserver-4.0.10-src.tar.gz aolserver-4.0.10-src.tar.gz]&lt;br /&gt;
* Latest 4.5.x release, 4.5.0: [http://aolserver.com/downloads/aolserver-4.5.0-src.tar.gz aolserver-4.5.0-src.tar.gz]&lt;br /&gt;
&lt;br /&gt;
Nightly CVS snapshots, refreshed daily at 01:00 AM US/Pacific time (as long as SourceForge is working):&lt;br /&gt;
&lt;br /&gt;
* AOLserver HEAD: [http://aolserver.com/files/aolserver-HEAD-src.tar.gz aolserver-HEAD-src.tar.gz]&lt;br /&gt;
* AOLserver aolserver_v40_bp branch: [http://aolserver.com/files/aolserver-aolserver_v40_bp-src.tar.gz aolserver-aolserver_v40_bp-src.tar.gz]&lt;br /&gt;
* AOLserver aolserver_v45_bp branch: [http://aolserver.com/files/aolserver-aolserver_v45_bp-src.tar.gz aolserver-aolserver_v45_bp-src.tar.gz]&lt;br /&gt;
* nsopenssl HEAD: [http://aolserver.com/files/nsopenssl-HEAD-src.tar.gz nsopenssl-HEAD-src.tar.gz]&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Batteries Included&amp;quot; binary distributions ==&lt;br /&gt;
&lt;br /&gt;
If a &amp;quot;[[Batteries Included]]&amp;quot; binary distribution of AOLserver were to be made available, downloads for it would be available here.&lt;br /&gt;
&lt;br /&gt;
== AOLserver on Win32 ==&lt;br /&gt;
&lt;br /&gt;
These binary releases are unsupported and considered alpha-quality at best.  Use them at your own risk, but if you do find any issues, please file a [http://sourceforge.net/tracker/?group_id=3152&amp;amp;atid=103152 bug report].  Thanks!&lt;br /&gt;
&lt;br /&gt;
* [http://aolserver.com/downloads/aolserver-4.1.0a-win32-20040821.zip AOLserver 4.1.0a (built 20040821) and Tcl 8.4.6 for Win32]&lt;br /&gt;
* [http://aolserver.com/downloads/aolserver-4.0.7-win32.zip AOLserver 4.0.7 and Tcl 8.4.6 for Win32]&lt;br /&gt;
&lt;br /&gt;
If you want to build your own binaries for Win32, you should read [[How to build AOLserver on Win32]].&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Downloads</id>
		<title>Downloads</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Downloads"/>
				<updated>2006-09-05T21:10:11Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: add 4.5.0 download tarball link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looking to download AOLserver related files and resources?  Here's a list of what's available:&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=3152 AOLserver Files at SourceForge] &lt;br /&gt;
* Latest 4.0.x release, 4.0.10: [http://aolserver.com/downloads/aolserver-4.0.10-src.tar.gz aolserver-4.0.10-src.tar.gz]&lt;br /&gt;
* Latest 4.5.x release, 4.5.0: [http://aolserver.com/downloads/aolserver-4.5.0-src.tar.gz aolserver-4.5.0-src.tar.gz]&lt;br /&gt;
&lt;br /&gt;
Nightly CVS snapshots, refreshed daily at 01:00 AM US/Pacific time (as long as SourceForge is working):&lt;br /&gt;
&lt;br /&gt;
* AOLserver HEAD: [http://aolserver.com/files/aolserver-HEAD-src.tar.gz aolserver-HEAD-src.tar.gz]&lt;br /&gt;
* AOLserver aolserver_v40_bp branch: [http://aolserver.com/files/aolserver-aolserver_v40_bp-src.tar.gz aolserver-aolserver_v40_bp-src.tar.gz]&lt;br /&gt;
* nsopenssl HEAD: [http://aolserver.com/files/nsopenssl-HEAD-src.tar.gz nsopenssl-HEAD-src.tar.gz]&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Batteries Included&amp;quot; binary distributions ==&lt;br /&gt;
&lt;br /&gt;
If a &amp;quot;[[Batteries Included]]&amp;quot; binary distribution of AOLserver were to be made available, downloads for it would be available here.&lt;br /&gt;
&lt;br /&gt;
== AOLserver on Win32 ==&lt;br /&gt;
&lt;br /&gt;
These binary releases are unsupported and considered alpha-quality at best.  Use them at your own risk, but if you do find any issues, please file a [http://sourceforge.net/tracker/?group_id=3152&amp;amp;atid=103152 bug report].  Thanks!&lt;br /&gt;
&lt;br /&gt;
* [http://aolserver.com/downloads/aolserver-4.1.0a-win32-20040821.zip AOLserver 4.1.0a (built 20040821) and Tcl 8.4.6 for Win32]&lt;br /&gt;
* [http://aolserver.com/downloads/aolserver-4.0.7-win32.zip AOLserver 4.0.7 and Tcl 8.4.6 for Win32]&lt;br /&gt;
&lt;br /&gt;
If you want to build your own binaries for Win32, you should read [[How to build AOLserver on Win32]].&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Nsv_incr</id>
		<title>Nsv incr</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Nsv_incr"/>
				<updated>2006-06-27T14:44:30Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/nsv_incr.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: nsv_incr - Increment the value of the element in the nsv array ''arrayName'' specified by ''key''&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''nsv_incr''' ''arrayName'' ''key'' ''?increment?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: If ''increment'' is supplied then its value (which must be an integer) is added to the value of the element ''key''; otherwise 1 is added to the value of the element ''key''. Unlike the TCL equivalent if ''key'' does not exists it is created. Returns the new value of the element specified by ''key''. Internally interlocked so it is thread safe, no mutex required.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % nsv_incr shared_array foo&lt;br /&gt;
    1&lt;br /&gt;
    % nsv_incr shared_array foo -1&lt;br /&gt;
    0&lt;br /&gt;
&lt;br /&gt;
Is this a good implementation with behavior similar to using ns_mutex or ns_critsec, except that later threads do not wait for the first thread to exit the script?&lt;br /&gt;
&lt;br /&gt;
: ''What you're looking for is a kind of &amp;quot;ns_mutex trylock&amp;quot; type of functionality, where if the mutex is locked the caller doesn't block/sleep, but if it's unlocked, the caller locks the mutex.  Interesting approach using NSVs, sure!'' -- [[User:Dossy|Dossy]] 10:44, 27 June 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
    # Return value 1 indicates that the call was executed normally&lt;br /&gt;
    # Return value 0 indicates that another thread was executing&lt;br /&gt;
    # the code so this thread was excluded&lt;br /&gt;
    &lt;br /&gt;
    proc write_special_file {data} {&lt;br /&gt;
        if {[nsv_incr one_thread_at_a_time $key] == 1} {&lt;br /&gt;
            set had_error [catch {&lt;br /&gt;
                set handle [open special_file w]&lt;br /&gt;
                puts $handle $data&lt;br /&gt;
                close $handle&lt;br /&gt;
            } message]&lt;br /&gt;
            nsv_set one_thread_at_a_time $key 0&lt;br /&gt;
            if {$had_error} {&lt;br /&gt;
                error $message&lt;br /&gt;
            }&lt;br /&gt;
            return 1&lt;br /&gt;
        } else {&lt;br /&gt;
            return 0&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    proc read_special_file {result_varname} {&lt;br /&gt;
        if {[nsv_incr one_thread_at_a_time $key] == 1} {&lt;br /&gt;
            upvar $result_varname result&lt;br /&gt;
            set had_error [catch {&lt;br /&gt;
                set handle [open special_file r]&lt;br /&gt;
                set result [read $handle]&lt;br /&gt;
                close $handle&lt;br /&gt;
            } message]&lt;br /&gt;
            nsv_set one_thread_at_a_time $key 0&lt;br /&gt;
            if {$had_error} {&lt;br /&gt;
                error $message&lt;br /&gt;
            }&lt;br /&gt;
            return 1&lt;br /&gt;
        } else {&lt;br /&gt;
            return 0&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    proc change_special_file {data result_varname} {&lt;br /&gt;
        if {[nsv_incr one_thread_at_a_time $key] == 1} {&lt;br /&gt;
            upvar $result_varname result&lt;br /&gt;
            # BOTH READ AND WRITE CALLS WILL DO NOTHING&lt;br /&gt;
            read_special_file result&lt;br /&gt;
            write_special_file $data&lt;br /&gt;
            nsv_set one_thread_at_a_time $key 0&lt;br /&gt;
            return 1&lt;br /&gt;
        } else {&lt;br /&gt;
            return 0&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[Thread-shared Variables]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Dossy_Shiobara</id>
		<title>Dossy Shiobara</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Dossy_Shiobara"/>
				<updated>2006-05-24T14:48:59Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: [mailto:dossy@panoptic.com]&lt;br /&gt;
: Location: US, NJ/NY/VA&lt;br /&gt;
&lt;br /&gt;
[[Category:Person|Shiobara, Dossy]]&lt;br /&gt;
&lt;br /&gt;
I run the [[AOLserver Wiki]] at [[Panoptic]].  If there are any problems with it, ''abuse me''.&lt;br /&gt;
&lt;br /&gt;
My blog is at http://dossy.org/ aka [http://dossy.org/ Dossy's Blog] -- I try to post regularly (at least once a day, minimally once a week) and I often try to post about AOLserver-related matters.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
My current AOLserver-related projects are to:&lt;br /&gt;
&lt;br /&gt;
* Ensure we meet all our goals and milestones for the AOLserver Project according to the published 2004 [[Roadmap]].&lt;br /&gt;
* Start formalizing the testing/QA procedures and pre-release checklist that will go into every release: [[How are releases tested]]?&lt;br /&gt;
* [[nssic]] -- the Server Inter-Connect module&lt;br /&gt;
&lt;br /&gt;
The following items are old and need to be updated:&lt;br /&gt;
&lt;br /&gt;
* Stress-test and release version 0.6 of [[nsmysql]] (an internal database driver for MySQL)&lt;br /&gt;
* Write a configuration tool which will manage and generate nsd.tcl files&lt;br /&gt;
* Work on the [[AOLserver Packages]] - Binary distribution of AOLserver in the many popular package mangement formats like RedHat's RPM, Debian's .deb, FreeBSD's ports, Solaris's .pkg&lt;br /&gt;
* Write a server-side session management module, [[nssession]]&lt;br /&gt;
* Clean up version 0.1pre of [[nsfreetds]] (an internal database driver that connects to Microsoft SQL Server or Sybase using FreeTDS 0.51)&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
&lt;br /&gt;
I'm starting to collect articles written about AOLserver that are available on the web.  Eventually, these will move to their own wiki page:&lt;br /&gt;
&lt;br /&gt;
* [http://www.eveandersson.com/arsdigita/asj/aolserver/introduction-1 Introduction to AOLserver, Part 1] by Philip Greenspun (LinuxWorld.com, July 1999)&lt;br /&gt;
* [http://www.linuxgazette.com/issue58/washington.html AOLserver - a web development platform] by Irving Washington (Issue 58, Linux Gazette, October 2000) &lt;br /&gt;
* [http://www.linuxgazette.com/issue63/washington.html XML parsing in AOLserver] by Irving Washington (Issue 63, Linux Gazette, February 2001)&lt;br /&gt;
* [http://www.webdeveloper.pl/aolserver__1,293,1,1,pl.html AOLserver (1)] by [[Wojciech Kocjan]] (WEBdeveloper.pl, February 2002)&lt;br /&gt;
* [http://www.webdeveloper.pl/aolserver__2,294,1,1,pl.html AOLserver (2)] by [[Wojciech Kocjan]] (WEBdeveloper.pl, March 2002)&lt;br /&gt;
* [http://www.linuxjournal.com/article/6164 Introducing AOLserver] by Reuven Lerner (Issue 101, Linux Journal, August/September 2002)&lt;br /&gt;
* [http://www.serverwatch.com/sreviews/article.php/2232651 Does AOLserver Have What It Takes to Stand Out?] by Michael Hall (ServerWatch, July 2003)&lt;br /&gt;
* [http://www.internetnews.com/dev-news/article.php/3462701 AOL Updates Its Open Source Web Server] by Sean Michael Kerner (InternetNews.com, January 2005)&lt;br /&gt;
* [http://www.linuxjournal.com/article/8986 Play Ball: Introducing Fungoes] by Mat Kovach (LinuxJournal.com, April 2006)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Just saving a funny joke that's really relevant to the work I do: [[see if it happens again]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
My current scratch pad or whiteboard contents:&lt;br /&gt;
&lt;br /&gt;
Current idiom:&lt;br /&gt;
&lt;br /&gt;
    set lock [ns_mutex create lock]&lt;br /&gt;
    ns_mutex lock $lock&lt;br /&gt;
    catch {&lt;br /&gt;
        # synchronized code here&lt;br /&gt;
    }&lt;br /&gt;
    ns_mutex unlock $lock&lt;br /&gt;
&lt;br /&gt;
Proposed change:&lt;br /&gt;
&lt;br /&gt;
    set lock [ns_mutex create lock]&lt;br /&gt;
    ns_mutex eval $lock $script&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Dossy's Blog ==&lt;br /&gt;
&lt;br /&gt;
Here's the three most recent RSS entries from my blog.  This is just testing out a MediaWiki 1.5 extension I'm working on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;feed limit=&amp;quot;3&amp;quot;&amp;gt;http://dossy.org/index.xml&amp;lt;/feed&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_return</id>
		<title>Ns return</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_return"/>
				<updated>2006-04-19T20:20:30Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: formatting tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;manpage&amp;gt;ns_return&amp;lt;/manpage&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NAME ==&lt;br /&gt;
&lt;br /&gt;
ns_connsendfp, ns_respond, ns_return, ns_returnadminnotice, ns_returnbadrequest, ns_returnerror, ns_returnfile, ns_returnforbidden, ns_returnfp, ns_returnnotfound, ns_returnnotice, ns_returnredirect, ns_returnunauthorized, ns_write - commands&lt;br /&gt;
&lt;br /&gt;
== SYNOPSIS ==&lt;br /&gt;
&lt;br /&gt;
: '''[[ns_connsendfp]]''' ''fp len''&lt;br /&gt;
: '''[[ns_respond]]'''&lt;br /&gt;
: '''ns_return''' ''status type string''&lt;br /&gt;
: '''[[ns_returnadminnotice]]''' ''status msg ?longmsg?''&lt;br /&gt;
: '''[[ns_returnbadrequest]]''' ''reason''&lt;br /&gt;
: '''[[ns_returnerror]]''' ''status msg''&lt;br /&gt;
: '''[[ns_returnfile]]''' ''status type filename''&lt;br /&gt;
: '''[[ns_returnforbidden]]'''&lt;br /&gt;
: '''[[ns_returnfp]]''' ''status type fileid len''&lt;br /&gt;
: '''[[ns_returnnotfound]]'''&lt;br /&gt;
: '''[[ns_returnnotice]]''' ''status msg ?longmsg?''&lt;br /&gt;
: '''[[ns_returnredirect]]''' ''location''&lt;br /&gt;
: '''[[ns_returnunauthorized]]'''&lt;br /&gt;
: '''[[ns_write]]''' ''string''&lt;br /&gt;
&lt;br /&gt;
== DESCRIPTION ==&lt;br /&gt;
&lt;br /&gt;
These procedures provide a simple interface for returning information to the client. They build HTTP/1.0 headers and send the appropriate data out the socket to the client. The script does not end at the time ns_return* is invoked so you can continue processing data after the client has gotten the data and closed the socket.&lt;br /&gt;
&lt;br /&gt;
''type'' should be a MIME type (see [[ns_guesstype]] for a list). ''status'' is a three-digit number fitting the pattern below:&lt;br /&gt;
&lt;br /&gt;
: 1xx Informational - Not used, but reserved for future use.&lt;br /&gt;
: 2xx Success - The action was successfully received, understood, and accepted.&lt;br /&gt;
: 3xx Redirection - Further action must be taken in order to complete the request.&lt;br /&gt;
: 4xx Client Error - The request contains bad syntax or cannot be fulfilled.&lt;br /&gt;
: 5xx Server Error - The server failed to fulfill an apparently valid request.&lt;br /&gt;
&lt;br /&gt;
Some common status values and their meanings are:&lt;br /&gt;
&lt;br /&gt;
: 201 Created&lt;br /&gt;
: 202 Accepted&lt;br /&gt;
: 203 Provisional Information&lt;br /&gt;
: 204 No Content&lt;br /&gt;
: 300 Multiple Choices&lt;br /&gt;
: 301 Moved Permanently&lt;br /&gt;
: 302 Moved Temporarily&lt;br /&gt;
: 303 Method&lt;br /&gt;
: 304 Not Modified&lt;br /&gt;
: 401 Unauthorized&lt;br /&gt;
: 402 Payment Required&lt;br /&gt;
: 403 Forbidden&lt;br /&gt;
: 404 Not Found&lt;br /&gt;
: 405 Method Not Allowed&lt;br /&gt;
: 406 None Acceptable&lt;br /&gt;
: 407 Proxy Authentication Required&lt;br /&gt;
: 408 Request Time-out&lt;br /&gt;
: 409 Conflict&lt;br /&gt;
: 410 Gone&lt;br /&gt;
: 501 Not Implemented&lt;br /&gt;
: 502 Bad Gateway&lt;br /&gt;
: 503 Service Unavailable&lt;br /&gt;
: 504 Gateway Time-out&lt;br /&gt;
&lt;br /&gt;
; ns_connsendfp&lt;br /&gt;
: This function writes len bytes of the specified channel or file to the conn.&lt;br /&gt;
&lt;br /&gt;
; ns_return&lt;br /&gt;
: Sends back both the headers and the string.&lt;br /&gt;
&lt;br /&gt;
; ns_returnadminnotice&lt;br /&gt;
: Wraps the text msg and longmsg in some html, appends a line with a link to &amp;quot;mailto:serveradministrator&amp;quot; based on the virtual server parameter &amp;quot;WebMaster&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; ns_returnbadrequest&lt;br /&gt;
: Returns a 400 status code and a formatted HTML message containing the reason text.&lt;br /&gt;
&lt;br /&gt;
; ns_returnerror&lt;br /&gt;
: Wraps the text msg in some html and returns that to the client.&lt;br /&gt;
&lt;br /&gt;
; ns_returnfile&lt;br /&gt;
: Sends back the headers and the contents of the file.&lt;br /&gt;
&lt;br /&gt;
; ns_returnforbidden&lt;br /&gt;
: Returns a 403 status code.&lt;br /&gt;
&lt;br /&gt;
; ns_returnfp&lt;br /&gt;
: First sends the appropriate headers. Next, it writes out the contents of file from the current file position until the end of the file.&lt;br /&gt;
&lt;br /&gt;
; ns_returnnotfound&lt;br /&gt;
: Returns a 404 status code.&lt;br /&gt;
&lt;br /&gt;
; ns_returnnotice&lt;br /&gt;
: Wraps the text msg and longmsg in some html and returns that to the client.&lt;br /&gt;
&lt;br /&gt;
; ns_returnredirect&lt;br /&gt;
: Returns a redirect to the passed in location&lt;br /&gt;
&lt;br /&gt;
; ns_returnunauthorized&lt;br /&gt;
: Returns a 401 status code&lt;br /&gt;
&lt;br /&gt;
; ns_write&lt;br /&gt;
: Writes the string out the connection. You can use it instead of the ns_return or ns_respond functions to build HTTP responses. AOLserver will not include the usual headers on the output data. The script does not end at the time ns_write* is invoked so you can continue processing data after the client has gotten the data and closed the socket.&lt;br /&gt;
&lt;br /&gt;
== SEE ALSO ==&lt;br /&gt;
&lt;br /&gt;
: [[ns_connsendfp]], [[ns_respond]], [[ns_returnadminnotice]], [[ns_returnbadrequest]], [[ns_returnerror]], [[ns_returnfile]], [[ns_returnforbidden]], [[ns_returnfp]], [[ns_returnnotfound]], [[ns_returnnotice]], [[ns_returnredirect]], [[ns_returnunauthorized]], [[ns_write]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Talk:AOLserver_Wiki</id>
		<title>Talk:AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Talk:AOLserver_Wiki"/>
				<updated>2006-03-30T06:14:54Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anonymous edits disabled ==&lt;br /&gt;
&lt;br /&gt;
I've gone ahead and disabled anonymous edits due to the high volume of wiki spamming.  I'll be implementing some kind of anti-spam measures (most likely a CAPTCHA) before turning anonymous edits back on.  I hate to do this, but it's starting to get out of control. -- [[User:Dossy|Dossy]] 08:11, 24 March 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
Since I know the spammers can create accounts (I just deleted ~600 of them), I've changed things so that only users who have a confirmed email address can make edits.  You can set your email address via [[Special:Preferences]] then confirm it with [[Special:Confirmemail]]. -- [[User:Dossy|Dossy]] 08:29, 24 March 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
I agree with your decision Dossy. The spam was out of control. [[User:Vkurup|Vkurup]] 20:22, 29 March 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
* Thanks, Vinod.  I especially appreciate your vigilance in rolling back the edits.  Now, how do we encourage actual contributors to make changes to the wiki ... :-) -- [[User:Dossy|Dossy]] 01:14, 30 March 2006 (EST)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/AOLserver_Wiki:Protected_page</id>
		<title>AOLserver Wiki:Protected page</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/AOLserver_Wiki:Protected_page"/>
				<updated>2006-03-28T15:50:11Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anonymous edits disabled ==&lt;br /&gt;
&lt;br /&gt;
I've gone ahead and disabled anonymous edits due to the high volume of wiki spamming.  I'll be implementing some kind of anti-spam measures (most likely a CAPTCHA) before turning anonymous edits back on.  I hate to do this, but it's starting to get out of control. -- [[User:Dossy|Dossy]] 08:11, 24 March 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
Since I know the spammers can create accounts (I just deleted ~600 of them), I've changed things so that only users who have a confirmed email address can make edits.  You can set your email address via [[Special:Preferences]] then confirm it with [[Special:Confirmemail]]. -- [[User:Dossy|Dossy]] 08:29, 24 March 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
I've now implemented a CAPTCHA in order to log in or create a new account.  This should effectively end the spam.  When I can, I'll add the CAPTCHA to the editing page, so that anonymous edits can be turned back on, but I don't know when I'll have the time to do that. -- [[User:Dossy|Dossy]] 10:50, 28 March 2006 (EST)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/AOLserver_Wiki:Protected_page</id>
		<title>AOLserver Wiki:Protected page</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/AOLserver_Wiki:Protected_page"/>
				<updated>2006-03-24T13:30:15Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anonymous edits disabled ==&lt;br /&gt;
&lt;br /&gt;
I've gone ahead and disabled anonymous edits due to the high volume of wiki spamming.  I'll be implementing some kind of anti-spam measures (most likely a CAPTCHA) before turning anonymous edits back on.  I hate to do this, but it's starting to get out of control. -- [[User:Dossy|Dossy]] 08:11, 24 March 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
Since I know the spammers can create accounts (I just deleted ~600 of them), I've changed things so that only users who have a confirmed email address can make edits.  You can set your email address via [[Special:Preferences]] then confirm it with [[Special:Confirmemail]]. -- [[User:Dossy|Dossy]] 08:29, 24 March 2006 (EST)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Talk:AOLserver_Wiki</id>
		<title>Talk:AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Talk:AOLserver_Wiki"/>
				<updated>2006-03-24T13:29:12Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anonymous edits disabled ==&lt;br /&gt;
&lt;br /&gt;
I've gone ahead and disabled anonymous edits due to the high volume of wiki spamming.  I'll be implementing some kind of anti-spam measures (most likely a CAPTCHA) before turning anonymous edits back on.  I hate to do this, but it's starting to get out of control. -- [[User:Dossy|Dossy]] 08:11, 24 March 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
Since I know the spammers can create accounts (I just deleted ~600 of them), I've changed things so that only users who have a confirmed email address can make edits.  You can set your email address via [[Special:Preferences]] then confirm it with [[Special:Confirmemail]]. -- [[User:Dossy|Dossy]] 08:29, 24 March 2006 (EST)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ad13_vs._3.5.1</id>
		<title>Ad13 vs. 3.5.1</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ad13_vs._3.5.1"/>
				<updated>2006-03-24T13:17:54Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edit of 69.31.41.50, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an unfinished comparison between AOLserver 3.5.1 and AOLserver 3.3.1 + ad13 + oacs1. [http://uptime.openacs.org/aolserver-openacs/] It is based on Rob Mayoff's AD13 distribution notes.  SourceForge patch #570072 brought the AD13 internationalization patches to 3.4.2, and would probably be a good starting point for integration.&lt;br /&gt;
&lt;br /&gt;
- Jamie Rasmussen&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
'''+oacs1 patches'''&lt;br /&gt;
&lt;br /&gt;
Vinod's ns_uuencode patch (SourceForge #474259)&lt;br /&gt;
* The oacs1 patch has a major bug as discussed on SourceForge.  I believe my corrected patch works but it hasn't been tested.  This is not crucial because OpenACS tests for the desired behavior and falls back on (slow) TCL-based encoding.&lt;br /&gt;
&lt;br /&gt;
uid/gid from Jon Griffin&lt;br /&gt;
* This is SF Patch #509413.  Jon confirms it has been fixed in 3.5+.&lt;br /&gt;
&lt;br /&gt;
BSD exec patch&lt;br /&gt;
* Is this SF Patch #415475?  It's marked fixed.&lt;br /&gt;
&lt;br /&gt;
Merge some of Vinod's and Mat's changes for nsxml's makefile&lt;br /&gt;
* nsxml has changed since the oacs1 version so I'm not sure if these changes are needed.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
'''+ad13 patches'''&lt;br /&gt;
&lt;br /&gt;
Numerous patches to support character encodings including Henry Minsky's patches to translate form data to multiple charsets within a single HTTP request.  Described in encoding-doc.html.  These should be fleshed out here.&lt;br /&gt;
&lt;br /&gt;
There is an additional encoding file, 8bit.enc (ascii, single-byte, 8 bits)&lt;br /&gt;
* Should this be added to TCL?&lt;br /&gt;
&lt;br /&gt;
Set system encoding to ns/server/$server/SystemEncoding (default utf-8) in modules/tcl/init.tcl.&lt;br /&gt;
* This is a 1 line change &lt;br /&gt;
&lt;br /&gt;
form.tcl and http.tcl are different, charsets.tcl needs to be added&lt;br /&gt;
&lt;br /&gt;
Added byte range support in fastpath.c and ns_returnfile.&lt;br /&gt;
* This is a HTTP/1.1 feature.  Patrick Spence asks if this could be made configurable to prevent abuse by download accelerators.&lt;br /&gt;
&lt;br /&gt;
Reset ADP exception before executing an ADP, in case previous ADP called ns_adp_break, etc.&lt;br /&gt;
* One-line changes in adp.c and tclstubs.cpp to reset the exception&lt;br /&gt;
* There are also stack checks throwing ADP_OVERFLOW.  The stack check function was in thread.c of the old threads lib, and is not in AOLserver 3.5.1  ADP_OVERFLOW is still caught in 3.5.1, but it doesn't appear to be thrown.&lt;br /&gt;
&lt;br /&gt;
Ns_QueryToSet will not allow parameters whose names end with &amp;quot;.tmpfile&amp;quot;.&lt;br /&gt;
* Looks like this could be added without much hassle.&lt;br /&gt;
&lt;br /&gt;
Added boolean database parameter &amp;quot;WarnEmpty&amp;quot;.  If this is set, then AOLserver will log a warning when the last handle in a database pool is empty, and when a thread tries to get a handle from an empty pool.  Set this in the ns/db/pool/poolname section.&lt;br /&gt;
* A simple change to dbinit.c  &lt;br /&gt;
&lt;br /&gt;
Added Tcl command &amp;quot;ns_db stats poolname&amp;quot;, which returns a two-element list.  The first element is the maximum number of handles in the pool (equal to the &amp;quot;connections&amp;quot; config parameter).  The second element is the number of handles currently available in the pool.&lt;br /&gt;
* Simple changes to dbinit.c, dbtcl.c, and ns.h&lt;br /&gt;
* It looks like the ad13 patch didn't add the command to the usage message where it should have.&lt;br /&gt;
* This command doesn't appear to be used in OpenACS (CVS HEAD anyway)&lt;br /&gt;
&lt;br /&gt;
Patch to op.c to not crash on bad HTTP request line if nsd.tcl has a 401 redirect.&lt;br /&gt;
* Test to see if this still happens.  A minor change.&lt;br /&gt;
&lt;br /&gt;
Patch to NsHandleSignals to actually exit on Linux if a SIGSEGV is received.&lt;br /&gt;
* Appears to be a straight-forward addition to unix.c&lt;br /&gt;
&lt;br /&gt;
Patch to ns_sourceproc to cache Tcl pages (including bytecodes) if nscache module is installed.&lt;br /&gt;
* Modifications in tcl/file.tcl, tcl/tclcache.tcl added&lt;br /&gt;
&lt;br /&gt;
Declare Ns_ConnWriteRawData in ns.h.&lt;br /&gt;
* This does not actually appear in ns.h.  I believe the notes mean Ns_ConnReturnRawData in ns.h (body in return.c)&lt;br /&gt;
&lt;br /&gt;
Add errorminsize to doc/config.txt.&lt;br /&gt;
* doc/config.txt was removed.  We could add this small documentation change to sample-config.tcl.&lt;br /&gt;
&lt;br /&gt;
Fix channel memory leak in tclIO.c.&lt;br /&gt;
* I'm assuming this memory leak is not in TCL 8.4, but someone should confirm. Not an AOLserver core problem anyway.&lt;br /&gt;
&lt;br /&gt;
Import fix for freeing of Tcl TSD from AOLserver 4.0 tree.&lt;br /&gt;
* I'm not sure what the fix was, but I'm assuming it made it into 3.5.1 as well.&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/How_to_set_up_PHP_under_AOLserver</id>
		<title>How to set up PHP under AOLserver</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/How_to_set_up_PHP_under_AOLserver"/>
				<updated>2006-03-24T13:17:41Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edit of 69.121.200.97, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'' '''Prerequisites:''' ''&lt;br /&gt;
* AOLserver 4.0.6 [http://www.aolserver.com/] (currently CVS aolserver_v40_bp branch)&lt;br /&gt;
* PHP 4.3.7 or 5.0.0 [http://www.php.net/] + interim patch&lt;br /&gt;
&lt;br /&gt;
Also works with AOLserver 4.0.10 and PHP 5.0.4 but has problems if multiple virtual hosts use PHP (crashes the nsd process on Solaris). This behavior is also documented on the mailinglist for PHP 4.x, so it is not a regression.&lt;br /&gt;
&lt;br /&gt;
'' '''Instructions:''' ''&lt;br /&gt;
&lt;br /&gt;
'''Step 1.  Build and install Tcl and AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
You can use a binary distribution of Tcl provided it is a threaded build of Tcl.  However, in order to build PHP, you will need to have AOLserver source available as PHP requires it in its own build process.  These instructions assume that you will install AOLserver into &amp;quot;/home/aolserver&amp;quot; and the source resides in &amp;quot;/src/aolserver-4.0.5&amp;quot;.  Replace these to reflect your environment as necessary.&lt;br /&gt;
&lt;br /&gt;
Building both Tcl and AOLserver is outside the scope of this document and should be covered in a separate document.&lt;br /&gt;
&lt;br /&gt;
'''Step 2.  Build and install PHP.'''&lt;br /&gt;
&lt;br /&gt;
The following is an example of how you will need to configure PHP for building:&lt;br /&gt;
&lt;br /&gt;
    $ ./configure  --with-aolserver=/home/aolserver --with-aolserver-src=/src/aolserver-4.0.5 --enable-shared&lt;br /&gt;
&lt;br /&gt;
&amp;quot;--with-aolserver=/home/aolserver&amp;quot; is the path to where AOLserver is installed (the --prefix option when you build AOLserver) and &amp;quot;--with-aolserver-src=/src/aolserver-4.0.5&amp;quot; is the path to where the AOLserver source lives.  &amp;quot;--enable-shared&amp;quot; may be turned on by default, which should build &amp;quot;libphp4.so&amp;quot; which we will need for AOLserver.&lt;br /&gt;
&lt;br /&gt;
Once configured, run &amp;quot;make&amp;quot; to compile PHP.  You do NOT need to do a &amp;quot;make install&amp;quot; or &amp;quot;make install-su&amp;quot; unless you want PHP to install the CLI executable and/or the PEAR stuff.  To install the necessary bits for AOLserver, simply copy &amp;quot;libs/libphp4.so&amp;quot; for PHP 4.3.7 or &amp;quot;libs/libphp5.so&amp;quot; for PHP 5.0.0 to your AOLserver module directory, and &amp;quot;php.ini-recommended&amp;quot; to your AOLserver home directory as &amp;quot;php.ini&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
    $ make&lt;br /&gt;
    ... lots of build output scrolls by ...&lt;br /&gt;
&lt;br /&gt;
    $ cp libs/libphp4.so /home/aolserver/bin&lt;br /&gt;
    $ cp php.ini-recommended /home/aolserver/php.ini&lt;br /&gt;
&lt;br /&gt;
The default php.ini file should be suitable at first: customize and tweak it later once you've confirmed that PHP is indeed working correctly.&lt;br /&gt;
&lt;br /&gt;
'''Step 3.  Configure AOLserver to load PHP support.'''&lt;br /&gt;
&lt;br /&gt;
Starting with the &amp;quot;sample-config.tcl&amp;quot; that comes with AOLserver, you need to make two simple changes.  The first is to set (or increase) the stack size to a minimum of 256KB.  The recommended value is 1MB.  Here is the relevant snippet from the sample-config.tcl, lines 139-143:&lt;br /&gt;
&lt;br /&gt;
    139 #&lt;br /&gt;
    140 # Thread library (nsthread) parameters&lt;br /&gt;
    141 #&lt;br /&gt;
    142 ns_section &amp;quot;ns/threads&amp;quot;&lt;br /&gt;
    143 #ns_param   stacksize [[expr 128*1024]] ;# Per-thread stack size.&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;ns_param&amp;quot; line that sets stack-size is currently commented out.  Uncomment that line, and change it to:&lt;br /&gt;
&lt;br /&gt;
    143 ns_param   stacksize [[expr 256*1024]] ;# Per-thread stack size.&lt;br /&gt;
&lt;br /&gt;
(Do not include the line number, &amp;quot;143&amp;quot;, at the start of the line -- that is for illustrative purposes only.)&lt;br /&gt;
&lt;br /&gt;
We have changed the stack from 128KB (&amp;quot;128*1024&amp;quot;) to 256KB (&amp;quot;256*1024&amp;quot;) and uncommented the line.  Change it to &amp;quot;1024*1024&amp;quot; to set it to 1MB.&lt;br /&gt;
&lt;br /&gt;
The next step is to add the necessary configuration to instruct AOLserver to load the PHP module at server start-up.  We do this by adding the following lines to the bottom of the sample-config.tcl file:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    # PHP&lt;br /&gt;
    #&lt;br /&gt;
    &lt;br /&gt;
    ns_section &amp;quot;ns/server/${servername}/module/php&amp;quot;&lt;br /&gt;
        ns_param map *.php&lt;br /&gt;
    &lt;br /&gt;
    ns_section &amp;quot;ns/server/${servername}/modules&amp;quot;&lt;br /&gt;
        ns_param php    ${bindir}/libphp4.so&lt;br /&gt;
&lt;br /&gt;
This tells AOLserver to load our libphp4.so from the directory pointed to by $bindir, and indicates that files ending with the suffix &amp;quot;.php&amp;quot; contain PHP code and should be processed by the PHP module.&lt;br /&gt;
&lt;br /&gt;
You will also want the server to look for PHP index pages.  To do this, append &amp;quot;index.php&amp;quot; to the end of the directory file line in your AOLserver configuration file:&lt;br /&gt;
&lt;br /&gt;
    set directoryfile   index.adp,index.html,index.htm,index.xhtml,index.xht,index.php&lt;br /&gt;
&lt;br /&gt;
'''Step 4. Start AOLserver, and enjoy!'''&lt;br /&gt;
&lt;br /&gt;
That's all there is to it.  Start up your server, place some .php files in your pageroot (configured as &amp;quot;servers/server1/pages&amp;quot; by default in sample-config.tcl) and request them in a web browser.  Everything should be working.&lt;br /&gt;
&lt;br /&gt;
As of 22jun2004, the following apps have been at least lightly tested:&lt;br /&gt;
* phpBB2 2.0.8 [http://www.phpbb.com/]&lt;br /&gt;
* SquirrelMail 1.4.3a [http://www.squirrelmail.org/]&lt;br /&gt;
&lt;br /&gt;
Both phpBB2 and SquirrelMail store &amp;quot;sensitive&amp;quot; data that you probably don't want a user to browse.  These come with .htaccess files installed but since AOLserver doesn't support .htaccess these files are unprotected.  One option is to enable [[nsperm]] and create entries to grant access to a non-existent user (implicitly denying access to everyone else).  The file to edit will live somewhere like &amp;quot;/home/aolserver/servers/server1/modules/nsperm/perms&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For phpBB2, add an entry like:&lt;br /&gt;
&lt;br /&gt;
    allowuser inherit GET /phpBB2/cache notfound&lt;br /&gt;
&lt;br /&gt;
For SquirrelMail, add an entry like:&lt;br /&gt;
&lt;br /&gt;
    allowuser inherit GET /mail/data notfound&lt;br /&gt;
    allowuser inherit GET /mail/plugins/squirrelspell/modules notfound&lt;br /&gt;
 &lt;br /&gt;
There is nothing special about the user &amp;quot;notfound&amp;quot;.  Any string here that is not found in your [[nsperm]] &amp;quot;passwd&amp;quot; file will work.  Change the URLs in the above examples to match the actual location of where you've installed the applications.&lt;br /&gt;
&lt;br /&gt;
An alternative approach to explictly deny users access might look something like:&lt;br /&gt;
&lt;br /&gt;
    denyuser inherit GET /mail/data &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The downside of this second method is that it allows authenticated users (those users who are in the [[nsperm]] &amp;quot;passwd&amp;quot; file) to access these protected files. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Appendix A.  Patch to PHP 4.3.7/5.0.0.'''&lt;br /&gt;
&lt;br /&gt;
Before applying this patch, you may need to remove a single whitespace character from the beginning of every line (as they were added so that the patch appears as preformatted text on the wiki.)  Place the file in the &amp;quot;php-4.3.7/sapi/aolserver&amp;quot; or &amp;quot;php-5.0.0/sapi/aolserver&amp;quot; directory as &amp;quot;aolserver.c.patch&amp;quot; and apply it with GNU patch:&lt;br /&gt;
&lt;br /&gt;
    $ patch -p0 &amp;lt; aolserver.c.patch&lt;br /&gt;
&lt;br /&gt;
Patch follows:&lt;br /&gt;
&lt;br /&gt;
 --- aolserver.c.orig    2003-05-30 21:37:44.000000000 -0400&lt;br /&gt;
 +++ aolserver.c 2004-06-21 22:00:48.000000000 -0400&lt;br /&gt;
 @@ -88,21 +88,12 @@&lt;br /&gt;
  static int&lt;br /&gt;
  php_ns_sapi_ub_write(const char *str, uint str_length TSRMLS_DC)&lt;br /&gt;
  {&lt;br /&gt;
 -       int n;&lt;br /&gt;
 -       uint sent = 0;&lt;br /&gt;
 -&lt;br /&gt;
 -       while (str_length &amp;gt; 0) {&lt;br /&gt;
 -               n = Ns_ConnWrite(NSG(conn), (void *) str, str_length);&lt;br /&gt;
 -&lt;br /&gt;
 -               if (n == -1)&lt;br /&gt;
 -                       php_handle_aborted_connection();&lt;br /&gt;
 -&lt;br /&gt;
 -               str += n;&lt;br /&gt;
 -               sent += n;&lt;br /&gt;
 -               str_length -= n;&lt;br /&gt;
 +    if (Ns_WriteConn(NSG(conn), str, str_length) != NS_OK) {&lt;br /&gt;
 +        php_handle_aborted_connection();&lt;br /&gt;
 +        return 0;&lt;br /&gt;
         }&lt;br /&gt;
  &lt;br /&gt;
 -       return sent;&lt;br /&gt;
 +       return str_length;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
 @@ -148,7 +139,7 @@&lt;br /&gt;
  php_ns_sapi_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC)&lt;br /&gt;
  {&lt;br /&gt;
         if(SG(sapi_headers).send_default_content_type) {&lt;br /&gt;
 -               Ns_ConnSetRequiredHeaders(NSG(conn), &amp;quot;text/html&amp;quot;, 0);&lt;br /&gt;
 +               Ns_ConnSetRequiredHeaders(NSG(conn), &amp;quot;text/html&amp;quot;, -1);&lt;br /&gt;
         }&lt;br /&gt;
  &lt;br /&gt;
         Ns_ConnFlushHeaders(NSG(conn), SG(sapi_headers).http_response_code);&lt;br /&gt;
&lt;br /&gt;
'''Appendix B.  Testing with the PHP test cases.'''&lt;br /&gt;
&lt;br /&gt;
PHP comes with a pretty thorough suite of test cases that check for regressions and for basic functionality.  Many of these tests work in a webserver context as well (about 2/3 of them).  A perl script, [http://www.aolserver.com/files/webtest.pl webtest.pl], can be used execute these tests.  This script is not specific to AOLserver.  It is known to work with Apache and should work with any webserver.&lt;br /&gt;
&lt;br /&gt;
To test PHP:&lt;br /&gt;
&lt;br /&gt;
   1. Download the script.&lt;br /&gt;
   2. Place the script in the PHP source tree.&lt;br /&gt;
   3. Execute: perl webtest.pl -h hostname:port -d /path/to/document/root&lt;br /&gt;
&lt;br /&gt;
An example command line might look like:&lt;br /&gt;
&lt;br /&gt;
    $ perl webtest.pl -h localhost:8000 -d /home/aolserver/servers/server1/pages/&lt;br /&gt;
&lt;br /&gt;
This script has been tested with PHP 4.3.7 and PHP 5.0.0.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
php-5.0.5 patch&lt;br /&gt;
 --- aolserver.c 2005-09-14 22:18:03.000000000 -0400&lt;br /&gt;
 +++ aolserver.c.back    2005-09-14 22:14:44.000000000 -0400&lt;br /&gt;
 @@ -88,12 +88,21 @@&lt;br /&gt;
  static int&lt;br /&gt;
  php_ns_sapi_ub_write(const char *str, uint str_length TSRMLS_DC)&lt;br /&gt;
  {&lt;br /&gt;
 -        if (Ns_WriteConn(NSG(conn), str, str_length) != NS_OK) {&lt;br /&gt;
 -            php_handle_aborted_connection();&lt;br /&gt;
 -             return 0;&lt;br /&gt;
 +       int n;&lt;br /&gt;
 +       uint sent = 0;&lt;br /&gt;
 +&lt;br /&gt;
 +       while (str_length &amp;gt; 0) {&lt;br /&gt;
 +               n = Ns_ConnWrite(NSG(conn), (void *) str, str_length);&lt;br /&gt;
 +&lt;br /&gt;
 +               if (n == -1)&lt;br /&gt;
 +                       php_handle_aborted_connection();&lt;br /&gt;
 +&lt;br /&gt;
 +               str += n;&lt;br /&gt;
 +               sent += n;&lt;br /&gt;
 +               str_length -= n;&lt;br /&gt;
         }&lt;br /&gt;
  &lt;br /&gt;
 -       return str_length;&lt;br /&gt;
 +       return sent;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
 @@ -139,7 +148,7 @@&lt;br /&gt;
  php_ns_sapi_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC)&lt;br /&gt;
  {&lt;br /&gt;
         if(SG(sapi_headers).send_default_content_type) {&lt;br /&gt;
 -               Ns_ConnSetRequiredHeaders(NSG(conn), &amp;quot;text/html&amp;quot;, -1);&lt;br /&gt;
 +               Ns_ConnSetRequiredHeaders(NSG(conn), &amp;quot;text/html&amp;quot;, 0);&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         Ns_ConnFlushHeaders(NSG(conn), SG(sapi_headers).http_response_code);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~p&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Tutorials]] - [[PHP]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/How_to_set_up_WiKit_under_AOLserver</id>
		<title>How to set up WiKit under AOLserver</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/How_to_set_up_WiKit_under_AOLserver"/>
				<updated>2006-03-24T13:17:29Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edit of 70.36.163.105, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'' '''Prerequisites:''' ''&lt;br /&gt;
* AOLserver 4.0.6 [http://www.aolserver.com/] (currently CVS aolserver_v40_bp branch)&lt;br /&gt;
* Tclkit 8.4.6 [http://equi4.com/tclkit.html]&lt;br /&gt;
* Wikit 2004/06/08 00:57:42 19564-63131 [http://equi4.com/wikit.html]&lt;br /&gt;
&lt;br /&gt;
'' '''Instructions:''' ''&lt;br /&gt;
&lt;br /&gt;
'''Step 1.  Build and install Tcl and AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
You can use a binary distribution of Tcl provided it is a threaded build of Tcl, and build AOLserver with it.&lt;br /&gt;
&lt;br /&gt;
Building both Tcl and AOLserver is outside the scope of this document and should be covered in a separate document.&lt;br /&gt;
&lt;br /&gt;
'''Step 2.  Create directories for the wiki..'''&lt;br /&gt;
&lt;br /&gt;
Assuming that your AOLserver is installed in &amp;quot;/home/aolserver&amp;quot; (if it isn't, obviously replace that with the relevant path for your installation) and that you will start with the &amp;quot;sample-config.tcl&amp;quot; that comes standard with AOLserver, we should create a place to install the wiki-related files.  Lets do that now:&lt;br /&gt;
&lt;br /&gt;
    $ mkdir /home/aolserver/servers/server1/wiki&lt;br /&gt;
    $ mkdir /home/aolserver/servers/server1/wiki/data&lt;br /&gt;
&lt;br /&gt;
You will only need to make the &amp;quot;wiki/data&amp;quot; directory writable by the user that AOLserver will run as.  &lt;br /&gt;
&lt;br /&gt;
Note that these directories do NOT live under the pageroot (&amp;quot;servers/server1/pages&amp;quot; in the sample-config.tcl) but rather at the same level as the pageroot.  This is for security reasons.&lt;br /&gt;
&lt;br /&gt;
'''Step 3.  Download and install Tclkit and Wikit.'''&lt;br /&gt;
&lt;br /&gt;
Download the latest version of Tclkit and Wikit.  At the time of this writing, I tested with Tclkit 8.4.6.  You can download binaries for several platforms:&lt;br /&gt;
* http://equi4.com/pub/tk/8.4.6/&lt;br /&gt;
&lt;br /&gt;
In this example, the server is running on x86 Linux.  Here's how you might download the necessary files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    $ cd /home/aolserver/servers/server1/wiki&lt;br /&gt;
&lt;br /&gt;
    $ wget -O tclkit-8.4.6-static.gz http://equi4.com/pub/tk/8.4.6/tclkit-linux-x86-static.gz&lt;br /&gt;
    ... [ wget output ] ...&lt;br /&gt;
&lt;br /&gt;
    $ gunzip tclkit-8.4.6-static&lt;br /&gt;
&lt;br /&gt;
    $ chmod 755 tclkit-8.4.6-static&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install Wikit in a similar way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    $ cd /home/aolserver/servers/server1/wiki&lt;br /&gt;
&lt;br /&gt;
    $ wget http://equi4.com/pub/sk/wikit.kit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need a thin wrapper script (see Appendix B at the bottom of this page) that will execute wikit.  Copy the script from Appendix B into a file named &amp;quot;wiki.sh&amp;quot; in the &amp;quot;wiki&amp;quot; directory then make it executable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    $ cd /home/aolserver/servers/server1/wiki&lt;br /&gt;
&lt;br /&gt;
    $ cat &amp;lt;&amp;lt;-'EOF' | sed -e 's/^ //' &amp;gt; wiki.sh&lt;br /&gt;
    ... copy and paste contents of Appendix B ...&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    $ chmod 755 wiki.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it!  Tclkit and Wikit are now downloaded and installed.&lt;br /&gt;
&lt;br /&gt;
'''Step 4.  Configure AOLserver to load CGI support.'''&lt;br /&gt;
&lt;br /&gt;
Starting with the &amp;quot;sample-config.tcl&amp;quot; that comes with AOLserver, you need to make a simple change to enable CGI and configure it to recognize requests for the wiki.&lt;br /&gt;
&lt;br /&gt;
Start by adding the following three lines to the [[nscgi]] module section in your sample-config.tcl:&lt;br /&gt;
&lt;br /&gt;
    ns_param   map &amp;quot;GET  /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
    ns_param   map &amp;quot;POST /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
    ns_param   map &amp;quot;HEAD /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This tells AOLserver to execute &amp;quot;wiki/wiki.sh&amp;quot; for requests to the server where the URL starts with &amp;quot;/wiki&amp;quot;.  This invokes our thin wrapper script.&lt;br /&gt;
&lt;br /&gt;
Next, we need to instruct AOLserver to actually load the [[nscgi]] module by uncommenting the appropriate line in the &amp;quot;modules&amp;quot; section (around line 449 after inserting the three ns_params above):&lt;br /&gt;
&lt;br /&gt;
    ns_section &amp;quot;ns/server/${servername}/modules&amp;quot;&lt;br /&gt;
        ...&lt;br /&gt;
        ns_param nscgi ${bindir}/nscgi.so&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
'''Step 5. Start AOLserver, and enjoy!'''&lt;br /&gt;
&lt;br /&gt;
That's all there is to it.  Start up your server, fire up your web browser and point it at your server:&lt;br /&gt;
&lt;br /&gt;
    http://www.aolserver.com/wiki&lt;br /&gt;
&lt;br /&gt;
(Replace &amp;quot;www.aolserver.com&amp;quot; with your IP or the hostname of your server.)&lt;br /&gt;
&lt;br /&gt;
You should get back the home page of your new wiki!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Before using any of the files in the appendix, you will need to remove the first whitespace character from the beginning of each line, as those were inserted so that the wiki will display them as preformatted text.'''&lt;br /&gt;
&lt;br /&gt;
'''Appendix A.  Patch to sample-config.tcl.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 --- sample-config.tcl   2004-06-14 20:18:19.000000000 -0400&lt;br /&gt;
 +++ wiki-config.tcl     2004-06-23 16:48:23.000000000 -0400&lt;br /&gt;
 @@ -352,6 +352,9 @@&lt;br /&gt;
  #ns_param   map &amp;quot;GET  /cgi /usr/local/cgi&amp;quot;     ;# CGI script file dir (GET).&lt;br /&gt;
  #ns_param   map &amp;quot;POST /cgi /usr/local/cgi&amp;quot;     ;# CGI script file dir (POST).&lt;br /&gt;
  &lt;br /&gt;
 +ns_param   map &amp;quot;GET  /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
 +ns_param   map &amp;quot;POST /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
 +ns_param   map &amp;quot;HEAD /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  #&lt;br /&gt;
  # Modules to load&lt;br /&gt;
 @@ -360,7 +363,7 @@&lt;br /&gt;
  ns_section &amp;quot;ns/server/${servername}/modules&amp;quot;&lt;br /&gt;
      ns_param nssock ${bindir}/nssock.so&lt;br /&gt;
      ns_param nslog ${bindir}/nslog.so&lt;br /&gt;
 -    #ns_param nscgi ${bindir}/nscgi.so&lt;br /&gt;
 +    ns_param nscgi ${bindir}/nscgi.so&lt;br /&gt;
      #ns_param nsperm ${bindir}/nsperm.so&lt;br /&gt;
  &lt;br /&gt;
  #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Appendix B.  wiki.sh wrapper script.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 DIR=`dirname $0`&lt;br /&gt;
 cd $DIR/data&lt;br /&gt;
&lt;br /&gt;
 WIKIT_BASE=${WIKIT_BASE:-http://${HTTP_HOST}${SCRIPT_NAME}/}&lt;br /&gt;
 export WIKIT_BASE&lt;br /&gt;
 &lt;br /&gt;
 $DIR/tclkit-8.4.6-static $DIR/wikit.kit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Talk:AOLserver_Wiki</id>
		<title>Talk:AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Talk:AOLserver_Wiki"/>
				<updated>2006-03-24T13:11:44Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anonymous edits disabled ==&lt;br /&gt;
&lt;br /&gt;
I've gone ahead and disabled anonymous edits due to the high volume of wiki spamming.  I'll be implementing some kind of anti-spam measures (most likely a CAPTCHA) before turning anonymous edits back on.  I hate to do this, but it's starting to get out of control. -- [[User:Dossy|Dossy]] 08:11, 24 March 2006 (EST)&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/How_to_set_up_Sql-Ledger_to_serve_from_AOLserver</id>
		<title>How to set up Sql-Ledger to serve from AOLserver</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/How_to_set_up_Sql-Ledger_to_serve_from_AOLserver"/>
				<updated>2006-03-24T13:07:34Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edit of 71.134.22.190, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Install SQL-Ledger with the following modifications:&lt;br /&gt;
&lt;br /&gt;
Note that I'm using this on an isolated LAN so have not done any testing  to verify the integrity of SQL-Ledger security on it.&lt;br /&gt;
&lt;br /&gt;
Be sure AOLserver is installed, and shutdown.&lt;br /&gt;
&lt;br /&gt;
* Get [http://sql-ledger.org/cgi-bin/nav.pl?page=source/index.html&amp;amp;title=Download SQL-Ledger].&lt;br /&gt;
&lt;br /&gt;
* Follow the directions for [http://sql-ledger.org/cgi-bin/nav.pl?page=source/readme.txt&amp;amp;title=README INSTALLATION WITHOUT setup.pl].  Be sure to '''skip''' using the sql-ledger supplied &amp;quot;setup.pl&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
We adapt the instructions for setting setting up httpd (aolserver's nsd in this case):&lt;br /&gt;
&lt;br /&gt;
* Download and build the AOLserver [[nscgi]] module.  Usually [[nscgi]] is already included with the AOLserver distribution.&lt;br /&gt;
&lt;br /&gt;
You can see examples of how to build AOLserver modules by reading the [http://openacs.org/doc/openacs-5-2/aolserver4.html AOLserver install docs for OpenACS 5.2].&lt;br /&gt;
&lt;br /&gt;
In the OpenACS config.tcl file, activate the [[nscgi]] module in this section:&lt;br /&gt;
&lt;br /&gt;
 ns_section ns/server/${server}/modules &lt;br /&gt;
 ns_param   nscgi              ${bindir}/nscgi.so&lt;br /&gt;
&lt;br /&gt;
And modify the nscgi module configuration in config.tcl to something like this:&lt;br /&gt;
&lt;br /&gt;
 ns_section &amp;quot;ns/server/${server}/module/nscgi&amp;quot;&lt;br /&gt;
 ns_param   map &amp;quot;GET  /sql-ledger /usr/local/sql-ledger&amp;quot;&lt;br /&gt;
 ns_param   map &amp;quot;GET  /sql-ledger/css /usr/local/sql-ledger/css&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ns_param   map &amp;quot;POST /sql-ledger /usr/local/sql-ledger&amp;quot;&lt;br /&gt;
 # ns_param   map &amp;quot;POST /sql-ledger/css /usr/local/sql-ledger/css&amp;quot;&lt;br /&gt;
 # there is no need to post to css files ;)&lt;br /&gt;
&lt;br /&gt;
 ns_param   Interps CGIinterps&lt;br /&gt;
 &lt;br /&gt;
 ns_section &amp;quot;ns/interps/CGIinterps&amp;quot;&lt;br /&gt;
 ns_param   .pl &amp;quot;/usr/bin/perl&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Security: Jon Griffin has some advice about nscgi and security at http://jongriffin.com/static/consultant/nscgi  For greater security, map each .pl file individually that is in the directories mapped above.  For example:&lt;br /&gt;
                                                           &lt;br /&gt;
 #      ns_param   map &amp;quot;GET  /sql-ledger /usr/local/sql-ledger&amp;quot;                                                              &lt;br /&gt;
 # becomes:                                                      &lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/admin.pl /usr/local/sql-ledger/admin.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/login.pl /usr/local/sql-ledger/login.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/am.pl /usr/local/sql-ledger/am.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ap.pl /usr/local/sql-ledger/ap.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ar.pl /usr/local/sql-ledger/ar.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/bp.pl /usr/local/sql-ledger/bp.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ca.pl /usr/local/sql-ledger/ca.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/cp.pl /usr/local/sql-ledger/cp.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ct.pl /usr/local/sql-ledger/ct.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/gl.pl /usr/local/sql-ledger/gl.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/hr.pl /usr/local/sql-ledger/hr.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ic.pl /usr/local/sql-ledger/ic.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ir.pl /usr/local/sql-ledger/ir.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/is.pl /usr/local/sql-ledger/is.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/jc.pl /usr/local/sql-ledger/jc.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/menu.pl /usr/local/sql-ledger/menu.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/oe.pl /usr/local/sql-ledger/oe.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/pe.pl /usr/local/sql-ledger/pe.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ps.pl /usr/local/sql-ledger/ps.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/rc.pl /usr/local/sql-ledger/rc.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/rp.pl /usr/local/sql-ledger/rp.pl&amp;quot;&lt;br /&gt;
       # skipping: setup.pl                                             &lt;br /&gt;
       # have to specify images too:                                                                                                 &lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/favicon.ico /usr/local/sql-ledger/favicon.ico&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/sql-ledger.gif /usr/local/sql-ledger/sql-ledger.gif&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/sql-ledger.png /usr/local/sql-ledger/sql-ledger.png&amp;quot;&lt;br /&gt;
                                                     &lt;br /&gt;
&lt;br /&gt;
 #       ns_param   map &amp;quot;GET  /sql-ledger/css /usr/local/sql-ledger/css/&amp;quot;                                                     &lt;br /&gt;
 # becomes:                                                      &lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-blue.css /usr/local/sql-ledger/css/sql-ledger-blue.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-brown.css /usr/local/sql-ledger/css/sql-ledger-brown.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-purple.css /usr/local/sql-ledger/css/sql-ledger-purple.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-red.css /usr/local/sql-ledger/css/sql-ledger-red.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-yellow.css /usr/local/sql-ledger/css/sql-ledger-yellow.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger.css /usr/local/sql-ledger/css/sql-ledger.css&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 #      ns_param   map &amp;quot;POST /sql-ledger /usr/local/sql-ledger&amp;quot;                                                             &lt;br /&gt;
 # becomes: &lt;br /&gt;
       ns_param   map &amp;quot;POST /sql-ledger/admin.pl /usr/local/sql-ledger/admin.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST /sql-ledger/login.pl /usr/local/sql-ledger/login.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/am.pl /usr/local/sql-ledger/am.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ap.pl /usr/local/sql-ledger/ap.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ar.pl /usr/local/sql-ledger/ar.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/bp.pl /usr/local/sql-ledger/bp.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ca.pl /usr/local/sql-ledger/ca.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/cp.pl /usr/local/sql-ledger/cp.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ct.pl /usr/local/sql-ledger/ct.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/gl.pl /usr/local/sql-ledger/gl.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/hr.pl /usr/local/sql-ledger/hr.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ic.pl /usr/local/sql-ledger/ic.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ir.pl /usr/local/sql-ledger/ir.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/is.pl /usr/local/sql-ledger/is.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/jc.pl /usr/local/sql-ledger/jc.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/menu.pl /usr/local/sql-ledger/menu.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/oe.pl /usr/local/sql-ledger/oe.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/pe.pl /usr/local/sql-ledger/pe.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ps.pl /usr/local/sql-ledger/ps.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/rc.pl /usr/local/sql-ledger/rc.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/rp.pl /usr/local/sql-ledger/rp.pl&amp;quot;&lt;br /&gt;
       # skipping setup.pl                                                                                                   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do *not* put the SQL-Ledger directory in the AOLserver's pageroot directory. Put sql-ledger dir in the /usr/local directory per SL docs:&lt;br /&gt;
&lt;br /&gt;
 mv sql-ledger /usr/local/.&lt;br /&gt;
&lt;br /&gt;
 # set permissions to match the rest of the aolserver files, for example:&lt;br /&gt;
 cd /usr/local/&lt;br /&gt;
 chown -R nsadmin:web sql-ledger&lt;br /&gt;
 chmod -R 770 sql-ledger &lt;br /&gt;
&lt;br /&gt;
 cd /usr/local/sql-ledger&lt;br /&gt;
 chmod 640 *.gif&lt;br /&gt;
 chmod 640 *.png&lt;br /&gt;
 chmod 640 *.ico&lt;br /&gt;
 cd css&lt;br /&gt;
 chmod 660 *.css&lt;br /&gt;
&lt;br /&gt;
Follow the SL directions to create a SQL-Ledger database and user for PostgreSQL, and proceed with the configuration in the SL README.  Hopefully you see a login page at http://yourservername:port/sql-ledger/admin.pl and are able to follow standard SQL-Ledger configuration directions.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_adp_return</id>
		<title>Ns adp return</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_adp_return"/>
				<updated>2006-03-24T13:07:21Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edit of 68.93.107.54, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_adp_return.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_adp_return - Stop processing of the current ADP and return up the call stack&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_adp_return''' ''?retval?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command ends processing of the current ADP and returns up the call stack, possibly to a previous ADP that had included the current one.  Returns ''retval'' or an empty string by default.&lt;br /&gt;
&lt;br /&gt;
: Note that this command returns only one level up the call stack.  To return all the way up the call stack, use [[ns_adp_break]]. &lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_adp_abort]], [[ns_adp_append]], [[ns_adp_argc]], [[ns_adp_argv]], [[ns_adp_bind_args]], [[ns_adp_break]], [[ns_adp_debug]], [[ns_adp_debuginit]], [[ns_adp_dir]], [[ns_adp_dump]], [[ns_adp_eval]], [[ns_adp_exception]], [[ns_adp_include]], [[ns_adp_mime]], [[ns_adp_mimetype]], [[ns_adp_parse]], [[ns_adp_puts]], [[ns_adp_registeradp]], [[ns_adp_registerproc]], [[ns_adp_registertag]], [[ns_adp_safeeval]], [[ns_adp_stats]], [[ns_adp_stream]], [[ns_adp_tell]], [[ns_adp_trunc]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Ns_set</id>
		<title>Ns set</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Ns_set"/>
				<updated>2006-03-24T13:07:09Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edit of 70.160.102.101, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_set.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_set - Manipulate sets of key-value pairs&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_set''' ''option ?arg arg ...?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command is used to manipulate sets of key-value pairs or &amp;quot;fields&amp;quot;.  The fields in the set are ordered by number.  The field numbers start at zero and increase by one, up to the total number of fields.  An '''ns_set''' is actually a multiset - in other words, the same key can appear multiple times in the same set.  This data structure is particularly useful for things like HTTP headers which have this same property.&lt;br /&gt;
&lt;br /&gt;
: The legal ''option''s (which may be abbreviated) are:&lt;br /&gt;
* '''ns_set array''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the contents of the ''setId'' in a string representation similar to Tcl's '''array get''' format.  This is useful for converting an '''ns_set''' to an '''array''' or for iterating over the key-value pairs with '''foreach'''.  Since '''ns_set'''s can contain the same key multiple times, converting an '''ns_set''' to an '''array''' can result in an array that is not exactly the same as the original '''ns_set''' as keys in an array are unique.&lt;br /&gt;
* '''ns_set cleanup'''&lt;br /&gt;
&lt;br /&gt;
: Frees all sets in the current interp.&lt;br /&gt;
* '''ns_set copy''' ''?-persist? setId''&lt;br /&gt;
&lt;br /&gt;
: Returns a new set that has the same name and contents as the set referenced in ''setId''.  If ''-persist'' is specified, the new set will not be freed when the current transaction ends, and you can free it later with '''ns_set free'''.  If ''-persist'' is not specified, the new set is automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set cput''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Appends a new field to the set with ''key'' and ''value'', if the field does not already exist in the set.  If the field already exists in the set, the set is unchanged.  Returns the field number of the new field, or the field number of the existing field if it already exists in the set.&lt;br /&gt;
* '''ns_set create''' ''?-persist? ?name? ?key? ?value? ...''&lt;br /&gt;
* '''ns_set new''' ''?-persist? ?name? ?key? ?value? ...''&lt;br /&gt;
&lt;br /&gt;
: Allocates memory for a new set and returns the setId for the new set.  If ''-persist'' is specified, the new set will not be freed when the current transaction ends, and you can free it later with '''ns_set free'''.  If ''-persist'' is not specified, the new set is automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set delete''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Deletes the field in the set at field number ''fieldNumber''.&lt;br /&gt;
* '''ns_set delkey''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Removes the first field in the set whose key is ''key''.  Note that there could be multiple fields in the set with this key; this command only removes the first occurrence.&lt;br /&gt;
* '''ns_set find''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns the index of the first field in the specified ''setId'' whose ''key'' matches the specified key.  Indexing starts at zero.  If no matching fields are found, '''ns_set find''' returns -1.&lt;br /&gt;
* '''ns_set free''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Frees the specified set.  Sets must be explicitly freed with '''ns_set free''' if the ''-persist'' option was used when creating the set.  Otherwise, sets are automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set get''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns the first value associated with ''key''.  If ''key'' isn't in the set, an empty string is returned.&lt;br /&gt;
* '''ns_set icput''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set cput'''.&lt;br /&gt;
* '''ns_set idelkey''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set delkey'''.&lt;br /&gt;
* '''ns_set ifind''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set find'''.&lt;br /&gt;
* '''ns_set iget''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set get'''.&lt;br /&gt;
* '''ns_set isnull''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns 1 if the value of the field specified by ''fieldNumber'' is null and 0 if it is not.  Note that an empty string is not the same as a null.  '''ns_set isnull''' will return 0 if the value is an empty string.&lt;br /&gt;
* '''ns_set iunique''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set unique'''.&lt;br /&gt;
* '''ns_set key''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns the key for the field numbered ''fieldNumber''.  This command is useful when looping through all the key-value pairs in the set in order.&lt;br /&gt;
* '''ns_set list''' ''?-shared?''&lt;br /&gt;
&lt;br /&gt;
: Returns the list of all non-persistent '''ns_set'''s.  If ''-shared'' is specified, this command returns only the list of persistent '''ns_set'''s.&lt;br /&gt;
* '''ns_set merge''' ''high low''&lt;br /&gt;
&lt;br /&gt;
: Merges two sets.  Any fields in the ''low'' set are appended to the ''high'' set if a field with the same key name does not already exist in the ''high'' set.&lt;br /&gt;
* '''ns_set move''' ''to from''&lt;br /&gt;
&lt;br /&gt;
: Moves all fields from the ''from'' set to the end of the ''to'' set, leaving the ''from'' set a valid, empty set.&lt;br /&gt;
* '''ns_set name''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the name of the set.  Returns an empty string if no name has been set.&lt;br /&gt;
* '''ns_set print''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Prints the specified set to stderr which should go to the server log.  This is useful for debugging, but '''ns_set array''' may be more useful in actual code.&lt;br /&gt;
* '''ns_set put''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Appends a new field to the set with ''key'' and ''value''.  Note that the field is appended so if a previous field has the same key as the new field, the previous field will be returned by '''ns_set get'''.  The field number of the new field is returned.&lt;br /&gt;
* '''ns_set size''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the number of fields in the set.&lt;br /&gt;
* '''ns_set split''' ''?-persist? setId ?splitChar?''&lt;br /&gt;
&lt;br /&gt;
: Splits one set into multiple sets based on the ''splitChar'' as described below and returns a Tcl list of IDs for the newly-allocated sets.  It assumes that the keys in the source ''setId'' contain a specific character (''splitChar'') that can be used to separate the name of a new set and the key in the new set.  The default ''splitChar'' is a period &amp;quot;.&amp;quot;.&lt;br /&gt;
* '''ns_set truncate''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Removes any fields with index ''fieldNumber'' or greater and frees any memory allocated for them.&lt;br /&gt;
* '''ns_set unique''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns 1 if the specified key is unique in the specified set and 0 if it is not.  For example, a web browser could send multiple &amp;quot;Accept:&amp;quot; headers which would end up in the header set for the connection.  '''ns_set unique''' would return 0 for the &amp;quot;Accept:&amp;quot; key, because there are multiple fields with the key &amp;quot;Accept:&amp;quot;.  The test for uniqueness is performed case-sensitively.&lt;br /&gt;
* '''ns_set update''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Updates the first field in the specified set whose key is ''key'' and replaces its value with ''value''.  This is equivalent to '''ns_set delkey''' followed by '''ns_set put''' if there is only one field with the key of ''key''.&lt;br /&gt;
* '''ns_set value''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns the value of the set at field number ''fieldNumber''.  This command is useful when looping through all the key-value pairs in the set.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % set mySet [ns_set create mySetName a b c d e f A Joe B John C Jeff]&lt;br /&gt;
    d0&lt;br /&gt;
&lt;br /&gt;
    % ns_set size $mySet&lt;br /&gt;
    6&lt;br /&gt;
&lt;br /&gt;
    % ns_set name $mySet&lt;br /&gt;
    mySetName&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    a b c d e f A Joe B John C Jeff&lt;br /&gt;
&lt;br /&gt;
    % ns_set get $mySet A&lt;br /&gt;
    Joe&lt;br /&gt;
&lt;br /&gt;
    % ns_set iget $mySet a&lt;br /&gt;
    b&lt;br /&gt;
&lt;br /&gt;
    % ns_set unique $mySet a&lt;br /&gt;
    1&lt;br /&gt;
&lt;br /&gt;
    % ns_set iunique $mySet a&lt;br /&gt;
    0&lt;br /&gt;
&lt;br /&gt;
    % ns_set truncate $mySet 3&lt;br /&gt;
   &lt;br /&gt;
    % ns_set print $mySet&lt;br /&gt;
    mySetName:&lt;br /&gt;
            a = b&lt;br /&gt;
            c = d&lt;br /&gt;
            e = f&lt;br /&gt;
&lt;br /&gt;
    % ns_set update $mySet c &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
    2&lt;br /&gt;
&lt;br /&gt;
    % ns_set print $mySet&lt;br /&gt;
    mySetName:&lt;br /&gt;
            a = b&lt;br /&gt;
            e = f&lt;br /&gt;
            c = Hello World!&lt;br /&gt;
&lt;br /&gt;
    % ns_set find $mySet c&lt;br /&gt;
    2&lt;br /&gt;
&lt;br /&gt;
    % ns_set find $mySet nokey&lt;br /&gt;
    -1&lt;br /&gt;
&lt;br /&gt;
    % ns_set delete $mySet 0&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    e f c {Hello World!}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    % set anotherSet [ns_set create]&lt;br /&gt;
    d1&lt;br /&gt;
&lt;br /&gt;
    % ns_set list&lt;br /&gt;
    d0 d1&lt;br /&gt;
&lt;br /&gt;
    % ns_set put $anotherSet dog.food &amp;quot;Yummy dog food!&amp;quot;&lt;br /&gt;
    0&lt;br /&gt;
&lt;br /&gt;
    % ns_set put $anotherSet cat.food &amp;quot;Yummy cat food!&amp;quot;&lt;br /&gt;
    1&lt;br /&gt;
&lt;br /&gt;
    % ns_set print $anotherSet&lt;br /&gt;
    &amp;lt;Unamed set&amp;gt;:&lt;br /&gt;
            dog.food = Yummy dog food!&lt;br /&gt;
            cat.food = Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % set newSets [ns_set split $anotherSet]&lt;br /&gt;
    d2 d3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    % foreach s $newSets { ns_set print $s }&lt;br /&gt;
    dog:&lt;br /&gt;
            food = Yummy dog food!&lt;br /&gt;
    cat:&lt;br /&gt;
            food = Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % ns_set key $anotherSet 0&lt;br /&gt;
    dog.food&lt;br /&gt;
&lt;br /&gt;
    % ns_set value $anotherSet 1&lt;br /&gt;
    Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % ns_set move $mySet $anotherSet&lt;br /&gt;
    d0&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    e f c {Hello World!} dog.food {Yummy dog food!} cat.food {Yummy cat food!}&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $anotherSet&lt;br /&gt;
&lt;br /&gt;
    % set thirdSet [ns_set new]&lt;br /&gt;
    d4&lt;br /&gt;
&lt;br /&gt;
    % ns_set move $thirdSet $mySet&lt;br /&gt;
    d4&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $thirdSet&lt;br /&gt;
    e f c {Hello World!} dog.food {Yummy dog food!} cat.food {Yummy cat food!}&lt;br /&gt;
&lt;br /&gt;
    % array set testArray [ns_set array $thirdSet]&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
: The ns_set command currently reports that it accepts two additional subcommands, idelete and purge.  These are both noops (idelete may be a mistake as delete is already case-irrelevant).&lt;br /&gt;
&lt;br /&gt;
: NULL values, distinct from the empty string, are useful when representing a database row as an ns_set.  Currently, it is difficult to get a NULL value in an ns_set through the TCL API.  You may get a NULL value in the set created by [[ns_parsequery]] or by omitting the last value when seeding the ns_set in the create/new subcommand, etc.  It is possible to create NULL-valued fields through the C API.&lt;br /&gt;
&lt;br /&gt;
: ns_set is intended for relatively ''small'' amounts of data.  (Keys are found by a ''linear'' search through the whole underlying C array.)  If you stuff very large amounts of data into an ns_set, performance will be very poor - use a Tcl Array instead for that.&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_findset]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	<entry>
		<id>http://panoptic.com/wiki/aolserver/Jk-voting-template</id>
		<title>Jk-voting-template</title>
		<link rel="alternate" type="text/html" href="http://panoptic.com/wiki/aolserver/Jk-voting-template"/>
				<updated>2006-03-24T13:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;Dossy: Reverted edit of 69.146.41.187, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;proc template {fn keyset} { &lt;br /&gt;
    set h [[open &amp;quot;[ns_info pageroot]]/templates/$fn&amp;quot; r]&lt;br /&gt;
    set cont [[read $h]]&lt;br /&gt;
    close $h&lt;br /&gt;
&lt;br /&gt;
    set keymap &amp;quot;&amp;quot;&lt;br /&gt;
    for {set x 0} {$x &amp;lt; [[ns_set size $keyset]]} {incr x} {&lt;br /&gt;
        set key [[ns_set key $keyset $x]]&lt;br /&gt;
        set value [[ns_set value $keyset $x]]&lt;br /&gt;
        lappend keymap &amp;quot;%%%%$key%%%%&amp;quot;&lt;br /&gt;
        lappend keymap $value&lt;br /&gt;
    }&lt;br /&gt;
    if {$keymap != &amp;quot;&amp;quot;} {&lt;br /&gt;
        set cont [[string map $keymap $cont]]&lt;br /&gt;
    }&lt;br /&gt;
    return $cont&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Dossy</name></author>	</entry>

	</feed>
