Redesigned and rewrote the website
Moved most pages out of the index.cgi and into a POD file while I was at it.
This commit is contained in:
parent
ac38865338
commit
b7746b3122
16 changed files with 1460 additions and 1423 deletions
35
dat/doc
Normal file
35
dat/doc
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
=pod
|
||||
|
||||
When programming stuff, I often come across a situation where I am not
|
||||
happy with the documentation or articles available online, and feel the urge to
|
||||
do something about this situation. Most of the time I resist this urge because
|
||||
I otherwise won't get any programming done, but sometimes this urge is just too
|
||||
hard to resist.
|
||||
|
||||
I don't really have a blog - at least not one that I take seriously - so I'll
|
||||
just use this site to publish my articles. Since I've just started writing
|
||||
these, this page is still quite empty. I'll add more as soon as my urge to
|
||||
write an article surprasses my urge to get some programming done again.
|
||||
|
||||
=over
|
||||
|
||||
=item C<2011-11-26 > - L<Multi-threaded Access to an SQLite3 Database|http://dev.yorhel.nl/doc/sqlaccess>
|
||||
|
||||
So you have a single database and some threads. How do you combine these in a
|
||||
program?
|
||||
|
||||
=item C<2010-06-02 > - L<Design and implementation of a compressed linked list library|http://dev.yorhel.nl/download/doc/compll.pdf> (PDF)
|
||||
|
||||
This isn't really an article. It's the report for the
|
||||
final project of my professional (HBO) bachelor of Electrical
|
||||
Engineering. I was very liberal with some terminology in this report. For
|
||||
example, "linked lists" aren't what you think they are, and I didn't even
|
||||
use the term "locality of reference" where I really should have. It was
|
||||
also written for an audience with little knowledge on the subject, so I
|
||||
elaborated on a lot of things that should be obvious for most people in
|
||||
the field. Then there is a lot of uninteresting overhead about the
|
||||
project itself, which just happened to be mandatory for this report.
|
||||
Nonetheless, if you can ignore these faults it's not such a bad read, if
|
||||
I may say so myself. :-)
|
||||
|
||||
=back
|
||||
63
dat/dump
Normal file
63
dat/dump
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
=pod
|
||||
|
||||
Most of the things I write are simple perl/shell scripts or programs that only
|
||||
serve the purpose of learning something new. This page is a listing of those I
|
||||
thought might be of interest to others as well.
|
||||
|
||||
=head2 bbcode.c
|
||||
|
||||
January 2006. Simple BBCode to HTML converter written in plain C, for learning
|
||||
puroses. L<source|http://dev.yorhel.nl/download/code/bbcode.c>
|
||||
|
||||
=head2 echoserv.c
|
||||
|
||||
February 2006. A simple non-blocking single-threaded TCP echo server,
|
||||
displaying how the select() system call can be used to handle multiple
|
||||
connections. L<source|http://dev.yorhel.nl/download/code/echoserv.c>
|
||||
|
||||
=head2 yapong.c
|
||||
|
||||
Feburary 2006. Yet Another Pong, and yet another program written just for
|
||||
testing/ learning purposes. Tested to work with the ncurses or pdcurses
|
||||
libraries. L<source|/download/code/yapong.c> (L<older
|
||||
version|http://dev.yorhel.nl/download/code/yapong-0.01.c>).
|
||||
|
||||
=head2 Microdc2 log file parser
|
||||
|
||||
June 2007. Simple perl script that parses log files created by
|
||||
L<microdc2|http://corsair626.no-ip.org/microdc/> and outputs a simple and
|
||||
ugly html file with all uploaded files. It correctly merges chunked
|
||||
uploads, calculates average upload speed per file and total bandwidth used
|
||||
for uploads. L<source|http://dev.yorhel.nl/download/code/mdc2-parse.pl>
|
||||
|
||||
B<Note:> for those of you who still use microdc2, please have a look at
|
||||
L<ncdc|http://dev.yorhel.nl/ncdc>, a modern alternative.
|
||||
|
||||
=head2 vinfo.c
|
||||
|
||||
November 2009. The L<public VNDB API|http://vndb.org/d11> was designed to be
|
||||
easy to use even from low level languages. I wrote this simple program to see
|
||||
how much work it would be to use the API in C, and as example code for anyone
|
||||
wishing to use the API for something more useful. Read the comments for more
|
||||
info. L<source|http://dev.yorhel.nl/download/code/vinfo.c>
|
||||
|
||||
=head2 json.mll
|
||||
|
||||
December 2010. I was writing a client for the L<public VNDB
|
||||
API|http://vndb.org/d11> in OCaml and needed a JSON parser/generator. Since I
|
||||
wasn't happy with the currently available solutions - they try to do too many
|
||||
things and have too many dependencies - I decided to write a minimal JSON
|
||||
library myself. L<source|http://g.blicky.net/serika.git/tree/json.mll>
|
||||
|
||||
=head2 ncdc-transfer-stats
|
||||
|
||||
September 2011. L<ncdc|http://dev.yorhel.nl/ncdc> gained transfer logging
|
||||
features, and I wrote a quick Perl script to fetch some simple statistics from
|
||||
it. L<source|http://p.blicky.net/agolr>
|
||||
|
||||
=head2 ncdc-share-report
|
||||
|
||||
December 2011. Playing around with the Go programming language, I wrote another
|
||||
transfer log parser and statistics generator for ncdc.
|
||||
L<source|http://p.blicky.net/6yx2d> (L<older
|
||||
version|http://p.blicky.net/ab4lm>).
|
||||
102
dat/dump-awshrink
Normal file
102
dat/dump-awshrink
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
=pod
|
||||
|
||||
People who run AWStats on large log files have most likely noticed: the data
|
||||
files can grow quite large, resulting in both a waste of disk space and longer
|
||||
page generation times for the AWStats pages. I wrote a small script that
|
||||
analyzes these data files and can remove any information you think is
|
||||
unnecessary.
|
||||
|
||||
B<Download:> L<awshrink|http://dev.yorhel.nl/download/code/awshrink> (copy to
|
||||
/usr/bin to install).
|
||||
|
||||
|
||||
=head2 Important
|
||||
|
||||
Do B<NOT> use this script on data files that are not completed yet (i.e. data
|
||||
files of the month you're living in). This will result in inaccurate sorting of
|
||||
visits, pages, referers and whatever other list you're shrinking. Also, keep
|
||||
in mind that this is just a fast written perl hack, it is by no means fast and
|
||||
may hog some memory while shrinking data files.
|
||||
|
||||
|
||||
=head2 Usage
|
||||
|
||||
awshrink [-c -s] [-SECTION LINES] [..] datafile
|
||||
-s Show statistics
|
||||
-c Overwrite datafile instead of writing to a backupfile (datafile~)
|
||||
-SECTION LINES
|
||||
Shrink the selected SECTION to LINES lines. (See example below)|;
|
||||
|
||||
|
||||
=head2 Typical command-line usage
|
||||
|
||||
While awshrink is most useful for monthly cron jobs, here's an example of basic
|
||||
command line usage to demonstrate what the script can do:
|
||||
|
||||
$ wc -c awstats122007.a.txt
|
||||
29916817 awstats122007.a.txt
|
||||
|
||||
$ awshrink -s awstats122007.a.txt
|
||||
Section Size (Bytes) Lines
|
||||
SCREENSIZE* 74 0
|
||||
WORMS 131 0
|
||||
EMAILRECEIVER 135 0
|
||||
EMAILSENDER 143 0
|
||||
CLUSTER* 144 0
|
||||
LOGIN 155 0
|
||||
ORIGIN* 178 6
|
||||
ERRORS* 229 10
|
||||
SESSION* 236 7
|
||||
FILETYPES* 340 12
|
||||
MISC* 341 10
|
||||
GENERAL* 362 8
|
||||
OS* 414 29
|
||||
SEREFERRALS 587 34
|
||||
TIME* 1270 24
|
||||
DAY* 1293 31
|
||||
ROBOT 1644 40
|
||||
BROWSER 1992 127
|
||||
DOMAIN 2377 131
|
||||
UNKNOWNREFERERBROWSER 5439 105
|
||||
UNKNOWNREFERER 20585 317
|
||||
SIDER_404 74717 2199
|
||||
PAGEREFS 130982 2500
|
||||
KEYWORDS 288189 27036
|
||||
SIDER 1058723 25470
|
||||
SEARCHWORDS 5038611 157807
|
||||
VISITOR 23285662 416084
|
||||
* = not shrinkable
|
||||
|
||||
$ awshrink -s -c -VISITOR 100 -SEARCHWORDS 100 -SIDER 100 awstats122007.a.txt
|
||||
Section Size (Bytes) Lines
|
||||
SCREENSIZE* 74 0
|
||||
WORMS 131 0
|
||||
EMAILRECEIVER 135 0
|
||||
EMAILSENDER 143 0
|
||||
CLUSTER* 144 0
|
||||
LOGIN 155 0
|
||||
ORIGIN* 178 6
|
||||
ERRORS* 229 10
|
||||
SESSION* 236 7
|
||||
FILETYPES* 340 12
|
||||
MISC* 341 10
|
||||
GENERAL* 362 8
|
||||
OS* 414 29
|
||||
SEREFERRALS 587 34
|
||||
TIME* 1270 24
|
||||
DAY* 1293 31
|
||||
ROBOT 1644 40
|
||||
BROWSER 1992 127
|
||||
SEARCHWORDS 2289 100
|
||||
DOMAIN 2377 131
|
||||
SIDER 3984 100
|
||||
UNKNOWNREFERERBROWSER 5439 105
|
||||
VISITOR 5980 100
|
||||
UNKNOWNREFERER 20585 317
|
||||
SIDER_404 74717 2199
|
||||
PAGEREFS 130982 2500
|
||||
KEYWORDS 288189 27036
|
||||
* = not shrinkable
|
||||
|
||||
$ wc -c awstats122007.a.txt
|
||||
546074 awstats122007.a.txt
|
||||
28
dat/dump-demo
Normal file
28
dat/dump-demo
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
=pod
|
||||
|
||||
Yes, I realise that the title is plural, suggesting there's more than one demo.
|
||||
That is not quite true, unfortunately. The reason I chose to use plural form is
|
||||
simply in the hopes that I do, in fact, write more demos, and that this page
|
||||
will actually get more content in the future. I still happen to be a huge fan
|
||||
of the L<demoscene|http://demoscene.info/>, and still wish to contribute to
|
||||
it... if only I could find the time and self-discipline to do so. In the
|
||||
meanwhile, here's one demo I did write some time ago:
|
||||
|
||||
=head1 Blue Cubes
|
||||
|
||||
[img right bluecubes.png Blue Cubes.]
|
||||
August 2006. My first demo - or more exact: intro. Blue Cubes is a 64kB intro
|
||||
written in OpenGL/SDL with Linux as target OS. I wrote this intro within 10
|
||||
days without any prior experience in any of the fields of computer generated
|
||||
graphics or music. So needlessly to say, it sucks. I am ashamed even of the
|
||||
thought of releasing it at a respectable demoparty like
|
||||
L<Evoke|http://www.evoke.eu/2006/>. Still, it didn't feel I was unwelcome, I
|
||||
did actually receive three prices: 3rd price in the 64k competition (there were
|
||||
only 3 actual entries, but oh well), best non-windows 64k intro (it was the
|
||||
only one in the competition), and the Digitale Kultur newcomer award, which
|
||||
actually is something to be proud of, I guess.
|
||||
|
||||
L<download|http://dev.yorhel.nl/download/yorhel~bluecubes.zip> -
|
||||
L<mirror|http://scene.org/file.php?file=/parties/2006/evoke06/in64/yorhel_bluecubes.zip&fileinfo>
|
||||
(includes linux binaries, windows port, and sources) -
|
||||
L<pouet comments|http://pouet.net/prod.php?which=25866>.
|
||||
53
dat/dump-grenamr
Normal file
53
dat/dump-grenamr
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
=pod
|
||||
|
||||
GRenamR is a GTK+ mass file renamer written in Perl, the functionality is
|
||||
insipred by the
|
||||
L<rename|http://search.cpan.org/~rmbarker/File-Rename-0.05/rename.PL> command
|
||||
that comes with a Perl module.
|
||||
|
||||
GRenamR allows multiple file renaming using perl expressions. You can see the
|
||||
effects of your expression while typing it, and can preview your action before
|
||||
applying them. The accepted expressions are mostly the same as the rename
|
||||
command (see above paragrah): your expression will be evaluated with $_ set to
|
||||
the filename, and any modifications to this variable will result in the
|
||||
renaming of the file. There's one other variable that the rename command does
|
||||
not have: $i, which reflects the file number (starting from 0) in the current
|
||||
list. This allows expressions such as as C<$_=sprintf'%03d.txt',$i>.
|
||||
|
||||
B<Download: > L<grenamr|http://dev.yorhel.nl/download/code/grenamr-0.1.pl>
|
||||
(copy to /usr/bin/ to install)
|
||||
|
||||
Requires the Gtk2 Perl module. Most distributions have a perl-gtk2 package.
|
||||
|
||||
|
||||
=head2 Example expressions
|
||||
|
||||
y/A-Z/a-z/ # Convert filenames to lowercase
|
||||
$_=lc # Same
|
||||
s/\.txt$/.utf8/ # Change all '.txt' extensions to '.utf8'
|
||||
s/([0-9]+)/sprintf'%04d',$1/eg # Zero-pad all numbers in filenames
|
||||
|
||||
# Replace each image filename with a zero-padded number starting from 1
|
||||
s/^.+\.jpg$/sprintf'%03d.jpg',$i+1/e
|
||||
|
||||
|
||||
=head2 Caveats / bugs / TODO
|
||||
|
||||
=over
|
||||
|
||||
=item * Calling functions as 'sleep' or 'exit' in the expression will trash the program
|
||||
|
||||
=item * It's currently not possible to manually order the file list, so $i is
|
||||
not useful in every situation
|
||||
|
||||
=item * It's currently not possible to manually rename files or exclude items
|
||||
from being effected by the expression
|
||||
|
||||
=item * The expression isn't executed in the opened directory, so things like
|
||||
L<-X|http://perldoc.perl.org/functions/-X.html> won't work
|
||||
|
||||
=back
|
||||
|
||||
=head2 Screenshot
|
||||
|
||||
[img scr grenamr.png GRenamR]
|
||||
99
dat/dump-nccolour
Normal file
99
dat/dump-nccolour
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
=pod
|
||||
|
||||
I decided to do some experimentation with how the colours defined in ncurses
|
||||
are actually displayed in terminals, what the effects are of combining these
|
||||
colours with other attributes, and how colour schemes of a terminal can affect
|
||||
the displayed colours. To this end I wrote a small c file and ran it in
|
||||
different terminals and different configurations. Note that only the 8 basic
|
||||
NCurses colours are tested, the more flexible init_color() function is not
|
||||
used.
|
||||
|
||||
B<Source code: > L<nccolour.c|http://dev.yorhel.nl/download/code/nccolour.c>
|
||||
(L<syntax highlighed version|http://p.blicky.net/xu35c>)
|
||||
|
||||
Some screenshots can be found below, but more screenshots are always welcome!
|
||||
Please send your (.png) screenshots to projects@yorhel.nl.
|
||||
|
||||
|
||||
=head2 Notes / observations
|
||||
|
||||
=over
|
||||
|
||||
=item * The most obvious conclusion: the displayed colours do not have the
|
||||
exact same colour value in every terminal. Some terminals also allow users to
|
||||
modify these colours.
|
||||
|
||||
=item * You can not assume that the default foreground or background colour can
|
||||
be represented by one of the 8 basic colours defined by NCurses.
|
||||
|
||||
=item * Specifying -1 as colour, to indicate the default foreground or
|
||||
background colour, seems to work fine in any terminal tested so far.
|
||||
|
||||
=item * All tested terminals render the foreground colour in a lighter shade
|
||||
when the A_BOLD attribute is set. This does not apply to the background colour.
|
||||
The result of this is that the text becomes visible when using A_BOLD when the
|
||||
foreground and background colour are set to the same value.
|
||||
|
||||
=item * Unfortunately, not all terminals are configured in such a way that all
|
||||
possible colours are readable. So as a developer you'll still have to support
|
||||
configurable colour schemes in your ncurses application. :-(
|
||||
|
||||
=item * On most terminals, setting the foreground and background colour to the
|
||||
same value without applying the A_BOLD attribute will make the text invisible.
|
||||
Don't rely on this, however, as this is not the case on OS X.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Full screenshot
|
||||
|
||||
To avoid wasting unecessary space, the comparison screenshots below only
|
||||
display the colour table. Here's a screenshot of the full output of the
|
||||
program, which also explains what each column means.
|
||||
|
||||
[img scr nccol-full.png ]
|
||||
|
||||
|
||||
=head2 Screenshots
|
||||
|
||||
=over
|
||||
|
||||
=item Arch Linux, Roxterm, Default color scheme
|
||||
|
||||
[img scr nccol-rox-b.png ]
|
||||
|
||||
=item Arch Linux, Roxterm, GTK color scheme
|
||||
|
||||
[img scr nccol-rox-w.png ]
|
||||
|
||||
=item Arch Linux, Roxterm, Tango color scheme
|
||||
|
||||
[img scr nccol-rox-t.png ]
|
||||
|
||||
=item Arch Linux, Roxterm, Modified Tango color scheme
|
||||
|
||||
[img scr nccol-rox-c.png ]
|
||||
|
||||
=item Arch Linux, xterm (default settings)
|
||||
|
||||
[img scr nccol-xterm.png ]
|
||||
|
||||
=item Ubuntu 11.10, Gnome-terminal
|
||||
|
||||
[img scr nccol-ubuntu.png ]
|
||||
|
||||
=item Debian Squeeze, VT (default settings)
|
||||
|
||||
[img scr nccol-debian.png ]
|
||||
|
||||
=item FreeBSD, VT (default settings)
|
||||
|
||||
[img scr nccol-fbsd.png ]
|
||||
|
||||
=item Mac OS X, Terminal
|
||||
|
||||
[img scr nccol-osx-terminal.png ]
|
||||
|
||||
=item Mac OS X, iTerm2
|
||||
|
||||
[img scr nccol-osx-iterm2.png ]
|
||||
77
dat/home
Normal file
77
dat/home
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
=pod
|
||||
|
||||
This site is an attempt to publish and organise my various opensource programs
|
||||
and libraries on one central location, possibly documented as well as possible
|
||||
so it might actually be useful to anyone. Some of these projects might end up
|
||||
to be total crap, and some might not be useful to anyone at all. I'll simply
|
||||
try to dump most of the things I create here, and leave it up to you whatever
|
||||
you decide to do with it.
|
||||
|
||||
|
||||
=head2 Changes
|
||||
|
||||
=over
|
||||
|
||||
=item C<2012-01-17 > Complete site redesign.
|
||||
|
||||
=item C<2011-12-30 > ncdc 1.7 released!
|
||||
|
||||
=item C<2011-12-07 > ncdc 1.6 released!
|
||||
|
||||
=item C<2011-11-26 > Added article section and the article on SQLite.
|
||||
|
||||
=item C<2011-11-03 > ncdc 1.5 and ncdu 1.8 released!
|
||||
|
||||
=item C<2011-10-26 > ncdc 1.4 released!
|
||||
|
||||
=item C<2011-10-19 > PGP-signed all releases of ncdu, ncdc and TUWF.
|
||||
|
||||
=item C<2011-10-14 > ncdc 1.3 released!
|
||||
|
||||
=item C<2011-09-25 > ncdc 1.1 released - follwed by a 1.2 quickfix.
|
||||
|
||||
=item C<2011-09-16 > ncdc 1.0 released!
|
||||
|
||||
=item C<2011-09-15 > Added some screenshots for ncdu.
|
||||
|
||||
=item C<2011-09-03 > ncdc 0.9 released!
|
||||
|
||||
=item C<2011-08-26 > ncdc 0.8 released!
|
||||
|
||||
=item C<2011-08-17 > ncdc 0.7 released!
|
||||
|
||||
=item C<2011-08-08 > ncdc 0.6 released & user guide updated
|
||||
|
||||
=item C<2011-08-02 > ncdc 0.5 released!
|
||||
|
||||
=item C<2011-07-23 > ncdc 0.4 released!
|
||||
|
||||
=item C<2011-07-15 > ncdc 0.3 released!
|
||||
|
||||
=item C<2011-06-27 > ncdc 0.2 released!
|
||||
|
||||
=item C<2011-06-20 > ncdc 0.1 released! And wrote a user guide for it.
|
||||
|
||||
=item C<2011-06-11 > Added NCurses colour experiment at code dump => nc-colour
|
||||
|
||||
=item C<2011-06-03 > Added my latest project: ncdc
|
||||
|
||||
=item C<2011-02-07 > TUWF 0.1 released and now also available on CPAN
|
||||
|
||||
=item C<2011-01-27 > Documented and uploaded one of my older projects: TUWF
|
||||
|
||||
=item C<2011-01-09 > Added my json.mll OCaml library to code dump
|
||||
|
||||
=item C<2010-08-13 > ncdu 1.7 released!
|
||||
|
||||
=item C<2009-12-22 > Added vinfo.c script to code dump
|
||||
|
||||
=item C<2009-10-23 > ncdu 1.6 released!
|
||||
|
||||
=item C<2009-09-21 > Tiny CSS fix to make this site look good in certain configurations.
|
||||
|
||||
=item C<2009-05-02 > ncdu 1.5 released!
|
||||
|
||||
=item C<2009-04-30 > Site redesign and reorganisation.
|
||||
|
||||
=back
|
||||
120
dat/ncdc
Normal file
120
dat/ncdc
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
=pod
|
||||
|
||||
Ncdc is a modern and lightweight direct connect client with a friendly
|
||||
ncurses interface.
|
||||
|
||||
|
||||
=head2 Get ncdc!
|
||||
|
||||
=over
|
||||
|
||||
=item Latest version
|
||||
|
||||
1.7 ([dllink ncdc-1.7.tar.gz download]
|
||||
- L<changes|http://dev.yorhel.nl/ncdc/changes>
|
||||
- L<mirror|https://sourceforge.net/projects/ncdc/files/ncdc/>)
|
||||
|
||||
=item Development version
|
||||
|
||||
The latest development version is available from git and can be cloned using
|
||||
C<git clone git://g.blicky.net/ncdc.git>. The repository is available for
|
||||
L<online browsing|http://g.blicky.net/ncdc.git/>.
|
||||
|
||||
You are also invited to join the development hub at C<adc://dc.blicky.net:2780/>.
|
||||
|
||||
=item Packages and ports
|
||||
|
||||
Are available for the following systems:
|
||||
L<Arch Linux|http://aur.archlinux.org/packages.php?ID=50949> -
|
||||
L<FreeBSD|http://www.freshports.org/net-p2p/ncdc/> -
|
||||
L<Frugalware|http://frugalware.org/packages/136807> -
|
||||
L<Gentoo|http://packages.gentoo.org/package/net-p2p/ncdc> -
|
||||
L<Mac OS X|http://www.macports.org/ports.php?by=name&substr=ncdc> -
|
||||
L<OpenSUSE|http://packman.links2linux.org/package/ncdc>
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Features
|
||||
|
||||
Common features all modern DC clients (should) have:
|
||||
|
||||
=over
|
||||
|
||||
=item * Connecting to multiple hubs at the same time,
|
||||
|
||||
=item * Support for both ADC and NMDC protocols,
|
||||
|
||||
=item * Chatting and private messaging,
|
||||
|
||||
=item * Browsing the user list of a connected hub,
|
||||
|
||||
=item * Share management and file uploading,
|
||||
|
||||
=item * Connections and download queue management,
|
||||
|
||||
=item * File list browsing,
|
||||
|
||||
=item * Multi-source and TTH-checked file downloading,
|
||||
|
||||
=item * Searching for files,
|
||||
|
||||
=item * Secure hub (adcs:// and nmdcs://) and client connections on both protocols.
|
||||
|
||||
=back
|
||||
|
||||
And special features not commonly found in other clients:
|
||||
|
||||
=over
|
||||
|
||||
=item * Subdirectory refreshing,
|
||||
|
||||
=item * Nick notification and highlighting in chat windows,
|
||||
|
||||
=item * Detecting changes to the TLS certificate of a hub,
|
||||
|
||||
=item * Efficient file uploads using sendfile(),
|
||||
|
||||
=item * Large file lists are opened in a background thread,
|
||||
|
||||
=item * Doesn't trash your OS file cache (with the flush_file_cache option enabled),
|
||||
|
||||
=item * (Relatively...) low memory usage.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 What doesn't ncdc do?
|
||||
|
||||
Since the above list is getting larger and larger every time, it may be more
|
||||
interesting to list a few features that are (relatively) common in other DC
|
||||
clients, but which ncdc doesn't do. Yet.
|
||||
|
||||
=over
|
||||
|
||||
=item * Segmented downloading,
|
||||
|
||||
=item * Bandwidth throttling,
|
||||
|
||||
=item * OP features (e.g. client detection, file list scanning and other useful stuff for OPs),
|
||||
|
||||
=item * SOCKS support.
|
||||
|
||||
=back
|
||||
|
||||
Of course, there are many more features that could be implemented or improved.
|
||||
These will all be addressed in later versions (hopefully :).
|
||||
|
||||
|
||||
=head2 Requirements
|
||||
|
||||
The following libraries are required: ncurses, bzip2, sqlite3, glib2 and
|
||||
libxml2. For TLS support, you will need at least glib2 version 2.28.0 and
|
||||
glib-networking installed.
|
||||
|
||||
Ncdc has been developed on Arch Linux, but I have received reports from people
|
||||
who successfully used it on CentOS, Debian, FreeBSD, Gentoo, Mac OS X,
|
||||
OpenSUSE, Solaris and Ubuntu. It should be fairly trivial to port to other
|
||||
POSIX-like systems.
|
||||
|
||||
Ncdc is entirely written in C and available under a liberal MIT license.
|
||||
688
dat/ncdc-man
688
dat/ncdc-man
|
|
@ -11,116 +11,120 @@ SYNOPSIS
|
|||
|
||||
|
||||
DESCRIPTION
|
||||
Ncdc is a modern and lightweight direct connect client with a friendly ncurses
|
||||
interface.
|
||||
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 chapters
|
||||
below for a more detailed description of the available functionality.
|
||||
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 regular terminal.
|
||||
Commands within ncdc start with a slash (e.g. `/help') and have tab completion
|
||||
to help you.
|
||||
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:
|
||||
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 allows
|
||||
port forwarding, you may also want to enable active mode:
|
||||
And if you have a direct connection to the internet or if your router
|
||||
allows port forwarding, you may also want to enable active mode:
|
||||
/set active_ip 13.33.33.7
|
||||
/set active_port 34194
|
||||
/set active true
|
||||
|
||||
See the help text for each of the commands and settings for more information.
|
||||
Of course, all of the above settings are saved to the database and will be used
|
||||
again on the next run.
|
||||
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:
|
||||
Here `ncdc' is the personal name you give to the hub, and the second argu‐
|
||||
ment 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 automatically connect to a hub when ncdc starts up, use the `autoconnect'
|
||||
setting.
|
||||
See the help text for '/open' and '/connect' for more information. If you
|
||||
want to automatically connect to a hub when ncdc starts up, use the `auto‐
|
||||
connect' setting.
|
||||
|
||||
Ncdc uses a tabbed interface: every hub opens in a new tab, and there are sev‐
|
||||
eral 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 colored exclamation
|
||||
mark is displayed before the tab name, different colors are used for different
|
||||
types of activity.
|
||||
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 `/con‐
|
||||
nections' or hit Alt+n.
|
||||
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 envi‐
|
||||
ronment variable `$NCDC_DIR' or if this is unset to `$HOME/.ncdc'.
|
||||
Use a different session directory. Defaults to the contents of the
|
||||
environment 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.
|
||||
Don't automatically connect to hubs with the `autoconnect' option
|
||||
set.
|
||||
|
||||
-v, --version
|
||||
Display ncdc version.
|
||||
|
||||
|
||||
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 access this
|
||||
documentation.
|
||||
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
|
||||
access 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.
|
||||
Use this command to accept the TLS certificate of a hub. This com‐
|
||||
mand 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.
|
||||
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 lat‐
|
||||
est 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.
|
||||
With arguments, the file list of the specified user will be down‐
|
||||
loaded (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.
|
||||
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.
|
||||
Close the current tab. When closing a hub tab, you will be discon‐
|
||||
nected 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>'
|
||||
Initiate a connection with a hub. If no address is specified, will
|
||||
connect 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 example:
|
||||
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
|
||||
example:
|
||||
/open testhub
|
||||
/connect dchub://dc.some-test-hub.com/
|
||||
See the /open command for more information.
|
||||
|
|
@ -132,37 +136,39 @@ INTERACTIVE COMMANDS
|
|||
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/.
|
||||
Cleans up unused data and reorganizes existing data to allow more
|
||||
efficient 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 com‐
|
||||
plete.
|
||||
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 be granted for as long as ncdc
|
||||
stays open or the /ungrant command is used. If you restart ncdc, the user
|
||||
will have to wait for a regular slot. Unless, of course, you /grant a
|
||||
slot again.
|
||||
Grant someone a slot. This allows the user to download from you even
|
||||
if you have no free slots. The slot will be granted for as long as
|
||||
ncdc stays open or the /ungrant command is used. If you restart
|
||||
ncdc, the user will have to wait for a regular slot. Unless, of
|
||||
course, you /grant a slot again.
|
||||
|
||||
To get a list of users whom you have granted a slot, use `/grant' without
|
||||
arguments or with `-list'. Be warned that using `/grant' without argu‐
|
||||
ments on a PM tab will grant the slot to the user you are talking with.
|
||||
Make sure to use `-all' in that case.
|
||||
To get a list of users whom you have granted a slot, use `/grant'
|
||||
without 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.
|
||||
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 information on a configuration setting, use /help set <set‐
|
||||
ting>.
|
||||
To get help on key bindings, use /help keys.
|
||||
|
||||
|
||||
|
|
@ -171,45 +177,47 @@ INTERACTIVE COMMANDS
|
|||
`/set' command, but can only be used on hub tabs.
|
||||
|
||||
/hunset [<key>]
|
||||
This command can be used to reset a per-hub configuration variable back
|
||||
to its global value.
|
||||
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.
|
||||
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.
|
||||
|
||||
/me <message>
|
||||
This allows you to talk in third person. Most clients will display your
|
||||
message as something like:
|
||||
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 proto‐
|
||||
col does not have this feature, and your message will be sent as-is,
|
||||
including the /me.
|
||||
Note that this command only works correctly on ADC hubs. The NMDC
|
||||
protocol 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 mes‐
|
||||
sage is given, the tab will be opened but no message will be sent.
|
||||
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>]
|
||||
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 storing hub-specific con‐
|
||||
figuration.
|
||||
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 storing 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.
|
||||
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.
|
||||
This command can be used to send a password to the hub without sav‐
|
||||
ing it to the database. If you wish to login automatically without
|
||||
having to type /password every time, use '/hset password <pass‐
|
||||
word>'. Be warned, however, that your password will be saved unen‐
|
||||
crypted in that case.
|
||||
|
||||
/pm <user> [<message>]
|
||||
Alias for /msg
|
||||
|
|
@ -224,36 +232,38 @@ INTERACTIVE COMMANDS
|
|||
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.
|
||||
This command can also be used on the main tab, in which case all
|
||||
connected 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 refreshed.
|
||||
The path argument can be either an absolute filesystem path or a virtual
|
||||
path within your share.
|
||||
Initiates share refresh. If no argument is given, the complete list
|
||||
will be refreshed. Otherwise only the specified directory will be
|
||||
refreshed. 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'.
|
||||
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.
|
||||
-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).
|
||||
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)
|
||||
|
|
@ -264,54 +274,55 @@ INTERACTIVE COMMANDS
|
|||
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.
|
||||
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 pattern
|
||||
matching on the settings is also possible. Use, for example, `/set
|
||||
color*' to list all color-related settings.
|
||||
Get or set global configuration variables. Use without arguments to
|
||||
get a list of all global settings and their current value. Glob-
|
||||
style pattern matching on the settings is also possible. Use, for
|
||||
example, `/set color*' to list all color-related settings.
|
||||
|
||||
See 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.
|
||||
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:
|
||||
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 exam‐
|
||||
ple, 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 automati‐
|
||||
cally on the added directory.
|
||||
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
|
||||
automatically on the added directory.
|
||||
|
||||
/ungrant [<username>|<id>]
|
||||
Revoke a granted slot.
|
||||
|
||||
/unset [<key>]
|
||||
This command can be used to reset a global configuration variable back to
|
||||
its default value.
|
||||
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 /'.
|
||||
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.
|
||||
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.
|
||||
Opens the user list of the currently selected hub. Can also be
|
||||
accessed using Alt+u.
|
||||
|
||||
/version
|
||||
Display version information.
|
||||
|
|
@ -322,63 +333,66 @@ INTERACTIVE COMMANDS
|
|||
|
||||
|
||||
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.
|
||||
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. Make sure to set `active_ip' and
|
||||
`active_port' before enabling active mode.
|
||||
|
||||
active_bind <string>
|
||||
IP address to bind to in active mode. When unset, ncdc will bind to all
|
||||
interfaces.
|
||||
IP address to bind to in active mode. When unset, ncdc will bind to
|
||||
all interfaces.
|
||||
|
||||
active_ip <string>
|
||||
Your public IP address for use in active mode. 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.
|
||||
Your public IP address for use in active mode. 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. Like‐
|
||||
wise, if you connect to a hub on your LAN, this should be your LAN
|
||||
IP.
|
||||
|
||||
Unlike the other connection-related settings, this can be changed on a
|
||||
per-hub basis, allowing you to have a different public IP address per
|
||||
hub.
|
||||
Unlike the other connection-related settings, this can be changed on
|
||||
a per-hub basis, allowing you to have a different public IP address
|
||||
per hub.
|
||||
|
||||
active_port <integer>
|
||||
The listen port for incoming connections in active mode. Set to `0' to
|
||||
automatically assign a random port. If TLS support is available, another
|
||||
TCP port will be opened on the configured port + 1. Ncdc will tell you
|
||||
exactly on which ports it is listening for incoming packets. If you are
|
||||
behind a router or firewall, make sure that you have configured it to
|
||||
forward and allow these ports.
|
||||
The listen port for incoming connections in active mode. Set to `0'
|
||||
to automatically assign a random port. If TLS support is available,
|
||||
another TCP port will be opened on the configured port + 1. Ncdc
|
||||
will tell you exactly on which ports it is listening for incoming
|
||||
packets. If you are behind a router or firewall, make sure that you
|
||||
have configured it to forward and allow these ports.
|
||||
|
||||
autoconnect <boolean>
|
||||
Set to true to automatically connect to the current hub when ncdc starts
|
||||
up.
|
||||
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 deter‐
|
||||
mines whether ncdc will perform a refresh on startup. See the `/refresh'
|
||||
command to manually refresh your file list.
|
||||
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).
|
||||
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 posi‐
|
||||
tive 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.
|
||||
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:
|
||||
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
|
||||
|
|
@ -395,59 +409,61 @@ SETTINGS
|
|||
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' attribute usually makes the foreground color appear brighter as
|
||||
well.
|
||||
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' attribute 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 recommended
|
||||
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.
|
||||
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 download‐
|
||||
ing from you. The actual format you can use here may vary, but it is
|
||||
recommended 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 con‐
|
||||
nection values (e.g. `DSL' or `Cable') on hubs that require this.
|
||||
|
||||
description <string>
|
||||
A short public description that will be displayed in the user list of a
|
||||
hub.
|
||||
A short public description that will be displayed in the user list
|
||||
of a hub.
|
||||
|
||||
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.
|
||||
The directory where finished downloads are moved to. Finished down‐
|
||||
loads are by default stored in <session directory>/dl/. It is possi‐
|
||||
ble 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
|
||||
`b' 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.
|
||||
When recursively adding a directory to the download queue - by
|
||||
pressing `b' on a directory in the file list browser - any item in
|
||||
the selected directory with a name that matches this regular expres‐
|
||||
sion 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.
|
||||
This regex is not checked when adding individual files from either
|
||||
the file list browser or the search results.
|
||||
|
||||
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.
|
||||
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:
|
||||
The character set/encoding to use for hub and PM messages. This set‐
|
||||
ting is only used on NMDC hubs, ADC always uses UTF-8. Some common
|
||||
values are:
|
||||
CP1250 (Central Europe)
|
||||
CP1251 (Cyrillic)
|
||||
CP1252 (Western Europe)
|
||||
|
|
@ -456,39 +472,40 @@ SETTINGS
|
|||
UTF-8 (International)
|
||||
|
||||
filelist_maxage <interval>
|
||||
The maximum age of a downloaded file list. If a file list was downloaded
|
||||
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. Recognized
|
||||
suffices are 's' for seconds, 'm' for minutes, 'h' for hours and 'd' for
|
||||
days. Set to 0 to disable the cache altogether.
|
||||
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. Recognized suffices are 's' for seconds, 'm' for minutes, 'h'
|
||||
for hours and 'd' for days. Set to 0 to disable the cache alto‐
|
||||
gether.
|
||||
|
||||
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
|
||||
improve 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.
|
||||
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 improve 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 con‐
|
||||
stantly downloading the same file from you.
|
||||
|
||||
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.
|
||||
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.
|
||||
The directory where incomplete downloads are stored. This setting
|
||||
can only be changed when the download queue is empty. Also see the
|
||||
download_dir setting.
|
||||
|
||||
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 connected
|
||||
to a large hub.
|
||||
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 connected to a large hub.
|
||||
|
||||
log_downloads <boolean>
|
||||
Log downloaded files to transfers.log.
|
||||
|
|
@ -497,84 +514,87 @@ SETTINGS
|
|||
Log file uploads to transfers.log.
|
||||
|
||||
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' config‐
|
||||
uration setting and the `/grant' command.
|
||||
Set the number of available minislots. A `minislot' is a special
|
||||
slot that is used when all regular upload slots are in use and some‐
|
||||
one 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 con‐
|
||||
stitutes a `small' file can be changed with the `minislot_size' set‐
|
||||
ting. 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.
|
||||
The maximum size of a file that may be downloaded using a `minis‐
|
||||
lot', 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 because
|
||||
clients downloading from you have no way of knowing that you changed your
|
||||
nick, and therefore can't immediately continue to download from you.
|
||||
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 because clients downloading from you have no way of knowing that
|
||||
you changed your nick, and therefore can't immediately continue to
|
||||
download from you.
|
||||
|
||||
password <string>
|
||||
Sets your password for the current hub and enables auto-login on connect.
|
||||
If you just want to login to a hub without saving your password, use the
|
||||
`/password' command instead. Passwords are saved unencrypted in the con‐
|
||||
fig file.
|
||||
Sets your password for the current hub and enables auto-login on
|
||||
connect. 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.
|
||||
|
||||
sendfile <boolean>
|
||||
Whether or not to use the sendfile() system call to upload files, if sup‐
|
||||
ported. Using sendfile() allows less resource usage while uploading, but
|
||||
may not work well on all systems.
|
||||
Whether or not to use the sendfile() system call to upload files, if
|
||||
supported. Using sendfile() allows less resource usage while upload‐
|
||||
ing, but may not work well on all systems.
|
||||
|
||||
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.
|
||||
Any file or directory with a name that matches this regular expres‐
|
||||
sion 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 direc‐
|
||||
tory 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 effective.
|
||||
Whether to share hidden files and directories. A `hidden' file or
|
||||
directory 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
|
||||
effective.
|
||||
|
||||
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.
|
||||
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 `min‐
|
||||
islots' setting and the `/grant' command.
|
||||
|
||||
tls_policy <disabled|allow|prefer>
|
||||
Set the policy for secure client-to-client connections. Setting this to
|
||||
`disabled' disables TLS support for client connections, but still allows
|
||||
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. Setting this to `prefer' tells ncdc to also request
|
||||
TLS when connecting to others.
|
||||
Set the policy for secure client-to-client connections. Setting this
|
||||
to `disabled' disables TLS support for client connections, but still
|
||||
allows 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. Setting this to `prefer'
|
||||
tells ncdc to also request TLS when connecting to others.
|
||||
|
||||
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. Also
|
||||
note that, even if you set this to `prefer', TLS will only be used if the
|
||||
connecting party also supports it.
|
||||
The use of TLS for client connections usually results in less opti‐
|
||||
mal performance when uploading and downloading, but is quite effec‐
|
||||
tive at avoiding protocol-specific traffic shaping that some ISPs
|
||||
may do. Also note that, even if you set this to `prefer', TLS will
|
||||
only be used if the connecting party also supports it.
|
||||
|
||||
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 documentation
|
||||
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.
|
||||
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 documentation 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.
|
||||
|
||||
|
||||
|
||||
KEY BINDINGS
|
||||
On any tab without the text input line, you can press `?' to get the key bind‐
|
||||
ings for that tab. The list of key bindings is available through the `/help
|
||||
keys' command, and is reproduced below.
|
||||
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.
|
||||
|
|
@ -646,14 +666,15 @@ KEY BINDINGS
|
|||
+/- 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.
|
||||
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 col‐
|
||||
umn, 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
|
||||
`+'.
|
||||
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.
|
||||
|
|
@ -661,7 +682,8 @@ KEY BINDINGS
|
|||
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 users' list, B to force a redownload.
|
||||
b/B Browse the selected users' list, B to force a redown‐
|
||||
load.
|
||||
d Add selected file to the download queue.
|
||||
h Toggle hub column visibility.
|
||||
u Order by username.
|
||||
|
|
@ -689,13 +711,14 @@ KEY BINDINGS
|
|||
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.
|
||||
b/B Browse the selected users' list, B to force a redown‐
|
||||
load.
|
||||
|
||||
|
||||
|
||||
ENVIRONMENT
|
||||
$NCDC_DIR is used to determine the session dir, it is only honoured if -c is not
|
||||
set on the command line.
|
||||
$NCDC_DIR is used to determine the session dir, it is only honoured if -c
|
||||
is not set on the command line.
|
||||
|
||||
|
||||
FILES
|
||||
|
|
@ -703,17 +726,18 @@ FILES
|
|||
$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
|
||||
should be generated automatically when ncdc starts up the first time, but
|
||||
can be generated manually using ncdc-gen-cert(1).
|
||||
Directory where the client certificates are stored. Must contain a
|
||||
private key file (client.key) and public certificate (client.crt).
|
||||
These should be generated automatically when ncdc starts up the
|
||||
first time, but can be generated manually using ncdc-gen-cert(1).
|
||||
|
||||
$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 possi‐
|
||||
ble but discouraged. Any changes made to the database while ncdc is run‐
|
||||
ning will not be read, and may even get overwritten by ncdc.
|
||||
shared files, download queue information and other state informa‐
|
||||
tion. Manually editing this file with the `sqlite3' commandline tool
|
||||
is possible 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
|
||||
|
|
@ -723,10 +747,10 @@ FILES
|
|||
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
|
||||
interval. See the `filelist_maxage' configuration option.
|
||||
Directory where downloaded file lists from other users are stored.
|
||||
The names of the files are hex-encoded user IDs that are used inter‐
|
||||
nally by ncdc. Old file lists are deleted automatically after a con‐
|
||||
figurable interval. See the `filelist_maxage' configuration option.
|
||||
|
||||
$NCDC_DIR/history
|
||||
Command history.
|
||||
|
|
@ -737,32 +761,32 @@ FILES
|
|||
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 trans‐
|
||||
fers.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.
|
||||
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 ses‐
|
||||
sion directory at the same time.
|
||||
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.
|
||||
|
||||
|
||||
LICENSE
|
||||
Copyright (C) 2011 Yoran Heling <projects@yorhel.nl>
|
||||
ncdc is distributed under the MIT license, please read the COPYING file for more
|
||||
information.
|
||||
Copyright (C) 2011-2012 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 projects@yorhel.nl or connect to the
|
||||
development hub at adc://dc.blicky.net:2780/.
|
||||
Please report bugs or feature requests to projects@yorhel.nl or connect to
|
||||
the development hub at adc://dc.blicky.net:2780/.
|
||||
|
||||
|
||||
AUTHOR
|
||||
|
|
|
|||
21
dat/ncdc-scr
Normal file
21
dat/ncdc-scr
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
=pod
|
||||
|
||||
Note: While these screenshots are from version 1.5, the latest version has only
|
||||
little visible changes. Let me also apologise for the crappy formatting, I
|
||||
should take some smaller shots next time...
|
||||
|
||||
=head2 Main chat
|
||||
|
||||
[img scr ncdchub.png Ncdc in the mainchat.]
|
||||
|
||||
=head2 File browser
|
||||
|
||||
[img scr ncdcbrowse.png Simple file list browser.]
|
||||
|
||||
=head2 User list
|
||||
|
||||
[img scr ncdcusers.png Ncdc displaying the userlist of a hub.]
|
||||
|
||||
=head2 Built-in help
|
||||
|
||||
[img scr ncdchelp.png Ncdc built-in help.]
|
||||
98
dat/ncdu
Normal file
98
dat/ncdu
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
=pod
|
||||
|
||||
Not quite happy with the available disk usage analyzers and looking for a fun
|
||||
project to get used to C programming, I started working on ncdu: A disk usage
|
||||
analyzer with an ncurses interface, aimed to be run on a remote server where
|
||||
you don't have an entire gaphical setup, but have to do with a simple SSH
|
||||
connection. ncdu aims to be fast, simple and easy to use, and should be able
|
||||
to run in any minimal POSIX-like environment with ncurses installed.
|
||||
|
||||
|
||||
=head2 Download
|
||||
|
||||
=over
|
||||
|
||||
=item Latest version
|
||||
|
||||
1.8 ([dllink ncdu-1.8.tar.gz download]
|
||||
- L<changes|http://dev.yorhel.nl/ncdu/changes>
|
||||
- L<mirror|https://sourceforge.net/projects/ncdu/files/ncdu/>)
|
||||
|
||||
=item Development version
|
||||
|
||||
The most recent code is available on a git repository and can be cloned with
|
||||
C<git clone git://g.blicky.net/ncdu.git/>. The repository is also available for
|
||||
L<online browsing|http://g.blicky.net/ncdu.git/>.
|
||||
|
||||
=back
|
||||
|
||||
Ncdu is entirely written in C and available under a liberal MIT license.
|
||||
|
||||
Subscribe to L<freecode|http://freecode.com/projects/ncdu> to receive
|
||||
notifications for new releases.
|
||||
|
||||
|
||||
|
||||
=head2 Packages and ports
|
||||
|
||||
Ncdu has been packaged for quite a few systems already, here's a list of the ones I am aware of:
|
||||
|
||||
L<AgiliaLinux|http://packages.agilialinux.ru/search.php?tag=sys-fs> -
|
||||
L<AIX|http://www.perzl.org/aix/index.php?n=Main.Ncdu> -
|
||||
L<ALT Linux|http://sisyphus.ru/en/srpm/Sisyphus/ncdu> -
|
||||
L<Arch Linux|http://www.archlinux.org/packages/?q=ncdu> -
|
||||
L<CRUX|http://crux.nu/portdb/?q=ncdu&a=search> -
|
||||
L<Cygwin|http://cygwin.com/packages/ncdu/> -
|
||||
L<Debian|http://packages.debian.org/ncdu> -
|
||||
L<Fedora|https://admin.fedoraproject.org/pkgdb/acls/name/ncdu> -
|
||||
L<FreeBSD|http://www.freshports.org/sysutils/ncdu/> -
|
||||
L<Frugalware|http://frugalware.org/packages/?op=pkg&srch=ncdu&arch=all&ver=all> -
|
||||
L<Gentoo|http://packages.gentoo.org/package/sys-fs/ncdu> -
|
||||
L<IPCop|http://www.ipadd.de/binary-v2.html> -
|
||||
L<OpenBSD|http://www.openbsd.org/cgi-bin/cvsweb/ports/sysutils/ncdu/> -
|
||||
L<OpenSUSE|http://packman.links2linux.de/package/ncdu/> -
|
||||
Mac OS X (L<Fink|http://pdb.finkproject.org/pdb/package.php/ncdu> - L<Homebrew|http://mxcl.github.com/homebrew/> - L<MacPorts|http://www.macports.org/ports.php?by=name&substr=ncdu>) -
|
||||
L<Pardus|http://packages.pardus.org.tr/info/2011/devel/source/ncdu.html> -
|
||||
L<Puppy Linux|http://www.murga-linux.com/puppy/viewtopic.php?t=35024> -
|
||||
Solaris (L<CSW|http://www.opencsw.org/packages/ncdu> - L<sunfreeware|http://www.sunfreeware.com/>) -
|
||||
Slackware (L<Slackbuilds|http://slackbuilds.org/repository/13.37/system/ncdu/> - L<Slackers.it|http://www.slackers.it/repository/ncdu/>) -
|
||||
L<Ubuntu|http://packages.ubuntu.com/search?searchon=sourcenames&keywords=ncdu> -
|
||||
L<Zenwalk|http://zur.zenwalk.org/view/package/name/ncdu>
|
||||
|
||||
Ncdu is also available on the
|
||||
L<Open Build Service|https://build.opensuse.org/package/show?package=ncdu&project=utilities>,
|
||||
which provides packages for a variaty of Linux distributions.
|
||||
|
||||
|
||||
|
||||
=head2 Similar projects
|
||||
|
||||
=over
|
||||
|
||||
=item L<gt5|http://gt5.sourceforge.net/> - Quite similar to ncdu, but a different approach.
|
||||
|
||||
=item L<tdu|http://webonastick.com/tdu/> - Another small ncurses-based disk usage visualization utility.
|
||||
|
||||
=item L<TreeSize|http://treesize.sourceforge.net/> - GTK, using a treeview.
|
||||
|
||||
=item L<Baobab|http://www.marzocca.net/linux/baobab.html> - GTK, using pie-charts, a treeview and a treemap. Comes with GNOME.
|
||||
|
||||
=item L<GdMap|http://gdmap.sourceforge.net/> - GTK, with a treemap display.
|
||||
|
||||
=item L<Filelight|http://www.methylblue.com/filelight/> - KDE, using pie-charts.
|
||||
|
||||
=item L<KDirStat|http://kdirstat.sourceforge.net/> - KDE, with a treemap display.
|
||||
|
||||
=item L<QDiskUsage|http://qt-apps.org/content/show.php/QDiskUsage?content=107012> - Qt, using pie-charts.
|
||||
|
||||
=item L<xdiskusage|http://xdiskusage.sourceforge.net/> - FLTK, with a treemap display.
|
||||
|
||||
=item L<fsv|http://fsv.sourceforge.net/> - 3D visualization.
|
||||
|
||||
=item L<Philesight|http://zevv.nl/play/code/philesight/> - Web-based clone of Filelight.
|
||||
|
||||
=item L<JDiskReport|http://www.jgoodies.com/freeware/jdiskreport/> - Java, using pie-charts and a treeview.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
106
dat/ncdu-man
106
dat/ncdu-man
|
|
@ -11,32 +11,33 @@ SYNOPSIS
|
|||
|
||||
|
||||
DESCRIPTION
|
||||
ncdu (NCurses Disk Usage) is a curses-based version of the well-known 'du', and
|
||||
provides a fast way to see what directories are using your disk space.
|
||||
ncdu (NCurses Disk Usage) is a curses-based version of the well-known 'du',
|
||||
and provides a fast way to see what directories are using your disk space.
|
||||
|
||||
|
||||
OPTIONS
|
||||
-h Print a small help message
|
||||
|
||||
-q Quiet mode. While calculating disk space, ncdu will update the screen 10
|
||||
times a second by default, this will be decreased to once every 2 seconds
|
||||
in quiet mode. Use this feature to save bandwidth over remote connec‐
|
||||
tions.
|
||||
-q Quiet mode. While calculating disk space, ncdu will update the
|
||||
screen 10 times a second by default, this will be decreased to once
|
||||
every 2 seconds in quiet mode. Use this feature to save bandwidth
|
||||
over remote connections.
|
||||
|
||||
-r Read-only mode. This will disable the built-in file deletion feature.
|
||||
-r Read-only mode. This will disable the built-in file deletion fea‐
|
||||
ture.
|
||||
|
||||
-v Print version.
|
||||
|
||||
-x Only count files and directories on the same filesystem as the specified
|
||||
dir.
|
||||
-x Only count files and directories on the same filesystem as the spec‐
|
||||
ified dir.
|
||||
|
||||
--exclude PATTERN
|
||||
Exclude files that match PATTERN. This argument can be added multiple
|
||||
times to add more patterns.
|
||||
Exclude files that match PATTERN. This argument can be added multi‐
|
||||
ple times to add more patterns.
|
||||
|
||||
-X FILE, --exclude-from FILE
|
||||
Exclude files that match any pattern in FILE. Patterns should be sepa‐
|
||||
rated by a newline.
|
||||
Exclude files that match any pattern in FILE. Patterns should be
|
||||
separated by a newline.
|
||||
|
||||
|
||||
KEYS
|
||||
|
|
@ -57,21 +58,21 @@ KEYS
|
|||
|
||||
a Toggle between showing disk usage and showing apparent size.
|
||||
|
||||
d Delete the selected file or directory. An error message will be shown
|
||||
when the contents of the directory do not match or do not exist anymore
|
||||
on the filesystem.
|
||||
d Delete the selected file or directory. An error message will be
|
||||
shown when the contents of the directory do not match or do not
|
||||
exist anymore on the filesystem.
|
||||
|
||||
t Toggle dirs before files when sorting.
|
||||
|
||||
g Toggle between showing percentage, graph, both, or none. Percentage is
|
||||
relative to the size of the current directory, graph is relative to the
|
||||
largest item in the current directory.
|
||||
g Toggle between showing percentage, graph, both, or none. Percentage
|
||||
is relative to the size of the current directory, graph is relative
|
||||
to the largest item in the current directory.
|
||||
|
||||
e Show/hide 'hidden' or 'excluded' files and directories. Please note that
|
||||
even though you can't see the hidden files and directories, they are
|
||||
still there and they are still included in the directory sizes. If you
|
||||
suspect that the totals shown at the bottom of the screen are not cor‐
|
||||
rect, make sure you haven't enabled this option.
|
||||
e Show/hide 'hidden' or 'excluded' files and directories. Please note
|
||||
that even though you can't see the hidden files and directories,
|
||||
they are still there and they are still included in the directory
|
||||
sizes. If you suspect that the totals shown at the bottom of the
|
||||
screen are not correct, make sure you haven't enabled this option.
|
||||
|
||||
i Show information about the current selected item.
|
||||
|
||||
|
|
@ -81,44 +82,45 @@ KEYS
|
|||
|
||||
|
||||
HARD LINKS
|
||||
Every disk usage analysis utility has its own way of (not) counting hard links.
|
||||
There does not seem to be any universally agreed method of handling hard links,
|
||||
and it is even inconsistent among different versions of ncdu. This section
|
||||
explains what each version of ncdu does.
|
||||
Every disk usage analysis utility has its own way of (not) counting hard
|
||||
links. There does not seem to be any universally agreed method of handling
|
||||
hard links, and it is even inconsistent among different versions of ncdu.
|
||||
This section explains what each version of ncdu does.
|
||||
|
||||
ncdu 1.5 and below does not support any hard link detection at all: each link is
|
||||
considered a separate inode and its size is counted for every link. This means
|
||||
that the displayed directory sizes are incorrect when analyzing directories
|
||||
which contain hard links.
|
||||
ncdu 1.5 and below does not support any hard link detection at all: each
|
||||
link is considered a separate inode and its size is counted for every link.
|
||||
This means that the displayed directory sizes are incorrect when analyzing
|
||||
directories which contain hard links.
|
||||
|
||||
ncdu 1.6 has basic hard link detection: When a link to a previously encountered
|
||||
inode is detected, the link is considered to have a file size of zero bytes.
|
||||
Its size is not counted again, and the link is indicated in the browser inter‐
|
||||
face with a 'H' mark. The displayed directory sizes are only correct when all
|
||||
links to an inode reside within that directory. When this is not the case, the
|
||||
sizes may or may not be correct, depending on which links were considered as
|
||||
"duplicate" and which as "original". The indicated size of the topmost directory
|
||||
(that is, the one specified on the command line upon starting ncdu) is always
|
||||
correct.
|
||||
ncdu 1.6 has basic hard link detection: When a link to a previously encoun‐
|
||||
tered inode is detected, the link is considered to have a file size of zero
|
||||
bytes. Its size is not counted again, and the link is indicated in the
|
||||
browser interface with a 'H' mark. The displayed directory sizes are only
|
||||
correct when all links to an inode reside within that directory. When this
|
||||
is not the case, the sizes may or may not be correct, depending on which
|
||||
links were considered as "duplicate" and which as "original". The indicated
|
||||
size of the topmost directory (that is, the one specified on the command
|
||||
line upon starting ncdu) is always correct.
|
||||
|
||||
ncdu 1.7 has improved hard link detection. Each file that has more than two
|
||||
links has the "H" mark visible in the browser interface. Each hard link is
|
||||
counted exactly once for every directory it appears in. The indicated size of
|
||||
each directory is therefore, correctly, the sum of the sizes of all unique
|
||||
inodes that can be found in that directory. Note, however, that this may not
|
||||
always be same as the space that will be reclaimed after deleting the directory,
|
||||
as some inodes may still be accessible from hard links outside it.
|
||||
counted exactly once for every directory it appears in. The indicated size
|
||||
of each directory is therefore, correctly, the sum of the sizes of all
|
||||
unique inodes that can be found in that directory. Note, however, that this
|
||||
may not always be same as the space that will be reclaimed after deleting
|
||||
the directory, as some inodes may still be accessible from hard links out‐
|
||||
side it.
|
||||
|
||||
|
||||
BUGS
|
||||
Directory hard links are not supported. They will not be detected as being hard
|
||||
links, and will thus be scanned and counted multiple times.
|
||||
Directory hard links are not supported. They will not be detected as being
|
||||
hard links, and will thus be scanned and counted multiple times.
|
||||
|
||||
Some minor glitches may appear when displaying filenames that contain multibyte
|
||||
or multicolumn characters.
|
||||
Some minor glitches may appear when displaying filenames that contain
|
||||
multibyte or multicolumn characters.
|
||||
|
||||
Please report any other bugs you may find at the bug tracker, which can be found
|
||||
on the web site at http://dev.yorhel.nl/ncdu
|
||||
Please report any other bugs you may find at the bug tracker, which can be
|
||||
found on the web site at http://dev.yorhel.nl/ncdu
|
||||
|
||||
|
||||
AUTHOR
|
||||
|
|
|
|||
29
dat/ncdu-scr
Normal file
29
dat/ncdu-scr
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
=pod
|
||||
|
||||
Note: While these screenshots are from version 1.7, the latest version has only
|
||||
little visible changes. Let me also apologise for the crappy formatting, I
|
||||
should take some smaller shots next time...
|
||||
|
||||
=head2 Scanning...
|
||||
|
||||
[img scr ncduscan.png Ncdu scanning a large directory.]
|
||||
|
||||
=head2 Done scanning
|
||||
|
||||
[img scr ncdudone.png Ncdu done scanning a large directory.]
|
||||
|
||||
=head2 Directory information
|
||||
|
||||
[img scr ncduinfo.png Ncdu displaying directory information.]
|
||||
|
||||
=head2 Delete confirmation
|
||||
|
||||
[img scr ncduconfirm.png Ncdu asking for confirmation to delete a file.]
|
||||
|
||||
=head2 Help screen
|
||||
|
||||
[img scr ncduhelp1.png Ncdu help screen.]
|
||||
|
||||
=head2 About screen
|
||||
|
||||
[img scr ncduhelp2.png Ncdu about screen.]
|
||||
|
|
@ -1,5 +1,9 @@
|
|||
Multi-threaded Access to an SQLite3 Database
|
||||
|
||||
=pod
|
||||
|
||||
(Published on B<2011-11-26>. Also available in L<POD|http://dev.yorhel.nl/dat/sqlaccess>.)
|
||||
|
||||
=head1 Introduction
|
||||
|
||||
As I was porting L<ncdc|http://dev.yorhel.nl/ncdc> over to use SQLite3 as
|
||||
|
|
|
|||
64
dat/tuwf
Normal file
64
dat/tuwf
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
=pod
|
||||
|
||||
TUWF is a very small and lightweight web development framework for Perl. It has
|
||||
evolved from being a few abstraction layers in two large websites to a separate
|
||||
set of modules. While initially designed to be used for large and complex
|
||||
websites, it is also perfectly suited for small single-file websites.
|
||||
|
||||
=head2 Main features
|
||||
|
||||
=over
|
||||
|
||||
=item * Very small, and no extra modules required,
|
||||
|
||||
=item * Easy URI-to-function mapping using regular expressions,
|
||||
|
||||
=item * Handy form validation functions,
|
||||
|
||||
=item * Easy XML/XHTML output generation functions,
|
||||
|
||||
=item * Response buffering and output compression,
|
||||
|
||||
=item * Easy access to GET/POST data and cookies,
|
||||
|
||||
=item * Support for CGI and FastCGI - optimized for FastCGI,
|
||||
|
||||
=item * Uses UTF-8 for all text,
|
||||
|
||||
=item * Convenient SQL execution functions and correct transaction handling,
|
||||
|
||||
=item * Promotes code re-use,
|
||||
|
||||
=item * Open source (duh!) and available under a liberal MIT license.
|
||||
|
||||
=back
|
||||
|
||||
Read the L<description|TUWF/DESCRIPTION> in the documentation for more
|
||||
information and details.
|
||||
|
||||
|
||||
=head2 Download
|
||||
|
||||
B<Latest packaged version:> 0.1 ([dllink TUWF-0.1.tar.gz download]
|
||||
- L<CPAN mirror|http://search.cpan.org/dist/TUWF/>)
|
||||
|
||||
TUWF is also available on a git repository at L<http://g.blicky.net/tuwf.git/>.
|
||||
|
||||
|
||||
=head2 Websites using TUWF
|
||||
|
||||
(Not a whole lot)
|
||||
|
||||
=over
|
||||
|
||||
=item * L<VNDB.org|http://vndb.org/> (the site that spawned TUWF - L<open source|http://g.blicky.net/vndb.git/>)
|
||||
|
||||
=item * L<This website|http://dev.yorhel.nl/> (also L<open source|http://g.blicky.net/yorhel-dev.git/tree/index.cgi>)
|
||||
|
||||
=item * L<Blicky.net Pastebin|http://p.blicky.net/> (L<open source|http://g.blicky.net/bpaste.git/tree/index.cgi>)
|
||||
|
||||
=item * The website embedded in the L<D&R Axum|http://www.d-r.nl/AXUM/AXUM.htm> mixing console.
|
||||
|
||||
=item * L<Yorhel.nl|http://yorhel.nl/>
|
||||
|
||||
=back
|
||||
Loading…
Add table
Add a link
Reference in a new issue