Skip to content

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.