ncdc 1.7 released

This commit is contained in:
Yorhel 2011-12-30 18:26:29 +01:00
parent 0a8812e31a
commit ac38865338
7 changed files with 131 additions and 77 deletions

View file

@ -1,3 +1,14 @@
1.7 - 2011-12-30
- Split /set command in a /set (global) and /hset (hub)
- File downloads are performed in a background thread
- Added glob-style matching on /set and /hset keys
- Added UTF-8 locale check
- Added 'sendfile' setting
- Added finer granularity for the flush_file_cache setting
- Allow flush_file_cache to be enabled for downloads
- Fix sending of $MyINFO with wrong public hub count
- Fix incorrect inclusion of gdbm.h
1.6 - 2011-12-07 1.6 - 2011-12-07
- Use SQLite3 for storage instead of GDBM - Use SQLite3 for storage instead of GDBM
- Converted config.ini to SQLite3 database - Converted config.ini to SQLite3 database

View file

@ -82,7 +82,7 @@ monthly cron job.
=head2 I'm getting the error "No PEM-encoded private key found" on startup =head2 I'm getting the error "No PEM-encoded private key found" on startup
(This issue should have been fixed in 1.6) Most likely this is caused by a (This issue should be fixed since 1.6) Most likely this is caused by a
L<bug in glib-networking|https://bugzilla.gnome.org/show_bug.cgi?id=664321>. To L<bug in glib-networking|https://bugzilla.gnome.org/show_bug.cgi?id=664321>. To
get around it, install the "certtool" utility that comes with gnutls (package get around it, install the "certtool" utility that comes with gnutls (package
"gnutls-bin" on Ubuntu), delete the old certificates (C<rm ~/.ncdc/cert/*>), "gnutls-bin" on Ubuntu), delete the old certificates (C<rm ~/.ncdc/cert/*>),

View file

@ -166,6 +166,14 @@ INTERACTIVE COMMANDS
To get help on key bindings, use /help keys. To get help on key bindings, use /help keys.
/hset [<key> [<value>]]
Get or set per-hub configuration variables. Works equivalent to the
`/set' command, but can only be used on hub tabs.
/hunset [<key>]
This command can be used to reset a per-hub configuration variable back
to its global value.
/kick <user> /kick <user>
Kick a user from the hub. This command only works on NMDC hubs, and you Kick a user from the hub. This command only works on NMDC hubs, and you
need to be an OP to be able to use it. need to be an OP to be able to use it.
@ -184,7 +192,7 @@ INTERACTIVE COMMANDS
sage is given, the tab will be opened but no message will be sent. sage is given, the tab will be opened but no message will be sent.
/nick [<nick>] /nick [<nick>]
Alias for `/set nick'. Alias for `/hset nick' on hub tabs, and `/set nick' otherwise.
/open [-n] <name> [<address>] /open [-n] <name> [<address>]
Opens a new tab to use for a hub. The name is a (short) personal name you Opens a new tab to use for a hub. The name is a (short) personal name you
@ -200,7 +208,7 @@ INTERACTIVE COMMANDS
/password <password> /password <password>
This command can be used to send a password to the hub without saving it This command can be used to send a password to the hub without saving it
to the database. If you wish to login automatically without having to to the database. If you wish to login automatically without having to
type /password every time, use '/set password <password>'. Be warned, type /password every time, use '/hset password <password>'. Be warned,
however, that your password will be saved unencrypted in that case. however, that your password will be saved unencrypted in that case.
/pm <user> [<message>] /pm <user> [<message>]
@ -260,10 +268,14 @@ INTERACTIVE COMMANDS
very reliable. very reliable.
/set [<key> [<value>]] /set [<key> [<value>]]
Get or set configuration variables. Use without arguments to get a list Get or set global configuration variables. Use without arguments to get a
of all settings and their current value. Changes to the settings are list of all global settings and their current value. Glob-style pattern
automatically saved to the config file, and will not be lost after matching on the settings is also possible. Use, for example, `/set
restarting ncdc. color*' to list all color-related settings.
See the `/hset' command to manage configuration on a per-hub basis.
Changes to the settings are automatically saved to the database, and will
not be lost after restarting ncdc.
To get information on a particular setting, use `/help set <key>'. To get information on a particular setting, use `/help set <key>'.
@ -284,8 +296,8 @@ INTERACTIVE COMMANDS
Revoke a granted slot. Revoke a granted slot.
/unset [<key>] /unset [<key>]
This command can be used to reset a configuration variable back to its This command can be used to reset a global configuration variable back to
default value. its default value.
/unshare [<name>] /unshare [<name>]
To remove a single directory from your share, use `/unshare <name>', to To remove a single directory from your share, use `/unshare <name>', to
@ -311,60 +323,61 @@ INTERACTIVE COMMANDS
SETTINGS SETTINGS
The following is a list of configuration settings. These settings can be changed The following is a list of configuration settings. These settings can be changed
and queried using the `/set' command, and are stored in the db.sqlite3 file in and queried using the `/set' command for global settings and `/hset' for hub-
the session directory. local settings. All configuration data is stored in the db.sqlite3 file in the
session directory.
active <boolean> active <boolean>
Enables or disables active mode. Make sure to set `active_ip' and Enables or disables active mode. Make sure to set `active_ip' and
`active_port' before enabling active mode. `active_port' before enabling active mode.
active_bind <string> active_bind <string>
IP address to bind to in active mode. When unset, ncdc will bind to all IP address to bind to in active mode. When unset, ncdc will bind to all
interfaces. interfaces.
active_ip <string> active_ip <string>
Your public IP address for use in active mode. It is important that other Your public IP address for use in active mode. It is important that other
clients can reach you using this IP address. If you connect to a hub on clients can reach you using this IP address. If you connect to a hub on
the internet, this should be your internet (WAN) IP. Likewise, if you the internet, this should be your internet (WAN) IP. Likewise, if you
connect to a hub on your LAN, this should be your LAN IP. connect to a hub on your LAN, this should be your LAN IP.
Unlike the other connection-related settings, this can be changed on a Unlike the other connection-related settings, this can be changed on a
per-hub basis, allowing you to have a different public IP address per per-hub basis, allowing you to have a different public IP address per
hub. hub.
active_port <integer> active_port <integer>
The listen port for incoming connections in active mode. Set to `0' to The listen port for incoming connections in active mode. Set to `0' to
automatically assign a random port. If TLS support is available, another automatically assign a random port. If TLS support is available, another
TCP port will be opened on the configured port + 1. Ncdc will tell you TCP port will be opened on the configured port + 1. Ncdc will tell you
exactly on which ports it is listening for incoming packets. If you are exactly on which ports it is listening for incoming packets. If you are
behind a router or firewall, make sure that you have configured it to behind a router or firewall, make sure that you have configured it to
forward and allow these ports. forward and allow these ports.
autoconnect <boolean> autoconnect <boolean>
Set to true to automatically connect to the current hub when ncdc starts Set to true to automatically connect to the current hub when ncdc starts
up. up.
autorefresh <interval> autorefresh <interval>
The time between automatic file refreshes. Recognized suffices are 's' The time between automatic file refreshes. Recognized suffices are 's'
for seconds, 'm' for minutes, 'h' for hours and 'd' for days. Set to 0 to for seconds, 'm' for minutes, 'h' for hours and 'd' for days. Set to 0 to
disable automatically refreshing the file list. This setting also deter disable automatically refreshing the file list. This setting also deter
mines whether ncdc will perform a refresh on startup. See the `/refresh' mines whether ncdc will perform a refresh on startup. See the `/refresh'
command to manually refresh your file list. command to manually refresh your file list.
backlog <integer> backlog <integer>
When opening a hub or PM tab, ncdc can load a certain amount of lines When opening a hub or PM tab, ncdc can load a certain amount of lines
from the log file into the log window. Setting this to a positive value from the log file into the log window. Setting this to a positive value
enables this feature and configures the number of lines to load. Note enables this feature and configures the number of lines to load. Note
that, while this setting can be set on a per-hub basis, PM windows will that, while this setting can be set on a per-hub basis, PM windows will
use the global value (global.backlog). use the global value (global.backlog).
chat_only <boolean> chat_only <boolean>
Set to true to indicate that this hub is only used for chatting. That is, Set to true to indicate that this hub is only used for chatting. That is,
you won't or can't download from it. This setting affects the /search you won't or can't download from it. This setting affects the /search
command when it is given the -all option. command when it is given the -all option.
color_* <color> color_* <color>
The settings starting with the `color_' prefix allow you to change the The settings starting with the `color_' prefix allow you to change the
interface colors. The following is a list of available color settings: interface colors. The following is a list of available color settings:
list_default - default item in a list list_default - default item in a list
list_header - header of a list list_header - header of a list
@ -382,58 +395,58 @@ SETTINGS
tabprio_high - high priority tab notification color tabprio_high - high priority tab notification color
title - the title bar title - the title bar
The actual color value can be set with a comma-separated list of color The actual color value can be set with a comma-separated list of color
names and/or attributes. The first color in the list is the foreground names and/or attributes. The first color in the list is the foreground
color, the second color is used for the background. When the fore- or color, the second color is used for the background. When the fore- or
background color is not specified, the default colors of your terminal background color is not specified, the default colors of your terminal
will be used. will be used.
The following color names can be used: black, blue, cyan, default, green, The following color names can be used: black, blue, cyan, default, green,
magenta, red, white and yellow. magenta, red, white and yellow.
The following attributes can be used: bold, blink, reverse and underline. The following attributes can be used: bold, blink, reverse and underline.
The actual color values displayed by your terminal may vary. Adding the The actual color values displayed by your terminal may vary. Adding the
`bold' attribute usually makes the foreground color appear brighter as `bold' attribute usually makes the foreground color appear brighter as
well. well.
connection <string> connection <string>
Set your upload speed. This is just an indication for other users in the Set your upload speed. This is just an indication for other users in the
hub so that they know what speed they can expect when downloading from hub so that they know what speed they can expect when downloading from
you. The actual format you can use here may vary, but it is recommended you. The actual format you can use here may vary, but it is recommended
to set it to either a plain number for Mbit/s (e.g. `50' for 50 mbit) or to set it to either a plain number for Mbit/s (e.g. `50' for 50 mbit) or
a number with a `KiB/s' indicator (e.g. `2300 KiB/s'). On ADC hubs you a number with a `KiB/s' indicator (e.g. `2300 KiB/s'). On ADC hubs you
must use one of the previously mentioned formats, otherwise no upload must use one of the previously mentioned formats, otherwise no upload
speed will be broadcasted. This setting is broadcasted as-is on NMDC speed will be broadcasted. This setting is broadcasted as-is on NMDC
hubs, to allow for using old-style connection values (e.g. `DSL' or hubs, to allow for using old-style connection values (e.g. `DSL' or
`Cable') on hubs that require this. `Cable') on hubs that require this.
description <string> description <string>
A short public description that will be displayed in the user list of a A short public description that will be displayed in the user list of a
hub. hub.
download_dir <path> download_dir <path>
The directory where finished downloads are moved to. Finished downloads The directory where finished downloads are moved to. Finished downloads
are by default stored in <session directory>/dl/. It is possible to set are by default stored in <session directory>/dl/. It is possible to set
this to a location that is on a different filesystem than the incoming this to a location that is on a different filesystem than the incoming
directory, but doing so is not recommended: ncdc will block when moving directory, but doing so is not recommended: ncdc will block when moving
the completed files to their final destination. the completed files to their final destination.
download_exclude <regex> download_exclude <regex>
When recursively adding a directory to the download queue - by pressing When recursively adding a directory to the download queue - by pressing
`b' on a directory in the file list browser - any item in the selected `b' on a directory in the file list browser - any item in the selected
directory with a name that matches this regular expression will not be directory with a name that matches this regular expression will not be
added to the download queue. added to the download queue.
This regex is not checked when adding individual files from either the This regex is not checked when adding individual files from either the
file list browser or the search results. file list browser or the search results.
download_slots <integer> download_slots <integer>
Maximum number of simultaneous downloads. Maximum number of simultaneous downloads.
email <string> email <string>
Your email address. This will be displayed in the user list of the hub, Your email address. This will be displayed in the user list of the hub,
so only set this if you want it to be public. so only set this if you want it to be public.
encoding <string> encoding <string>
The character set/encoding to use for hub and PM messages. This setting The character set/encoding to use for hub and PM messages. This setting
is only used on NMDC hubs, ADC always uses UTF-8. Some common values are: is only used on NMDC hubs, ADC always uses UTF-8. Some common values are:
CP1250 (Central Europe) CP1250 (Central Europe)
CP1251 (Cyrillic) CP1251 (Cyrillic)
@ -443,22 +456,23 @@ SETTINGS
UTF-8 (International) UTF-8 (International)
filelist_maxage <interval> filelist_maxage <interval>
The maximum age of a downloaded file list. If a file list was downloaded The maximum age of a downloaded file list. If a file list was downloaded
longer ago than the configured interval, it will be removed from the longer ago than the configured interval, it will be removed from the
cache (the fl/ directory) and subsequent requests to open the file list cache (the fl/ directory) and subsequent requests to open the file list
will result in the list being downloaded from the user again. Recognized will result in the list being downloaded from the user again. Recognized
suffices are 's' for seconds, 'm' for minutes, 'h' for hours and 'd' for suffices are 's' for seconds, 'm' for minutes, 'h' for hours and 'd' for
days. Set to 0 to disable the cache altogether. days. Set to 0 to disable the cache altogether.
flush_file_cache <boolean> flush_file_cache <none|upload|download|hash>[,...]
Tell the OS to flush the file (disk) cache for file contents read while Tell the OS to flush the file (disk) cache for file contents read while
hashing and uploading. On one hand, this will avoid trashing your disk hashing and/or uploading or written to while downloading. On one hand,
cache with large files and thus improve the overall responsiveness of this will avoid trashing your disk cache with large files and thus
your system. On the other hand, ncdc may purge any shared files from the improve the overall responsiveness of your system. On the other hand,
cache, even if they are still used by other applications. In general, it ncdc may purge any shared files from the cache, even if they are still
is a good idea to enable this if you also use your system for other used by other applications. In general, it is a good idea to enable this
things besides ncdc, you share large files (>100MB) and people are not if you also use your system for other things besides ncdc, you share
constantly downloading the same file from you. large files (>100MB) and people are not constantly downloading the same
file from you.
hubname <string> hubname <string>
The name of the currently opened hub tab. This is a user-assigned name, The name of the currently opened hub tab. This is a user-assigned name,
@ -508,6 +522,11 @@ SETTINGS
`/password' command instead. Passwords are saved unencrypted in the con `/password' command instead. Passwords are saved unencrypted in the con
fig file. fig file.
sendfile <boolean>
Whether or not to use the sendfile() system call to upload files, if sup
ported. Using sendfile() allows less resource usage while uploading, but
may not work well on all systems.
share_exclude <regex> share_exclude <regex>
Any file or directory with a name that matches this regular expression Any file or directory with a name that matches this regular expression
will not be shared. A file list refresh is required for this setting to will not be shared. A file list refresh is required for this setting to
@ -756,4 +775,4 @@ SEE ALSO
ncdc-1.6 December 2011 ncdc(1) ncdc-1.7 December 2011 ncdc(1)

View file

@ -0,0 +1,17 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAABCgAGBQJO/fA4AAoJEGI5TGmMJzn6cnUQAKlRYrTU1+MbYeNU5wX6C5vs
pf/a9M+7Bq4RCCItDjaxh8gty7EZK80gY/KGSIbWVtoVOFA/I0RuOwihn/QtIW5L
mOPeuopldS1yyEqWasJ73Gqd5vHd79NoTe2RwaC01KH65yAjbbt6Jw88OEAfJeM1
4Cw2e2RJnkifu/QmvEOJZgH8aiFQNg69oe82awsWjMpPv1gkCIHlkv7cEU3Hz0eL
GhhOCUAezdoBsfikPjUi52dtLr7xmy6ZyUXtJLg1oDb+TVPeA4VJ9pP5UWLXxqMW
X/Qe+4Kr6Ir71C2PlV5nJxMGjjvYzi5u8F9Nu8JdRo7HM4E7cVX0WMBpOZRaP+aC
Yp8HMd8tjTUCmo5nCcDFULTYEDComV1F7q3iiuVMqH8m7mroTbrR+vMzx4TYbzDc
oFm9Xa2rbOyCwLBFh+IwS/0ADSQo4yU8Wqi4kpYuNUE37pqOTr3xAOL9+tNdYSq0
0lfQGwkdG5jhtcrvx/gT8wLH9mhmlWhqVIgvX6rGH/T9oeXNm1q4JCzltNxmtDcr
BIy2dIp5o7xScI/nH8wMRyNXHhU/pShWXesNS25YlWUVk61kNP8pWe8sli8X5gxh
h4RezJ5sDL6tp1cIKLgQg4kip7978Sh2pjSfJk9X9BXv7td0iuiqe1TpSGh1BSss
4ZePuGT1iFSKsvL1sJwB
=eYWN
-----END PGP SIGNATURE-----

View file

@ -0,0 +1 @@
dba1503f58694a64f600541b4fcdccf3 ncdc-1.7.tar.gz

View file

@ -0,0 +1 @@
d31d9b48351aa322afb57c6db44fbc4c66f4df4b ncdc-1.7.tar.gz

View file

@ -56,6 +56,7 @@ sub home {
E; E;
end; end;
h2 'Updates'; h2 'Updates';
b '2011-12-30'; txt ' ncdc 1.7 released!'; br;
b '2011-12-07'; txt ' ncdc 1.6 released!'; br; b '2011-12-07'; txt ' ncdc 1.6 released!'; br;
b '2011-11-26'; txt ' Added article section and the article on SQLite.'; br; b '2011-11-26'; txt ' Added article section and the article on SQLite.'; br;
b '2011-11-03'; txt ' ncdc 1.5 and ncdu 1.8 released!'; br; b '2011-11-03'; txt ' ncdc 1.5 and ncdu 1.8 released!'; br;
@ -252,8 +253,8 @@ sub ncdc {
h2 'Get ncdc!'; h2 'Get ncdc!';
p; p;
b 'Latest version:'; txt ' 1.6 ('; b 'Latest version:'; txt ' 1.7 (';
$s->htmlDLLink('ncdc-1.6.tar.gz', 'download'); $s->htmlDLLink('ncdc-1.7.tar.gz', 'download');
txt ' - '; a href => '/ncdc/changes', 'changes'; txt ' - '; a href => '/ncdc/changes', 'changes';
txt ' - '; a href => 'https://sourceforge.net/projects/ncdc/files/ncdc/', 'mirror'; txt ' - '; a href => 'https://sourceforge.net/projects/ncdc/files/ncdc/', 'mirror';
txt ')'; br; txt ')'; br;
@ -265,6 +266,8 @@ sub ncdc {
br;br; br;br;
txt 'Packages/ports are available for the following systems: '; br; txt 'Packages/ports are available for the following systems: '; br;
a href => 'http://aur.archlinux.org/packages.php?ID=50949', 'Arch Linux'; txt ' - '; a href => 'http://aur.archlinux.org/packages.php?ID=50949', 'Arch Linux'; txt ' - ';
a href => 'http://www.freshports.org/net-p2p/ncdc/', 'FreeBSD'; txt ' - ';
a href => 'http://frugalware.org/packages/136807', 'Frugalware'; txt ' - ';
a href => 'http://packages.gentoo.org/package/net-p2p/ncdc', 'Gentoo'; txt ' - '; a href => 'http://packages.gentoo.org/package/net-p2p/ncdc', 'Gentoo'; txt ' - ';
txt 'Mac OS X ('; txt 'Mac OS X (';
a href => 'http://www.macports.org/ports.php?by=name&substr=ncdc', 'MacPorts'; a href => 'http://www.macports.org/ports.php?by=name&substr=ncdc', 'MacPorts';
@ -501,11 +504,12 @@ sub docindex {
p; p;
txt '2011-11-26 - '; b 'Multi-threaded Access to an SQLite3 Database'; txt '2011-11-26 - '; b 'Multi-threaded Access to an SQLite3 Database';
txt ' ['; a href => '/doc/sqlaccess', 'HTML'; txt ' - '; a href => '/dat/sqlaccess', rel => 'nofollow', 'POD'; txt ']'; txt ' ['; a href => '/doc/sqlaccess', 'HTML'; txt ' - '; a href => '/dat/sqlaccess', rel => 'nofollow', 'POD'; txt ']';
br; span 'So you have a single database and some threads. How do you combine
these in a program?';
txt '2010-06-02 - '; b 'Design and implementation of a compressed linked list library'; txt '2010-06-02 - '; b 'Design and implementation of a compressed linked list library';
txt ' ['; a href => '/download/doc/compll.pdf', 'PDF'; txt ']'; txt ' ['; a href => '/download/doc/compll.pdf', 'PDF'; txt ']';
br;br; span q|This isn't really an article. It's the report for the
txt q|Disclaimer: The last one isn't really an article. It's the report for the
final project of my professional (HBO) bachelor of Electrical final project of my professional (HBO) bachelor of Electrical
Engineering. I was very liberal with some terminology in this report. For Engineering. I was very liberal with some terminology in this report. For
example, "linked lists" aren't what you think they are, and I didn't even example, "linked lists" aren't what you think they are, and I didn't even
@ -1103,6 +1107,7 @@ sub css {
pre, code, pre b { font: 11px monospace; } pre, code, pre b { font: 11px monospace; }
pre b { font-weight: bold } pre b { font-weight: bold }
pre.code, .pod pre { background: #111; border: 1px dotted #666; margin: 5px 10px; display: block; padding: 5px; } pre.code, .pod pre { background: #111; border: 1px dotted #666; margin: 5px 10px; display: block; padding: 5px; }
span { display: block; font-size: 12px; margin: 3px 10px 10px 30px }
.indexgroup ul { margin-left: 5px; list-style-type: none } .indexgroup ul { margin-left: 5px; list-style-type: none }
.indexgroup ul ul { margin-left: 20px } .indexgroup ul ul { margin-left: 20px }
.pod p { margin: 3px 15px 13px 15px; text-align: justify } .pod p { margin: 3px 15px 13px 15px; text-align: justify }