From b1c26953dc00add3b6e76cab1acd6b8f4a68336a Mon Sep 17 00:00:00 2001
From: Yorhel
Date: Sun, 4 Sep 2011 12:48:28 +0200
Subject: [PATCH] ncdc 0.9 released + some minor changes
---
dat/ncdc-changelog | 7 +++++++
img/ncdcstart.png | Bin 18130 -> 17397 bytes
index.cgi | 38 ++++++++++++++++++++++----------------
3 files changed, 29 insertions(+), 16 deletions(-)
diff --git a/dat/ncdc-changelog b/dat/ncdc-changelog
index a0b2220..f97fda7 100644
--- a/dat/ncdc-changelog
+++ b/dat/ncdc-changelog
@@ -1,3 +1,10 @@
+0.9 - 2011-09-03
+ - Added TLS support (adcs://, nmdcs://, and ADC client-to-client)
+ - Added tls_policy setting
+ - Added KEYP support for ADC
+ - Added warning when a hub changes TLS certificate
+ - Display exact listen ports when enabling active mode
+
0.8 - 2011-08-26
- Added transfer log
- Added log_downloads and log_uploads settings
diff --git a/img/ncdcstart.png b/img/ncdcstart.png
index 6f327102e4beab5b68f82fd1fa892b820ce55f41..6ce87a24dfbaebe88f507cb5c6b074445f8fcb1f 100644
GIT binary patch
literal 17397
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%0DwDd+ymF#dYgbU4+
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
KKdzKD4gNn)Cg|w^
literal 18130
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
P^FT&YL83&=;KTm_ 'http://packages.gentoo.org/package/sys-fs/ncdu', 'Gentoo'; txt ' - ';
a href => 'http://www.ipcopaddons.org/addondb.php?action=detail&addonid=67', 'IPCop'; txt ' - ';
a href => 'http://www.openbsd.org/cgi-bin/cvsweb/ports/sysutils/ncdu/', 'OpenBSD'; txt ' - ';
- a href => 'http://packman.links2linux.de/package/ncdu/182992', 'OpenSUSE'; txt ' - ';
+ a href => 'http://packman.links2linux.de/package/ncdu/', 'OpenSUSE'; txt ' - ';
txt 'Mac OS X (';
a href => 'http://ncdu.darwinports.com/', 'Darwin Ports'; txt '-';
a href => 'http://pdb.finkproject.org/pdb/package.php/ncdu', 'Fink';
@@ -130,7 +131,7 @@ sub ncdu {
a href => 'http://www.opencsw.org/packages/ncdu', 'CSW'; txt '-';
a href => 'http://www.sunfreeware.com/', 'sunfreeware';
txt ') - ';
- a href => 'http://slackbuilds.org/repository/13.1/system/ncdu/', 'Slackware'; txt ' - ';
+ a href => 'http://slackbuilds.org/repository/13.37/system/ncdu/', 'Slackware'; txt ' - ';
a href => 'http://packages.ubuntu.com/search?searchon=sourcenames&keywords=ncdu', 'Ubuntu'; txt ' - ';
a href => 'http://zur.zenwalk.org/view/package/name/ncdu', 'Zenwalk';
@@ -185,6 +186,9 @@ sub ncdumanual {
sub ncdc {
my $s = shift;
$s->htmlHeader(title => 'NCurses Direct Connect', page => 'ncdc');
+ p style => 'float:right; margin-top: -27px; font-size: 12px; line-height: 11px';
+ txt 'Join the development hub! '; b style => 'font-size: 12px', 'adc://dc.blicky.net:2780/';
+ end;
p;
lit <<' E;';
Ncdc is a modern and lightweight direct connect client with a friendly
@@ -206,13 +210,14 @@ sub ncdc {
li 'Connections and download queue management,';
li 'File list browsing,';
li 'Single-source and TTH-checked file downloading,';
- li 'Searching for files.';
+ li 'Searching for files,';
+ li 'Secure hub (adcs:// and nmdcs://) and client (ADCS) connections.';
end;
h2 'Try it out';
p;
- b 'Latest version:'; txt ' 0.8 (';
- a href => '/download/ncdc-0.8.tar.gz', 'download';
+ b 'Latest version:'; txt ' 0.9 (';
+ a href => '/download/ncdc-0.9.tar.gz', 'download';
txt ' - '; a href => '/ncdc/changes', 'changes';
txt ' - '; a href => '/download/ncdc.md5', 'md5';
txt ' - '; a href => '/download/ncdc.sha1', 'sha1';
@@ -228,6 +233,8 @@ sub ncdc {
p;
lit <<' E;';
The following libraries are required: ncurses, bzip2, gdbm, glib2 and libxml2.
+ For TLS support, you will need at least glib2 version 2.28.0 and
+ glib-networking installed.
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
@@ -294,14 +301,13 @@ sub ncdcfaq {
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:
+ Yes! To make use of this, however, you need to have relatively new version
+ of glib2. If you're still working with an outdated system, an alternative
+ is to use stunnel to connect to
+ TLS-enabled 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 used to connect to
+ the DC Development hub before ncdc had native TLS support:
[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.
@@ -311,7 +317,7 @@ sub ncdcfaq {
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. :-)
@@ -321,10 +327,10 @@ sub ncdcfaq {
h2 'What protocol features does ncdc support?';
p;
lit <<' E;';
- For ADC: Only BASE, RF, TIGR and BZIP so far.
+ For ADC: BASE, RF, TIGR, BZIP, ADCS and KEYP.
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,
+ that ncdc does not support some of the older NMDC 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;