Hi there, placebodk...
I've tried it out and have a few things to note:
* First off, I am so happy with the bandwidth limit!
* The ncurses frontend is really hot when run in an xterm!
Excellent work!!!
I also have gripes, and I hope they are taken in the constructive manner they are intended. I realize you've built what *you* need (so would I!
), but maybe some of these things can be fixed.
* Does nzbget now *always* run with the ncurses frontend? It seems that --outputmode and the corresponding option is completely ignored... I can easily see that the ncurses interface looks really cool in an xterm, but it would be nice to choose myself (see point below about "screen"). And if the option is to be completely disregarded, it should be removed from --help, nzbget.cfg.example and from option parsing code.
* Is there no way to run in the original "batch" mode and is client/server now the *only* way to run? I suggest "nzbget --server" to start the server and "nzbget --queue <nzbfile>" add to the server queue. Especially since client/server mode requires root to install it into hard-coded /usr/bin/nzbget (for now). Even with that being a config-option, I'd still like to be able to run in batch mode. (Whether or not to make it the default? I don't care about that.)
* Glad to see, that if the downloadrate option is missing it downloads "as fast as possible"!
* Most times when creating an executable you can run it in the creation directory with ./executable. However, line 95 in nzbget.ccp now contains
iKey = ftok( "/usr/bin/nzbget", 0 );
And so it now *requires* to be installed exactly there. Not very flexible... Also, it now requires installation by root, since the path is fixed and /usr/bin/ is writable by root only. (I hope!!) Also, it took me a while to figure out that was what went wrong, so maybe a test for the existance of /usr/bin/nzbget and approrpiate error message would have been in order. Also what if the nzbget found by $PATH and /usr/bin/nzbget are not the same? (I realize I don't know myself). At the very least, make the final location used by ftok an option in the configuration file.
* nzbget-0.1.2.1 behaves as if <option name="appendpostnametodir">no</option> regardless of yes or no. When a standard vanilla nzbget-0.1.2 is given an .nzb file and appendpostnametodir is yes, it downloads stuff into a sub-directory under option destinationdir, not into destinationdir itself (at least with the newzbin nzb files I've done so far).
* the ncurses interface does not work well with screen, which I use. Do you know and/or use screen? I like it because it doesn't require me to have an xterm running with nzbget in it, but allows me to ssh into the box and connect to the running nzbget whereever I am. But with the ncurses interface under screen, the frequent screen refreshes are *very* visible and don't look too hot. Especially with ssh over the internet. Probably worse the slower the connection... (Of course the bandwith limitation option helps here! Hurray!). For this reason alone, I'd like a choice of frontends.
* It seems that when a client does nzbget <nzbfile> and the filename is relative, the path is considered relative to the server, not the client. So if server is in dir S and client is in dir C and there is a file.nzb both places, when client does nzbget file.nzb, that is really S/file.nzb which is counterintuitive. If S/file.nzb is missing then nzbget file.nzb of even nzbget ./file.nzb fails...
* A server or daemon that has a working directory that is not / is a bad idea. It prevents unmounting of any volume containing the daemon's current directory. Did you know that? A daemon or server process should cd to /. (Correct me if I'm wrong)
* How to exit the server cleanly? CTRL-C sometimes generates a segmentation fault.
* I noticed that I now needed to install libncurses-dev and libuu-dev on Debian to find ncurses.h and libuu.a. Now it says "skipping non-compatible uulib/libuu.a" (or something similar - the verbatim message is gone...). Maybe ./configure should check for that instead of compilation failing - no biggie for me and I don't know configure (automake?) that well...