1NCDC(1)                           ncdc manual                          NCDC(1)
2
3
4

NAME

6       ncdc - Ncurses Direct Connect Client
7

SYNOPSIS

9       ncdc [options]
10

DESCRIPTION

12       Ncdc is a modern and lightweight direct connect client with a friendly
13       ncurses interface.
14

GETTING STARTED

16       This is a basic introduction for those who are new to ncdc. See the
17       chapters below for a more detailed description of the available
18       functionality.
19
20       What you see when starting up ncdc is an input line where you can input
21       commands and a log window where the results are displayed, much like a
22       regular terminal. Commands within ncdc start with a slash (e.g.
23       "/help") and have tab completion to help you.
24
25       The first thing you will want to do after starting ncdc for the first
26       time is to setup some basic information and settings:
27
28         /set nick MyNick
29         /set description ncdc is awesome!
30         /set connection 10
31         /share "My Awesome Files" /path/to/files
32
33       And if you have a direct connection to the internet or if your router
34       allows port forwarding, you may also want to enable active mode:
35
36         /set active_port 34194
37         /set active true
38
39       See the help text for each of the commands and settings for more
40       information.  Of course, all of the above settings are saved to the
41       database and will be used again on the next run.
42
43       To connect to a hub, use /open:
44
45         /open ncdc adc://dc.blicky.net:2780/
46
47       Here ncdc is the personal name you give to the hub, and the second
48       argument the URL. This URL will be saved in the database, so the next
49       time you want to connect to this hub, you can simply do "/open ncdc".
50       See the help text for "/open" and "/connect" for more information. If
51       you want to automatically connect to a hub when ncdc starts up, use the
52       "autoconnect" setting.
53
54       Ncdc uses a tabbed interface: every hub opens in a new tab, and there
55       are several other kinds of tabs available as well. The type of tab is
56       indicated in the tab list on the bottom of the screen with a character
57       prefix. Hubs, for example, are prefixed with a "#". If a tab needs your
58       attention, a colored exclamation mark is displayed before the tab name,
59       different colors are used for different types of activity.
60
61       Everything else should be fairly self-explanatory: To search for files,
62       use the "/search" command. To browse through the user list of a hub,
63       use "/userlist" or hit Alt+u. To browse someone's file list, use
64       "/browse" or hit the 'b' key in the user list. And to monitor your
65       upload and download connections, use "/connections" or hit Alt+n.
66

OPTIONS

68       -c, --session-dir= dir
69           Use a different session directory. Defaults to the contents of the
70           environment variable `$NCDC_DIR' or if this is unset to
71           `$HOME/.ncdc'.
72
73       -h, --help
74           Display summary of options.
75
76       -n, --no-autoconnect
77           Don't automatically connect to hubs with the "autoconnect" option
78           set.
79
80       --no-bracketed-paste
81           Disable bracketed pasting.
82
83       -v, --version
84           Display ncdc version.
85

GETTING CONNECTED

87       As with most file sharing clients, ncdc supports two modes of being
88       connected: active and passive. In passive mode (the default), you can
89       connect to the outside world but nobody can connect (directly) to you.
90       When passive, you will only be able to transfer files with people who
91       are in active mode. In active mode, however, you will have some port
92       open to the rest of the network to which other clients can connect.
93       When active, you will be able to transfer files with everyone and you
94       may get more and faster search results. Configuring active mode is
95       therefore recommended.
96
97       In many setups, all you need to do to switch to active mode is to set a
98       TCP/UDP port and enable the "active" setting:
99
100         /set active_port 34194
101         /set active true
102
103       When you connect to a hub, the status bar will tell you whether you are
104       active or passive on that particular hub, and what IP address is being
105       used to allow others to connect to you. For most hubs, your IP address
106       will be detected automatically, but in the event that this fails, you
107       can also set it yourself:
108
109         /set active_ip 13.33.33.7
110
111       If you are behind a NAT or firewall, you have to ensure that the port
112       you configured is somehow allowed and/or forwarded. The "active_port"
113       setting is used for incoming TCP connections and UDP messages. You can
114       configure a different UDP port with the "active_udp_port" setting.
115       Contrary to many toher Direct Connect clients, ncdc only uses a single
116       port for incoming TCP and TLS connections; There is no separate port
117       for TLS.
118
119       The "/listen" command can tell you which ports it expects to be
120       forwarded, and for which hubs these ports will be used. It only lists
121       hubs on which you are currently active, so the output will change when
122       you open or close a hub connection.
123
124       If you have multiple network interfaces, you can force ncdc to use only
125       a single interface by setting the "local_address" setting to the
126       address of that interface. This affects both outgoing connections (they
127       will be forced to go through the configured interface) and incoming
128       connections (the ports will be bound to the configured interface).
129
130       All of the previously mentioned settings can be set globally (with
131       "/set") and on a per-hub basis (with "/hset"). This allows you to be
132       active on an internet hub and a LAN-only hub at the same time. It also
133       allows you to be active in one hub while passive in another, or to use
134       different ports for each hub.
135

INTERACTIVE COMMANDS

137       The following is the list of commands that can be used within ncdc. The
138       /help command can also be used get a list of available commands and to
139       access this documentation.
140
141       /accept
142           Use this command to accept the TLS certificate of a hub. This
143           command is used only in the case the keyprint of the TLS
144           certificate of a hub does not match the keyprint stored in the
145           database.
146
147       /browse [[-f] <user>]
148           Without arguments, this opens a new tab where you can browse your
149           own file list. Note that changes to your list are not immediately
150           visible in the browser. You need to re-open the tab to get the
151           latest version of your list.
152
153           With arguments, the file list of the specified user will be
154           downloaded (if it has not been downloaded already) and the browse
155           tab will open once it's complete. The `-f' flag can be used to
156           force the file list to be (re-)downloaded.
157
158       /clear
159           Clears the log displayed on the screen. Does not affect the log
160           files in any way. Ctrl+l is a shortcut for this command.
161
162       /close
163           Close the current tab. When closing a hub tab, you will be
164           disconnected from the hub and all related userlist and PM tabs will
165           also be closed. Alt+c is a shortcut for this command.
166
167       /connect [<address>]
168           Initiate a connection with a hub. If no address is specified, will
169           connect to the hub you last used on the current tab. The address
170           should be in the form of `protocol://host:port/' or `host:port'.
171           The `:port' part is in both cases optional and defaults to :411.
172           The following protocols are recognized: dchub, nmdc, nmdcs, adc,
173           adcs. When connecting to an nmdcs or adcs hub and the SHA256
174           keyprint is known, you can attach this to the url as
175           `?kp=SHA256/<base32-encoded-keyprint>'
176
177           Note that this command can only be used on hub tabs. If you want to
178           open a new connection to a hub, you need to use /open first. For
179           example:
180
181             /open testhub
182             /connect dchub://dc.some-test-hub.com/
183
184           See the /open command for more information.
185
186       /connections
187           Open the connections tab.
188
189       /delhub <name>
190           Remove a hub from the configuration
191
192       /disconnect
193           Disconnect from a hub.
194
195       /gc Cleans up unused data and reorganizes existing data to allow more
196           efficient storage and usage. Currently, this commands removes
197           unused hash data, does a VACUUM on db.sqlite3, removes unused files
198           in inc/ and old files in fl/.
199
200           This command may take some time to complete, and will fully block
201           ncdc while it is running. It is recommended to run this command
202           every once in a while. Every month is a good interval. Note that
203           when ncdc says that it has completed this command, it's lying to
204           you. Ncdc will still run a few large queries on the background,
205           which may take up to a minute to complete.
206
207       /grant [-list|<user>]
208           Grant someone a slot. This allows the user to download from you
209           even if you have no free slots.  The slot will remain granted until
210           the /ungrant command is used, even if ncdc has been restarted in
211           the mean time.
212
213           To get a list of users whom you have granted a slot, use `/grant'
214           without arguments or with `-list'. Be warned that using `/grant'
215           without arguments on a PM tab will grant the slot to the user you
216           are talking with. Make sure to use `-list' in that case.
217
218           Note that a granted slot is specific to a single hub. If the same
219           user is also on other hubs, he/she will not be granted a slot on
220           those hubs.
221
222       /help [<command>|set <key>|keys [<section>]]
223           To get a list of available commands, use /help without arguments.
224           To get information on a particular command, use /help <command>.
225           To get information on a configuration setting, use /help set
226           <setting>.  To get help on key bindings, use /help keys.
227
228       /hset [<key> [<value>]]
229           Get or set per-hub configuration variables. Works equivalent to the
230           `/set' command, but can only be used on hub tabs. Use `/hunset' to
231           reset a variable back to its global value.
232
233       /hunset [<key>]
234           This command can be used to reset a per-hub configuration variable
235           back to its global value.
236
237       /kick <user>
238           Kick a user from the hub. This command only works on NMDC hubs, and
239           you need to be an OP to be able to use it.
240
241       /listen
242           List currently opened ports.
243
244       /me <message>
245           This allows you to talk in third person. Most clients will display
246           your message as something like:
247
248             ** Nick is doing something
249
250           Note that this command only works correctly on ADC hubs. The NMDC
251           protocol does not have this feature, and your message will be sent
252           as-is, including the /me.
253
254       /msg <user> [<message>]
255           Send a private message to a user on the currently opened hub. If no
256           message is given, the tab will be opened but no message will be
257           sent.
258
259       /nick [<nick>]
260           Alias for `/hset nick' on hub tabs, and `/set nick' otherwise.
261
262       /open [-n] [<name>] [<address>]
263           Without arguments, list all hubs known by the current
264           configuration. Otherwise, this opens a new tab to use for a hub.
265           The name is a (short) personal  name you use to identify the hub,
266           and will be used for storing hub-specific  configuration.
267
268           If you have specified an address or have previously connected to a
269           hub from a tab with the same name, /open will automatically connect
270           to the hub. Use the `-n' flag to disable this behaviour.
271
272           See /connect for more information on connecting to a hub.
273
274       /password <password>
275           This command can be used to send a password to the hub without
276           saving it to the database. If you wish to login automatically
277           without having to type /password every time, use '/hset password
278           <password>'. Be warned, however, that your password will be saved
279           unencrypted in that case.
280
281       /pm <user> [<message>]
282           Alias for /msg
283
284       /queue
285           Open the download queue.
286
287       /quit
288           Quit ncdc.
289
290       /reconnect
291           Reconnect to the hub. When your nick or the hub encoding have been
292           changed, the new settings will be used after the reconnect.
293
294           This command can also be used on the main tab, in which case all
295           connected hubs will be reconnected.
296
297       /refresh [<path>]
298           Initiates share refresh. If no argument is given, the complete list
299           will be refreshed. Otherwise only the specified directory will be
300           refreshed. The path argument can be either an absolute filesystem
301           path or a virtual path within your share.
302
303       /say <message>
304           Sends a chat message to the current hub or user. You normally don't
305           have to use the /say command explicitly, any command not staring
306           with '/' will automatically imply `/say <command>'. For example,
307           typing `hello.' in the command line is equivalent to `/say hello.'.
308           Using the /say command explicitly may be useful to send message
309           starting with '/' to the chat, for example `/say /help is what you
310           are looking for'.
311
312       /search [options] <query>
313           Performs a file search, opening a new tab with the results.
314
315           Available options:
316
317             -hub      Search the current hub only. (default)
318             -all      Search all connected hubs, except those with `chat_only' set.
319             -le  <s>  Size of the file must be less than <s>.
320             -ge  <s>  Size of the file must be larger than <s>.
321             -t   <t>  File must be of type <t>. (see below)
322             -tth <h>  TTH root of this file must match <h>.
323
324           File sizes (<s> above) accept the following suffixes: G (GiB), M
325           (MiB) and K (KiB).
326
327           The following file types can be used with the -t option:
328
329             1  any      Any file or directory. (default)
330             2  audio    Audio files.
331             3  archive  (Compressed) archives.
332             4  doc      Text documents.
333             5  exe      Windows executables.
334             6  img      Image files.
335             7  video    Video files.
336             8  dir      Directories.
337
338           Note that file type matching is done using file extensions, and is
339           not very reliable.
340
341       /set [<key> [<value>]]
342           Get or set global configuration variables. Use without arguments to
343           get a list of all global settings and their current value. Glob-
344           style pattern matching on the settings is also possible. Use, for
345           example, `/set color*' to list all color-related settings.
346
347           See the `/unset' command to change a setting back to its default,
348           and the `/hset' command to manage configuration on a per-hub basis.
349           Changes to the settings are automatically saved to the database,
350           and will not be lost after restarting ncdc.
351
352           To get information on a particular setting, use `/help set <key>'.
353
354       /share [<name> <path>]
355           Use /share without arguments to get a list of shared directories.
356           When called with a name and a path, the path will be added to your
357           share. Note that shell escaping may be used in the name. For
358           example, to add a directory with the name `Fun Stuff', you could do
359           the following:
360
361             /share "Fun Stuff" /path/to/fun/stuff
362
363           Or:
364
365             /share Fun\ Stuff /path/to/fun/stuff
366
367           The full path to the directory will not be visible to others, only
368           the name you give it will be public. An initial `/refresh' is done
369           automatically on the added directory.
370
371       /ungrant [<user>]
372           Revoke a granted slot.
373
374       /unset [<key>]
375           This command can be used to reset a global configuration variable
376           back to its default value.
377
378       /unshare [<name>]
379           To remove a single directory from your share, use `/unshare
380           <name>', to remove all directories from your share, use `/unshare
381           /'.
382
383           Note that the hash data associated with the removed files will
384           remain in the database. This allows you to re-add the files to your
385           share without needing to re-hash them. The downside is that the
386           database file may grow fairly large with unneeded information. See
387           the `/gc' command to clean that up.
388
389       /userlist
390           Opens the user list of the currently selected hub. Can also be
391           accessed using Alt+u.
392
393       /version
394           Display version information.
395
396       /whois <user>
397           This will open the user list and select the given user.
398

SETTINGS

400       The following is a list of configuration settings. These settings can
401       be changed and queried using the "/set" command for global settings and
402       "/hset" for hub-local settings. All configuration data is stored in the
403       db.sqlite3 file in the session directory.
404
405       active <boolean>
406           Enables or disables active mode. You may have to configure your
407           router and/or firewall for this to work, see the `active_ip' and
408           `active_port' settings for more information.
409
410       active_ip <string>
411           Your public IP address for use in active mode. If this is not set
412           or set to '0.0.0.0' for IPv4 or '::' for IPv6, then ncdc will try
413           to automatically get your IP address from the hub. If you do set
414           this manually, it is important that other clients can reach you
415           using this IP address. If you connect to a hub on the internet,
416           this should be your internet (WAN) IP. Likewise, if you connect to
417           a hub on your LAN, this should be your LAN IP.
418
419           Both an IPv4 and an IPv6 address are set by providing two IP
420           addresses separated with a comma. When unset, '0.0.0.0,::' is
421           assumed. Only the IP version used to connect to the hub is used.
422           That is, if you connect to an IPv6 hub, then the configured IPv6
423           address is used and the IPv4 address is ignored.
424
425           When set to the special value `local', ncdc will automatically get
426           your IP address from the local network interface that is used to
427           connect to the hub. This option should only be used if there is no
428           NAT between you and the hub, because this will give the wrong IP if
429           you are behind a NAT.
430
431       active_port <integer>
432           The listen port for incoming connections in active mode. Set to `0'
433           to automatically assign a random port. This setting is by default
434           also used for the UDP port, see the `active_tls_port' settings to
435           change that. If you are behind a router or firewall, make sure that
436           you have configured it to forward and allow these ports.
437
438       active_udp_port <integer>
439           The listen port for incoming UDP connections in active mode.
440           Defaults to the `active_port' setting, or to a random number if
441           `active_port' is not set.
442
443       adc_blom <boolean>
444           Whether to support the BLOM extension on ADC hubs. This may
445           decrease the bandwidth usage on the hub connection, in exchange for
446           a bit of computational overhead. Some hubs require this setting to
447           be enabled. This setting requires a reconnect with the hub to be
448           active.
449
450       autoconnect <boolean>
451           Set to true to automatically connect to the current hub when ncdc
452           starts up.
453
454       autorefresh <interval>
455           The time between automatic file refreshes. Recognized suffices are
456           's' for seconds, 'm' for minutes, 'h' for hours and 'd' for days.
457           Set to 0 to disable automatically refreshing the file list. This
458           setting also determines whether ncdc will perform a refresh on
459           startup. See the `/refresh' command to manually refresh your file
460           list.
461
462       backlog <integer>
463           When opening a hub or PM tab, ncdc can load a certain amount of
464           lines from the log file into the log window. Setting this to a
465           positive value enables this feature and configures the number of
466           lines to load. Note that, while this setting can be set on a per-
467           hub basis, PM windows will use the global value (global.backlog).
468
469       chat_only <boolean>
470           Set to true to indicate that this hub is only used for chatting.
471           That is, you won't or can't download from it. This setting affects
472           the /search command when it is given the -all option.
473
474       color_* <color>
475           The settings starting with the `color_' prefix allow you to change
476           the interface colors. The following is a list of available color
477           settings:
478
479             list_default  - default item in a list
480             list_header   - header of a list
481             list_select   - selected item in a list
482             log_default   - default log color
483             log_time      - the time prefix in log messages
484             log_nick      - default nick color
485             log_highlight - nick color of a highlighted line
486             log_ownnick   - color of your own nick
487             log_join      - color of join messages
488             log_quit      - color of quit messages
489             separator     - the list separator/footer bar
490             tab_active    - the active tab in the tab list
491             tabprio_low   - low priority tab notification color
492             tabprio_med   - medium priority tab notification color
493             tabprio_high  - high priority tab notification color
494             title         - the title bar
495
496           The actual color value can be set with a comma-separated list of
497           color names and/or attributes. The first color in the list is the
498           foreground color, the second color is used for the background. When
499           the fore- or background color is not specified, the default colors
500           of your terminal will be used.  The following color names can be
501           used: black, blue, cyan, default, green, magenta, red, white and
502           yellow.  The following attributes can be used: bold, blink, reverse
503           and underline.  The actual color values displayed by your terminal
504           may vary. Adding the `bold' attribute usually makes the foreground
505           color appear brighter as well.
506
507       connection <string>
508           Set your upload speed. This is just an indication for other users
509           in the hub so that they know what speed they can expect when
510           downloading from you. The actual format you can use here may vary,
511           but it is recommended to set it to either a plain number for Mbit/s
512           (e.g. `50' for 50 mbit) or a number with a `KiB/s' indicator (e.g.
513           `2300 KiB/s'). On ADC hubs you must use one of the previously
514           mentioned formats, otherwise no upload speed will be broadcasted.
515           This setting is broadcasted as-is on NMDC hubs, to allow for using
516           old-style connection values (e.g. `DSL' or `Cable') on hubs that
517           require this.
518
519           This setting is ignored if `upload_rate' has been set. If it is,
520           that value is broadcasted instead.
521
522       description <string>
523           A short public description that will be displayed in the user list
524           of a hub.
525
526       disconnect_offline <boolean>
527           Automatically disconnect any upload or download transfers when a
528           user leaves the hub, or when you leave the hub. Setting this to
529           `true' ensures that you are only connected with people who are
530           online on the same hubs as you are.
531
532       download_dir <path>
533           The directory where finished downloads are moved to. Finished
534           downloads are by default stored in <session directory>/dl/. It is
535           possible to set this to a location that is on a different
536           filesystem than the incoming directory, but doing so is not
537           recommended: ncdc will block when moving the completed files to
538           their final destination.
539
540       download_exclude <regex>
541           When recursively adding a directory to the download queue - by
542           pressing `d' on a directory in the file list browser - any item in
543           the selected directory with a name that matches this regular
544           expression will not be added to the download queue.
545
546           This regex is not checked when adding individual files from either
547           the file list browser or the search results.
548
549       download_rate <speed>
550           Maximum combined transfer rate of all downloads. The total download
551           speed will be limited to this value. The suffixes `G', 'M', and 'K'
552           can be used for GiB/s, MiB/s and KiB/s, respectively. Note that,
553           similar to upload_rate, TCP overhead are not counted towards this
554           limit, so the actual bandwidth usage might be a little higher.
555
556       download_segment <size>
557           Minimum segment size to use when requesting file data from another
558           user. Set to 0 to disable segmented downloading.
559
560       download_shared <boolean>
561           Whether to download files which are already present in your share.
562           When this is set to `false', adding already shared files results in
563           a UI message instead of adding the file to the download queue.
564
565       download_slots <integer>
566           Maximum number of simultaneous downloads.
567
568       email <string>
569           Your email address. This will be displayed in the user list of the
570           hub, so only set this if you want it to be public.
571
572       encoding <string>
573           The character set/encoding to use for hub and PM messages. This
574           setting is only used on NMDC hubs, ADC always uses UTF-8. Some
575           common values are:
576
577             CP1250      (Central Europe)
578             CP1251      (Cyrillic)
579             CP1252      (Western Europe)
580             ISO-8859-7  (Greek)
581             KOI8-R      (Cyrillic)
582             UTF-8       (International)
583
584       filelist_maxage <interval>
585           The maximum age of a downloaded file list. If a file list was
586           downloaded longer ago than the configured interval, it will be
587           removed from the cache (the fl/ directory) and subsequent requests
588           to open the file list will result in the list being downloaded from
589           the user again. Recognized suffices are 's' for seconds, 'm' for
590           minutes, 'h' for hours and 'd' for days. Set to 0 to disable the
591           cache altogether.
592
593       flush_file_cache <none|upload|download|hash>[,...]
594           Tell the OS to flush the file (disk) cache for file contents read
595           while hashing and/or uploading or written to while downloading. On
596           one hand, this will avoid trashing your disk cache with large files
597           and thus improve the overall responsiveness of your system. On the
598           other hand, ncdc may purge any shared files from the cache, even if
599           they are still used by other applications. In general, it is a good
600           idea to enable this if you also use your system for other things
601           besides ncdc, you share large files (>100MB) and people are not
602           constantly downloading the same file from you.
603
604       geoip_cc <path>|disabled
605           Path to the GeoIP2 Country database file (GeoLite2-Country.mmdb),
606           or 'disabled' to disable GeoIP lookups. The database can be
607           downloaded  from https://dev.maxmind.com/geoip/geoip2/geolite2/.
608
609       hash_rate <speed>
610           Maximum file hashing speed. See the `download_rate' setting for
611           allowed formats for this setting.
612
613       hubname <string>
614           The name of the currently opened hub tab. This is a user-assigned
615           name, and is only used within ncdc itself. This is the same name as
616           given to the `/open' command.
617
618       incoming_dir <path>
619           The directory where incomplete downloads are stored. This setting
620           can only be changed when the download queue is empty. Also see the
621           download_dir setting.
622
623       local_address <string>
624           Specifies the address of the local network interface to use for
625           connecting to the outside and for accepting incoming connections in
626           active mode. Both an IPv4 and an IPv6 address are set by providing
627           two IP addresses separated with a comma. When unset, '0.0.0.0,::'
628           is assumed.
629
630           If no IPv4 address is specified, '0.0.0.0' is added automatically.
631           Similarly, if no IPv6 address is specified, '::' is added
632           automatically. The address that is actually used depends on the IP
633           version actually used. That is, if you're on an IPv6 hub, then ncdc
634           will listen on the specified IPv6 address. Note that, even if the
635           hub you're on is on IPv6, ncdc may still try to connect to another
636           client over IPv4, at which point the socket will be bound to the
637           configured IPv4 address.
638
639       log_debug <boolean>
640           Log debug messages to stderr.log in the session directory. It is
641           highly recommended to enable this setting if you wish to debug or
642           hack ncdc. Be warned, however, that this may generate a lot of data
643           if you're connected to a large hub.
644
645       log_downloads <boolean>
646           Log downloaded files to transfers.log.
647
648       log_hubchat <boolean>
649           Log the main hub chat. Note that changing this requires any
650           affected hub tabs to be closed and reopened before the change is
651           effective.
652
653       log_uploads <boolean>
654           Log file uploads to transfers.log.
655
656       max_ul_per_user <integer>
657           The maximum number of simultaneous upload connections to one user.
658
659       minislots <integer>
660           Set the number of available minislots. A `minislot' is a special
661           slot that is used when all regular upload slots are in use and
662           someone is requesting your filelist or a small file. In this case,
663           the other client automatically applies for a minislot, and can
664           still download from you as long as not all minislots are in use.
665           What constitutes a `small' file can be changed with the
666           `minislot_size' setting. Also see the `slots' configuration setting
667           and the `/grant' command.
668
669       minislot_size <integer>
670           The maximum size of a file that may be downloaded using a
671           `minislot', in KiB. See the `minislots' setting for more
672           information.
673
674       nick <string>
675           Your nick. Nick changes are only visible on newly connected hubs,
676           use the  `/reconnect' command to use your new nick immediately.
677           Note that it is highly discouraged to change your nick on NMDC
678           hubs. This is because clients downloading from you have no way of
679           knowing that you changed your nick, and therefore can't immediately
680           continue to download from you.
681
682       notify_bell <disable|low|medium|high>
683           When enabled, ncdc will send a bell to your terminal when a tab
684           indicates a notification. The notification types are:
685
686             high   - Messages directed to you (PM or highlight in hub chat),
687             medium - Regular hub chat,
688             low    - User joins/quits, new search results, etc.
689
690           How a "bell" (or "beep" or "alert", whatever you prefer to call it)
691           manifests itself depends on your terminal. In some setups, this
692           generates an audible system bell. In other setups it can makes your
693           terminal window flash or do other annoying things to get your
694           attention.  And in some setups it is ignored completely.
695
696       password <string>
697           Sets your password for the current hub and enables auto-login on
698           connect. If you just want to login to a hub without saving your
699           password, use the `/password' command instead. Passwords are saved
700           unencrypted in the config file.
701
702       reconnect_timeout <interval>
703           The time to wait before automatically reconnecting to a hub. Set to
704           0 to disable automatic reconnect.
705
706       sendfile <boolean>
707           Whether or not to use the sendfile() system call to upload files,
708           if supported. Using sendfile() allows less resource usage while
709           uploading, but may not work well on all systems.
710
711       share_emptydirs <boolean>
712           Share empty directories. When disabled (the default), empty
713           directories in your share will not be visible to others. This also
714           affects empty directories containing only empty directories, etc. A
715           file list refresh is required for this setting to be effective.
716
717       share_exclude <regex>
718           Any file or directory with a name that matches this regular
719           expression will not be shared. A file list refresh is required for
720           this setting to be effective.
721
722       share_hidden <boolean>
723           Whether to share hidden files and directories. A `hidden' file or
724           directory is one of which the file name starts with a dot. (e.g.
725           `.bashrc'). A file list refresh is required for this setting to be
726           effective.
727
728       share_symlinks <boolean>
729           Whether to follow symlinks in shared directories. When disabled
730           (default), ncdc will never share any files outside of the directory
731           you specified. When enabled, any symlinks in your shared
732           directories will be followed, even when they point to a directory
733           outside your share.
734
735       show_free_slots <boolean>
736           When set to true, [n sl] will be prepended to your description,
737           where n is the number of currently available upload slots.
738
739       show_joinquit <boolean>
740           Whether to display join/quit messages in the hub chat.
741
742       slots <integer>
743           The number of upload slots. This determines for the most part how
744           many people can download from you simultaneously. It is possible
745           that this limit is exceeded in certain circumstances, see the
746           `minislots' setting and the `/grant' command.
747
748       sudp_policy <disabled|allow|prefer>
749           Set the policy for sending or receiving encrypted UDP search
750           results. When set to `disabled', all UDP search results will be
751           sent and received in plain text. Set this to `allow' to let ncdc
752           reply with encrypted search results if the other client requested
753           it. `prefer' will also cause ncdc itself to request encryption.
754
755           Note that, regardless of this setting, encrypted UDP search results
756           are only used on ADCS hubs. They will never be sent on NMDC or non-
757           TLS ADC hubs. Also note that, even if you set this to `prefer',
758           encryption is still only used when the client on the other side of
759           the connection also supports it.
760
761       tls_policy <disabled|allow|prefer|force>
762           Set the policy for secure client-to-client connections. Setting
763           this to `disabled' disables TLS support for client connections, but
764           still allows you to connect to TLS-enabled hubs. `allow' will allow
765           the use of TLS if the other client requests this, but ncdc itself
766           will not request TLS when connecting to others, `prefer' tells ncdc
767           to request TLS when connecting to others. Setting this to 'force'
768           will disallow non-TLS connections and also requires that the hub
769           connection itself is TLS.
770
771           The use of TLS for client connections usually results in less
772           optimal performance when uploading and downloading, but is quite
773           effective at avoiding protocol-specific traffic shaping that some
774           ISPs may do.
775
776       tls_priority <string>
777           Set the GnuTLS priority string used for all TLS-enabled
778           connections. See the "Priority strings" section in the GnuTLS
779           manual for details on what this does and how it works. Currently it
780           is not possible to set a different priority string for different
781           types of connections (e.g. hub or incoming/outgoing client
782           connections).
783
784       ui_time_format <string>
785           The format of the time displayed in the lower-left of the screen.
786           Set `-' to not display a time at all. The string is passed to the
787           Glib g_date_time_format() function, which accepts roughly the same
788           formats as strftime(). Check out the strftime(3) man page or the
789           Glib documentation for more information. Note that this setting
790           does not influence the date/time format used in other places, such
791           as the chat window or log files.
792
793       upload_rate <speed>
794           Maximum combined transfer rate of all uploads. See the
795           `download_rate' setting for more information on rate limiting. Note
796           that this setting also overrides any `connection' setting.
797

KEY BINDINGS

799       On any tab without the text input line, you can press `?' to get the
800       key bindings for that tab. The list of key bindings is available
801       through the "/help keys" command, and is reproduced below.
802
803       Global key bindings
804             Alt+j        Open previous tab.
805             Alt+k        Open next tab.
806             Alt+h        Move current tab left.
807             Alt+l        Move current tab right.
808             Alt+a        Move tab with recent activity.
809             Alt+<num>    Open tab with number <num>.
810             Alt+c        Close current tab.
811             Alt+n        Open the connections tab.
812             Alt+q        Open the download queue tab.
813             Alt+o        Open own file list.
814             Alt+r        Refresh file list.
815
816             Keys for tabs with a log window:
817             Ctrl+l       Clear current log window.
818             PgUp         Scroll the log backward.
819             PgDown       Scroll the log forward.
820
821             Keys for tabs with a text input line:
822             Left/Right   Move cursor one character left or right.
823             End/Home     Move cursor to the end / start of the line.
824             Up/Down      Scroll through the command history.
825             Tab          Auto-complete current command, nick or argument.
826             Alt+b        Move cursor one word backward.
827             Alt+f        Move cursor one word forward.
828             Backspace    Delete character before cursor.
829             Delete       Delete character under cursor.
830             Ctrl+w       Delete to previous space.
831             Alt+d        Delete to next space.
832             Ctrl+k       Delete everything after cursor.
833             Ctrl+u       Delete entire line.
834
835       File browser
836             Up/Down      Select one item up/down.
837             k/j          Select one item up/down.
838             PgUp/PgDown  Select one page of items up/down.
839             End/Home     Select last/first item in the list.
840             /            Start incremental regex search (press Return to stop editing).
841             ,/.          Search next / previous.
842             Right/l      Open selected directory.
843             Left/h       Open parent directory.
844             t            Toggle sorting directories before files.
845             s            Order by file size.
846             n            Order by file name.
847             d            Add selected file/directory to the download queue.
848             m            Match selected item with the download queue.
849             M            Match entire file list with the download queue.
850             a            Search for alternative download sources.
851
852       Connection list
853             Up/Down      Select one item up/down.
854             k/j          Select one item up/down.
855             PgUp/PgDown  Select one page of items up/down.
856             End/Home     Select last/first item in the list.
857             d            Disconnect selected connection.
858             i/Return     Toggle information box.
859             f            Find user in user list.
860             m            Send a PM to the selected user.
861             q            Find file in download queue.
862             b/B          Browse the selected user's list, B to force a redownload.
863
864       Download queue
865             Up/Down      Select one item up/down.
866             k/j          Select one item up/down.
867             PgUp/PgDown  Select one page of items up/down.
868             End/Home     Select last/first item in the list.
869             K/J          Select one user up/down.
870             f            Find user in user list.
871             c            Find connection in the connection list.
872             a            Search for alternative download sources.
873             d            Remove selected file from the queue.
874             +/-          Increase/decrease priority.
875             i/Return     Toggle user list.
876             r            Remove selected user for this file.
877             R            Remove selected user from all files in the download queue.
878             x            Clear error state for the selected user for this file.
879             X            Clear error state for the selected user for all files.
880
881             Note: when an item in the queue has `ERR' indicated in the
882             priority column, you have two choices: You can remove the
883             item from the queue using `d', or attempt to continue the
884             download by increasing its priority using `+'.
885
886       Search results tab
887             Up/Down      Select one item up/down.
888             k/j          Select one item up/down.
889             PgUp/PgDown  Select one page of items up/down.
890             End/Home     Select last/first item in the list.
891             f            Find user in user list.
892             b/B          Browse the selected user's list, B to force a redownload.
893             d            Add selected file to the download queue.
894             h            Toggle hub column visibility.
895             u            Order by username.
896             s            Order by file size.
897             l            Order by free slots.
898             n            Order by file name.
899             m            Match selected item with the download queue.
900             M            Match all search results with the download queue.
901             q            Match selected users' list with the download queue.
902             Q            Match all matched users' lists with the download queue.
903             a            Search for alternative download sources.
904
905       User list tab
906             Up/Down      Select one item up/down.
907             k/j          Select one item up/down.
908             PgUp/PgDown  Select one page of items up/down.
909             End/Home     Select last/first item in the list.
910             /            Start incremental regex search (press Return to stop editing).
911             ,/.          Search next / previous.
912             o            Toggle sorting OPs before others.
913             s/S          Order by share size.
914             u/U          Order by username.
915             t/T          Toggle visibility / order by tag column.
916             e/E          Toggle visibility / order by email column.
917             c/C          Toggle visibility / order by connection column.
918             p/P          Toggle visibility / order by IP column.
919             i/Return     Toggle information box.
920             m            Send a PM to the selected user.
921             g            Grant a slot to the selected user.
922             b/B          Browse the selected users' list, B to force a redownload.
923             q            Match selected users' list with the download queue.
924

WEIRD UI FLAGS

926       Some listings have a flags display, and their meaning may not be
927       immediately obvious.
928
929   File status
930       You may see one-letter flags to the left of file names in search
931       results and file list tabs. Their meaning is as follows:
932
933       H   The file had been added to the file list, but has not been hashed
934           yet and thus is not visible to others. This flag can appear only
935           when browsing your own list.
936
937       S   The file is already in your share. If "download_shared" is set to
938           "false", trying to download it will result only in an informational
939           message. This flag never appears when browsing your own file list.
940
941       Q   The file is currently in your download queue. Trying to download it
942           will result only in an informational message.
943
944   Connection flags
945       On the connection list window, there are two flags:
946
947       S   Connection state, can be either Connecting, Handshake, Idle,
948           Downloading, Uploading or - for disconnected.
949
950       t   This means that the connection is encrypted with TLS.
951
952   User flags
953       The user list has some flags too:
954
955       o   Set if the user is an operator in the hub.
956
957       p   When the user is passive. If this flag is not set, the user is
958           active.
959
960       t   Set if connections with this user will be encrypted with TLS.
961

ENVIRONMENT

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

FILES

967       $NCDC_DIR corresponds to the session dir set via -c, environment
968       variable $NCDC_DIR or $HOME/.ncdc.
969
970       $NCDC_DIR/cert/
971           Directory where the client certificates are stored. Must contain a
972           private key file (client.key) and public certificate (client.crt).
973           These will be generated automatically when ncdc starts up the first
974           time.
975
976       $NCDC_DIR/db.sqlite3
977           The database. This stores all configuration variables, hash data of
978           shared files, download queue information and other state
979           information. Manually editing this file with the `sqlite3'
980           commandline tool is possible but discouraged. Any changes made to
981           the database while ncdc is running will not be read, and may even
982           get overwritten by ncdc.
983
984       $NCDC_DIR/dl/
985           Directory where completed downloads are moved to by default. Can be
986           changed with the "download_dir" configuration option.
987
988       $NCDC_DIR/files.xml.bz2
989           Filelist containing a listing of all shared files.
990
991       $NCDC_DIR/fl/
992           Directory where downloaded file lists from other users are stored.
993           The names of the files are hex-encoded user IDs that are used
994           internally by ncdc. Old file lists are deleted automatically after
995           a configurable interval. See the "filelist_maxage" configuration
996           option.
997
998       $NCDC_DIR/history
999           Command history.
1000
1001       $NCDC_DIR/inc/
1002           Default location for incomplete downloads. Can be changed with the
1003           "incoming_dir" setting. The file names in this directory are the
1004           base32-encoded TTH root of the completed file.
1005
1006       $NCDC_DIR/logs/
1007           Directory where all the log files are stored. File names starting
1008           with `#' are hub logs and `~' are user (PM) logs. Special log files
1009           are transfers.log and main.log.
1010
1011           ncdc does not have built-in functionality to rotate or compress log
1012           files automatically. When rotating log files manually (e.g. via a
1013           cron job), make sure to send the SIGUSR1 signal afterwards to force
1014           ncdc to flush the old logs and create or open the new log files.
1015
1016       $NCDC_DIR/stderr.log
1017           Error/debug log. This file is cleared every time ncdc starts up.
1018
1019       $NCDC_DIR/version
1020           Version of the data directory. This file locked while an ncdc
1021           instance is running, making sure that no two ncdc instances work
1022           with the same session directory at the same time.
1023
1024   Format of transfers.log
1025       Uploads and downloads are logged in the transfers.log file. Transfers
1026       are separated by a newline (0x0a). Each log line has the following
1027       fields, separated by a space:
1028
1029       1.  Date/time when the transfer ended, formatted as "[YYYY-MM-DD
1030           HH:MM:SS ZONE]",
1031
1032       2.  Hub name, including the "#" prefix,
1033
1034       3.  Base32-encoded CID of the other user for ADC transfers, or a '-'
1035           for NMDC,
1036
1037       4.  User name (escaped),
1038
1039       5.  IPv4 or IPv6 address,
1040
1041       6.  Direction, "u" for upload or "d" for download,
1042
1043       7.  Whether the transfer completed successfully ("c") or has been
1044           interrupted/disconnected before all requested file data has been
1045           transferred ("i"),
1046
1047       8.  Base32-encoded TTH of the transferred file, or '-' for
1048           "files.xml.bz2",
1049
1050       9.  Total transfer time, in seconds,
1051
1052       10. File size, in bytes,
1053
1054       11. File offset, in bytes,
1055
1056       12. Transfer size, in bytes,
1057
1058       13. File path (escaped). Absolute virtual path for uploads, destination
1059           path for downloads.
1060
1061       All fields are encoded in UTF-8. Fields that may contain a space or
1062       newline are escaped as follows: A space is escaped as "\s", a newline
1063       as "\n" and a backslash as "\\". The timestamp is not escaped.
1064
1065       Many clients download files is separate (smallish) chunks. Ncdc makes
1066       no attempt to combine multiple chunk requests in a single log entry, so
1067       you may see the same uploaded file several times with a different file
1068       offset.
1069

LICENSE

1071       Copyright (C) 2011-2019 Yoran Heling <projects@yorhel.nl>
1072
1073       ncdc is distributed under the MIT license, please read the COPYING file
1074       for more information.
1075

BUGS

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

AUTHOR

1083       ncdc is written by Yoran Heling <projects@yorhel.nl>
1084
1085       Web: <https://dev.yorhel.nl/ncdc>
1086
1087
1088
1089ncdc-1.23                         2022-05-30                           NCDC(1)
Impressum