Ncurses Direct Connect Client
ncdc is a modern and lightweight direct connect client with a friendly ncurses interface
Install ncdc on Gentoo Linux
echo "net-p2p/ncdc geoip" > /etc/portage/package.use/ncdc
emerge --ask ncdc
Transfer window will show up when you have active transfers
Press Ctrl+Q to get the Queue list up and when we have an active connection what downloads a file
and duringt he download process you can press `C` to get a new hidden transfer window showing up
where you can see speed in realtime and more info about the files you are downloading
Prepare GeoIP Location
Bypass the requirements from Maxmind for keys/usernames/license keys
wget2 https://github.com/P3TERX/GeoLite.mmdb -P ~/.ncdc/
In ncdc use the command below for set countries available
/set global.geoip_cc GeoLite.mmdb
Customized options
Apply the following settings after modifying the IP and Port fields to match your environment
Benchmark disk performance using hdparm -tT /dev/sdX to select an appropriate hash_rate value.
/set global.active true
/set global.active_ip 127.0.0.1,::
/set global.active_port 5454
/set global.active_udp_port 5455
/set global.adc_blom false
/set global.autorefresh 0s (disabled)
/set global.backlog 0
/set global.chat_only false
/set global.color_list_default white
/set global.color_list_header magenta,bold
/set global.color_list_select magenta,bold
/set global.color_log_default white
/set global.color_log_highlight white,bold
/set global.color_log_join green,bold
/set global.color_log_nick white,bold
/set global.color_log_ownnick green,bold
/set global.color_log_quit red,bold
/set global.color_log_time magenta
/set global.color_separator white,reverse
/set global.color_tab_active magenta,bold
/set global.color_tabprio_high green,bold
/set global.color_tabprio_low darkgray
/set global.color_tabprio_med cyan,bold
/set global.color_title = white,reverse
/set global.connection 1000
/set global.description linux / ebooks / tutorial / software
/set global.disconnect_offline true
/set global.download_dir /mnt/usb/glftpd/site/incoming
/set global.download_rate 1024M
/set global.download_segment 0
/set global.download_shared true
/set global.download_slots 25
/set global.email none@no-email.com
/set global.encoding UTF-8
/set global.encoding UTF-8
/set global.filelist_maxage 7d
/set global.flush_file_cache download
/set global.geoip_cc GeoLite.mmdb
/set global.hash_rate 172M
/set global.incoming_dir /mnt/usb/glftpd/site/incoming/
/set global.local_address 192.168.1.64,::
/set global.location_db is not set.
/set global.log_debug false
/set global.log_downloads true
/set global.log_hubchat true
/set global.log_uploads true
/set global.max_ul_per_user 8
/set global.minislots 1
/set global.minislot_size 128k
/set global.nick [1000]wuseman
/set global.notify_bell medium
/set global.reconnect_timeout 10s
/set global.sendfile true
/set global.share_emptydirs false
/set global.share_exclude (.*(\#|\%).*|[�|�|�|,|']|.*All-Files-CRC-OK.*|.*xCOMPLETEx.*|(\(|\[)(incomplete|INCOMPLETE)(\)|\]).*|.*cdcovers_cc.*|.*F\].*|(AlbumArt.*|.*albumart.*|.*custom.*cover.*|folder|.*FreeCovers.*|sample_s)\.jpg)|.*\s.*|.*(\(\d\)\.(avi|jpg|mkv|mp3|mp4|nfo|sfv|zip)|(^kolla|^imdb|^lw|^mm|^cmt|^scc)\.nfo\b)|(\.(!ut|1|aac|ac3|acl|ape|asd|b4s|bad|bak|banana|bat|bc!|bdmv|bgl|bin|bmp|cab|cat|ccd|cfg|checked|clpi|cmd|conf|conflict|crc|db|debug|diz|dll|ds_store|dat|doc(x)?|exe|filled|htm|html|ico|idx|img|inf|ini|lnk|ioFTPD|ion|iso|log|lst|md5|message|missing|r(ar|\d\d)-missing|mpls|mrg|msg|msi|mxm|nrg|par2|pdf|permissions|pls|scn|sfk|srr|srt|sub|sup|tmp|torrent|txt|url|xml|avi\.avi|flac\.flac|jpg\.jpg|m3u\.m3u|mkv\.mkv|mp3\.mp3|mp4\.mp4|nfo\.nfo|r..\.r..|sfv\.sfv|zip\.zip))$
/set global.share_exclude is not set.
/set global.share_hidden false
/set global.share_symlinks false
/set global.show_free_slots true
/set global.show_joinquit false
/set global.slots 8
/set global.sudp_policy prefer
/set global.tls_policy prefer
/set global.tls_priority NORMAL:-ARCFOUR-128
/set global.ui_time_format [%H:%M:%S]
/set upload_rate 1024M
To add a new private hub we must use /open command
/open #Hubname ipadress:port
#Hubname will be saved as #Hubname and from now you just type /open #Hubname after you started ncdc unless you set autoconnect to true
Configure hset for private hubs
Get or set per-hub configuration variables. Works equivalent to the /set' command, but can only be used on hub tabs. Use/hunset' to reset a variable back to its global value.
/hset active = true (global)
/hset active_ip = 127.0.0.1,::
/hset active_port = 5454
/hset active_udp_port = 5455
/hset adc_blom = false
/hset autoconnect = true
/hset backlog = 0
/hset chat_only = false
/hset connection = 1000
/hset description linux / ebooks / tutorial / software
/hset disconnect_offline = true
/hset email = none@no-email.com
/hset encoding = UTF-8
/hset hubname = #Hubname
/hset local_address = 192.168.1.64,::
/hset log_hubchat = true
/hset max_ul_per_user = 8
/hset nick = [1000]username
/hset password = ******************
/hset reconnect_timeout = 10s
/hset show_free_slots = true
/hset show_joinquit = false
/hset tls_policy = prefer
Key Bindings
Custom key bindings
| Keys | Description |
|---|---|
| p | Toggle IP addresses (default: disabled). |
| r | Toggle show tag (default: enabled). |
| d | Toggle description (default: enabled). |
| c | Toggle connection (default: disabled). |
| i | Toggle bottom info bar showing detailed information (default: disabled). |
| m | Send message to selected user. |
| b | Browse selected user’s file list. |
| s | Sort user list by size. |
| b | Browse your own list. |
Global Key Bindings
| Key | Description |
|---|---|
| Alt+j | Open previous tab |
| Alt+k | Open next tab |
| Alt+h | Move current tab left |
| Alt+l | Move current tab right |
| Alt+a | Move tab with recent activity |
| Alt+ | Open tab with number |
| Alt+c | Close current tab |
| Alt+n | Open the connections tab |
| Alt+q | Open the download queue tab |
| Alt+o | Open own file list |
| Alt+r | Refresh file list |
Keys for tabs with a log window
| Keys Description | |------------|----------------------------------| | Ctrl+l | Clear current log window | | PgUp | Scroll the log backward | | PgDown | Scroll the log forward |
Keys for tabs with a text input line
| Keys | Description |
|---|---|
| Left/Right | Move cursor one character left or right. |
| End/Home | Move cursor to the end/start of the line. |
| Up/Down | Scroll through the command history. |
| Tab | Auto-complete current command, nick or argument. |
| Alt+b | Move cursor one word backward. |
| Alt+f | Move cursor one word forward. |
| Backspace | Delete character before cursor. |
| Delete | Delete character under cursor. |
| Ctrl+w | Delete to previous space. |
| Alt+d | Delete to next space. |
| Ctrl+k | Delete everything after cursor. |
| Ctrl+u | Delete entire line. |
Keys for file browser
| Keys | Description |
|---|---|
| Up/Down | Select one item up/down. |
| k/j | Select one item up/down. |
| PgUp/PgDown | Select one page of items up/down. |
| End/Home | Select last/first item in the list. |
| / | Start incremental regex search (press Return to stop editing). |
| ,/. | Search next / previous. |
| Right/l | Open selected directory. |
| Left/h | Open parent directory. |
| t | Toggle sorting directories before files. |
| u | Toggle sorting unknown files before files existing locally. |
| s | Order by file size. |
| n | Order by file name. |
| d | Add selected file/directory to the download queue. |
| m | Match selected item with the download queue. |
| M | Match entire file list with the download queue. |
| a | Search for alternative download sources. |
Keys for connection list
| Keys | Description |
|---|---|
| Up/Down | Select one item up/down. |
| k/j | Select one item up/down. |
| PgUp/PgDown | Select one page of items up/down. |
| End/Home | Select last/first item in the list. |
| d | Disconnect selected connection. |
| i/Return | Toggle information box. |
| f | Find user in user list. |
| m | Send a PM to the selected user. |
| q | Find file in download queue. |
| b/B | Browse the selected user's list; B forces a redownload. |
Key bindings for: queue – Download queue
Notes
When an item in the queue has ERR in the priority column, you have two options:
- Remove the item from the queue using
d - Attempt to continue the download by increasing its priority using
+
| Keys | Description |
|---|---|
| Up/Down | Select one item up/down. |
| k/j | Select one item up/down. |
| PgUp/PgDown | Select one page of items up/down. |
| End/Home | Select last/first item in the list. |
| K/J | Select one user up/down. |
| f | Find user in user list. |
| c | Find connection in the connection list. |
| a | Search for alternative download sources. |
| d | Remove selected file from the queue. |
| ± | Increase/decrease priority. |
| i/Return | Toggle user list. |
| r | Remove selected user for this file. |
| R | Remove selected user from all files in the download queue. |
| x | Clear error state for the selected user for this file. |
| X | Clear error state for the selected user for all files. |
Keys for search/searching
| Keys | Description |
|---|---|
| Up/Down | Select one item up/down. |
| k/j | Select one item up/down. |
| PgUp/PgDown | Select one page of items up/down. |
| End/Home | Select last/first item in the list. |
| f | Find user in user list. |
| b/B | Browse the selected user's list; B forces a redownload. |
| d | Add selected file to the download queue. |
| h | Toggle hub column visibility. |
| u | Order by username. |
| s | Order by file size. |
| l | Order by free slots. |
| n | Order by file name. |
| m | Match selected item with the download queue. |
| M | Match all search results with the download queue. |
| q | Match selected users' list with the download queue. |
| Q | Match all matched users' lists with the download queue. |
| a | Search for alternative download sources. |
Keys for userlist and user list tabs
| Keys | Description |
|---|---|
| Up/Down | Select one item up/down. |
| k/j | Select one item up/down. |
| PgUp/PgDown | Select one page of items up/down. |
| End/Home | Select last/first item in the list. |
| / | Start incremental regex search (press Return to stop editing). |
| ,/. | Search next / previous. |
| o | Toggle sorting OPs before others. |
| s/S | Order by share size. |
| u/U | Order by username. |
| t/T | Toggle visibility / order by tag column. |
| e/E | Toggle visibility / order by email column. |
| c/C | Toggle visibility / order by connection column. |
| p/P | Toggle visibility / order by IP column. |
| i/Return | Toggle information box. |
| m | Send a PM to the selected user. |
| g | Grant a slot to the selected user. |
| b/B | Browse the selected users' list; B forces a redownload. |
| q | Match selected users' list with the download queue. |
Available help commands
| Command | Description |
|---|---|
| /accept | Accept the TLS certificate of a hub. |
| /browse | Download and browse someone's file list. |
| /clear | Clear the display. |
| /close | Close the current tab. |
| /connect | Connect to a hub. |
| /connections | Open the connections tab. |
| /delhub | Remove a hub from the configuration. |
| /disconnect | Disconnect from a hub. |
| /gc | Perform garbage collection. |
| /grant | Grant someone a slot. |
| /help | Request information on commands. |
| /hset | Get or set per-hub configuration variables. |
| /hunset | Unset a per-hub configuration variable. |
| /kick | Kick a user from the hub. |
| /listen | List currently opened ports. |
| /me | Chat in third person. |
| /msg | Send a private message. |
| /nick | Alias for /hset nick on hub tabs, and /set nick otherwise. |
| /open | Open a new hub tab and connect to the hub. |
| /password | Send your password to the hub. |
| /pm | Alias for /msg. |
| /queue | Open the download queue. |
| /quit | Quit ncdc. |
| /reconnect | Shortcut for /disconnect and /connect. |
| /refresh | Refresh file list. |
| /say | Send a chat message. |
| /search | Search for files. |
| /set | Get or set global configuration variables. |
| /share | Add a directory to your share. |
| /ungrant | Revoke a granted slot. |
| /unset | Unset a global configuration variable. |
| /unshare | Remove a directory from your share. |
| /userlist | Open the user list. |
| /version | Display version information. |
| /whois | Locate a user in the user list. |
Color configuration options
| Option | Description |
|---|---|
global.color_list_default | Default item in a list. |
global.color_list_header | Header of a list. |
global.color_list_select | Selected item in a list. |
global.color_log_default | Default log color. |
global.color_log_time | Time prefix in log messages. |
global.color_log_nick | Default nick color. |
global.color_log_highlight | Nick color of a highlighted line. |
global.color_log_ownnick | Color of your own nick. |
global.color_log_join | Color of join messages. |
global.color_log_quit | Color of quit messages. |
global.color_separator | List separator/footer bar. |
global.color_tab_active | Active tab in the tab list. |
global.color_tabprio_low | Low‑priority tab notification color. |
global.color_tabprio_med | Medium‑priority tab notification color. |
global.color_tabprio_high | High‑priority tab notification color. |
global.color_title | Title bar. |