[html::description "TclHttpd, the Tcl Web Server, is an extensible
platform for web application development."]
[html::keywords Tcl TclHttpd Tcl/Tk "Tcl Web Server" "Web Server"]
[html::author "Brent Welch"]
[mypage::header "Tcl-Httpd Home Page"]
[Doc_Dynamic]
[clock format [clock seconds] -format "%B %d, %Y %H:%M:%S"]

[if {[Url_PrefixExists /tclpro]} {
    set _ "<table align=right border=1>
	<tr><td><img src=/images/TclPro200.gif></td></tr>
	<tr><td><a href=/tclpro>TclPro Documentation</a></td></tr>
	</table>"
}]
<p>
The Tcl-Httpd is a pure Tcl implementation of a Web server (HTTP/1.0).
It runs as a Tcl script on top of
<a href=http://www.tcl.tk/software/tcltk/>Tcl 8.3</a>.
<p>
<small>
If you install the Standard Tcl Library with your Tcl 8.0 or later release you can probably
get by, and if you grab a 2.3.* version of TclHttpd you can run with Tcl 7.5 or later.</small>
<p>

While this server works fine as a stand alone web server, the
intent is to embed the server in other applications in order to
"web enable" them.
A Tcl-based web server is ideal for embedding
because Tcl was designed from the start
to support embedding into other applications.
The interpreted nature of Tcl allows dynamic reconfiguration of the
server. Once the core interface between the web server and the hosting
application is defined, it is possible to manage the web server, upload
Safe-Tcl control scripts, download logging information, and otherwise
debug the Tcl part of the application without restarting the hosting
application. 
<p>
The <a HREF="http://www.tcl.tk/software/tclhttpd/server.html">white
paper</a> presents a case for an embedded web server from more of a
business angle. These pages document the technical specifications of
the server.
<p>
The server is distributed under a <a href=license.terms>copyright</a> that allows free use.

<h2>See Also</h2>

[mypage::README_links]

<a href=http://www.tcl.tk/software/tclhttpd/>The main TclHttpd Information Page</a>.
<p>
A <a href=book/TCLHTTPD.html>Tcl Httpd Book Chapter</a> from the
3rd Edition of
<em><a href=http://www.beedub.com/book>Practical Programming in Tcl and Tk</a></em>
by Brent Welch.
<p>
<a href=manual/reference.html>The local Server Reference Page</a>.
Frankly, these reference pages are somewhat out-of-date.
The book chapter is more coherent, but may lack some details presented
in the reference pages.  The source code is the truth!
<p>
Please <a href=register.html>Register Your Software</a> so
we can see how widely used the server is.
<p>
The <a href="mailto:tclhttpd-users@lists.sourceforge.net">tclhttpd-users@lists.sourceforge.net</a> mailing list,
for which there is an <a href=http://www.tcl.tk/lists/tcl-httpd>archive</a>.

<h2>Control/Status Pages</h2>
<ul>
<li><a HREF="/status/">Server statistics</a> 
<li><a HREF="hacks.html">Control panel</a> 
</ul>
<h2>Test Pages</h2>
<ul>
<li><a HREF="include.shtml">Server includes</a> 
<li><a HREF="snmp/">Snmp Integration</a>.  You need Scotty installed for this.
<li><a HREF="templates/">Templates with inline Tcl</a>.  The simple look-and-feel for these
pages is implemented in the htdocs/libtml/mypage.tcl file.
<li><a HREF="access/">Access control schemes</a>. 
<li><a HREF="forms/">CGI</a>  You probably need to install the Standard Tcl Library for this.
<li><a HREF="map/">Imagemaps</a> 
[if {[file exists [file join [Doc_Root] java]]} {
    set _ "<li><a HREF=\"java/ServerDemo.html\">Java applet</a> You need to run Netscape 2.0 for this ancient applet to work :-)\n"
}]
<li><a HREF="/xyzzy">Sample missing page</a>
<li><a HREF="/debug/raise?message=This+page+raises+errors!">A page that raises an error</a>
<li><a HREF="images">A directory listing page</a>
</ul>

<h2>Sample GuestBook</h2>
<ul>
<li><a href="guestbook/guestbook.cgi">View Guest Book</a>
<li><a href="guestbook/newguest.html">Update Guest Book</a>
</ul>

[mypage::footer]
