diff --git a/dat/ncdc-changelog b/dat/ncdc-changelog
index c4ded50..de17052 100644
--- a/dat/ncdc-changelog
+++ b/dat/ncdc-changelog
@@ -1,3 +1,25 @@
+0.6 - 2011-08-08
+ - Added file searching, through a /search command
+ - Added tab to display the search results
+ - Listen for incoming messages on UDP in active mode
+ - Allow specifying a hub address with /open
+ - Fixed case-sensitivity of shared files
+ - Various bugfixes and other improvements
+
+0.5 - 2011-08-02
+ - Downloaded files are now TTH-checked
+ - Added download queue priorities
+ - Download queue items are automatically disabled on error
+ - Improved error handling and reporting for downloads
+ - Added download_slots setting
+ - Use a separate thread to load other users' file list
+ - Improved /gc to also clean up download queue related data
+ - Decreased memory usage for large file lists
+ - Improved error handling with sendfile()
+ - Fixed downloading in passive mode on ADC hubs
+ - Fixed adding a dir to the download queue while connected to the user
+ - Fixed segfault when the userlist is open while disconnecting from a hub
+
0.4 - 2011-07-23
- Added file downloading support.
WARNING: Downloaded files are not TTH checked at this moment.
diff --git a/img/ncdcstart.png b/img/ncdcstart.png
index 0255253..ee5e95f 100644
Binary files a/img/ncdcstart.png and b/img/ncdcstart.png differ
diff --git a/index.cgi b/index.cgi
index e992a0d..be7f522 100755
--- a/index.cgi
+++ b/index.cgi
@@ -15,6 +15,7 @@ TUWF::register(
qr{ncdu/changes} => \&ncduchangelog,
qr{ncdu/man} => \&ncdumanual,
qr{ncdc} => \&ncdc,
+ qr{ncdc/faq} => \&ncdcfaq,
qr{ncdc/guide} => \&ncdcguide,
qr{ncdc/changes} => \&ncdcchangelog,
qr{tuwf} => \&tuwf,
@@ -51,6 +52,8 @@ sub home {
E;
end;
h2 'Updates';
+ b '2011-08-08'; txt ' ncdc 0.6 released & user guide updated'; br;
+ b '2011-08-02'; txt ' ncdc 0.5 released!'; br;
b '2011-07-23'; txt ' ncdc 0.4 released!'; br;
b '2011-07-15'; txt ' ncdc 0.3 released!'; br;
b '2011-06-27'; txt ' ncdc 0.2 released!'; br;
@@ -182,16 +185,15 @@ sub ncdc {
$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 '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:';
+ p 'Ncdc is currently still in development, and therefore lacks a few features
+ one would expect from a full-blown 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,';
@@ -201,20 +203,18 @@ sub ncdc {
li 'File uploading in active and passive mode,';
li 'Connections and download queue management,';
li 'File list browsing,';
- li 'Single-source file downloading.';
+ li 'Single-source and TTH-checked file downloading,';
+ li 'Searching for files.';
end;
h2 'Try it out';
p;
- b 'Latest version:'; txt ' 0.4 (';
- a href => '/download/ncdc-0.4.tar.gz', 'download';
+ b 'Latest version:'; txt ' 0.6 (';
+ a href => '/download/ncdc-0.6.tar.gz', 'download';
txt ' - '; a href => '/ncdc/changes', 'changes';
txt ' - '; a href => '/download/ncdc.md5', 'md5';
txt ' - '; a href => '/download/ncdc.sha1', 'sha1';
txt ')'; br;
- txt 'The current version might be slightly awkward to use and still lacks
- many features. Nonetheless, it\'s already quite useful as a chat program
- and upload server.'; br;
txt 'You can also 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.'; br;
@@ -229,43 +229,94 @@ sub ncdc {
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 FreeBSD 8.2 and Debian Squeeze. It should be fairly trivial to
- port to other POSIX-like systems.
+ tested on FreeBSD 8.2 and Debian Squeeze. I have also received reports from
+ people who successfully used it on Mac OS X, Ubuntu and CentOS. 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;
+ $s->htmlFooter;
+}
- 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;
- txt 'LDCC - Uses DCTC as backend and an interface based on TurboVision.
- All mentioned projects are dead: neither LDCC, DCTC nor TurboVision are
- seeing any recent development.'; 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 'For ADC: Only BASE, RF, TIGR and BZIP so far. For NMDC:'; 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, $Cancel or non-XML file lists. I
- am not aware of an other up-to-date client that still uses any of these
- features.|;
- end;
+
+sub ncdcfaq {
+ my $s = shift;
+ $s->htmlHeader(title => 'Ncdc Q&A', page => 'ncdc', tab => 'faq');
+ p 'On this page I collect several questions that people may have and try to
+ answer them. If you have a question that is not covered here, don\'t hesitate
+ to ask!';
+ div class => 'pod';
+
+ h2 'What about other text-mode clients?';
+ p;
+ 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;
+ txt 'LDCC - Uses DCTC as backend and an interface based on TurboVision.
+ All mentioned projects are dead: neither LDCC, DCTC nor TurboVision are
+ seeing any recent development.';
end;
+ h2 'Why did you start from scratch? Why not use the DC++ core?';
+ p;
+ lit <<' E;';
+ There are many reasons why I chose not to use code from existing projects,
+ but all of them boil down to the following two: 1) I am a control freak,
+ and 2) personal preferences.
+ That is the short answer. The long answer will require a full article,
+ and I don't feel like writing that much at this point. >_>
+ E;
+ end;
+
+ h2 'Can ncdc use the hash data or configuration from an existing DC++ installation?';
+ p '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.';
+
+ h2 'Does ncdc support TLS?';
+ p;
+ lit <<' E;';
+ Not natively, at this moment at least. As a temporary solution, it is
+ possible to use stunnel to connect to
+ TLS-enabled hubs. I have tested this to work for ADC, but have no
+ experience with TLS on NMDC hubs. This trick does not allow encrypted
+ client-to-client connections, so your file transfers will remain
+ unencrypted.
+ The following example stunnel configuration is what I use to connect to the
+ DC Development hub:
[dcdev]+
client = yes
accept = 127.0.0.1:16591
connect = devpublic.adcportal.com:16591
The URL `adc://127.0.0.1:16591/' can then be used to connect to the hub
+ from within ncdc.
+ E;
+ end;
+
+ h2 'Does ncdc support UPnP?';
+ p;
+ lit <<' E;';
+ Again, not natively. However, it is possible to use this
+ script and manually keep a port open using a cron job. I have no
+ experience with this myself, though. I just run ncdc directly on my router. :-)
+ E;
+ end;
+
+ h2 'What protocol features does ncdc support?';
+ p;
+ lit <<' E;';
+ For ADC: Only BASE, RF, TIGR and BZIP so far.
+ For NMDC: NoGetINFO, NoHello, MiniSlots, XmlBZList, ADCGet, TTHL and TTHF.
+ 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, $Cancel or non-XML file lists. I am not aware of an
+ other up-to-date client that still uses any of these features.
+ E;
+ end;
+
+ end 'div';
$s->htmlFooter;
}
@@ -321,7 +372,7 @@ sub ncdcguide {
txt '/set active_port '; b '34194'; br;
txt '/set active '; b 'true';
end;
- p "And make sure the port you specified is properly forwarded.";
+ p "And make sure the port you specified is properly forwarded for both TCP and UDP.";
h2 'Connecting to hubs';
p "This is where ncdc differs a bit from other DC or even IRC clients. To
@@ -377,6 +428,75 @@ sub ncdcguide {
b 'm'; txt ' PM the selected user.'; br;
b 'b'; txt ' browse the selected users\' list.'; br;
end;
+
+ h2 'Searching';
+ p "To search for files to download, use the '/search' command:";
+ pre class => 'code';
+ lit '/search gentoo';
+ end;
+ p style => 'font-size: 9px; padding-left: 25px; padding-bottom: 3px',
+ "My apologies for using such a generic search term as example. It just
+ happens to be one that doesn't advocate piracy yet gives some results on
+ most hubs.";
+ p "See '/help search' for more options. A new tab will be opened with the
+ search results, where the following keys can be used:";
+ pre class => 'code';
+ b 'j/k'; txt ' the usual down/up keys.'; br;
+ b 'b'; txt ' browse users\' file list.'; br;
+ b 'd'; txt ' add selected file to download queue.'; br;
+ b 'f'; txt ' find user in the user list.'; br;
+ b 'h'; txt ' show/hide hub column.'; br;
+ b 'u'; txt ' order by username.'; br;
+ b 's'; txt ' order by file size.'; br;
+ b 'l'; txt ' order by available slots.'; br;
+ b 'n'; txt ' order by file name.'; br;
+ end;
+
+ h2 'Browsing file lists';
+ p "If you were paying attention to the previous sections, you would have
+ noticed that three ways to open a file list have been mentioned: The global
+ Alt+o key to open your own, the 'b' key in the user list to browse a users'
+ list, and a similar 'b' key for the search results. There is a fourth
+ method, and that is the '/browse' command, see '/help browse' for details
+ on that one. Regardless of how you open a file list, the following keys
+ are available while browsing one:";
+ pre class => 'code';
+ b 'j/k'; txt ' the usual down/up keys. (this is getting boring)'; br;
+ b 'l'; txt ' open selected directory.'; br;
+ b 'h'; txt ' open parent directory.'; br;
+ b 'd'; txt ' add selected file to download queue.'; br;
+ end;
+
+ h2 'Download queue management';
+ p "Both the the search results and the file list browser have a 'd' key to
+ add a file to the download queue. Any queud files will be downloaded
+ automatically and this process will usually not require any further input.
+ Nonetheless, there is a download queue manager which can be accessed with
+ the global Alt+q key. The following keys can be used on this tab:";
+ pre class => 'code';
+ b 'j/k'; txt ' again, the down/up keys.'; br;
+ b 'f'; txt ' find user in the user list.'; br;
+ b 'd'; txt ' remove selected file from the queue.'; br;
+ b 'c'; txt ' find the related download connection in the connection list.'; br;
+ b '+'; txt ' increase download priority.'; br;
+ b '-'; txt ' decrease download priority.'; br;
+ end;
+ p "A little note on the download priorities: if you see that an item has
+ 'ERR' as priority, this means that something went wrong while downloading.
+ In these cases you have two choices: remove the item from the queue ('d'
+ key), or tell ncdc to try it again by clearing the error status (that is,
+ by increasing the priority. That is, the '+' key.).";
+
+ h2 'Connection management';
+ p 'Last but not least, you can also monitor your currently active uploads and
+ downloads with the connections tab, which can be accessed with Alt+n. Keys:';
+ pre class => 'code';
+ b 'j/k'; txt ' guess.'; br;
+ b 'd'; txt ' disconnect selected connection.'; br;
+ b 'i'; txt ' toggle information box.'; br;
+ b 'f'; txt ' find user in the user list.'; br;
+ b 'q'; txt ' find item in the download queue.'; br;
+ end;
$s->htmlFooter;
}
@@ -884,6 +1004,7 @@ sub htmlHeader {
if($o{page} eq 'ncdc') {
div id => 'mtabs';
a href => '/ncdc', !$o{tab} ? (class => 'sel') : (), 'main'; txt ' ';
+ a href => '/ncdc/faq', $o{tab} eq 'faq' ? (class => 'sel') : (), 'Q&A'; txt ' ';
a href => '/ncdc/guide', $o{tab} eq 'guide' ? (class => 'sel') : (), 'user guide'; txt ' ';
a href => '/ncdc/changes', $o{tab} eq 'changes' ? (class => 'sel') : (), 'changelog'; txt ' ';
end;