From 0a8812e31a3075913c900acb834c2cc145df68ed Mon Sep 17 00:00:00 2001 From: Yorhel Date: Wed, 7 Dec 2011 17:02:58 +0100 Subject: [PATCH] Lots of changes - ncdc 1.6 released - ncdc FAQ updates - 3 new images for /dump/nccol - added my final report to /doc - added ncdc-transfer-stats and ncdc-share-report to /dump --- dat/ncdc-changelog | 241 +++++++++++++++++++--------------- dat/ncdc-faq | 37 ++++-- dat/ncdc-man | 160 +++++++++++----------- download/ncdc-1.6.tar.gz.asc | 17 +++ download/ncdc-1.6.tar.gz.md5 | 1 + download/ncdc-1.6.tar.gz.sha1 | 1 + img/nccol-osx-iterm2.png | Bin 0 -> 28393 bytes img/nccol-osx-terminal.png | Bin 0 -> 31149 bytes img/nccol-ubuntu.png | Bin 0 -> 32092 bytes index.cgi | 71 +++++++--- robots.txt | 1 + 11 files changed, 316 insertions(+), 213 deletions(-) create mode 100644 download/ncdc-1.6.tar.gz.asc create mode 100644 download/ncdc-1.6.tar.gz.md5 create mode 100644 download/ncdc-1.6.tar.gz.sha1 create mode 100644 img/nccol-osx-iterm2.png create mode 100644 img/nccol-osx-terminal.png create mode 100644 img/nccol-ubuntu.png diff --git a/dat/ncdc-changelog b/dat/ncdc-changelog index 8db45a4..8eb26b7 100644 --- a/dat/ncdc-changelog +++ b/dat/ncdc-changelog @@ -1,135 +1,158 @@ +1.6 - 2011-12-07 + - Use SQLite3 for storage instead of GDBM + - Converted config.ini to SQLite3 database + - Added ncdc-db-upgrade utility + - Session directory is architecture-independent + - All data is safe against crashes and power failures + - Added support for removing/adding directories without rehashing + - Always match every file list on 'Q' key on TTH search + - Immediately flush log entries to the kernel + - Faster start-up + - Added support for per-hub 'active_ip' settings + - Allow interval notation when setting autorefresh + - Broadcast SF (number of shared files) on ADC hubs + - Combine TTH data for downloaded files to blocks of at least 1MiB + - Increased hash buffer size (10KiB -> 512KiB) + - Fix case-insensitivity of search results + - Fix reporting of user state in pm tabs at hub disconnect + - Fix generation of client certificates with openssl + - Fix segfault with duplicate users on an ADC hub + - Fix segfault when opening of a filelist fails + - Fix base32 decoding bug (fixes login sequence on some ADC hubs) + 1.5 - 2011-11-03 - - Added filelist_maxage setting - - Added flush_file_cache setting - - Added /ungrant and improved /grant management - - Added key to download queue to clear user state for all files - - Added keys to search results to download file list and match queue - - Select the right user when using the 'q' key in connection tab - - Fixed possible crash when opening file list from search results - - Fixed detection of incompatible session directory version + - Added filelist_maxage setting + - Added flush_file_cache setting + - Added /ungrant and improved /grant management + - Added key to download queue to clear user state for all files + - Added keys to search results to download file list and match queue + - Select the right user when using the 'q' key in connection tab + - Fixed possible crash when opening file list from search results + - Fixed detection of incompatible session directory version 1.4 - 2011-10-26 - - Added sorting functionality to file list - - Added color settings: title, separator, list_default, list_header and list_select - - Added "blink" color attribute - - Allow /disconnect to be used on the main tab - - Display number of matched and added items when using match queue feature - - Use git-describe to create a version string, if available - - Decreased memory usage for large file lists - - Handle duplicate filenames in other users' file list - - Fixed incorrect setting of the "Incomplete" flag in files.xml.bz2 - - Fixed handling of the PM param in MSG commands on ADC - - Fixed user change notifications for PM tabs + - Added sorting functionality to file list + - Added color settings: title, separator, list_default, list_header and + list_select + - Added "blink" color attribute + - Allow /disconnect to be used on the main tab + - Display number of matched and added items when using match queue feature + - Use git-describe to create a version string, if available + - Decreased memory usage for large file lists + - Handle duplicate filenames in other users' file list + - Fixed incorrect setting of the "Incomplete" flag in files.xml.bz2 + - Fixed handling of the PM param in MSG commands on ADC + - Fixed user change notifications for PM tabs 1.3 - 2011-10-14 - - Added multi-source downloading - - Added user information view and management keys to download queue tab - - Added "search for alternative" key to queue, file browser and search tabs - - Added "match queue" key to file browser and search tabs - - Added ui_time_format setting - - Added chat_only setting - - Changed default value of color_log_time to dark grey - - Improved tracking of a parent for each tab - - Improved portability for Solaris - - Fixed crash when closing a hub tab while it is connecting - - Fixed crash when auto-completing settings without auto-completion - - Fixed bug with file name display if download_dir ends with a slash - - Fixed bug with uploading chunks larger than 2GiB - - Fixed handling of directory search results on ADC + - Added multi-source downloading + - Added user information view and management keys to download queue tab + - Added "search for alternative" key to queue, file browser and search tabs + - Added "match queue" key to file browser and search tabs + - Added ui_time_format setting + - Added chat_only setting + - Changed default value of color_log_time to dark grey + - Improved tracking of a parent for each tab + - Improved portability for Solaris + - Fixed crash when closing a hub tab while it is connecting + - Fixed crash when auto-completing settings without auto-completion + - Fixed bug with file name display if download_dir ends with a slash + - Fixed bug with uploading chunks larger than 2GiB + - Fixed handling of directory search results on ADC 1.2 - 2011-09-25 - - Fixed incorrect handling of outgoing NMDC connections + - Fixed incorrect handling of outgoing NMDC connections 1.1 - 2011-09-25 - - Select item in file browser when opened from a search result - - Added active_bind setting - - Added share_exclude setting - - Added download_exclude setting - - Added incoming_dir setting - - Added autocompletion for the previous values of certain settings - - Allow the "connection" setting to be used for ADC as well - - Added IP column to user list - - Allow sorting on description, email, tag and IP columns in user list - - Display upload speeds in the user list of an ADC hub - - Added TLS indication to connection list - - Mark selected items bold in listings - - Allow /reconnect on the main tab to reconnect all hubs - - Added slash to base path in partial file lists - - Added delay of 5 seconds before reconnecting to a hub - - Added recognition of the AP param on ADC - - Added support for UserIP2 on NMDC - - Removed support for unexpected incoming NMDC connections + - Select item in file browser when opened from a search result + - Added active_bind setting + - Added share_exclude setting + - Added download_exclude setting + - Added incoming_dir setting + - Added autocompletion for the previous values of certain settings + - Allow the "connection" setting to be used for ADC as well + - Added IP column to user list + - Allow sorting on description, email, tag and IP columns in user list + - Display upload speeds in the user list of an ADC hub + - Added TLS indication to connection list + - Mark selected items bold in listings + - Allow /reconnect on the main tab to reconnect all hubs + - Added slash to base path in partial file lists + - Added delay of 5 seconds before reconnecting to a hub + - Added recognition of the AP param on ADC + - Added support for UserIP2 on NMDC + - Removed support for unexpected incoming NMDC connections 1.0 - 2011-09-16 - - Added ncdc(1) and ncdc-gen-cert(1) manual pages - - Documented settings (/help set ) - - Documented key bindings (/help keys) - - Improved line wrapping algorithm for the log window - - Added support for client-to-client TLS on NMDC - - Added support for the CGFI command on ADC - - Throttle GET requests on the same file + offset - - Fixed glib assertion failure when disabling active mode - - Fixed downloading from clients using $ADCSND with -1 bytes - - Fixed race condition in file uploading code - - Fixed idle time calculation while connecting to another client - - Properly include unistd.h in dl.c + - Added ncdc(1) and ncdc-gen-cert(1) manual pages + - Documented settings (/help set ) + - Documented key bindings (/help keys) + - Improved line wrapping algorithm for the log window + - Added support for client-to-client TLS on NMDC + - Added support for the CGFI command on ADC + - Throttle GET requests on the same file + offset + - Fixed glib assertion failure when disabling active mode + - Fixed downloading from clients using $ADCSND with -1 bytes + - Fixed race condition in file uploading code + - Fixed idle time calculation while connecting to another client + - Properly include unistd.h in dl.c 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 + - 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 - - Added day changed indicators to the log windows - - Added common readline keys to the text input box - - Changed /refresh shortcut from Ctrl+e/u to Alt+r - - Allow join messages to work even when the join completion detection fails - - Select parent tab when closing a userlist, PM or filelist tab - - Re-open log files when receiving SIGUSR1 - - Perform a clean shutdown when the terminal is closed - - Fixed bug in formatting the title of a /search tab - - Fixed log indent for non-ASCII nicks - - Fixed log highlighting and indenting for /me messages + - Added transfer log + - Added log_downloads and log_uploads settings + - Added day changed indicators to the log windows + - Added common readline keys to the text input box + - Changed /refresh shortcut from Ctrl+e/u to Alt+r + - Allow join messages to work even when the join completion detection fails + - Select parent tab when closing a userlist, PM or filelist tab + - Re-open log files when receiving SIGUSR1 + - Perform a clean shutdown when the terminal is closed + - Fixed bug in formatting the title of a /search tab + - Fixed log indent for non-ASCII nicks + - Fixed log highlighting and indenting for /me messages 0.7 - 2011-08-17 - - Added word wrapping for the log window - - Added basic colors and nick highlighting to the log window - - Allow colors to be changed with the /set command - - Added backlog feature and setting - - Added silent building to the configure script - - Automatically re-open log files when they are moved/truncated externally - - Accept 'nmdc://' URLs as alternative to 'dchub://' - - Fixed spamming of useless $MyINFO and BINF commands every 5 minutes - - Fixed minor memory leak when closing/clearing the log window + - Added word wrapping for the log window + - Added basic colors and nick highlighting to the log window + - Allow colors to be changed with the /set command + - Added backlog feature and setting + - Added silent building to the configure script + - Automatically re-open log files when they are moved/truncated externally + - Accept 'nmdc://' URLs as alternative to 'dchub://' + - Fixed spamming of useless $MyINFO and BINF commands every 5 minutes + - Fixed minor memory leak when closing/clearing the log window 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 + - 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 + - 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. + - Added file downloading support WARNING: Downloaded files are not TTH checked at this moment. - Added persistent download queue - Added busy indicators on start-up and with /gc diff --git a/dat/ncdc-faq b/dat/ncdc-faq index fa7d5fb..49f220b 100644 --- a/dat/ncdc-faq +++ b/dat/ncdc-faq @@ -50,19 +50,26 @@ up-to-date client that still uses any of these features. This is for Ubuntu 11.10, but may work for other versions as well. Run the following command: - sudo apt-get install libbz2-dev libgdbm-dev\ - libncursesw5-dev libxml2-dev libglib2.0-dev gnutls-bin + sudo apt-get install libbz2-dev libsqlite3-dev\ + libncursesw5-dev libxml2-dev libglib2.0-dev And then follow the instructions in the README. -=head2 I'm getting the error "No PEM-encoded private key found" on startup +=head2 Ncdc uses too much disk space! -Most likely this is caused by a L. To get -around it, install the "certtool" utility that comes with gnutls (package -"gnutls-bin" on Ubuntu), delete the old certificates (C), -and then start ncdc again. +First, look where this disk space goes to (hint: use +L). If it's the log files: you can safely +delete or rotate them (see next question). + +The I file can also grow quite large in certain situations. If you +modify or rename a lot of files in your share and ncdc re-hashes them, the old +hash data associated with the files is not removed from the database, resulting +in wasted disk space. The C command in ncdc can be used to clean up this +unused data. Be warned, however, that this command needs roughly twice the size +of the old db.sqlite3 file for temporary storage, so make sure you have enough +space available. (Note that this behaviour is not specific to ncdc, most other +DC clients do the same.) =head2 Why doesn't ncdc rotate log files automatically? @@ -73,6 +80,15 @@ L, which is run as a monthly cron job. +=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 +L. To +get around it, install the "certtool" utility that comes with gnutls (package +"gnutls-bin" on Ubuntu), delete the old certificates (C), +and then start ncdc again. + + =head1 Can ncdc... @@ -123,6 +139,7 @@ myself, though. I just run ncdc directly on my router. :-) =head2 Are there any programs available for analyzing the transfers.log file? -Nothing like that is included in the release yet, but there is a simple -Perl script available: L. +Nothing like that is included in the release yet, but there is a simple Perl +script available: L, and a short +Go program: L. diff --git a/dat/ncdc-man b/dat/ncdc-man index a0cbf1e..357bac5 100644 --- a/dat/ncdc-man +++ b/dat/ncdc-man @@ -38,13 +38,13 @@ GETTING STARTED /set active true See the help text for each of the commands and settings for more information. - Of course, all of the above settings are saved to the configuration file and - will be used again on the next run. + Of course, all of the above settings are saved to the database and will be used + again on the next run. To connect to a hub, use /open: /open ncdc adc://dc.blicky.net:2780/ Here `ncdc' is the personal name you give to the hub, and the second argument - the URL. This URL will be saved in the config file, so the next time you want to + the URL. This URL will be saved in the database, so the next time you want to connect to this hub, you can simply do: /open ncdc See the help text for '/open' and '/connect' for more information. If you want @@ -88,7 +88,7 @@ INTERACTIVE COMMANDS /accept Use this command to accept the TLS certificate of a hub. This command is used only in the case the keyprint of the TLS certificate of a hub does - not match the keyprint stored in the configuration file. + not match the keyprint stored in the database. /browse [[-f] ] Without arguments, this opens a new tab where you can browse your own @@ -133,22 +133,27 @@ INTERACTIVE COMMANDS /gc Cleans up unused data and reorganizes existing data to allow more effi‐ - cient storage and usage. Currently, this commands cleans up hashdata.dat - and dl.dat, removes unused files in inc/ and old files in fl/. + cient storage and usage. Currently, this commands removes unused hash + data, does a VACUUM on db.sqlite3, removes unused files in inc/ and old + files in fl/. - This command may take some time to complete, and will fully block ncdc - while it is running. You won't have to perform this command very often. + This command may take some time to complete, and will fully block ncdc + while it is running. It is recommended to run this command every once in + a while. Every month is a good interval. Note that when ncdc says that it + has completed this command, it's lying to you. Ncdc will still run a few + large queries on the background, which may take up to a minute to com‐ + plete. /grant [-list|] - Grant someone a slot. This allows the user to download from you even if - you have no free slots. The slot will be granted for as long as ncdc + Grant someone a slot. This allows the user to download from you even if + you have no free slots. The slot will be granted for as long as ncdc stays open or the /ungrant command is used. If you restart ncdc, the user - will have to wait for a regular slot. Unless, of course, you /grant a + will have to wait for a regular slot. Unless, of course, you /grant a slot again. To get a list of users whom you have granted a slot, use `/grant' without - arguments or with `-list'. Be warned that using `/grant' without argu‐ - ments on a PM tab will grant the slot to the user you are talking with. + arguments or with `-list'. Be warned that using `/grant' without argu‐ + ments on a PM tab will grant the slot to the user you are talking with. Make sure to use `-all' in that case. Note that a granted slot is specific to a single hub. If the same user is @@ -162,20 +167,20 @@ INTERACTIVE COMMANDS /kick - 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. /me - This allows you to talk in third person. Most clients will display your + This allows you to talk in third person. Most clients will display your message as something like: ** Nick is doing something - Note that this command only works correctly on ADC hubs. The NMDC proto‐ - col does not have this feature, and your message will be sent as-is, + Note that this command only works correctly on ADC hubs. The NMDC proto‐ + col does not have this feature, and your message will be sent as-is, including the /me. /msg [] - Send a private message to a user on the currently opened hub. If no mes‐ + Send a private message to a user on the currently opened hub. If no mes‐ sage is given, the tab will be opened but no message will be sent. /nick [] @@ -183,19 +188,19 @@ INTERACTIVE COMMANDS /open [-n] [
] Opens a new tab to use for a hub. The name is a (short) personal name you - use to identify the hub, and will be used for storing hub-specific con‐ + use to identify the hub, and will be used for storing hub-specific con‐ figuration. - If you have specified an address or have previously connected to a hub - from a tab with the same name, /open will automatically connect to the + If you have specified an address or have previously connected to a hub + from a tab with the same name, /open will automatically connect to the hub. Use the `-n' flag to disable this behaviour. See /connect for more information on connecting to a hub. /password - This command can be used to send a password to the hub without saving it - to the config file. If you wish to login automatically without having to - type /password every time, use '/set password '. Be warned, + 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 + type /password every time, use '/set password '. Be warned, however, that your password will be saved unencrypted in that case. /pm [] @@ -208,24 +213,24 @@ INTERACTIVE COMMANDS Quit ncdc. You can also just hit ctrl+c, which is equivalent. /reconnect - Reconnect to the hub. When your nick or the hub encoding have been + Reconnect to the hub. When your nick or the hub encoding have been changed, the new settings will be used after the reconnect. - This command can also be used on the main tab, in which case all con‐ + This command can also be used on the main tab, in which case all con‐ nected hubs will be reconnected. /refresh [] - Initiates share refresh. If no argument is given, the complete list will - be refreshed. Otherwise only the specified directory will be refreshed. - The path argument can be either an absolute filesystem path or a virtual + Initiates share refresh. If no argument is given, the complete list will + be refreshed. Otherwise only the specified directory will be refreshed. + The path argument can be either an absolute filesystem path or a virtual path within your share. /say - Sends a chat message to the current hub or user. You normally don't have + Sends a chat message to the current hub or user. You normally don't have to use the /say command explicitly, any command not staring with '/' will automatically imply `/say '. For example, typing `hello.' in the - command line is equivalent to `/say hello.'. Using the /say command - explicitly may be useful to send message starting with '/' to the chat, + command line is equivalent to `/say hello.'. Using the /say command + explicitly may be useful to send message starting with '/' to the chat, for example `/say /help is what you are looking for'. /search [options] @@ -239,7 +244,7 @@ INTERACTIVE COMMANDS -t File must be of type . (see below) -tth TTH root of this file must match . - File sizes ( above) accept the following suffixes: G (GiB), M (MiB) + File sizes ( above) accept the following suffixes: G (GiB), M (MiB) and K (KiB). The following file types can be used with the -t option: @@ -251,13 +256,13 @@ INTERACTIVE COMMANDS 6 img Image files. 7 video Video files. 8 dir Directories. - Note that file type matching is done using file extensions, and is not + Note that file type matching is done using file extensions, and is not very reliable. /set [ []] - Get or set configuration variables. Use without arguments to get a list - of all settings and their current value. Changes to the settings are - automatically saved to the config file, and will not be lost after + Get or set configuration variables. Use without arguments to get a list + of all settings and their current value. Changes to the settings are + automatically saved to the config file, and will not be lost after restarting ncdc. To get information on a particular setting, use `/help set '. @@ -265,33 +270,35 @@ INTERACTIVE COMMANDS /share [ ] Use /share without arguments to get a list of shared directories. When called with a name and a path, the path will be added to your share. - Note that shell escaping may be used in the name. For example, to add a + Note that shell escaping may be used in the name. For example, to add a directory with the name `Fun Stuff', you could do the following: /share "Fun Stuff" /path/to/fun/stuff Or: /share Fun\ Stuff /path/to/fun/stuff - The full path to the directory will not be visible to others, only the - name you give it will be public. An initial `/refresh' is done automati‐ + The full path to the directory will not be visible to others, only the + name you give it will be public. An initial `/refresh' is done automati‐ cally on the added directory. /ungrant [|] Revoke a granted slot. /unset [] - This command can be used to reset a configuration variable back to its + This command can be used to reset a configuration variable back to its default value. /unshare [] - To remove a single directory from your share, use `/unshare ', to + To remove a single directory from your share, use `/unshare ', to remove all directories from your share, use `/unshare /'. - Note that all hash data for the removed directories will be thrown away. - All files will have to be re-hashed again when the directory is later re- - added. + Note that the hash data associated with the removed files will remain in + the database. This allows you to re-add the files to your share without + needing to re-hash them. The downside is that the database file may grow + fairly large with unneeded information. See the `/gc' command to clean + that up. /userlist - Opens the user list of the currently selected hub. Can also be accessed + Opens the user list of the currently selected hub. Can also be accessed using Alt+u. /version @@ -304,46 +311,45 @@ INTERACTIVE COMMANDS SETTINGS The following is a list of configuration settings. These settings can be changed - and queried using the `/set' command, and are stored in the config.ini file in + and queried using the `/set' command, and are stored in the db.sqlite3 file in the session directory. active - 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_bind - 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. active_ip 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 - the internet, this should be your internet (WAN) IP. Likewise, if you + 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 connect to a hub on your LAN, this should be your LAN IP. - Note that this setting is global for ncdc: it is currently not possible - to use a single instance of ncdc to connect to both internet and LAN - hubs, if you are not reachable on the same IP with both networks. In that - case you can either use passive mode or run two separate instances of - ncdc. + 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 + hub. active_port - The listen port for incoming connections in active mode. Set to `0' to - 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 - 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 + The listen port for incoming connections in active mode. Set to `0' to + 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 + 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 forward and allow these ports. autoconnect - 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. - autorefresh - The time between automatic file refreshes, in minutes. Set to 0 to dis‐ - able automatically refreshing the file list. This setting also determines - whether ncdc will perform a refresh on startup. See the `/refresh' com‐ - mand to manually refresh your file list. + autorefresh + 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 + disable automatically refreshing the file list. This setting also deter‐ + mines whether ncdc will perform a refresh on startup. See the `/refresh' + command to manually refresh your file list. backlog When opening a hub or PM tab, ncdc can load a certain amount of lines @@ -683,18 +689,17 @@ FILES should be generated automatically when ncdc starts up the first time, but can be generated manually using ncdc-gen-cert(1). - $NCDC_DIR/config.ini - Main configuration file. It is recommended to use commands within ncdc - instead of editing this file manually. In particular, do not edit this - file while ncdc is running, otherwise you will lose your changes. + $NCDC_DIR/db.sqlite3 + The database. This stores all configuration variables, hash data of + shared files, download queue information and other state information. + Manually editing this file with the `sqlite3' commandline tool is possi‐ + ble but discouraged. Any changes made to the database while ncdc is run‐ + ning will not be read, and may even get overwritten by ncdc. $NCDC_DIR/dl/ Directory where completed downloads are moved to by default. Can be changed with the `download_dir' configuration option. - $NCDC_DIR/dl.dat - Stores information about the download queue. - $NCDC_DIR/files.xml.bz2 Filelist containing a listing of all shared files. @@ -704,9 +709,6 @@ FILES ncdc. Old file lists are deleted automatically after a configurable interval. See the `filelist_maxage' configuration option. - $NCDC_DIR/hashdata.dat - File information and hash data for shared files. - $NCDC_DIR/history Command history. @@ -750,8 +752,8 @@ AUTHOR SEE ALSO - ncdc-gen-cert(1). + ncdc-gen-cert(1), ncdc-db-upgrade(1). -ncdc-1.5 November 2011 ncdc(1) +ncdc-1.6 December 2011 ncdc(1) diff --git a/download/ncdc-1.6.tar.gz.asc b/download/ncdc-1.6.tar.gz.asc new file mode 100644 index 0000000..9f73726 --- /dev/null +++ b/download/ncdc-1.6.tar.gz.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.11 (GNU/Linux) + +iQIcBAABCgAGBQJO34UeAAoJEGI5TGmMJzn6wBkP/jZvIr0ylFoTwgSVEA9yaePk +OcafdIaAuhJxk5b66cohmYSO5kkSWY9FtPtJYitdocLvzmLL5EkrOvY+WHCcBDcB +kJa31ScqgfwXGIHbpaZU9aAwoU9uoAjzxoRalxCvQ3PHAp/l5i5NJMNxH2IpByRn +Jr8Ufb6lj8Nkek9USl4NmYeK2LMQH/7q9FHr6gS82K1lJ0tNsYPYiBNF7eGjr1Bw +pxoOthEtCbFeTIfJj2crM8UbQfXMsDFJHTbMmnh8dsAixIIpvT4CDR4Opaubp0Vc +XdM+52W5EPPwGE8GdGc+r2X82LePB8zsjNmWoe7gGWH9nlMbH+IPDzsUj/oA+bj/ +L3T8/Uxs+uh/Jq3IX8v0WxMVcHVDIa8AE4yIRAs5apJwd9635V3CdDwGwIubHGXS +GSSe7UjxZZ9sAIxwsmwgxamtW1+GjLEjzieuHQedVJNW2ObE8/pmpZfJBBDc0LqB +wlpQsOzFH8R7y0HmB0VTnjerkbbaGKPOFVtYVFi04bjEc0J/XSXGWmHGT45Y0v7a +Gs0ibEPjgTAZUQMjhj0U1qvv9cVmxJfsWwI9e48K1alCQy8rdwf+pF9PQYrzrlaB +Sz90KQEuRM54H8VHWZg60Ba2YPv0S+xSqH8gbihdbxr6IEBLcUfkCmexzrudE5TV +xMIJUXseGiv0A/C6K5pB +=Z7Rl +-----END PGP SIGNATURE----- diff --git a/download/ncdc-1.6.tar.gz.md5 b/download/ncdc-1.6.tar.gz.md5 new file mode 100644 index 0000000..24d32f5 --- /dev/null +++ b/download/ncdc-1.6.tar.gz.md5 @@ -0,0 +1 @@ +99d5f58029c2676c38d417bf50632c3e ncdc-1.6.tar.gz diff --git a/download/ncdc-1.6.tar.gz.sha1 b/download/ncdc-1.6.tar.gz.sha1 new file mode 100644 index 0000000..276a4d1 --- /dev/null +++ b/download/ncdc-1.6.tar.gz.sha1 @@ -0,0 +1 @@ +e84831f08aa406134e14c5d14bce158d79b152dd ncdc-1.6.tar.gz diff --git a/img/nccol-osx-iterm2.png b/img/nccol-osx-iterm2.png new file mode 100644 index 0000000000000000000000000000000000000000..db7979884c331b48ba4b3ae81969c8d2787593ac GIT binary patch literal 28393 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 literal 0 HcmV?d00001 diff --git a/img/nccol-osx-terminal.png b/img/nccol-osx-terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..824c7c6fe9a950c37f3d2dc427974a1379cc1d69 GIT binary patch literal 31149 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 b6u*!g-0W631m^!6unYnalM}5GHVFJbPH)4` literal 0 HcmV?d00001 diff --git a/img/nccol-ubuntu.png b/img/nccol-ubuntu.png new file mode 100644 index 0000000000000000000000000000000000000000..d2cafdcd8b4fd2f7227c722fa37f23f7c7342e72 GIT binary patch literal 32092 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 literal 0 HcmV?d00001 diff --git a/index.cgi b/index.cgi index 96c4c63..e79b912 100755 --- a/index.cgi +++ b/index.cgi @@ -56,6 +56,7 @@ sub home { E; end; h2 'Updates'; + 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-03'; txt ' ncdc 1.5 and ncdu 1.8 released!'; br; b '2011-10-26'; txt ' ncdc 1.4 released!'; br; @@ -251,13 +252,14 @@ sub ncdc { h2 'Get ncdc!'; p; - b 'Latest version:'; txt ' 1.5 ('; - $s->htmlDLLink('ncdc-1.5.tar.gz', 'download'); + b 'Latest version:'; txt ' 1.6 ('; + $s->htmlDLLink('ncdc-1.6.tar.gz', 'download'); txt ' - '; a href => '/ncdc/changes', 'changes'; txt ' - '; a href => 'https://sourceforge.net/projects/ncdc/files/ncdc/', 'mirror'; txt ')'; br; - txt 'You can also get the latest development version from '; - a href => 'http://g.blicky.net/ncdc.git/', 'this git repository'; + txt 'The latest development version can be fetched from the git repository + at '; code 'git://g.blicky.net/ncdc.git'; txt ' and is available for '; + a href => 'http://g.blicky.net/ncdc.git/', 'online browsing'; txt '. The README includes instructions to build ncdc. Check out the '; a href => '/ncdc/man', 'manual'; txt ' to get started.'; br;br; @@ -311,7 +313,7 @@ sub ncdc { h2 'Requirements'; p; lit <<' E;'; - The following libraries are required: ncurses, bzip2, gdbm, glib2 and libxml2.
+ The following libraries are required: ncurses, bzip2, sqlite3, 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 @@ -363,6 +365,8 @@ sub ncdcscr { my $s = shift; $s->htmlHeader(title => 'Screenshots', page => 'ncdc', tab => 'scr'); p; + txt 'Note: While these screenshots are from version 1.5, the latest version has only little visible changes.'; + br; br; txt 'Main chat'; img src => '/img/ncdchub.png', class => 'scr', alt => 'Ncdc in the mainchat.'; br;br; @@ -497,6 +501,21 @@ sub docindex { p; 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 ']'; + br; + txt '2010-06-02 - '; b 'Design and implementation of a compressed linked list library'; + txt ' ['; a href => '/download/doc/compll.pdf', 'PDF'; txt ']'; + br;br; + 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 + 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 + use the term "locality of reference" where I really should have. It was + also written for an audience with little knowledge on the subject, so I + elaborated on a lot of things that should be obvious for most people in + the field. Then there is a lot of uninteresting overhead about the + project itself, which just happened to be mandatory for this report. + Nonetheless, if you can ignore these faults it's not such a bad read, if + I may say so myself. :-)|; end; $s->htmlFooter; } @@ -590,6 +609,25 @@ sub dump { E; a href => 'http://g.blicky.net/serika.git/tree/json.mll', 'source'; end; + + h2 'ncdc-transfer-stats'; + p; + lit <<' E;'; + September 2011. ncdc gained transfer logging features, + and I wrote a quick Perl script to fetch some simple statistics from it. + E; + a href => 'http://p.blicky.net/agolr', 'source'; + end; + + h2 'ncdc-share-report'; + p; + lit <<' E;'; + December 2011. Playing around with the Go programming language, I wrote + another transfer log parser and statistics generator for ncdc. + latest source + (0.1) + E; + end; $s->htmlFooter; } @@ -823,9 +861,9 @@ sub dumpnccolour { li 'Unfortunately, not all terminals are configured in such a way that all possible colours are readable. So as a developer you\'ll still have to support configurable colour schemes in your ncurses application. :-('; - li 'None of the tested terminals make an attempt to change the foreground - colour if it is (almost) invisible on the selected background colour. This - can be a good thing or a bad thing, depending on what you want.'; + li 'On most terminals, setting the foreground and background colour to the + same value without applying the A_BOLD attribute will make the text + invisible. Don\'t rely on this, however, as this is not the case on OS X.'; end; h2 'Full screenshot'; @@ -839,13 +877,16 @@ sub dumpnccolour { h2 'Screenshots'; my @img = ( - 'rox-b' => 'Arch Linux, Roxterm, Default color scheme', - 'rox-w' => 'Arch Linux, Roxterm, GTK color scheme', - 'rox-t' => 'Arch Linux, Roxterm, Tango color scheme', - 'rox-c' => 'Arch Linux, Roxterm, Modified Tango color scheme', - xterm => 'Arch Linux, xterm (default settings)', - debian => 'Debian Squeeze, VT (default settings)', - fbsd => 'FreeBSD, VT (default settings)', + 'rox-b' => 'Arch Linux, Roxterm, Default color scheme', + 'rox-w' => 'Arch Linux, Roxterm, GTK color scheme', + 'rox-t' => 'Arch Linux, Roxterm, Tango color scheme', + 'rox-c' => 'Arch Linux, Roxterm, Modified Tango color scheme', + xterm => 'Arch Linux, xterm (default settings)', + ubuntu => 'Ubuntu 11.10, Gnome-terminal', + debian => 'Debian Squeeze, VT (default settings)', + fbsd => 'FreeBSD, VT (default settings)', + 'osx-terminal' => 'Mac OS X, Terminal', + 'osx-iterm2' => 'Mac OS X, iTerm2', ); while(@img) { my($n, $t) = (shift(@img), shift(@img)); diff --git a/robots.txt b/robots.txt index 4a94b1d..5589b00 100644 --- a/robots.txt +++ b/robots.txt @@ -1,3 +1,4 @@ User-Agent: * Disallow: /download +Disallow: /dat