Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
NCDC(1) 			   ncdc manual				 NCDC(1)

NAME
     ncdc - Ncurses Direct Connect Client

SYNOPSIS
     ncdc [options]

DESCRIPTION
     Ncdc  is  a  modern  and  lightweight direct connect client with a friendly
     ncurses interface.

GETTING STARTED
     This is a basic introduction for those who are new to ncdc. See  the  chap-
     ters below for a more detailed description of the available functionality.

     What  you	see  when  starting up ncdc is an input line where you can input
     commands and a log window where the results are displayed, much like a reg-
     ular terminal. Commands within ncdc start with a slash (e.g.  "/help")  and
     have tab completion to help you.

     The  first thing you will want to do after starting ncdc for the first time
     is to setup some basic information and settings:

       /set nick MyNick
       /set description ncdc is awesome!
       /set connection 10
       /share "My Awesome Files" /path/to/files

     And if you have a direct connection to the internet or if your  router  al-
     lows port forwarding, you may also want to enable active mode:

       /set active_port 34194
       /set active true

     See  the  help text for each of the commands and settings for more informa-
     tion.  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 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 to automati-
     cally connect to a hub when ncdc starts up, use the "autoconnect" setting.

     Ncdc uses a tabbed interface: every hub opens in a new tab, and  there  are
     several other kinds of tabs available as well. The type of tab is indicated
     in  the tab list on the bottom of the screen with a character prefix. Hubs,
     for example, are prefixed with a "#". If a tab needs your attention, a col-
     ored exclamation mark is displayed before the tab	name,  different  colors
     are used for different types of activity.

     Everything else should be fairly self-explanatory: To search for files, use
     the  "/search"  command.  To  browse  through  the  user list of a hub, use
     "/userlist" or hit Alt+u. To browse someone's file list, use  "/browse"  or
     hit  the  'b' key in the user list. And to monitor your upload and download
     connections, use "/connections" or hit Alt+n.

OPTIONS
     -c, --session-dir= dir
	 Use a different session directory. Defaults to the contents of the  en-
	 vironment variable `$NCDC_DIR' or if this is unset to `$HOME/.ncdc'.

     -h, --help
	 Display summary of options.

     -n, --no-autoconnect
	 Don't automatically connect to hubs with the "autoconnect" option set.

     --no-bracketed-paste
	 Disable bracketed pasting.

     -v, --version
	 Display ncdc version.

GETTING CONNECTED
     As  with  most  file sharing clients, ncdc supports two modes of being con-
     nected: active and passive. In passive mode (the default), you can  connect
     to  the  outside  world but nobody can connect (directly) to you. When pas-
     sive, you will only be able to transfer files with people who are in active
     mode. In active mode, however, you will have some port open to the rest  of
     the  network  to  which other clients can connect. When active, you will be
     able to transfer files with everyone and you may get more and faster search
     results. Configuring active mode is therefore recommended.

     In many setups, all you need to do to switch to active mode  is  to  set  a
     TCP/UDP port and enable the "active" setting:

       /set active_port 34194
       /set active true

     When you connect to a hub, the status bar will tell you whether you are ac-
     tive  or  passive on that particular hub, and what IP address is being used
     to allow others to connect to you. For most hubs, your IP address	will  be
     detected  automatically, but in the event that this fails, you can also set
     it yourself:

       /set active_ip 13.33.33.7

     If you are behind a NAT or firewall, you have to ensure that the  port  you
     configured  is  somehow allowed and/or forwarded. The "active_port" setting
     is used for incoming TCP connections and UDP messages. You can configure  a
     different UDP port with the "active_udp_port" setting. Contrary to many to-
     her  Direct  Connect clients, ncdc only uses a single port for incoming TCP
     and TLS connections; There is no separate port for TLS.

     The "/listen" command can tell you which ports it expects to be  forwarded,
     and  for  which  hubs these ports will be used. It only lists hubs on which
     you are currently active, so the output will change when you open or  close
     a hub connection.

     If  you  have multiple network interfaces, you can force ncdc to use only a
     single interface by setting the "local_address" setting to the  address  of
     that interface. This affects both outgoing connections (they will be forced
     to go through the configured interface) and incoming connections (the ports
     will be bound to the configured interface).

     All  of the previously mentioned settings can be set globally (with "/set")
     and on a per-hub basis (with "/hset"). This allows you to be active  on  an
     internet  hub and a LAN-only hub at the same time. It also allows you to be
     active in one hub while passive in another, or to use different  ports  for
     each hub.

INTERACTIVE COMMANDS
     The  following  is  the  list of commands that can be used within ncdc. The
     /help command can also be used get a list of available commands and to  ac-
     cess this documentation.

     /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 database.

     /browse [[-f] <user>]
	 Without  arguments,  this opens a new tab where you can browse your own
	 file list. Note that changes to your list are not  immediately  visible
	 in  the  browser. You need to re-open the tab to get the latest version
	 of your list.

	 With arguments, the file list of the specified user will be  downloaded
	 (if  it  has  not been downloaded already) and the browse tab will open
	 once it's complete. The `-f' flag can be used to force the file list to
	 be (re-)downloaded.

     /clear
	 Clears the log displayed on the screen. Does not affect the  log  files
	 in any way. Ctrl+l is a shortcut for this command.

     /close
	 Close the current tab. When closing a hub tab, you will be disconnected
	 from  the hub and all related userlist and PM tabs will also be closed.
	 Alt+c is a shortcut for this command.

     /connect [<address>]
	 Initiate a connection with a hub. If no address is specified, will con-
	 nect to the hub you last used on the current tab. The address should be
	 in the form of `protocol://host:port/' or `host:port'. The `:port' part
	 is in both cases optional and defaults to :411. The following protocols
	 are recognized: dchub, nmdc, nmdcs, adc, adcs. When  connecting  to  an
	 nmdcs or adcs hub and the SHA256 keyprint is known, you can attach this
	 to the url as `?kp=SHA256/<base32-encoded-keyprint>'

	 Note  that  this  command  can only be used on hub tabs. If you want to
	 open a new connection to a hub, you need to use /open first. For  exam-
	 ple:

	   /open testhub
	   /connect dchub://dc.some-test-hub.com/

	 See the /open command for more information.

     /connections
	 Open the connections tab.

     /delhub <name>
	 Remove a hub from the configuration

     /disconnect
	 Disconnect from a hub.

     /gc Cleans up unused data and reorganizes existing data to allow more effi-
	 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. 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 complete.

     /grant [-list|<user>]
	 Grant someone a slot. This allows the user to download from you even if
	 you  have  no	free slots.  The slot will remain granted until the /un-
	 grant command is used, even if ncdc has  been	restarted  in  the  mean
	 time.

	 To get a list of users whom you have granted a slot, use `/grant' with-
	 out  arguments  or  with `-list'. Be warned that using `/grant' without
	 arguments on a PM tab will grant the slot to the user you  are  talking
	 with. Make sure to use `-list' in that case.

	 Note  that a granted slot is specific to a single hub. If the same user
	 is also on other hubs, he/she will not be granted a slot on those hubs.

     /help [<command>|set <key>|keys [<section>]]
	 To get a list of available commands, use /help without  arguments.   To
	 get  information  on a particular command, use /help <command>.  To get
	 information on a configuration setting, use /help  set  <setting>.   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. Use `/hunset' to  re-
	 set a variable back to its global value.

     /hunset [<key>]
	 This command can be used to reset a per-hub configuration variable back
	 to its global value.

     /kick <user>
	 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.

     /listen
	 List currently opened ports.

     /me <message>
	 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 pro-
	 tocol does not have this feature, and your message will be sent  as-is,
	 including the /me.

     /msg <user> [<message>]
	 Send  a  private  message  to a user on the currently opened hub. If no
	 message is given, the tab will be opened but no message will be sent.

     /nick [<nick>]
	 Alias for `/hset nick' on hub tabs, and `/set nick' otherwise.

     /open [-n] [<name>] [<address>]
	 Without arguments, list all hubs known by  the  current  configuration.
	 Otherwise, this 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 stor-
	 ing hub-specific  configuration.

	 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 <password>
	 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  '/hset  password	<password>'.  Be
	 warned,  however,  that your password will be saved unencrypted in that
	 case.

     /pm <user> [<message>]
	 Alias for /msg

     /queue
	 Open the download queue.

     /quit
	 Quit ncdc.

     /reconnect
	 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-
	 nected hubs will be reconnected.

     /refresh [<path>]
	 Initiates share refresh. If no argument is  given,  the  complete  list
	 will  be  refreshed. Otherwise only the specified directory will be re-
	 freshed. The path argument can be either an absolute filesystem path or
	 a virtual path within your share.

     /say <message>
	 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  <command>'.  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, for example `/say /help is what you are looking for'.

     /search [options] <query>
	 Performs a file search, opening a new tab with the results.

	 Available options:

	   -hub      Search the current hub only. (default)
	   -all      Search all connected hubs, except those with `chat_only' set.
	   -le	<s>  Size of the file must be less than <s>.
	   -ge	<s>  Size of the file must be larger than <s>.
	   -t	<t>  File must be of type <t>. (see below)
	   -tth <h>  TTH root of this file must match <h>.

	 File sizes (<s> above) accept the following suffixes: G (GiB), M  (MiB)
	 and K (KiB).

	 The following file types can be used with the -t option:

	   1  any      Any file or directory. (default)
	   2  audio    Audio files.
	   3  archive  (Compressed) archives.
	   4  doc      Text documents.
	   5  exe      Windows executables.
	   6  img      Image files.
	   7  video    Video files.
	   8  dir      Directories.

	 Note  that file type matching is done using file extensions, and is not
	 very reliable.

     /set [<key> [<value>]]
	 Get or set global configuration variables. Use without arguments to get
	 a list of all global settings and their current value. Glob-style  pat-
	 tern matching on the settings is also possible. Use, for example, `/set
	 color*' to list all color-related settings.

	 See  the  `/unset' command to change a setting back to its default, and
	 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>'.

     /share [<name> <path>]
	 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
	 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 automat-
	 ically on the added directory.

     /ungrant [<user>]
	 Revoke a granted slot.

     /unset [<key>]
	 This  command can be used to reset a global configuration variable back
	 to its default value.

     /unshare [<name>]
	 To remove a single directory from your share, use `/unshare <name>', to
	 remove all directories from your share, use `/unshare /'.

	 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
	 using Alt+u.

     /version
	 Display version information.

     /whois <user>
	 This will open the user list and select the given user.

SETTINGS
     The  following  is  a list of configuration settings. These settings can be
     changed and queried using	the  "/set"  command  for  global  settings  and
     "/hset"  for  hub-local  settings.  All configuration data is stored in the
     db.sqlite3 file in the session directory.

     active <boolean>
	 Enables or disables active mode. You may have to configure your  router
	 and/or firewall for this to work, see the `active_ip' and `active_port'
	 settings for more information.

     active_ip <string>
	 Your  public  IP  address for use in active mode. If this is not set or
	 set to '0.0.0.0' for IPv4 or '::' for IPv6, then ncdc will try to auto-
	 matically get your IP address from the hub. If you do	set  this  manu-
	 ally,	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 connect to a hub on your LAN, this
	 should be your LAN IP.

	 Both an IPv4 and an IPv6 address are set by providing two IP  addresses
	 separated  with  a comma. When unset, '0.0.0.0,::' is assumed. Only the
	 IP version used to connect to the hub is used. That is, if you  connect
	 to  an  IPv6 hub, then the configured IPv6 address is used and the IPv4
	 address is ignored.

	 When set to the special value `local', ncdc will automatically get your
	 IP address from the local network interface that is used to connect  to
	 the hub. This option should only be used if there is no NAT between you
	 and  the  hub,  because this will give the wrong IP if you are behind a
	 NAT.

     active_port <integer>
	 The listen port for incoming connections in active mode. Set to `0'  to
	 automatically	assign	a  random  port. This setting is by default also
	 used for the UDP port, see the  `active_tls_port'  settings  to  change
	 that.	If  you are behind a router or firewall, make sure that you have
	 configured it to forward and allow these ports.

     active_udp_port <integer>
	 The listen port for incoming UDP connections in active  mode.	Defaults
	 to the `active_port' setting, or to a random number if `active_port' is
	 not set.

     adc_blom <boolean>
	 Whether  to  support  the BLOM extension on ADC hubs. This may decrease
	 the bandwidth usage on the hub connection, in exchange  for  a  bit  of
	 computational	overhead.  Some hubs require this setting to be enabled.
	 This setting requires a reconnect with the hub to be active.

     autoconnect <boolean>
	 Set to true to automatically connect  to  the	current  hub  when  ncdc
	 starts up.

     autorefresh <interval>
	 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
	 determines whether ncdc will perform a  refresh  on  startup.	See  the
	 `/refresh' command to manually refresh your file list.

     backlog <integer>
	 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
	 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
	 use the global value (global.backlog).

     chat_only <boolean>
	 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 command when it is given the -all option.

     color_* <color>
	 The  settings starting with the `color_' prefix allow you to change the
	 interface colors. The following is a list of available color settings:

	   list_default  - default item in a list
	   list_header	 - header of a list
	   list_select	 - selected item in a list
	   log_default	 - default log color
	   log_time	 - the time prefix in log messages
	   log_nick	 - default nick color
	   log_highlight - nick color of a highlighted line
	   log_ownnick	 - color of your own nick
	   log_join	 - color of join messages
	   log_quit	 - color of quit messages
	   separator	 - the list separator/footer bar
	   tab_active	 - the active tab in the tab list
	   tabprio_low	 - low priority tab notification color
	   tabprio_med	 - medium priority tab notification color
	   tabprio_high  - high priority tab notification color
	   title	 - the title bar

	 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
	 color, the second color is used for the background. When the  fore-  or
	 background  color is not specified, the default colors of your terminal
	 will be used.	The following color names  can	be  used:  black,  blue,
	 cyan,	default,  green,  magenta, red, white and yellow.  The following
	 attributes can be used: bold, blink, reverse and underline.  The actual
	 color values displayed by your terminal may vary. Adding the `bold' at-
	 tribute usually makes the foreground color appear brighter as well.

     connection <string>
	 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 you. The actual format you can use here may vary, but it is recom-
	 mended 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 must use one of the previously mentioned formats, otherwise no
	 upload 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 `Cable') on hubs that require this.

	 This setting is ignored if `upload_rate' has been set. If it  is,  that
	 value is broadcasted instead.

     description <string>
	 A short public description that will be displayed in the user list of a
	 hub.

     disconnect_offline <boolean>
	 Automatically	disconnect  any upload or download transfers when a user
	 leaves the hub, or when you leave the hub. Setting this to  `true'  en-
	 sures	that  you  are	only connected with people who are online on the
	 same hubs as you are.

     download_dir <path>
	 The directory where finished downloads are moved to. Finished downloads
	 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
	 directory, but doing so is not recommended: ncdc will block when moving
	 the completed files to their final destination.

     download_exclude <regex>
	 When recursively adding a directory to the download queue - by pressing
	 `d'  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
	 added to the download queue.

	 This  regex is not checked when adding individual files from either the
	 file list browser or the search results.

     download_rate <speed>
	 Maximum combined transfer rate of all	downloads.  The  total	download
	 speed will be limited to this value. The suffixes `G', 'M', and 'K' can
	 be used for GiB/s, MiB/s and KiB/s, respectively. Note that, similar to
	 upload_rate,  TCP  overhead  are not counted towards this limit, so the
	 actual bandwidth usage might be a little higher.

     download_segment <size>
	 Minimum segment size to use when  requesting  file  data  from  another
	 user. Set to 0 to disable segmented downloading.

     download_shared <boolean>
	 Whether to download files which are already present in your share. When
	 this  is  set	to  `false', adding already shared files results in a UI
	 message instead of adding the file to the download queue.

     download_slots <integer>
	 Maximum number of simultaneous downloads.

     email <string>
	 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.

     encoding <string>
	 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:

	   CP1250      (Central Europe)
	   CP1251      (Cyrillic)
	   CP1252      (Western Europe)
	   ISO-8859-7  (Greek)
	   KOI8-R      (Cyrillic)
	   UTF-8       (International)

     filelist_maxage <interval>
	 The  maximum  age  of	a downloaded file list. If a file list was down-
	 loaded longer ago than the configured interval, it will be removed from
	 the cache (the fl/ directory) and subsequent requests to open the  file
	 list will result in the list being downloaded from the user again. Rec-
	 ognized  suffices  are  's' for seconds, 'm' for minutes, 'h' for hours
	 and 'd' for days. Set to 0 to disable the cache altogether.

     flush_file_cache <none|upload|download|hash>[,...]
	 Tell the OS to flush the file (disk) cache for file contents read while
	 hashing and/or uploading or written to while downloading. On one  hand,
	 this  will avoid trashing your disk cache with large files and thus im-
	 prove the overall responsiveness of your system.  On  the  other  hand,
	 ncdc  may purge any shared files from the cache, even if they are still
	 used by other applications. In general, it is a  good	idea  to  enable
	 this  if  you	also  use your system for other things besides ncdc, you
	 share large files (>100MB) and people are  not  constantly  downloading
	 the same file from you.

     geoip_cc <path>|disabled
	 Path  to  the	GeoIP2 Country database file (GeoLite2-Country.mmdb), or
	 'disabled' to disable GeoIP lookups. The  database  can  be  downloaded
	 from https://dev.maxmind.com/geoip/geoip2/geolite2/.

     hash_rate <speed>
	 Maximum file hashing speed. See the `download_rate' setting for allowed
	 formats for this setting.

     hubname <string>
	 The name of the currently opened hub tab. This is a user-assigned name,
	 and  is only used within ncdc itself. This is the same name as given to
	 the `/open' command.

     incoming_dir <path>
	 The directory where incomplete downloads are stored. This  setting  can
	 only  be  changed  when the download queue is empty. Also see the down-
	 load_dir setting.

     local_address <string>
	 Specifies the address of the local network interface to  use  for  con-
	 necting to the outside and for accepting incoming connections in active
	 mode.	Both an IPv4 and an IPv6 address are set by providing two IP ad-
	 dresses separated with a comma. When unset, '0.0.0.0,::' is assumed.

	 If no IPv4 address is specified, '0.0.0.0' is added automatically. Sim-
	 ilarly, if no IPv6 address is specified, '::' is  added  automatically.
	 The  address  that  is actually used depends on the IP version actually
	 used. That is, if you're on an IPv6 hub, then ncdc will listen  on  the
	 specified  IPv6  address.  Note  that,  even if the hub you're on is on
	 IPv6, ncdc may still try to connect to another  client  over  IPv4,  at
	 which point the socket will be bound to the configured IPv4 address.

     log_debug <boolean>
	 Log debug messages to stderr.log in the session directory. It is highly
	 recommended  to  enable this setting if you wish to debug or hack ncdc.
	 Be warned, however, that this may generate a lot of data if you're con-
	 nected to a large hub.

     log_downloads <boolean>
	 Log downloaded files to transfers.log.

     log_hubchat <boolean>
	 Log the main hub chat. Note that changing this  requires  any	affected
	 hub tabs to be closed and reopened before the change is effective.

     log_uploads <boolean>
	 Log file uploads to transfers.log.

     max_ul_per_user <integer>
	 The maximum number of simultaneous upload connections to one user.

     minislots <integer>
	 Set  the  number of available minislots. A `minislot' is a special slot
	 that is used when all regular upload slots are in use	and  someone  is
	 requesting  your  filelist  or  a  small  file. In this case, the other
	 client automatically applies for a minislot,  and  can  still	download
	 from  you  as	long as not all minislots are in use. What constitutes a
	 `small' file can be changed with the `minislot_size' setting. Also  see
	 the `slots' configuration setting and the `/grant' command.

     minislot_size <integer>
	 The  maximum  size of a file that may be downloaded using a `minislot',
	 in KiB. See the `minislots' setting for more information.

     nick <string>
	 Your nick. Nick changes are only visible on newly connected  hubs,  use
	 the   `/reconnect'  command to use your new nick immediately. Note that
	 it is highly discouraged to change your nick on NMDC hubs. This is  be-
	 cause	clients  downloading  from  you  have no way of knowing that you
	 changed your nick, and therefore can't immediately continue to download
	 from you.

     notify_bell <disable|low|medium|high>
	 When enabled, ncdc will send a bell to your terminal when a  tab  indi-
	 cates a notification. The notification types are:

	   high   - Messages directed to you (PM or highlight in hub chat),
	   medium - Regular hub chat,
	   low	  - User joins/quits, new search results, etc.

	 How  a  "bell"  (or  "beep" or "alert", whatever you prefer to call it)
	 manifests itself depends on your terminal. In some setups, this  gener-
	 ates an audible system bell. In other setups it can makes your terminal
	 window flash or do other annoying things to get your attention.  And in
	 some setups it is ignored completely.

     password <string>
	 Sets  your  password for the current hub and enables auto-login on con-
	 nect. If you just want to login to a hub without saving your  password,
	 use the `/password' command instead. Passwords are saved unencrypted in
	 the config file.

     reconnect_timeout <interval>
	 The  time  to wait before automatically reconnecting to a hub. Set to 0
	 to disable automatic reconnect.

     sendfile <boolean>
	 Whether or not to use the sendfile() system call to  upload  files,  if
	 supported. Using sendfile() allows less resource usage while uploading,
	 but may not work well on all systems.

     share_emptydirs <boolean>
	 Share empty directories. When disabled (the default), empty directories
	 in  your  share  will not be visible to others. This also affects empty
	 directories containing only empty directories, etc. A file list refresh
	 is required for this setting to be effective.

     share_exclude <regex>
	 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
	 be effective.

     share_hidden <boolean>
	 Whether  to  share hidden files and directories. A `hidden' file or di-
	 rectory is one of  which  the	file  name  starts  with  a  dot.  (e.g.
	 `.bashrc').  A file list refresh is required for this setting to be ef-
	 fective.

     share_symlinks <boolean>
	 Whether to follow symlinks in shared directories.  When  disabled  (de-
	 fault),  ncdc	will  never share any files outside of the directory you
	 specified. When enabled, any symlinks in your shared  directories  will
	 be followed, even when they point to a directory outside your share.

     show_free_slots <boolean>
	 When set to true, [n sl] will be prepended to your description, where n
	 is the number of currently available upload slots.

     show_joinquit <boolean>
	 Whether to display join/quit messages in the hub chat.

     slots <integer>
	 The  number of upload slots. This determines for the most part how many
	 people can download from you simultaneously. It is possible  that  this
	 limit is exceeded in certain circumstances, see the `minislots' setting
	 and the `/grant' command.

     sudp_policy <disabled|allow|prefer>
	 Set  the  policy for sending or receiving encrypted UDP search results.
	 When set to `disabled', all UDP search results will  be  sent	and  re-
	 ceived  in  plain  text. Set this to `allow' to let ncdc reply with en-
	 crypted search results if the other client requested it. `prefer'  will
	 also cause ncdc itself to request encryption.

	 Note that, regardless of this setting, encrypted UDP search results are
	 only  used on ADCS hubs. They will never be sent on NMDC or non-TLS ADC
	 hubs. Also note that, even if you set this to `prefer',  encryption  is
	 still	only  used  when  the client on the other side of the connection
	 also supports it.

     tls_policy <disabled|allow|prefer|force>
	 Set the policy for secure client-to-client connections. Setting this to
	 `disabled' disables TLS support for client connections, but  still  al-
	 lows  you to connect to TLS-enabled hubs. `allow' will allow the use of
	 TLS if the other client requests this, but ncdc itself will not request
	 TLS when connecting to others, `prefer' tells ncdc to request TLS  when
	 connecting  to  others.  Setting  this to 'force' will disallow non-TLS
	 connections and also requires that the hub connection itself is TLS.

	 The use of TLS for client connections usually results in  less  optimal
	 performance  when  uploading and downloading, but is quite effective at
	 avoiding protocol-specific traffic shaping that some ISPs may do.

     tls_priority <string>
	 Set the GnuTLS priority string used for  all  TLS-enabled  connections.
	 See  the "Priority strings" section in the GnuTLS manual for details on
	 what this does and how it works. Currently it is not possible to set  a
	 different  priority string for different types of connections (e.g. hub
	 or incoming/outgoing client connections).

     ui_time_format <string>
	 The format of the time displayed in the lower-left of the  screen.  Set
	 `-'  to  not  display	a  time at all. The string is passed to the Glib
	 g_date_time_format() function, which accepts roughly the  same  formats
	 as  strftime(). Check out the strftime(3) man page or the Glib documen-
	 tation for more information. Note that this setting does not  influence
	 the  date/time  format used in other places, such as the chat window or
	 log files.

     upload_rate <speed>
	 Maximum combined transfer rate of all uploads. See the  `download_rate'
	 setting  for  more information on rate limiting. Note that this setting
	 also overrides any `connection' setting.

KEY BINDINGS
     On any tab without the text input line, you can press `?' to  get	the  key
     bindings  for  that  tab. The list of key bindings is available through the
     "/help keys" command, and is reproduced below.

     Global key bindings
	   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+<num>	Open tab with number <num>.
	   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:
	   Ctrl+l	Clear current log window.
	   PgUp 	Scroll the log backward.
	   PgDown	Scroll the log forward.

	   Keys for tabs with a text input line:
	   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.

     File browser
	   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.

     Connection list
	   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 to force a redownload.

     Download queue
	   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.

	   Note: when an item in the queue has `ERR' indicated in the
	   priority column, you have two choices: You can remove the
	   item from the queue using `d', or attempt to continue the
	   download by increasing its priority using `+'.

     Search results tab
	   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 to force 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.

     User list tab
	   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 to force a redownload.
	   q		Match selected users' list with the download queue.

WEIRD UI FLAGS
     Some listings have a flags display, and their meaning may	not  be  immedi-
     ately obvious.

   File status
     You  may  see  one-letter flags to the left of file names in search results
     and file list tabs. Their meaning is as follows:

     H	 The file had been added to the file list, but has not been  hashed  yet
	 and  thus  is	not  visible  to  others. This flag can appear only when
	 browsing your own list.

     S	 The file is already in your  share.  If  "download_shared"  is  set  to
	 "false",  trying  to  download  it will result only in an informational
	 message. This flag never appears when browsing your own file list.

     Q	 The file is currently in your download queue.	Trying	to  download  it
	 will result only in an informational message.

   Connection flags
     On the connection list window, there are two flags:

     S	 Connection  state, can be either Connecting, Handshake, Idle, Download-
	 ing, Uploading or - for disconnected.

     t	 This means that the connection is encrypted with TLS.

   User flags
     The user list has some flags too:

     o	 Set if the user is an operator in the hub.

     p	 When the user is passive. If this flag is not set, the user is active.

     t	 Set if connections with this user will be encrypted with TLS.

ENVIRONMENT
     $NCDC_DIR is used to determine the session dir, it is only honoured  if  -c
     is not set on the command line.

FILES
     $NCDC_DIR	corresponds  to the session dir set via -c, environment variable
     $NCDC_DIR or $HOME/.ncdc.

     $NCDC_DIR/cert/
	 Directory where the client certificates are stored. Must contain a pri-
	 vate key file (client.key) and public certificate  (client.crt).  These
	 will be generated automatically when ncdc starts up the first time.

     $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 pos-
	 sible but discouraged. Any changes made to the database while	ncdc  is
	 running 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/files.xml.bz2
	 Filelist containing a listing of all shared files.

     $NCDC_DIR/fl/
	 Directory where downloaded file lists from other users are stored.  The
	 names of the files are hex-encoded user IDs that are used internally by
	 ncdc. Old file lists are deleted automatically after a configurable in-
	 terval. See the "filelist_maxage" configuration option.

     $NCDC_DIR/history
	 Command history.

     $NCDC_DIR/inc/
	 Default location for incomplete downloads. Can be changed with the "in-
	 coming_dir"   setting.  The  file  names  in  this  directory	are  the
	 base32-encoded TTH root of the completed file.

     $NCDC_DIR/logs/
	 Directory where all the log files are stored. File names starting  with
	 `#'  are  hub	logs  and  `~' are user (PM) logs. Special log files are
	 transfers.log and main.log.

	 ncdc does not have built-in functionality to  rotate  or  compress  log
	 files	automatically. When rotating log files manually (e.g. via a cron
	 job), make sure to send the SIGUSR1 signal afterwards to force ncdc  to
	 flush the old logs and create or open the new log files.

     $NCDC_DIR/stderr.log
	 Error/debug log. This file is cleared every time ncdc starts up.

     $NCDC_DIR/version
	 Version  of the data directory. This file locked while an ncdc instance
	 is running, making sure that no two ncdc instances work with  the  same
	 session directory at the same time.

   Format of transfers.log
     Uploads  and  downloads are logged in the transfers.log file. Transfers are
     separated by a newline (0x0a). Each log line has the following fields, sep-
     arated by a space:

     1.  Date/time when the transfer ended, formatted as  "[YYYY-MM-DD	HH:MM:SS
	 ZONE]",

     2.  Hub name, including the "#" prefix,

     3.  Base32-encoded  CID  of  the other user for ADC transfers, or a '-' for
	 NMDC,

     4.  User name (escaped),

     5.  IPv4 or IPv6 address,

     6.  Direction, "u" for upload or "d" for download,

     7.  Whether the transfer completed successfully ("c") or  has  been  inter-
	 rupted/disconnected before all requested file data has been transferred
	 ("i"),

     8.  Base32-encoded TTH of the transferred file, or '-' for "files.xml.bz2",

     9.  Total transfer time, in seconds,

     10. File size, in bytes,

     11. File offset, in bytes,

     12. Transfer size, in bytes,

     13. File  path  (escaped).  Absolute  virtual path for uploads, destination
	 path for downloads.

     All fields are encoded in UTF-8. Fields that may contain a space or newline
     are escaped as follows: A space is escaped as "\s", a newline as "\n" and a
     backslash as "\\". The timestamp is not escaped.

     Many clients download files is separate (smallish) chunks.  Ncdc  makes  no
     attempt  to  combine  multiple chunk requests in a single log entry, so you
     may see the same uploaded file several times with a different file offset.

LICENSE
     Copyright (C) Yoran Heling <projects@yorhel.nl>

     ncdc is distributed under the MIT license, please read the COPYING file for
     more information.

BUGS
     Please report bugs or feature requests to the bug tracker	or  the  mailing
     list.     Both    can    be    found    on    the	  ncdc	  homepage    at
     <https://dev.yorhel.nl/ncdc>.  There  is  also  an  ADC  hub  available  at
     "adc://dc.blicky.net:2780/" for general support and discussions.

AUTHOR
     ncdc is written by Yoran Heling <projects@yorhel.nl>

     Web: <https://dev.yorhel.nl/ncdc>

ncdc-1.24.1			   2024-07-18				 NCDC(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ncdc&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help