2005.03.13 - Opennap NG 0.49

- New: well performing, native Windows binary created via MinGW is available
- Bugfix: Windows crash bug on common non-critical network errors fixed
- Bugfix: server desync (invisible users) bug believed to be fixed
- Bugfix: keyword searches may have returned lots of wrong results; fixed
- Bugfix: occasional 100% CPU server freeze when idleing on Windows
- Bugfix: server crash if empty non-Linux server connects to GotNap
- Bugfix: consequently removed all occurrances of sprintf()
- Change: ghost_kill now integer variable
- Change: if ghost kill is off or denied then server name is reported to user
- Change: non-Mods getting full whois-info about themselves as well
- Change: files shared by users is 32 bit number now
- Change: disabled CSC (Client-Server-Compr.) because of troublesome implementation
- Change: reduced user flood notifaction to sensible extent
- Change: renamed variable "max_searches" --> "max_searches_pending"
- Change: modified and added some log stats output lines, for increased verbosity
- Change: renamed file "config"     to "opennap-config.txt"
- Change: renamed file "block"      to "opennap-block.txt"
- Change: renamed file "filter"     to "opennap-filter.txt"
- Change: renamed file "bans"       to "opennap-bans.txt"
- Change: renamed file "users"      to "opennap-user.txt"
- Change: renamed file "motd"       to "opennap-motd.txt"
- Change: renamed file "pis"        to "opennap-pid.txt"
- Change: renamed file "servers"    to "opennap-servers.txt"
- Change: updated sample file "opennap-config.txt"
- Change: updated sample file "opennap-block.txt"
- Change: renamed sample file "opennap-bans.txt"
- Change: renamed sample file "opennap-motd.txt"
- Change: several small source code reorganizations to improve readability
- New: script 'init-userdb.sh' to create initial user accounts
- New: variable "max_whois_count" to limit excessive whois 
- New: variable "max_whois_time" to limit excessive whois
- New: variable "max_whois_ban_ttl" to ban whois flooders (trader suspects)
- New: variable "max_block_pct" to ban users sharing too much unwanted content
- New: variable "max_block_pct_ban_ttl", TTL for bans on sharing unwanted content
- New: variable "default_ban_ttl", def. 6 months. No more unlimited bans.
- New: variable "no_share_level"; Elites and Admins may be exempt from sharing
- New: variable "max_filesize", to disallow too large files, i.e. movies
- New: variable "flood_eject", to automatically killban stubborn flooders
- New: variable "flood_ban_ttl" to specify ttl for flood bans
- New: variable "ascii_filenames", to allow only ASCII characters in filenames
- New: variable "alnum_nicks", to allow only alphanumerical nicks
- New: variable "max_uploading" to throttle amount of incoming filelist traffic
- New: variable "clones_allow_level" to exempt admins from clone detection
- Removed: variable "allow_dynamic_ghosts" - see manual
- Removed: variable "discipline_block", redundant - see manual
- Removed: variable "discipline_block_mod", Mods+ aren't banned automatically!
- Removed: variable "discipline_ignorers", redundant - see manual
- Removed: variable "eject_also_bans", auto-ejecting without banning is pointless
- Removed: variable "block_winmx", redundant legacy - see manual
- Removed: variable "loglevel", legacy - see manual
- Removed: variable "max_new_users_per_minute", redundant, was broken anyway
- Removed: program 'setup' to create initial Elite account - see quick start
- Change: several &log messages got improved verbosity, some new were added
- Change: manual revised and extended again, esp. files, levels, clients, glossary


2003.03.20 - Opennap NG 0.47H

manual.html:
- Change: Opennap-NG manual revised, relayouted and updated. Tables rule!

abuse.c
- Bugfix: full test of "eject_limits" not only for users but also for leeches.
- Bugfix: new approach to make "eject_nochannels" functional.
- Bugfix: criminal flag evaluation didn't look logically right.
- Change: changed order of criminal flag evaluation to save one test.
- Change: reduced temp. msg. buffer size from 1024 to 256. Will hardly be exceeded.

add_file.c
- Bugfix: made "min_file_size" functional (thanks to Khaytsus).
- Bugfix: test for "min_file_size" now on 100, 870 and 10300 tags
- New: added filenames to response on too small files.
- New: option "fix_xnap_path" to correct an annoying client problem.

handler.c
- Bugfix: "eject_leeches" didn't work properly if server was not linked.
- New: output of total files and percentage of blocked files of a user
       "eject_after" seconds after he finished latest sharing sequence.

main.c:
- Bugfix: timer events weren't always reset properly, causing many periods of
    unnecessary 100% CPU consumption for some to several seconds each.
- Bugfix: when in extended disconnect / user removal loop (one of 100% CPU
    consumption phases) the program now reacts almost instantly on SIGTERM.
- New: outputs main loop count in configurable steps (default: 1000).
- New: created own inlined version of strcmp() to speed up searches and hashes

add_file.c  handler_c  main.c
- New: displaying new stats value "users_uploadling_lists"

opennap.h  config.c  login.c
- New: "max_new_users_count" and "max_new_users_time" for better login traffic
        shaping. Obsolete "max_new_users_per_minute".

opennap.h  config.c  add_file.c
- New: "verbose_too_many" offers optional verbose output of supernumerous files.
- New: "leech_share" sets whether leeches are allow to share & upload.

opennap.h  config.c  add_file.c
- New: variable "notify_exceed_frequency" to reduce outgoing server traffic.

filter.h
- Bugfix: block file treats empty lines now as comments and not as "*".

opennap.h  config.c  filter.c
- New: flag "notify_user_block" to inform user about blocked files.
- New: flag "log_blocked" as a slim alternative to "notify_mod_block".

privmsg.c
- New: "log_ignore_abuse" logs users which exceed "max_ignore".

config.c
- Change: default for "allow_dynamic_ghosts" is now "on".
- Change: default for "max_connections" to 1000. (Was FD_SETSIZE which looks
        dangerous for most OSes and some less powerful machines.)
- Change: default for "stat_pass" and "stat_user" set to NULL (instead of "".
        Now not setting those vars is a clean way to skip Napigator report.)

channel.c
- Change: users can be invited to non-invite-only channels now as well.

opennap.h  config.c  login.c  main.c  glob.c
- New: variable "valid_clients" to suppress rank growth of client progranm IDs.

config.c  opennap.h  util.c
- New: variable "log_timefmt" to add date / time to log to stdout

init.c  add_file.c
- Change: increased size of hash pools to speed up accesses a bit.

hash.c
- Change: some optimizations and inlinings to speed up some functions a bit.

util.c
- Change: rewrote log_message_level() and log_message ().
- Change: rewrote set_val().
- Change: rewrote split_filename().

opennap.h  config.c  util.c  join.c
- Change: converted LOG_CHANNEL from a configure option to a config variable.

login.c
- New: all ghost kills are logged, including old and new IPs.

motd.c:
- New: added file statistics to MOTD header



Known bugs, TODO + wishes:
(+) == scheduled for 0.50,      (o) == into consideration,
(-) == implementation unlikely, (!) == just a stupid idea, unrealistic

(+) new blockfile opennap-block-ban.txt, for real criminal content
(+) new bitmask variable "motd_mode" to toggle auto infos at top of MOTD.
(+) new file "allow" as opposite to "block"
)+) new option to allow Mod+ notification on Mod+ connects and disconnects
(+) investigate possible bug on channels.txt file dump
(+) store full channel attributes in channels.txt
(+) restructure log stats output for better readability
(+) prevent server from starting after fresh install without any customization
(+) remove some confusing warnings 
(+) clean up some log outputs at all
(+) make all config settings changable without need for server restart
(+) clear out source dirs, remove or combine outdated or unneeded files
(+) unify build process for Windows + MinGW, reduce historic special treatment
(+) offer Solaris binaries
(o) new max_connect-Feature to deal with reconnect flooders
(o) automatically try relinking to split servers for some time
(o) standardized log storage facility, configurable via config-file
(o) stored log rotation facility, based on file size or duration
(o) user account management via GUI config tool, replacement for setup.exe
(o) server-side client connectivity verification, to detect wrong port settings
(o) clean up the code regarding common mixture between signed and unsigned ints
(o) improve code structure, i.e. split single funcs consisting of 500+ lines
(o) offer Mac OS X binaries
(o) transform some more configure options into config variables
(o) repair ACLs
(-) fix or reimplement CSC (Client-Server-Compression) more carefully
(-) runtime statistics evaluation and display via GUI tool, based on log output
(-) find a better fix for the user desync problem, without some seconds delay
(-) make the Windows version a genuine system service for NT4, 2K, XP
(-) add internationalization support for server log messages
(-) provide updated build sets to support commercial Windows compilers
(-) investigate why only few servers ran for more than a year without restart
(-) Replace userlevels at all with finer, indepenent feature permission flags
(!) comfortable server runtime administration via GUI tool
(!) implement a new memory managment which allows to effectively free RAM
