diff --git a/index.cgi b/index.cgi
index fad6ad8..b131819 100755
--- a/index.cgi
+++ b/index.cgi
@@ -14,6 +14,7 @@ TUWF::register(
qr{ncdu} => \&ncdu,
qr{ncdu/changes} => \&ncduchangelog,
qr{ncdu/man} => \&ncdumanual,
+ qr{ncdc} => \&ncdc,
qr{tuwf} => \&tuwf,
qr{tuwf/man(?:/(db|misc|request|response|xml))?}
=> \&tuwfmanual,
@@ -47,6 +48,7 @@ sub home {
E;
end;
h2 'Updates';
+ b '2011-06-03'; txt ' Added my latest project: ncdc'; br;
b '2011-02-07'; txt ' TUWF 0.1 released and now also available on CPAN'; br;
b '2011-01-27'; txt ' Documented and uploaded one of my older projects: TUWF'; br;
b '2011-01-09'; txt ' Added my json.mll OCaml library to code dump'; br;
@@ -165,6 +167,93 @@ sub ncdumanual {
+# N C D C
+
+sub ncdc {
+ my $s = shift;
+ $s->htmlHeader(title => 'NCurses Direct Connect', page => 'ncdc');
+ p;
+ lit <<' E;';
+ 2003 called. They wanted me to write a text-mode alternative to DC++.
+ ncdc is a modern and lightweight direct connect client with a friendly
+ ncurses interface.
+ E;
+ end;
+
+ h2 'Requirements';
+ p;
+ lit <<' E;';
+ The following libraries are required: ncurses, bzip2, gdbm, glib2 and libxml2.
+ These dependencies should be easy to satisfy. Depending on your system, you
+ may have all of these installed already.
+
+ ncdc has been developed on a recent Arch Linux installation and has been
+ tested on Debian Squeeze. It should be fairly trivial to port to other
+ POSIX-like systems.
+
+ ncdc is entirely written in C and available under a liberal MIT license.
+ E;
+ end;
+
+ h2 'Current Status';
+ p 'ncdc is currently still in development, and still lacks many of the
+ features one would expect from a DC client. The following is a list of
+ features that have been implemented so far:';
+ ul;
+ li 'Connecting to multiple hubs at the same time,';
+ li 'Chatting and private messaging,';
+ li 'Browsing the user list of a connected hub,';
+ li 'Share management (file list generation, hashing, refreshing, etc),';
+ li 'File uploading in passive mode,';
+ li 'Replying to search requests from other clients.';
+ end;
+
+ h2 'Try it out';
+ p;
+ txt 'The current version might be slightly awkward to use and is not really
+ suited for serious use. Nonetheless, it\'s not entirely useless. You can get
+ the latest development version of ncdc from ';
+ a href => 'http://g.blicky.net/ncdc.git/', 'this git repository';
+ txt '. The README includes instructions to build ncdc.';
+ end;
+
+ h2 'Quick Q&A';
+ ul;
+ li; txt 'What about other text-mode clients?'; br;
+ a href => 'http://corsair626.no-ip.org/microdc/', 'microdc2';
+ txt ' - A rather nice client, yet not exactly there. It\'s limited to
+ connecting to a single hub, hasn\'t been updated since 2006, and the
+ readline interface is slightly awkward to use.';br;
+ a href => 'http://sourceforge.net/projects/nanodc/', 'nanodc';
+ txt ' - Can\'t comment much on this, except maybe that rocket science is
+ perhaps easier than getting nanodc to compile.'; br;br;
+ end;
+ li; txt 'Can ncdc connect to ADC hubs?'; br;
+ txt 'Not yet. My initial focus is to get a working client for the old NMDC
+ protocol, since, unfortunately, that is still the most widely used. Support
+ for ADC is planned.'; br;br;
+ end;
+ li; txt 'Can ncdc use the hash data or configuration from an existing DC++ installation?'; br;
+ txt 'No, ncdc uses its own configuration and hash storage directory.
+ However, on popular demand I could write a conversion utility to transfer
+ the hash data from other clients to ncdc\'s format.'; br;br;
+ end;
+ li; txt 'What protocol features does ncdc support?'; br;
+ txt 'Hub: NoGetINFO and NoHello.'; br;
+ txt 'Client: MiniSlots, XmlBZList, ADCGet, TTHL and TTHF.'; br;
+ txt q|That is pretty much everything you'd expect any modern client to
+ have. Note that ncdc does not support some of the older protocol
+ features, like $Get, $GetZBlock, $CHUNK and $Cancel. I am not aware of
+ any other up-to-date client that requires these.|;
+ end;
+ end;
+
+ $s->htmlFooter;
+}
+
+
+
+
# T U W F
@@ -569,6 +658,7 @@ sub htmlHeader {
div id => 'menu';
a href => '/', !$o{page} ? (class => 'sel') : (), 'home'; txt ' ';
a href => '/ncdu', $o{page} eq 'ncdu' ? (class => 'sel') : (), 'ncdu'; txt ' ';
+ a href => '/ncdc', $o{page} eq 'ncdc' ? (class => 'sel') : (), 'ncdc'; txt ' ';
a href => '/tuwf', $o{page} eq 'tuwf' ? (class => 'sel') : (), 'tuwf'; txt ' ';
a href => '/dump', $o{page} eq 'dump' ? (class => 'sel') : (), 'code dump';
end;