User Guide (AirDC++ nano)

Written by
Rate this item
(6 votes)

Contents[Hide]

AirDC++ nano is a high-performance text-mode client for sharing, chatting and downloading in ADC and NMDC hubs, which can be run on Linux servers. It uses the same core than the Windows version so you can take benefit of features like multiple per-user connections, share profiles, IPv6, multithreaded hashing etc. The user interface is a modified version of the one used by nanodc

 

1. Installation

These instructions are targeted for Debian (Jessie, 8.0+) and Ubuntu (14.04) but the client has been successfully installed on various other operating systems as well.

NOTE:

You should use the UTF-8 locale with the client. Special characters won't be displayed correctly otherwise.

Install the compiler (if you don't have one)

Debian

apt-get install gcc g++

 

Ubuntu

sudo apt-get install gcc g++

 

Supported compilers:

  • GCC 4.8+
  • Clang 3.3+

Install the required packages

Debian Jessie

apt-get install libbz2-dev libncursesw5-dev scons zlib1g-dev libglib2.0-dev libssl-dev libstdc++6 libminiupnpc-dev libnatpmp-dev libtbb-dev libgeoip-dev libboost1.55-dev libboost-regex1.55-dev libboost-thread1.55-dev libboost-signals1.55-dev libboost-system1.55-dev libleveldb-dev

Ubuntu 14.04

sudo apt-get install libbz2-dev libncursesw5-dev scons zlib1g-dev libglib2.0-dev libssl-dev libstdc++6 libminiupnpc-dev libnatpmp-dev libtbb-dev libgeoip-dev libboost1.55-dev libboost-regex1.55-dev libboost-thread1.55-dev libboost-signals1.55-dev libboost-system1.55-dev libleveldb-dev

Redhat/Fedora

yum install gcc-g++ bzip2-devel ncurses-devel scons zlib-devel glib2-devel openssl-devel libstdc++-devel miniupnpc-devel libnatpmp-devel tbb-devel geoip-devel boost-devel leveldb-devel

Note that the natpmp library is not mandatory (it's only an alternative way to map ports with NAT-PMP capable routers in addition to UPnP). TBB is also optional and it's available only on x86 system architectures.

Download the client

2. Release

Download the package

wget https://github.com/airdcnano/airdcnano/releases/download/1.06/airdcnano-1.06.tar.gz
If you get an error related to the certificate, ensure that you have the package "ca-certificates" installed.

Extract it

tar zxvf airdcnano-1.06.tar.gz
cd airdcnano-1.06

3. Git

Install Git

Debian
 
apt-get install git
 
Ubuntu
 
sudo apt-get install git

Get the source

git clone https://github.com/airdcnano/airdcnano.git cd airdcnano

Compile

scons -j2

 

-j2 means that the client is compiled by using 2 threads. It's a good idea to replace the value with the number of available CPU cores. NOTE: each compiler thread requires about 1 GB of free RAM and the compiler will crash if it runs out of memory.

Compiling times will vary; it takes about a minute with a fast Haswell CPU and almost an hour with a slow dual-core Atom with GCC. Clang will usually cut the compiling times in half.

Install

Debian:

scons install

Ubuntu:

sudo scons install

Run the client

airdcnano

 

There's a short wizard in the beginning which helps you to set up the required settings.

 

4. Keyboard shortcuts

Any window

KeyDescription
Ctrl+X Close the window
Alt+[1-9] Change the active tab
Alt+Left/Right Switch to the next/previous tab
Ctrl+E Refresh share
Ctrl+H Open favorites
Ctrl+L Clear window
Ctrl+P Open public hubs
Ctrl+S Open log window
Ctrl+T Open transfers
Ctrl+Q Open queue

Hub

KeyDescription
Ctrl+R Reconnect

Public hubs

KeyDescription
f Add to favorites
c Connect
s Sort items
h Set the number of the hublist to download
d Download the hub list

Filtering hubs

KeyDescription
s Description
a Address
u Users
m Maximum share
n Minimum share

Favorite hubs

KeyDescription
c Connect to the hub
d Delete the hub
D Delete the hub without confirmation
e Edit the selected hub
n Add a new favorite hub
m Move the select hub to a new position in the list
<space> Toggle autoconnect

Search

KeyDescription
b Browse user's file list from the selected directory
d Download selected item
D Download selected item to a specific folder
s Download directory
S Download directory to
M Match queue
r Search

Search result filtering

KeyDescription
l Toggle free slots-only results
n Minimum size
m Maximum size
e File extension
f Textual filter
c Clear search results

Queue

KeyDescription
a Search bundle for alternates
i Recheck bundle integrity: re-adds corrupted file segments for downloading, detects already downloaded segments/files
p Set bundle priority (0-6)
r Remove bundle from queue
R Remove bundle and all its finished files from queue
m Move the bundle and all its finished files to a new location
S Rescan a failed bundle
F Force a failed bundle to be added in share

Transfers

KeyDescription
b Browse file list
m Send private message
F Force connection
r Remove source from queue (all files)
R Remove file from queue
c Disconnect

File lists

KeyDescription
d Download selected item to the default download folder
D Download selected item to a custom folder
r Reload the current directory
<enter>/<right arrow> Enter the selected directory
<left arrow> Go to parent directory

File list filtering

KeyDescription
n File/directory name

 

5. Commands

General Commands

CommandParametersDescription
away   Enable away mode
cancelhash   Stop hashing
clear   Clear the screen.
connect <address> [<share profile>] Connect to a hub (optionally with the given share profile). 
connectioninfo   Display the current status of incoming connection
dcset <key> [<value>] You can view or change DC++ core settings with /dcset command. /dcset without any arguments displays all the settings. /dcset <key> <value> sets <key> to <value>. /dcset <key> will display the current value of the key
dcreset <key> Reset a setting to its default value
help   View the list of help command
motd   Print information about shared files, nanodc version and connection settings (executed when the client is started)
nick <nick> Change the default nick
open <favorites|hublist|queue|syslog|transfers> Open the specified tab (or make it active)
optimizedb   Remove hash database entries for files that aren't currently in share
refresh  [<path/virtual name>] Refresh the share or a specific path/virtual directory 
search <string/TTH> Search files
share  <add|remove|list> add: Add a new directory in share. Arguments: <path> <virtual name> [<profile>] [<incoming>]

Example: /share add Incoming /home/ftp/ myshareprofile 1

remove: Remove a directory from the share (or from a profile). Arguments: <path> [<profile>]

list: List shared folders (or folders in the specified profile). Arguments: [<profile>]

shareprofile <add|remove|rename|list>

add: Add a new profile with the given name. Arguments: <profile name>

remove: Remove the given profile. Arguments: <profile name>

rename: Rename the selected profile. Arguments: <current name> <new name>

list: List all share profiles

quit   Quit
verifydb   Remove unused entries from the hash database and verify the integrity of the data
wc   Close current window
window <list|close|move|prev|next|[1-X]>

list: list the open tabs

close: close the current tab (same as /wc)

move: move the window to a give position. Arguments: first|last|prev|next|[1-X]

prev: switch to the previous window (shortcut: Alt+left)

next: switch to the next window (shortcut: Alt+right)

Hub Commands

CommandParametersDescription
browse <nick> Browse file list from the specified user
fav   Add the hub in favorites.
msg <nick> [<msg>] Send a private message to the specified nick (or open an empty PM tab)
info <nick> Show various information about the user (description, tag etc.)
names   List all users in the hub
reconnect   Reconnect to the hub (shortcut: Ctrl+r)
showjoins   Show joining/parting users in the chat

 

6. Configuration

6.1. ~/.airdc++/.nanodcrc

Example of ~/.airdc++/.nanodcrc file:

    # ~/.airdc++/.nanodcrc
    # block the message if the first line includes
    block_messages = http://;www.
    
    # save the file every time something is edited
    # otherwise it will be saved on exit
    save_on_edit = true
    
    # ignore all messages from these nicks
    ignore_nicks =
    
    # figure it out, sherlock
    hilight_words = nanodc;xcow
    
    # timestamp format
    timestamp_format = %H:%M:%S
    
    # /command or :command
    command_char = /
    
    # whether or not to show nicklist when joined to the hub
    show_nicklist = true
    
    # true: [17:10:01] -!- Kyösti [dyn63-253.dsl.spy.dnainternet.fi] has left the hub
    # false: [17:10:01] -!- Kyösti [83.102.63.253] has left the hub
    resolve_ips = true
    
    # how many lines to save in private message/hub windows
    lastlog_size = 1000
    

 

6.2. AirDC++ core configuration

Use "/dcset setting value" to change a setting, where "setting" is one of the settings that are listed below.

General

SettingExplanation
profile

Settings profile, used to optimize various default settings

  • 0 = Normal (use if unsure)
  • 1 = RAR hubs
  • 2 = LAN/WAN hubs
nick Your nick
description Your decription
email Your email address
ul_speed Upload speed (Mbit/s)
dl_speed Download speed (Mbit/s)
away_message Message to send when receiving a private message when away mode is enabled
away_idle_time Idle time in minutes before enabling the away mode automatically
away_no_bots Don't send away message to bots
nmdc_encoding Character encoding to use in NMDC hubs

Downloads

SettingExplanation
dl_dir

Default download directory

temp_dir Directory to use for temp files while downloading (not used when "temp_use_dest" is enabled)
temp_use_dest Put temp files in the final destination directory
add_finished Add finished bundles downloaded in share as soon as they finished (when downloading in a shared directory)
finished_no_hash Don't hash instantly shared bundles (or perform SFV check for them)
segmented_dl Enable segmented downloads
min_segment_size Minimum segment size (KiB)
new_segment_min_speed Don't begin new segment if the file speed exceeds this value (KiB/s)
allow_slow_overlap Allow a fast source to overlap slower ones when there is nothing else to download

Search matching options

SettingExplanation
auto_add_sources

Automatically add sources for queued files when receiving a matching search result

alt_search_auto Automatically search for alternate sources for queued bundles (requires auto_add_sources to be enabled)
alt_search_max_sources Don't perform automatic searches for bundles with more sources than this (average sources per file)
max_sources_match_queue Maximum bundle sources to match the whole bundle for search results

Skipping options (queuing)

SettingExplanation
dont_dl_shared

Don't queue files that exist in share already

dont_dl_queued Don't queue files that exist in queue already
dupe_min_size Skip the dupe check for files smaller than this (KiB)
skip_zero_byte Don't download empty files
dl_skiplist Don't download files matching this pattern (wildcards)
dl_skiplist_regex Use regex format for the download skiplist

Proxies

SettingExplanation
http_proxy Default download directory
outgoing_mode
  • 0 = Direct Connection
  • 1 = SOCKS5
socks_server SOCKS5 server
socks_user  
socks_password  
socks_port  
socks_resolve Use the SOCKS5 server to resolve host names

Incoming connection

Connection4_-prefixed entries are for IPv4 connectivity and connection6_* for IPv6.

SettingExplanation

connection4_auto

connection6_auto

Detect the connectivity mode and settings automatically for the given protocol

connection4_bind

connection6_bind

Bind address (IP, use the tab key for suggestions)

connection4_mode

connection6_mode

  • 0 = Direct connection / Firewall with manual port forwarding
  • 1 = Firewall with UPnP
  • 2 = Passive mode

connection4_ip

connection6_ip

External IP address
tcp_port TCP port (transfers)
udp_port UDP port (mainly searching) 
tls_port Port for encrypted transfers (TCP, must differ from the transfer port)

Download limits

SettingExplanation
dl_auto_limits

Detect the download limits based on the configured download speed (dl_speed)

dl_slots

Maximum simultanous download connections

dl_max_slot_speed Don't exceed new downloads if the total speed exceeds this value (KiB/s, 0=disabled)
dl_highest_prio_slots Number of extra slots for bundles/files using the highest priority

Upload limits

SettingExplanation
ul_auto_limits Detect some of the upload limits based on the configured upload speed (ul_speed)
ul_grant_speed

Grant a new slot if the total speed is lower than this (KiB/s)

ul_max_granted Maximum number of automatically granted slots
ul_slots Number of upload slots
ul_minislot_size Grant a minislot for files smaller than this (KiB)
ul_minislot_ext Grant a minislot for the given file extensions

Transfer rate limiting

SettingExplanation
limit_ul_max Maximum upload speed
limit_dl_max

Maximum download speed

limit_use_alt Use alternate limits for the given time period
limit_alt_start_hour Start hour for alternate limits (0-23)
limit_alt_end_hour End hour for alternate limits (0-23)
limit_ul_alt_max Maximum upload speed (alternate hours)
limit_dl_alt_max Maximum download speed (alternate hours)
limit_use_with_auto_values Count the various upload and download limits based on the limiter values (if enabled)

Per-user connection limits

SettingExplanation
mcn_auto_limits Detect the per-user limits automatically from the line speed
mcn_down

Maximum download connections per user

mcn_up Maximum upload connections per user

Hashing options

SettingExplanation
max_hash_speed Maximum hashing speed per hasher (MiB/s)
max_total_hashers

Maximum number of total hashing threads

max_vol_hashers Maximum hashers per volume (recommended to keep at 1 unless the hashing speed is CPU-bound)
report_each_hashed_file Report each hashed file in the system log

Refreshing options

SettingExplanation
refresh_time Common refresh time for all directories (0=disabled)
refresh_time_incoming

Alternative refresh time to use for directories marked as "incoming" (0=disabled)

refresh_startup Refresh the share after the client has been started
refresh_report_scheduled_refreshes Report in system log when a scheduled refresh has started and ended

Sharing options

SettingExplanation
share_skiplist Don't share files matching this pattern (wildcards)
share_skiplist_regex

Use regex format for the share skiplist

share_hidden Share hidden files
share_no_empty_dirs Don't show empty directories in share
share_no_zero_byte Don't show empty files in share
share_max_size Don't share files exceeding this size limit (MiB) 
share_follow_symlinks Report symbolic links when iterating through the files on disk
share_report_duplicates Report files with the same case-insensitive path when generating file lists
share_report_skiplist Report files that aren't shared because they match the share skiplist

Logging options

SettingExplanation
log_dir Location to save the logs
log_main

Log mainchat messages

log_main_file  
log_main_format  
log_pm Log private messages
log_pm_file  
log_pm_format  
log_downloads Log file downloads
log_downloads_file  
log_downloads_format  
log_uploads Log file uploads
log_uploads_file  
log_uploads_format  
log_syslog Log system messages
log_syslog_file  
log_syslog_format  
log_status Log status messages in hubs
log_status_file  
log_status_format  
log_list_transfers Log file list transfers (uploads and downloads, full file lists only)
single_log_per_cid Use a single log file per CID in ADC hubs even if the nick or other file naming variables differ in different hubs

Log file names: The file name to use for the log file (relative to the main log path, may contain subdirectories).

Histories

SettingExplanation
history_search_max Maximum number of previous search words to save (those can be accessed with tab when using the /search command)
history_search_clear_exit

Clear the search history on exit

history_download_max Maximum number of previous custom download locations to save (can be accessed with tab in an empty download location prompt)
history_download_clear_exit Clear the download location history on exit
history_last_pm_lines Maximum number of old chat lines to display when opening a private message window

Tabs

SettingExplanation
open_transfers Open the transfers tab on startup
open_hublist

Open the hublist tab on startup

open_favorites Open the favorites tab on startup

Advanced

SettingExplanation
socket_read_buffer Bytes
socket_write_buffer

Bytes

buffer_size Write buffer size (KiB)
compress_transfers Allow dynamic compression for transfers
max_compression Maximum compression level (0-9)
tls_mode

Encryption mode for transfers

  • 0 = disabled
  • 1 = enabled
  • 2 = forced in ADC hubs
bloom_mode

Bloom filter mode. Disabled by default since sending the filter with a large share may freeze the chat for a while and increases the upload bandwidth usage.

  • 0 = disabled
  • 1 = enabled
accept_failovers_fav Accept failover addressed sent by favorite hubs that can be used when the hub can't be accessed via the main address

 

7. Crash?

Post the generated crashlog to https://github.com/airdcnano/airdcnano/issues

 

8. Deadlock?

Note: you need to have the package "gdb" installed before following these instructions.

$ cat ~/.airdc++/airdcnano.pid
[number]
gdb
attach [number]
thread apply all bt full

Post the full output to https://github.com/airdcnano/airdcnano/issues

 

Read 61169 times Last modified on Tuesday, 02 June 2015 21:49
More in this category: AirDC++ nano »

Leave a comment

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.