OpenNap-NG Reference Manual

Version 0.60

May 2005

Table of Contents






Introduction


Originally, Napster was a distributed file sharing service which allowed users to transfer files directly between their clients for free. A centralized server kept track of all available files and provided clients the ability to search the index of available files. In addition, instant messages (private chat) and group chat services similar to IRC were also provided.

OpenNap is a free Open Source effort to create a version of the proprietary Napster server. We want to express our thanx here to drscholl, who made an excellent job of programming.

OpenNap-NG is the new generation of Opennap, after drscholl had ceased to develop any further. Many new features and bugfixes have been included.

Opennap NG 0.60 is the latest development efforts from spring 2005 to keep the spirit alive.

Note that Opennap NG 0.60 is not a direct successor of previous versions 0.47 and 0.47.2! It's another branch from 0.46 instead, including lot more bug fixes and feature extensions than the 0.47.2 branch. New features marked as "since 0.47H" are not contained in 0.47.2!

We would gladly welcome everyone who also has got new ideas and wants to participate in this project. We also want to announce that we want to merge this fork of opennap with drscholls as soon as he reappears. The main goal is a common codebase. The most current version of this document can be obtained here.





Features:






System requirements


General:   A computer with reasonable amount of RAM (see below) and an internet connection. Machine availability, including internet connection, of 24h / day is preferred but not required. A flatrate connection to the internet with unlimited (or inexpensive) data transfer volume is recommended.

Operating systems:       Precompiled binary versions are available for Linux x86 and Windows. Versions for many other Unices can be created by compiling the sources yourself. We learned that Opennap NG 0.49 compiles and probably also runs fine on FreeBSD and Solaris, however we currently can neither confirm that nor support it directly. Recommended minimum Linux kernel version is 2.2. Linux 2.4 or later is required if a server is to serve more than 1000 users. Windows NT, 2K or XP (any editions) should be used for stable server operation. Windows 95, 98 and ME are known not to support server operations very well at all.

CPU:   CPU speed is important when it comes to serve file searches and transfer requests for a large number of users. For a standard filesharing Opennap NG server the rule of thumb for x86-compatible CPUs is that every 500 MHz allow you to serve 1000 users. That is, if you have a 2 GHz machine, you should be able (in theory) to serve 4000 users without noteworthy lag on one machine. For chatting only servers, with filesharing disabled, the requirements are believed to be 100 MHz or less per 1000 users.

RAM:   Offering filesharing services with Opennap NG is fairly RAM-consumptive. The rule of thumb is that on Linux systems 1000 files take 300 to 350 KB of RAM, while on Windows systems 1000 files take 400 to 500 KB of RAM. The difference comes from the totally different memory management concepts of those operating systems. So if you have 1 GB of RAM to spend, you should be able to handle nearly 3 million files on Linux and about 2 million files on Windows. For chat-only servers RAM demands are negligible.

Internet bandwidth:   Demands for internet bandwidth are highly variable, depending on how many users are connected, how many files are maintained, how many browse and search results per request may be returned, etc. In general, a single server with reasonable settings receives about 2 to 3 times the amount of data of what it sends. During regular operation the demands should be about 15 KB/sec. incoming and 7 KB/sec. outgoing traffic per 1000 users on a standalone server. Especially outgoing traffic can be adjusted or limited by a number of settings, such as max_results (I), max_browse_result (I), notify_exceed_frequency (I) and others. If being connected to other servers of similar capacity, traffic demands can easily be doubled or tripled, due to state and request exchanges with other servers. During initial fillup phase, shortly after a server has been started, almost all availabe bandwidth could be consumed by incoming filelists of newly connecting users. Not having enough bandwidth may just cause some lag for up to half an hour after server restart, but doesn't essentially limit your serving capacity. Opennap NG offers multiple means to throttle initial server fillup, to reduce or prevent lag.

Harddisk:   Opennap NG itself basically operates completely RAM-based. The harddisk is only used to load the server program and occasionally dump updated user and ban lists. As of 0.60, Opennap NG is capable of storing log output directly into files on harddisk, which may increase demands. With default log levels and about 500 users on a standalone server, there will be approximately 15 MB of log output produced per day. While increasing log level will increase harddisk space demands as well, decreasing them will decrease demands as well. Windows users who want to use the GUI config tool need to consider disk space requirements of GTK+ as well, which, if not already being installed, requires another 20 MB.

Additional software requirements:   Server operation: no additional software besides standard libraries is required. libz may be the least common of them, especially on some Windows installations. No X windows is required to run the Opennap NG server itself on Unix. The GUI config tool isn't required either to run the server.

Build process: Opennap NG 0.60 requires GCC >= 3.x (GNU Compiler Collection), a portable and efficient programmer's toolset available for free at http://www.gnu.org/ (for Unix) and http://www.mingw.org/ (for Windows). Other, proprietary or commercial compilers are not supported at this time. Important: don't use GCC 2.95.x or earlier. Due to bugs in those older compiler versions either unreliable binaries may be created or the sources won't compile at all. Use GCC 3.x to get most reliable binaries. No compiler is required if you just use one of the available precompiled binary packages.

GUI configuration tool: The GUI configuration tool requires the Gimp Toolkit (GTK+) 2.x. It's available for free at http://www.gtk.org/download (sources, mainly for Linux / Unix users) and http://gimp-win.sourceforge.net/old.html (binaries for Windows users). Only the GTK+ Runtime version is needed, the GTK+ Development version is not needed.

X-windows server: As a GUI application, on Unix / Linux systems the config tool obviously requires an installed X windows server system as well.






Getting Opennap NG software


The homepage and main location to obtain sourcecode and precompiled binary versions of Opennap NG in many flavours from is http://opennap-ng.sourceforge.net.

Via CVS you can also obtain various older (and possibly newer) versions. To get the newest CVS version try this: for updating only type in the Opennap NG directory





Quick start


Advice: before starting your own server you should be familiar with using client software. You should have been connecting to other existing servers and networks to gain some basic understanding about the features provided by the Napster protocol. See http://www.gotnap.com for a list of existing, free servers using the Napster protocol.

After installation of the binary files, before first server start:
  1. Set up opennap-config.txt!
    It's mandatory you adjust at least some variables in the config file, either using the config tool (preferred way) or via any text editor! Especially variables from the Napigator (GotNap) support and network groups should be set accordingly, namely server_name, server_ports, report_name, report_port, stat_server_user and stat_server_pass. You can adjust other variables later, as you learn about their meanings.

  2. Set up your Elite user account!
    Initially the userbase contains just one elite user account named Elite with the password elite. Nick and password must be changed prior to launching the server for the first time. Otherwise you'll be experiencing a severe security hazard!
    Note that after the first start of Opennap NG the passwords will be encrypted and stored encrypted. Plaintext passwords won't be kept or stored by the server at all! After the first server start you must not reedit the password fields of the opennap-users.txt file! To change passwords afterwards, start the server, connect with your client (i.e. Lopster, Xnap or WinMX) to it using your elite nick. Then use the client-specific facility to change the password. I.e. in Lopster this is the /pass command, in TekNap it is the /setpassword command. Please check the documentation of your client to see how password changes are carried out.

  3. Set up your network, firewall, etc.
    Make sure the configured server port (default: 8888) is open (not firewalled) on your computer. If you are connected to the internet via a router or gateway, make sure the server port is properly forwarded. Your server port must be reachable from the outside world. Otherwise no users from the outside world will be able to connect to your server.

  4. Start
    You may then start the server. Note, on Linux / Unix the default data directory is /usr/share/opennap-ng/ (others can be chosen by using -c switch at command line). On Windows it's the current directory. However, start menu entries and desktop icons on Windows are configured to switch to the directory in which Opennap NG was installed prior to launching it, so there's nothing more to care about.





Compiling the server


These instructions describe building (compiling) Opennap NG the Unix way, which currently is the only supported way. The suggested tool for building Opennap NG natively under Windows is MinGW (Minimalist GNU for Windows, http://www.mingw.org), an open source and free compiler and tools set which bases on common development tools of the Unix world. Since using MinGW requires skills in Unix usage and Unix utilities, which the average Windows user (even many developers) doesn't have, Windows users are encouraged to use the binary package of Opennap NG instead. Currently no in-depth instructions for how to build Opennap NG on Windows are available.

Important: in any case, GCC version >= 3.x is required! With 2.95.x or older versions, Opennap NG either aborts compilation with errors or produces unstable binaries!


Unix Platforms


After you have unpacked the source, or obtained the CVS version, run the provided configure script. The following configure options are of note:

--
  
disable-meminfo
Disable custom memory management system. Variable max_mem and runtime memory stats output of Opennap NG depend on meminfo being enabled. However, there is a small memory usage overhead by this, usually about 15%. With meminfo disabled you may reduce memory usage by Opennap NG slightly but won't know exactly how much memory Opennap NG is consuming and when it is about to consume more.

--
  
disable-protnet
Disable the Protnet variable.

--
  
disable-warnings
Turns off all C compiler warnings during compilation. Although being preconfigured to use very high sensivity of warnings there shouldn't be many left, anyway.

-- enable-chroot
Compile support for running OpenNap-NG in a chroot() jail. This prevents the server from being able to read/write any files outside of its data directory. Useful for parnoid people. OpenNap-NG must be run setuid root (at which point it will drop privs) in order for this to work.

-- enable-debug
Turns on debugging information to catch memory leaks and buffer overruns. This is usually not suitable for "production" environments because of the extra memory use and significant performance impact, but good for small test servers. The more testing the more likely bugs can be squashed.

--
  
enable-email
Enables support for storing the email addresses of users obtained from the nickname registration command. By default this information is not kept and the server will always return unknown if this information is requested. Note that sane users don't enter correct email addresses nowadays so this feature is generally of little use.

-- enable-gprof
Adds the -pg option to gcc to generate profiling information suitable for digestion by gprof. Profiling gives a detailed output of what the server is spending its time doing so that bottlenecks can be detected and server performance can be increased. This option is useful for programmers only.

-- enable-resume
Enables the server-side support for resuming downloads. This option makes the server use more memory because it has to store to MD5 hash values for all shared files in addition to the other information. Note that most clients don't support this feature so it is generally of little use.

-- enable-router
Compiles a routing-only version of the OpenNap-NG server. This disables the file sharing commands for local clients, only allows users of level Admin or greater to log in, and simply routes all other messages to linked servers. This is ideal for use as a hub server to connect a cluster of other servers together.

--
  
with-fd-setsize=SIZE
Under some BSD systems, this may set FD_SETSIZE, the hard maximum number of connections the server can support via the select() system call. On some Unix systems, including Linux, this is a constant, hardcoded in system libraries and / or kernels, and actually can't be changed. On Windows machines there is no size restriction for supported connections via select().
Most modern Unices, including Linux and BSD, feature the newer and more efficient poll() syscall. This syscall has no inherent limitation on number of supported connections. If poll() is available and detected on your OS, Opennap NG will automatically utilize it instead of select().
Note that on Linux kernels prior to 2.4.0 there existed a hardcoded limit of total files or connections any process could handle. This limit defaulted to 1024. Neither with poll() nor select() it is possible to handle more than roughly 1000 connections on those kernels, without changing that constant and recompiling the kernel.

-- enable-jmm
This is a new experimental option. It enables use of Jondo's Memory Management in Opennap NG, a rather low level a replacement for malloc(), free() and other standard memory management functions. JMM is optimized to handle huge amounts of small memory chunks, as they are used in Opennap NG. The three main differences between JMM and conventional MM are:
  • JMM reduces RAM wastage by approx. 70% - 85%. This means a total reduction of RAM demands by Opennap NG by 10% - 20%.
  • JMM is able to return unneeded RAM to the system, at least occasionally.
  • JMM is a bit slower than conventional MM, i.e. utilizes a bit more CPU.
The following constraints are to be regarded when using JMM:
  • JMM is still experimental code. It probably cannot be regarded stable as yet.
  • JMM doesn't work (as yet) on 64 bit systems in 64 bit mode (i.e. AMD64)
  • JMM doesn't work (as yet) on big endian systems (ie.e most non-x86 CPUs)
  • JMM uses only mmap() / munmap() (where available). This implies the following limitations:
    • Windows doesn't have mmap() support at all, only malloc() / free() will be used there.
    • JMM doesn't work at all with Linux 2.2.x and earlier, as the mmap() function of those kernels wasn't implemented properly. Linux 2.4.x or later is required.
    • In Linux, the use of mmap() is limited by the kernel setting /proc/sys/vm/max_map_count (default: 65536). The default value means that Opennap NG might be able to use no more than 250 MB of RAM! Set it to 262144 or 524288 prior to starting Opennap NG to enable it to access up to 1 GB or 2 GB, respectively. Changing this setting requires root privileges.
   

Once you have run the configure script, simply type make. At this point you may wish to run make install to install OpenNap-NG in the default location, but this is not required for the server to run.






Invocation (command line parameters)


There are a few command line parameters which Opennap NG understands, to alter its operation. They are as follows:

Parameter Description
-c <directory> Specify data directory for Opennap NG, where files like opennap-config.txt and opennap-users.txt are located. On Unix platforms the default is /usr/local/share/opennap-ng/. On Windows platforms the default is the current directory. Note that the default for data files installation on Windows is C:\Program Files\Opennap NG 0.60\.
-b Run Opennap NG as a background process (daemon). Any output to stdout is disabled in this mode.
-D Don't listen on stats port
-h Print help information, offering a brief version of this description.
-i <ip_addr> Listen only on the given IP address instead of all available interfaces of a machine. This makes sense only on machines with multiple network interfaces.
-p <portnum> Override the port number specified in file opennap-config.txt and listen on the port specified here, instead.
-r Disable remote configuration commands. This is exactly the same as setting remote_config in file opennap-config.txt to on.
-s Channels may only be created by privileged users. This is exactly the same as setting strict_channels in file opennap-config.txt to on.
-V Display seever version to stdout and exit.







Files


OpenNap NG uses several different data files. Typically they are stored in /usr/local/share/opennap-ng/ for UNIX platforms, and c:\program files\opennap-ng-0.60\ for Win32 platforms.

Important: regard the changed filenames from previous Opennap versions prior to NG 0.49!

All files are plain ASCII files and may be edited or viewed using any text editor. However, changes apply only if the server gets restarted or rehashed. Some of the files are periodically overwritten by the server while it's running, so the best way is to change and save them only when the server is not running.

opennap-bans.txt list of server-wide bans on clients
opennap-block.txt REs (regular expressions) to define allowed and disallowed files
opennap-config.txt main configuration file containing server options
opennap-channels.txt      database of predefined group chat channels
opennap-filter.txt list of words to skip when searching/indexing files
opennap-log.txt optional log file stored by Opennap NG
opennap-motd.txt message of the day, the text shown to users when they log in
opennap-servers.txt database of servers to link with
opennap-state.txt frequently updated server status page
opennap-users.txt registered users database





opennap-bans.txt


This file contains a persistent list of server-wide bans. It specifies either nicks or IP addresses or combinations of both which are not allowed to login. The server will read this upon startup. It will be dumped frequently during operation and when the server is shut down via a killserver command. If you need to edit this file, you must shut down the server prior to editing it, or your changes will be lost. Each line in this file should be of the form:
	<target> <nick> <when> "<reason>" <timeout>
Notes: ban records are shared among linked servers. Rules for automatically banning clients are not. While being optional in earlier versions of Opennap NG, <timeout> has become a mandatory value meanwhile. Unlimited bans don't make any sense. They just waste your resources and are unlikely to hinder banned users to reenter your server if they make use of advanced tricks. If particular people keep misbehaving there are enough automatic means to ban them again and again. If they decide to cease misbehaving there should be a chance for them to reconnect after some time.





opennap-block.txt


Note: this section describes the new version 2 format of opennap-block.txt. Opennap NG 0.60 still understands the older, simple block file format of versions prior to 0.60 but that's regarded a legacy and not described here.

The file has to begin with a line containing the string ":version 2" only. All following lines are either blank, comments (starting with a "#") or regular expressions of any class. All regular expressions in this file are case-insensitive. There may be any number of expressions of a valid class. There are five distinct classes of expressions supported in version 2 file format: The first character of a line specifies the class which the following regular expression belongs to.

Class Affects Char Description
blocked files - This is the traditional class; the only one which was properly supported by older versions of Opennap NG. All filenames matching any expression of this class will be silently ignored by the server. They won't be stored in internal server file lists and won't be returned as search results or show up on server based browses. Attempting to share blocked files has no immediate further consequences for the user attempting to share them, although he may fall under limits imposed by max_block_pct and eject_limit_files.
The common use of blocked expressions is to specify file types (extensions) you don't want to have listed on your server, i.e. \.(jpg|gif|ico) (for some image formats which are unsuitable for an Opennap NG server). If you want your server to stay (mostly) free of porn expressions like these would be suitable: p[o0}rn|f[ui]ck|xxx. Note that blocked files still appear on direct browses, as that operation bypasses the server and its internal lists.
criminal files ! All filenames matching any expression of this class are considered criminal (really bad). They will not only be blocked (ignored by the server), but users who attempt to share any of those files will be automatically banned for criminal_ban_ttl seconds.
You should be careful what to enter to this class and use precise and unambiguous terms only. By specifying too loose keywords you may ban a lot of users who try to share harmless stuff only. I.e., specifying simple terms like ass or sex in this class is a bad idea as there are certainly a lot of harmless files with terms "bass" or "sexy" in their names. Putting general porn terms into criminal class is not recommended as you may quickly lose the majority of your users by doing this.
must match files + If opennap-block.txt contains any expression of this class, all files to be shared by users must match at least one of them in order to be accepted. Files whose names don't match any of the given must match class expressions are blocked (ignored).
Use expressions of this class to restrict your server to accept files of reasonable types only, i.e. \.(mp3|ogg|wmv|avi|mpg|mpeg|mov), to accept sound and video files only. It is strongly recommended to use a must match expression for your server, since nowadays quite many users attempt to trick you and other users by sharing large amounts of all sorts of obscure or artificial but certainly useless file types.
invalid searches  searches ? If a user searches for a term which matches any of the invalid searches expression and the variable invalid_search_ban_ttl is nonzero then that user will be immediatly ejected and banned. You should make sure you specify clear, unambigious terms referring to perversities or other unwanted stuff only. Otherwise a lot of innocent users could be ejected for just searching for something they don't even know that it's deprecated on your server. A mods+ notification will be sent on every automatic ban due to searching for invalid keywords.
invalid nicks nicks @ If a user tries to login using a nick which matches any of the expressions of the invalid nicks class the login will be rejected. The user will not be banned explicitly (as he couldn't ever login with the same nick anyway). However, the user will be unable for ibl_ban_ttl seconds to reconnect to the server.

Depending on the values of notify_block_sources and notify_block_targets, Mods+, the affected user and / or the server log may receive notifications about blocked files being shared.

It is strongly recommended to have good knowledge and some experience with Regular Expressions before attempting to write new expression sets from scratch or significantly modify existing ones. Regular Expressions can be very tricky and have a high potential for both redundancy and optimizations. While compact and optimized REs can save performance, bloated and redundant REs can severly slow down a server. Especially avoid using any word in more than one of the three file classes!

To maintain optimum performance the sum of all REs shouldn't exceed 500 characters. If your REs exceed a total of 1000 characters your server performance will likely suffer significantly and your expressions likely deserve to be optimized further.

Note: as of Opennap NG 0.60 you have to activate at least one expression of either blocked, criminal or must match classes! The server will refuse to start if no block rules are enabled! Running a server with no block rules at all is an invitation for abusers to share not only lots of useless crap but also really criminal and pervert stuff. With respect to all sane users of an Opennap NG server, this irresponsible mode of operation isn't supported any more!

See the sample / default file opennap-block.txt (in the doc/examples/ directory of the source distribution) for a number of examples of useful expressions.





opennap-config.txt


The main configuration file of Opennap NG. Consists of numerous configuration variables, one per line. The form is: var value. Each of the values is a string, boolean, integer, bitmap or list, depending on the variable. Empty lines or lines beginning with a "#" are treated as comments. Comments must start at new lines. The configuration variables are typed as follows. (B) = boolean, (I) = integer, (M) = bitmap, (S) = string variable. Integer values are interpreted as decimals by default. If the numbers are preced by a "0x" then they're interpreted as hexadecimal values, which may be easier to input for some bitmap variables like log_level. Booleans can take the values "on" / "yes" / "1" or "off" / "no" / "0".

See section Configuration for detailed descriptions of variables, groups, default values, availability and changes.





opennap-channels.txt


Note: this section describes the channel file format version 2, which is new to Opennap NG 0.60.

The channels file specifies all predefined channels on the server. Each line in this file should be of the form:
	<channel> <flags> <limit> <level> "<topic>"
Note: typically you edit this file once before starting your server. You should never edit it while the server is running or your changes will be lost. The server always writes out its state when it shuts down, because new information about the channel may have been set. If you want to edit it by hand, you should first shut down your server. See the sample.channels file as a basis to start your own configuration. See also: strict_channels.






opennap-filter.txt


This file contains a list of words that should not be indexed when clients share files. This is most commonly used to weed out very common words such as `mp3' or `the' to save on server resources, since it is expected that none of these words will be very useful when searching. Files containing filtered keywords in their name are still indexed, you just can't use these particular words to find that file. In certain cases, a file may contain no valid words and thus won't be able to be found via the search mechanism. However, the file will show up when browsing the client's filelist, and therefore can still be downloaded. See the sample.filter file as a basis to start your own configuration.

Unless the persistent_filter setting is enabled, the server won't change this file. The list of filtered keywords may grow in server memory as it runs, but won't be stored in the file. This way, after each server restart the filter list will be the same. This is the behaviour of earlier Opennap NG versions. If persistent_filter is enabled, the server will periodically store the updated list of filtered search keywords. But beware: this list (and the file as well then) can only grow, they will never shrink! This can easily lead to a situation in which many hundreds of keywords become filtered, even rather particular ones like certain artist's names, which will prevent files by those artists to be searchable by their name at all. If persistent filters are enabled, server owners should check from time to time the contents of this file and remove some potentially indispensable key words. Raise file_count_threshold to reduce chances of particular keywords to get into the filtered list.





opennap-log.txt


If logging to file is enabled via the log_targets variable, log messages are written to this file. The sorts of log messages this file receives can be specified via the log_level variable. Format of log messages to be written into this file is specified by log_fmt and log_timefmt. The general format of log entries (one per line) is this:

    [level] [filename] [function name] [line number] <log message>

Automatic log splitting is provided by the two vriables log_split_mb and log_split_hours. If either of them is set and any of the split conditions becomes true, the current opennap-log.txt will be closed and renamed to a file of the pattern opennap-log-yyyymmdd-nn.txt. yyyy is the current year, mm is the current month, dd is the current day. nn is the index of the log file within that day, in case multiple log files are created for the same day.

On server start, Opennap NG will neither append to nor overwrite existing opennap-log.txt files. Instead, it will always start with renaming existing opennap-log.txt files to the next free filename of the pattern described.





opennap-motd.txt


Message Of The Day
. This file contains the text the server sends to your client when you log in. MOTDs may be coloured, which is to be controlled by escape codes. However, this is a feature being supported by few clients only.

The MOTD must be a plain ASCII text file. Colors are changed by inserting a CTRL-C character (ASCII 3), followed by a two-digits color code. Only the foreground (text) colour may be changed in a MOTD. The following table shows all available color codes:

Digits Color            Digits Color            Digits Color
01 Black   30 Black   50 Dark gray
02 Blue 31 Red 51 Light red
03 Green 32 Green 52 Light green
04 Red 33 Brown 53 Yellow
05 Brown 34 Blue 54 Light blue
06 Purple 35 Purple 55 Light purple
07 Light red 36 Cyan 56 Light cyan
08 Yellow 37 Grey 57 White
09 Light green 38 White 58 Grey
10 Cyan    
11 Light cyan
12 Light blue
13 Light purple
14 Dark gray
15 Grey
16 White

For historical reasons, the two digit groups 3x and 5x are preferred in a MOTD. They may have a greater compatibility to more clients than the 0x and 1x digit groups. The default color, if no color codes are used, is expected to be 58. However, this may vary among clients as well.

Each new line of the MOTD starts with default color again. So if you want to have multiple lines entirely using a custom color you need to specify the desired color code before the first visible character of each line.

Example: to insert a piece of light green text into a MOTD line, write the following:
    This is a line with a ^C52light green text^C58 part.
Note that "^C" isn't two characters! It's just one CTRL-C ASCII character. You need a text editor which is capable of inserting raw ASCII characters into the text. Not all text editors are capable of this.





opennap-servers.txt


The servers file contains a list of servers which are allowed to link. Each line in this file is of the form:
<server_name> <remote_pass> <local_pass> <port> [alias]
where server_name is the DNS name of the remote server (the remote server should have its server_name set to this value), remote_pass is the password expected from the remote server to authenticate (prove its identity), and local_pass is the password your server uses to authenticate to the remote server. port is the TCP port on the server to connect to. alias is an optional string which will be used to refer to this server instead of its DNS name. This is useful for defining hub servers where you might not want the DNS name to be revealed to users, or you want to use a different name instead of the ip address (if you don't have a reverse DNS record). Note that if a server you want to link to uses an alias name you must enter the alias name in opennap-servers.txt, too. Lines that begin with a pound sign (#) or any space character (tab, etc.) are ignored. See the sample.server file as a basis to start your own configuration.





opennap-state.txt


This file contains an ASCII representation of all supported server statistics. It always contains all stats groups of stats_fmt. It is usually being updated frequently, every live_stats seconds. Together with suitable Unix tools like watch and cat this provides an easy way for live monitoring server stats. The ASCII format of this file makes it also suitable for easy postprocessing and evaluation by scripts written in languages like Perl or Python. See section stats output for an indepth description of all fields being contained in this file.





opennap-user.txt


Lines starting with a hash (#) are comments and are ignored. Each line of the database should be of the format:
<nickname> <password> <email> <level> <created> <lastseen>
Examples:
lewser 1,N6BeTWZ4,fWJx95pWVcd2wTJk3ZCFBw blah@email.com Leech 0 0
poweruser 1,3aYmWBkH,o4BAAYyOD61bc28Eef8+5w my@address.com Elite 0 0






Configuration


Opennap NG operation is controlled by numerous variable settings, located in file opennap-config.txt. The configuration variables are typed as follows. (B) = boolean, (I) = integer, (M) = bitmap, (S) = string variable. Integer values are interpreted as decimals by default. If the numbers are preced by a "0x" then they're interpreted as hexadecimal values, which may be easier to input for some bitmap variables like log_level. Booleans can take the values "on" / "yes" / "1" or "off" / "no" / "0". Numbers behind variables denote availability since the respective Opennap NG version.

Note that 0.47H doesn't refer to Opennap NG 0.47 or 0.47.2 but to an inofficial version which was never published. The following is a list of all variables supported by Opennap NG 0.60.

chat control:
irc_channels (B)
max_channel_length (I)
max_topic (I)
max_user_channels (I)
strict_channels (B)

content management:
allow_share (B)
ascii_filenames_pct (I) (0.60)
eject_limit_files (I)
eject_limit_libsize (I)
eject_limits_conjunction (B) (0.60)
fix_xnap_path (I) (0.47H)
index_ignore_suffix (B)
index_path_depth (I)
leech_share (B) (0.47H)
max_file_size (I) (0.49)
max_shared (I)
min_file_size (I)

flood protection:
break_mx_queue (B)
evaluate_search_abuse_after_secs (I)
evaluate_search_abuse_after_tags (I)
file_count_threshold (I)
flood_ban_ttl (I) (0.49)
flood_commands (I)
flood_eject (I) (0.49)
flood_time (I)
ibl_ttl (I)
login_interval (I)
login_timeout (I)
max_clones (I)
max_command_length (I)
max_login_ban_ttl (I) (0.60)
max_login_count (I) (0.60)
max_login_time (I) (0.60)
max_searches_per_minute (I)
max_tags_per_minute (I)
max_whois_ban_ttl (I) (0.49)
max_whois_count (I) (0.49)
max_whois_time (I) (0.49)
register_interval (I
persistent_filter (B) (0.60)

log verbosity:
critical_delay (I) (0.47H)
live_stats (I) (0.60)
log_fmt (M) (0.60)
log_ignore_abuse (I) (0.47H)
log_mode (B)
log_level (M) (0.60)
log_split_hours (I) (0.60)
log_split_mb (I) (0.60)
log_targets (M) (0.60)
log_timefmt (S) (0.47H)
loopcount_output_interval (I) (0.47H)
stat_click (I)
stats_fmt (M) (0.60)
verbose_too_many (B) (0.47H)

  

mod+ notification:
max_queue_notify (I) (0.60)
no_mod_annoying (B)

notify_block_sources (I) (0.60)
notify_block_targets (M) (0.60)
notify_mod_abuse (B)
notify_mod_abuse_frequency (I)
notify_no_uploads (I) (0.60)

GotNap (Napigator) support:
report_ip (S)
report_name (S)
report_port (S)
server_alias (S)
stats_port (I)
stat_server_host (S)
stat_server_pass (S)
stat_server_port (I)
stat_server_user (S)

network:
auto_link (B)
auto_relink_count (I) (0.60)
auto_relink_idelay (I) (0.60)
auto_relink_pdelay (I) (0.60)
listen_address (S)
max_time_delta (I)
min_read (I)
ping_interval (I)
search_timeout (I)
server_name (S)
server_ports (S)
server_queue_length (I)
warn_time_delta (I

performance:
auto_restart (I) (0.60)
client_queue_length (I)
compression_level (I)
max_browse_num (I) (0.60)
max_browse_result (I)
max_connections (I)
max_hotlist (I)
max_ignore (I)
max_mem (I) (0.60)
max_new_users_count (I) (0.47H)
max_new_users_time (I) (0.47H)
max_reason (I)
max_results (I)
max_searches_pending (I)
max_uploading (I) (0.49)
persistent_filter (B) (0.60)
remote_browse (B)
search_max_cache_entries (I)
server_chunk (I)
set_process_priority (I) (0.60)

  

security:
ban_target_spec (I) (0.60)
cloak_user_level (I)
(0.49)
level_to_set_flags (I)
no_share_level (I) (0.49)
protnet (S)
remote_config (B)
set_server_nicks (S)
user_db_interval (I)
usermode (S)

user management:
allow_dynamic_ghosts (B)
alnum_nicks (B) (0.49)
auto_friend_filenum (I) (0.60)
auto_register (B)
clones_allow_level (I) (0.49)
criminal_ban_ttl (I) (0.60)
default_ban_ttl (0.49)
discipline_ignorers_ban_ttl (I)
eject_after (I)
eject_ban_ttl (I)
eject_grace_time (I)
eject_leeches (B)
eject_no_channels_only (B)
eject_when_full (B)
friend_expire (I) (0.60)
ghost_kill (I)
invalid_clients (S)
invalid_nicks (S)
invalid_search_ban_ttl (I) (0.60)
leech_ban_ttl (I) (0.60)
leech_grace (I) (0.60)
leech_ratio (I) (0.60)
max_block_pct (I) (0.49)
max_block_pct_ban_ttl (I) (0.49)
max_client_string (I)
max_nick_length (I)
min_nick_length (I) (0.60)
nick_expire (I)
portscan_ban_ttl (I) (0.60)
portscan_notify (I) (0.60)
registered_only (B)
restrict_registration (B)
valid_clients (S) (0.47H)
who_was_time (I)

user notification:
browse_nag (B) (0.46)
motd_fmt (M) (0.60)
notify_exceed_frequency (I) (0.47H)
notify_user_abuse (B)
notify_user_abuse_frequency (I)
verbose_ban_msg (M) (0.60)

Unix specific:
connection_hard_limit (I)
lock_memory (B)
max_data_size (I)
max_rss_size (I)
set_group (S) (0.60)
set_user (S) (0.60)





Changed variables


The following variables from previous versions were either removed or changed their type or meaning:

Variable Change Note
allow_dynamic_ghosts (B) Replaced by ghost_kill (I)
ascii_filenames (B) Replaced by ascii_filenames_pct (I)
block_winmx (B) Replaced by invalid_clients (S) and valid_clients (S)
break_mx_queue (B) Type change from integer to boolean
browse_nag (B) Type change from integer to boolean
discipline_block (B) Removed functionality replaced and extended by block class criminal of opennap-block.txt file.
discipline_block_ban_ttl (I) Renamed to criminal_ban_ttl (I). Applies to matches of filenames against criminal class of expressions in file opennap-block.txt.
discipline_block_mod (B) Removed Mods+ are to be banned automatically under no circumstances! They are part of the staff. De-mod or ban them manually if they did something wrong and you want to get rid of them!
discipline_ignorers (B) Removed Redundant setting! Set discipline_ignorers_ban_ttl to nonzero to killban Mod+ ignorers, zero to turn it off.
eject_also_bans (B) Removed Redundant setting! Set eject_ban_ttl to nonzero to turn this feature on, zero to turn it off. Auto-ejecting without banning is pointless.
eject_leeches (B)   from integer to boolean
eject_nochannels (B) Renamed to eject_no_channels_only (B) to better reflect its meaning.
ghost_kill (I) Type change from boolean to integer to allow multiple modes.
log_blocked (B) Removed obsoleted by notify_block_mode (I)
log_channel (B) Removed obsoleted by log_targets (I)
log_mode (B) Renamed to log_level_change (B)
log_stdout (B) Removed obsoleted by log_targets (I)
loglevel (S) Replaced by log_level (I)
max_new_users_per_minute (I)    Replaced by max_new_users_count (I) and max_new_users_time (I). This setting never worked correctly.
max_searches (I) Renamed to max_searches_pending (I), to better reflect its meaning.
no_mod_annoying (B) Type change from integer to boolean
notify_mod_abuse (B) Type change from integer to boolean
notify_mod_block (B) Removed obsoleted by notify_block_mode (I)
notify_user_abuse (B) Type change from integer to boolean
notify_user_block (B) Removed obsoleted by notify_block_mode (I)
ping_server (I) Renamed to ping_server_interval (I)

The default values of some variables have changed. This measure has been taken to assist server newbies with values that have proven to be reasonable. For existing config files, in which values are explicitly specified, nothing changes.

However, server owners should feel encouraged to compare their values with recommended values, as some of them are the result of late stress and efficency tests. Also, not all meanings of variables have been properly understood by all server owners in the past. As the verbosity of this documentation increases we hope to be able to address some existing misconceptions.





Detailed list of configuration variables


Note that configuration variables marked as "since 0.47H" (and above) are not contained in previous official version 0.47 and 0.47.2!



allow_share Group: content managment Type: boolean Default: on  
Controls whether or not clients are allowed to share files via the server. If set to off this server doesn't accept any files to share and operates as a chat server only.



alnum_nicks Group: user management Type: boolean Default: off Since: NG 0.49
If set to on, only old-fashioned alphanumerical user nicks will be accepted. They may consist of upper and lowercase letters "A" - "Z" and "a" - "z", digits "0" - "9", a hyphen "-" and an underscore "_" only. Nicks containing any other character will be rejected on login by the server.



ascii_filenames_pct Group: content management Type: integer Default: 0 Since: NG 0.60
If set to a value between 1 and 100, filenames to be shared must consist of at least this percentage value of 7-bit printable ASCII (32 - 126) characters. For instance, a value of 90 (recommended) allows one non-ASCII character every nine ASCII characters, hence forbidding completely cryptic filenames while likely still allowing filenames containing a few language-specific foreign chars, like in french, german, spanish, etc. This results in filenames that should be readable in english and a limited number of other languages. Especially filenames consisting of foreign language characters like Kanji (japanese), russian or others are not accepted. This helps keeping out incomprehensible filenames, hence potentially unwelcome or dangerous content. Filenames containing a higher percentage of non-ASCII characters than this value are blocked (and count for max_block_pct, eject_limit_files and similar of that user). Not that percentage calculation applies to all characters in filename plus optional path, which may be sent by a client.



auto_friend_filenum Group: user management Type: integer Default: 0 Since: NG 0.60
When set to non-zero, any client sharing at least this number of files will be automatically assigned the Friend flag. This will allow such users to connect any time to the server, even when it's full and ordinary users would be rejected. Hence, setting this variable honors and endorses users who share much to visit the server again. Only those files are counted which actually passed all block conditions, such as min_file_size, ascii_filenames_pct and the block expressions. A useful value for this is 5000.



auto_link Group: network Type: boolean Default: off  
When set to on, Opennap-NG will automatically attempt to link to all servers listed in the servers file when it starts up for the first time.



auto_register Group: user management Type: boolean Default: off  
When set to on, the server will automatically register a nickname the first time it is used. When off, nicknames will only be registered when the client explicitly requests it. Please regard that many users don't care about correct passwords in filesharing networks and neither do some clients. Actually, an increasing number of users use random passwords on each connect. Those users won't be able to connect more than once to a server with auto_register set on, See also: registered_only, register_interval and nick_expire.



auto_relink_count Group: network Type: integer Default: 0 Since: NG 0.60
Together with auto_relink_idelay and auto_relink_pdelay this variable controls server auto-relink. All three must be set to nonzero to enable auto_relink. If a linked server delinks without a manual delink command having been issued then other servers, in larger networks preferably the router, can automatically attempt to relink the lost server. This variable sets the maximum number of automatic relink attempts carried out by the server before it gives up. Reasonable values are probably 5 to 10, unless you want the server to continue auto-relink attempts nearly forever. Mods+ are notified on relink attempts. Automatic relink sequence ends on any of these three events:
  1. the delinked server has linked again
  2. a manual delink command is issued towards the already delinked server
  3. auto_relink_count numbers of relink attempts have been made without success



auto_relink_idelay Group: user management Type: integer Default: 300 Since: NG 0.60
Together with auto_relink_count and auto_relink_pdelay this variable controls server auto-relink. All three must be set to nonzero to enable auto_relink. If a linked server delinks without a manual delink command having been issued then other servers, in larger networks preferably the router, can automatically attempt to relink the lost server. This variable sets the initial delay for automatic server relinking. When a server delink is detected, auto_relink_idelay seconds will be waited before the first automatic relink attempt. This value shouldn't be too low, as the reason for the other server having delinked could be a system reboot, software upgrade or other events which prevent it from being relinkable again immediately. reasonable values are probably 3 to 10 minutes (values 180 to 600). Note that the value of this setting is rounded up to the next multiple of 60, hence providing a one minute resolution. Mods+ are notified on relink attempts.



auto_relink_pdelay Group: user management Type: integer Default: 120 Since: NG 0.60
Together with auto_relink_count and auto_relink_idelay this variable controls server auto-relink. All three must be set to nonzero to enable auto_relink. If a linked server delinks without a manual delink command having been issued then other servers, in larger networks preferably the router, can automatically attempt to relink the lost server. This variable sets the periodic delay for ongoing server relinking attempts. When a server delink is detected, auto_relink_idelay seconds will be waited before the first automatic relink attempt. If the first attempt was not successful then further attempts will be issued periodically every auto_relink_pdelay seconds. reasonable values are likely between 2 and 5 minutes (values 120 - 300). Note that the value of this setting is rounded up to the next multiple of 60, hence providing a one minute resolution. Mods+ are notified on relink attempts.



auto_restart Group: performance Type: integer Default: 0 Since: NG 0.60
When set to nonzero, enables auto-restart of Opennap NG in case of improper termination (i.e. crash). Together with the auto_relink-settings this significantly increases availability of Opennap NG in case of unexpected failure events. The numeric value specifies the number of seconds to wait before relaunching the server after a crash. Reasonable values are 5 to 60 (seconds). If in auto_restart mode, the only ways to terminate Opennap NG is by an Admin or Elite sending a killserver message or the server owner killing / ending the Opennap NG processes locally.



ban_target_spec Group: security Type: integer Default: 1 Since: NG 0.60
This variable specifies the format of ban targets when created by any of the automatic ban features of the server. This determines the strictness or range of particular ban entries. There are three reasonable values with the following target formats:

Value    Description Ban target format
1 username only username!*
2 IP address only *!a.b.c.d
3 Username and IP address   username!a.b.c.d

All formats have their pros and cons:
  • Username only bans particular nicks regardless of their IP address. If the banned nick originates from a dialup internet connection with frequently changing IP addresses this could save multiple ban entries, hence make the banlist shorter. However, innocent other users attempting to connect using the same nick wouldn't be able to login. Also note that some clients provide random nicks on each connect. Banning them by nick only wouldn't prevent them from reconnecting immediately again, using a different nick next time.

  • IP address only will reject all connect attempts from the given IP address, regardless of the nick being used. This is the most sweeping target type. However, regard that many clients may connect via dialup internet connections, hence changing their IP address often. The banned user could then relogin again using another IP address. Instead, a different user could inherit the banned IP address and be rejected. If the banned client reconnects using a different IP address and continues his misbehaviour then it would be banned again (and again), creating potentially multiple ban entries for one and the same client. On the other hand, there are some cable ISPs known who provide distinct customers the same IP address. Hence banning by IP address only could also prevent some other (presumably innocent) users from connecting to the server.

  • Username and IP address is the most precise ban target. It will ban only particular nicks connecting from a particular IP address. This target format avoids penalizing other clients for the misbehaviour of one particular client. However, regard that many clients may connect via dialup internet connections, hence changing their IP address often. If the banned client reconnects using a different IP address and continues his misbehaviour then it would be banned again (and again), creating potentially multiple ban entries for one and the same client.
Note that the format of manual bans (issued by Mods+) is not affected by this variable. Manual bans can always be created using any of the available formats.



break_mx_ queue Group: flood protection Type: boolean Default: off  
Some buggy clients send a lot of privmsgs containing //WantQueue. If this value is set to on then these privmsgs will be blocked on the server this user is connected to. To get a picture what a waste of bandwidth occures when not switching this to on grep your opennap-ng logfile for "privmsg"opennap/opennap-ng/doc/. It should display something like:
privmsg: all 205: 43000 705596 Bytes - 205WQ: 39096 (90.9%) 431382 Bytes (61.1%)
privmsg: all 205: 44000 720813 Bytes - 205WQ: 40030 (91.0%) 441662 Bytes (61.3%)

after only some hours of uptime. 205WQ is the count and the size of privmsgs containing a queueing message.



browse_nag Group: user notification Type: boolean Default: on Since NG 0.46
When set to on users are nagged when their client issues an old 211 server browse request without at least trying the newer 640 direct browse command.



client_queue_length Group: performance Type: integer Default: 262 144  
Sets the maximum number of bytes that can be queued for a client connection. If this threshold is reached, it is assumed that the client is either dead, or the network link can not sustain the level of output, and the server automatically closes down the client connection. This is necessary so that dead clients don't consume all of the servers memory. Note that this size doesn't represent a static buffer which is always allocated for every client. Most clients won't need any output buffers at all since data for them can be sent out instantly and received fast enough. Buffering takes place only if a client has requested a huge bunch of data which can't be sent by the OS in one turn, or when the client has actually disconnected already and won't receive any further data at alll. Client buffers are dynamically allocated on demand by Opennap NG. Their typical lifetime is within 2 seconds. They are freed as soon as buffered data could be sent or the client disconnects.



cloak_user_ level Group: security Type: integer Default: 0 Since: NG 0.49
If non-zero, ordinary users who are whois'ing others will always receive "user" as userlevel information of the user being whois'ed. Users won't be able to identify Moderators, Administrators and Elites. This feature is to protect server staff, if responsible ones prefer to stay undiscovered. More precisely, the values of this setting have the following meaning:
0 =  always return real userlevel to all users
1 =  return real user level to users who are at least flagged "friend"
2 =  only Moderators, Administrators and Elites will be reported real userlevels of others on whois'ing



clones_allow_level Group: user management Type: integer Default: 3 Since: NG 0.49
If non-zero, specifies which user levels are exempt from clone detection and ejection. Without clone detection, an arbitrary number of connections from the same IP address are allowed to connect. All user levels equal or above the specified value are exempt from clone detection. The default value is to exempt Admins and Elites from clone detection. Actual clone detection setting is done via the max_clones variable. Here, the possible values are:
0 =  clone detection affects all and everyone
1 =  users (with the friend flag only!) and above are exempt
2 =  Moderators and above are exempt
3 = Administrators and Elites are exempt
4 = Only Elites are exempt from clone detection



compression_level Group: performance Type: integer Default: 1  
The zlib compression level to use when compressing server to server connections. 0 means no compression, 1 is least effort, 9 is best compression. The higher the number, the more CPU it will consume. Level 1 compresses text by about 50%, which is good enough for most applications.



connection_ hard_limit Group: Unix specific Type: integer Default: depends on OS  
Sets the maximum number of file descriptors available to the server process. Generally this is used to increase the default number available. Note that in order to increase the default maximum, the server needs to be started as root (OpenNap-NG will drop privileges and run as the uid/gid specified by set_user and set_group then). Note: under Linux (< 2.4.x) connection_hard_limit cannot be changed and is always 1024.



criminal_ban_ttl Group: user management Type: integer Default: 604 800 Since: NG 0.60
If file opennap-block.txt contains any active expressions of class criminal, any user who attempts to share at least one file that matches active expressions of this class will be banned for criminal_ban_ttl seconds.



criticial_ delay Group: log verbosity Type: integer Default: 5 Since: NG 0.47H
The server contains some internal performance validation code. After it got stuck in particular subroutines for too long, (freezing, also causing lag), it can report the duration and cause of this event to the log. Messages are of the form "checkdelay: level x, stuck for y seconds in block z". The error log level must be enabled for these messages to be emitted. This setting specifies the threshold in seconds for such delays to be reported. All freezes which have taken longer than this will be reported. These messages may be helpful in detecting and confirming server lag, identify its origins and possibly hint on correcting server parameters to reduce these events. To non-programmers the messages may appear incomprehensible, though.



default_ ban_ttl Group: user management Type: integer Default: 5 184 000 Since: NG 0.49
How long bans last if no timeout value was entered. The default value is 60 days (~2 months). Longer and shorter bans can still be specified, and other feature-specific ban ttls aren't affected either. Just absolutely unlimited bans aren't supported any more; every ban has its expiration period.



discipline_ ignorers_ ban_ttl Group: user management Type: integer Default: 2 592 000  
When a user ignores a mod+ this is annoying enough. But when the mod killbans the user just to have the user relogging in with another nick this hits the spot multiplied by -1. This feature takes some care of these cases. If you set this value to nonzero then a user who ignores a Mod+ will be killed and banned for this number of seconds. The default is 30 days. Set this to 0 to allow users to ignore Mods+ without sanctions. However, remember the meaning of Moderators is to be listened to and not to be ignored.



eject_after Group: user management Type: integer Default: 120  
Specifies the number of seconds after initial login to the server for which the client is exempt from being killed for not sharing enough when the server is full (see eject_limit). This should be large enough to allow a client to start sharing files before getting killed.



eject_ban_ttl Group: user management Type: integer Default: 7200  
If a user doesn't share enough appropriate files he gets ejected and banned for this number of seconds. If this value is 0 no general ejection for not sharing enough will occur. However, regard max_block_pct and max_block_pct_ban_ttl, which supplies an independent and different approach for this. Mods+ will never be ejected for not sharing enough. This sort of ejection is affected by the following settings: eject_limit_files, eject_limit_libsize, min_file_size and max_file_size and file opennap-block.txt The default value is 2 hours. Increase it to slightly reduce your internet traffic. Experience has shown that 98% to 99% of users don't care about being banned for not sharing enough on a particular server, resulting in them connecting again and being banned again and again, as soon as this ban TTL expires.



eject_grace_time Group: user management Type: integer Default: 600  
If the eject_limits are on then a freshly started server may killban users because the load on such a server is so high that some users are not able to get their files shared in time or even may time out when sharing on a low bandwidth server. The variable eject_grace_time is the time in seconds after which the eject_limits are checked right after the serverstart. The default value is ten minutes (600 seconds).



eject_leeches Group: user management Type: boolean Default: off  
When eject_when_full is set, kill leeches to allow another user to login, even if they are sharing over the required amount of files.



eject_limit_ files Group: content management Type: integer Default: 0  
The min amount of files a user has to share in order to be exempt from eject_when_full. Any client that shares either eject_limit_files+1 files or 'eject_limit_libsize+1 Kilobytes will not be disconnected. This setting helps fighting freeloaders. Mods+ will never be ejected for not sharing enough. See also eject_limits_conjunction to alter the conjunction between these two varaibles.



eject_limit_ libsize Group: content management Type: integer Default: 0  
The min amount of Kilobytes a user has to share in order to be exempt from eject_when_full. Any client that shares either eject_limit_files+1 files or eject_limit_libsize+1 Kilobytes will not be disconnected. This setting helps fighting freeloaders. Mods+ will never be ejected for not sharing enough. See also eject_limits_conjunction to alter the conjunction between these two varaibles.


eject_limits_ conjunction Group: content management Type: boolean Default: on Since: Opennap NG 0.60
This variable determines the relationship between variables eject_limit_files and eject_limit_libsize. If it is on (default) then both limits must be missed by a user to be ejected (AND-conjunction). This is the behaviour of all previous Opennap NG versions. If this variable is set to off then only one of the limits need to be missed for the user to be ejected (OR-conjunction). Note that automatic ejection on users takes place only if eject_when_full is set to on, or if the level of a user is leech and eject_leeches is on.



eject_no_ channels_only Group: user management Type: boolean Default: on Since: NG 0.49
Normally eject_when_full will eject users who aren't sharing enough regardless of if they are chatting. eject_no_channels_only set to on ejects only users who are not in a channel and not sharing enough. If set to off, users who aren't sharing enough are ejected regardless of if they are in channels or not. In other words: on protects chatters from ejection.



eject_when_ full Group: user management Type: boolean Default: on  
If set to on, the server will disconnect the longest connected client which is not sharing any files when the server is full (eg., when it has reached max_connections clients). This allows room to be made for those clients which are sharing files. See also eject_leeches, eject_limit_libsize, and eject_limit_files This setting helps fighting freeloaders. Note: mods+ and Friends are exempt and will never be ejcted automatically, even if they are sharing no files.



evaluate_ search_ abuse_after_ secs Group: flood protection Type: integer Default: 120  
After how many seconds should max_searches_per_minute be evaluated? This is to prevent that a freshly connected user will be prosecuted because he is initally searching all of his incompletes.



evaluate_ search_ abuse_after_ tags Group: flood protection Type: integer Default: 100  
After how many tags in total should max_searches_per_minute be evaluated? This is to prevent that a freshly connected user will be prosecuted because he is initally searching all of his incompletes. After evaluate_search_abuse_after_tags requests the counter starts counting.



file_count_ threshold Group: flood protection Type: integer Default: 5 000  
When a indexed file search token (one word) contains more than this number of matching files, the server will warn in its log output. This gives the ability to add this term to the list of filtered words.



fix_xnap_ path Group: content management Type: integer Default: 1 Since: NG 0.47H
Some versions of the XNap client use to share each file in its own directory named by just a number. The results of browsing such users look stupid on many other clients and make it difficult to get an overview over the files offered. This setting provides some ways to deal with this mess. It only affects files to be shared with a plain number as the top level directory name.

Value Action
0 Let messy paths pass unchanged.
1 Just remove the top level part of the directory. I.e "2047\This is the song.mp3" would become "This is the song.mp3". This value results in flat filelists for those buggy clients. However, they're usually easier to overview than the original structure.
2 Put the entry into an artifical directory named by the first letter of the actual file. I.e. "2047\This is the song.mp3" would become "T\This is the song.mp3". This reduces the number of directories significantly.
3 (Non-functional!) Put the entry into an artificial directory named by the first word (seperated by the first non-alphanumeric character) of the actual file. I.e. "2047\This is the song.mp3" would become "This\This is the song.mp3".



flood_ ban_ttl Group: flood protection Type: integer Default: 86400 Since: NG 0.49
If flood_eject is non-zero then this setting specifies the ban TTL in seconds for exceeding flood limits. The default is 1 day.



flood_ commands Group: flood protection Type: integer Default: 0  
This variable, along with flood_time, allow for server-side flood protection. When set to a value greater than zero, the server will not allow clients to issue more than this number of commands in flood_time seconds. Any client attempting to send commands faster than the allowed limit is throttled back. A recommended value pair is 100 commands in 10 seconds, to allow clients to occasionally repeat multiple searches. Intentional flooders will easily exceed this.



flood_eject Group: flood protection Type: integer Default: 0 Since: NG 0.49
If flood_eject and flood_ban_ttl are both non-zero, clients exceeding the flood threshold specified by flood_time and flood_commands this number of times will be automatically ejected and banned. Setting this to a low value like 1 or 2 is not recommended! Clients which exceed the flood limits don't always do this on purpose or even knowingly. Occasionally exceeding flood thresholds can happen to many clients. Hence, if this feature is to be used, minimum values of 4 or 5 are recommended. Otherwise you could quickly find large numbers of users getting banned. The same is true, if flood_commands and flood_time are set too low.



flood_time Group: flood protection Type: integer Default: 100  
This variable, along with flood_commands, allow for server-side flood protection. When set to a value greater than zero, the server will not allow clients to issue more than this number of commands in flood_time seconds. Any client attempting to send commands faster than the allowed limit is throttled back. A recommended value pair is 100 commands in 10 seconds, to allow clients to occasionally repeat multiple searches. Intentional flooders will easily exceed this.



friend_expire Group: user management Type: integer Default: 2 592 000 Since: NG 0.60
Specifies the time in seconds of after which unused registered users with the Friend flag set are expired and returned to the pool of available nicknames. User accounts without any flags expire after nick_expire seconds. Accounts of Mods+ and higher levels never expire. Since friends and their accounts are more valuable than ordinary "anonymous" registered user accounts this value should be between 2 and 4 times higher than nick_expire. The default for this variable is 30 days. See also auto_register.



ghost_kill Group: user management Type: integer Default: 1 Since: NG 0.49
If non-zero, ghosts may be killed. Despite the possibility of ghost kill deadlocks it is recommended to enable ghost kill, since the harmless and innocent ghosts use to outweigh malicious ones by far.
0 =  Disable ghost killing
1 =  Enable ghost killing
This variable was changed in 0.49 from boolean to integer type to implement additional submodes. However, as field tests showed they implied other problems, additional submodes have been withdrawn again, for the time being.



ibl_ttl Group: flood protection Type: integer Default: 0  
The Internal Ban List is an optimization means which is used to keep out excessive clients. If a client reconnects too fast, keeps using an invalid nick or an invalid client, then the IP of this user is banned for ibl_ttl seconds. Checks against entries in the IBL are much faster than checks against entries in the main ban list. The user trying to connect will be disconnected immediately, without even getting a "You are banned..." message delivered. Clients may display this as "server read error"s, "connection timeout"s or similar.

Please note that if for some reason any Moderator or Admin or Elite gets into this list upon an connection attempt, he won't be able to connect to the server for ibl_ttl seconds either! That is because the connection request will be rejected before any nicks or passwords are transmitted to the server. There is currently also no way to "unban" an entry from the IBL. So this value shouldn't be too high. 10 minutes (600) is a reasonable value. It should not exceed 1 hour (3600). A value of 0 disables this feature.



index_ignore_suffix Group: content management Type: boolean Default: on  
Controls whether or not the filename extensions of shared files are included in the searchable index. Also see index_path_depth.



index_path_ depth Group: content management Type: integer Default: 2  
Controls how many levels of directory are included when adding shared files to the searchable index. Often times the leading parts of the path are completely useless for searching (eg., C:\Program Files\My Music\Rock\) and just consumes a lot of memory. This variable counts from the end of the path backwards, so the higher the value, the more of the beginning of the path it will include. Also see index_ignore_suffix.



invalid_ clients Group: user management Type: string list Default: (null)  
This is a string list of clients that are not allowed on your server. Some clients can't/don't share, some clients are broken, etc. This list can be superseded by valid_clients.

Example: invalid_clients *floodster*,*mp3rage*,*rapigator*



invalid_nicks Group: user management Type: string list Default: (null)  
invalid_nicks is a list of invalid client nicks, ones which you do not want on your network for some reason or another.

Example: invalid_nicks joey2cool,*trade*



invalid_search_ ban_ttl Group: user management Type: integer Default: 43 200 Since: NG 0.60
If there are active expressions of class invalid search in file opennap-block.txt and a client searches for any terms matching any of those expressions it will be immediately ejected and banned for this period (in seconds).



irc_channels Group: chat control Type: boolean Default: on  
When set, Opennap-NG requires all channel names to begin with # or &.



leech_ban_ttl Group: user management Type: integer Default: 0 Since: NG 0.60
If leech_ratio and leech_grace are both nonzero then any convicted leech will be killed and banned for this number of seconds.



leech_grace Group: user management Type: integer Default: 20 Since: NG 0.60
Together with leech_ratio this variable specifies the threshold for users being regarded leeches and becoming subject to optional auto leech ejection. If nonzero, this variable sets the number of "free" downloads each user has. That is, the number of initial downloads which don't count for leech_ratio. For leech detection and ejection to be enabled, this variable must be set to at least 1. A value of 0 disables leech detection.



leech_ratio Group: user management Type: integer Default: 20 Since: NG 0.60
Together with leech_grace this variable specifies the threshold for users being regarded leeches and becoming subject to optional auto leech ejection. If nonzero, this variable sets the maximum upload:download ratio a user must stay within in order to avoid being regarded a leech. In other words: a user must commit at least one upload every leech_ratio downloads. For instance, if leech_ratio is set to 10 then a user must upload at least one file per every 10 downloads. If leech_ban_ttl is nonzero, the leech will be automatically ejected and banned. Otherwise just a notification to all Mods+ will be generated, reporting the leech. Set either leech_ratio or leech_grace to zero to disable leech detection. If nonzero, a value of at least 20 is recommended. If you set this to lower than 20 you will find many users getting banned. If you set this to 10 or lower you may find almost the majority of your users getting banned. There are many leeches out there.


leech_share Group: content management Type: boolean Default: on Since: NG 0.47H
If set to on then users with level leech may still share and upload files. This may give them a chance to gain back regular user level if Mods+ decide to honor it. If set to off then users with level leech can't share nor upload any files. Leeches never can download any files.



level_to_ set_flags Group: security Type: integer Default: 2  
Minimum level a user must have to assign userflags to other users. Values are: 0 = Leech, 1 = User, 2 = Moderator (default), 3 = Admin, 4 = Elite. Values below 2 are not sensible.



listen_ address Group: network Type: string Default: 0.0.0.0  
By default, the server will listen on all interfaces on the system. You can force it to listen only on a single interface by specifying the IP address of the interface in this option.



live_stats Group: log verbosity Type: integer Default: 5 Since: NG 0.60
This variable sets the update interval for the live stats output feature of Opennap NG in seconds. Typical and suitable values are 5 or 10. A new version of file opennap-state.txt will be created (overwriting the existing one) every live_stats seconds. External tools like watch and cat (on Unix systems) can be used to permanently monitor server state. Setting this to 0 disables the live stats feature and emission of opennap-state.txt files. Note: while the value of this variable may generally be changed at runtime without need to restart or rehash the server, a change between zero and nonzero (or vice versa), that is, switching between enabling and disabling this feature at all, requires a server restart.



lock_memory Group: Unix specific Type: boolean Default: on  
On supported systems, this will cause the server to lock all of its memory pages into real memory, thus avoiding swapping to disk. It is strongly recommended to leave memory locking for Opennap NG enabled, since due to its architecture Opennap NG is extremly bad suited for any of its parts of allocated memory to be swapped out to disk. On some systems Opennap NG doesn't seem to run reliable in the long run if it is subject to swapping. However, on other systems, especially Linux 2.6.10 and 2.6.11, memory locking seems to be broken, i.e. preventing Opennap NG to execute if this option is enabled. If memory locking is enabled, Opennap NG conducts a little self test upon startup to determine, whether proper operation with memory locking is possible at all. If it isn't then Opennap NG tries to unlock the memory again and proceed with unlocked memory. If this fails as well then Opennap NG will resign and terminate. In this case the server must be started with lock_memory set to off and the server owner should consider an up- or downgrade of the OS (s)he is using.



log_blocked Group: log verbosity Type: boolean Default: off Since: NG 0.47H
When set to on, each file that a user tried to share and which is blocked will appear in the log. mod+'s can monitor this by joining the &LOG channel. This feature usually produces less traffic than notify_mod_block.



log_fmt Group: log verbosity Type: bitmap Default: 7 Since: NG 0.60
This variable specifies format of single log lines, as they are emitted. If all options are enabled, a log line would consist of the following items:
    [level] [filename] [function name] [line number] <log message>
This is a bitmap variable where any of the format options can independently be turned on or off. Add numbers of options you want to enable. Available options are:

Value    Meaning
1 Log lines will be aligned
2 Level of message will be shown in every line
4 The name of the function emitting the message will be shown
8 The sourcecode line where the message originates will be shown
16 The name of the source file where the message originates from will be shown

The default value 7 means that every log line will be aligned and contain level and function name. Unaligned output is recommended if you are low on screen width only. Sourcecode line and filename are relevant for programmers only.



log_ignore_ abuse Group: log verbosity Type: integer Default: 1 Since: NG 0.47H
If set to 1 then each user who tries to ignore more other users than max_ignore will be reported once in the log. If set to 2 then each further attempt to ignore other users will be logged, including the nick which would be ignored. If set to 0 then no logging happens when a user tries to ignore more than max_ignore other users. This variable can be helpful to detect traders or leeches who tend to quickly ignore almost every user who tries to download from them.
Note: a client may implement its own management of ignoring other users. This variable has effect only if the client requests ignores on the server. Most clients do so as this is part of the protocol and simpler for them to implement.



log_level Group: log verbosity Type: bitmap Default: 241599 (0x3AFBF) Since: NG 0.60
This bitmap variable enables or disables various sorts of log messages. Where the enabled log messages will actually be emitted to is determined by the log_targets variable. If you are not familiar with bitmap arithmetic or don't like those large numbers then you should adjust bitmap variables like this one using the Opennap NG GUI config tool (Onngconf). It presents a much more convenient interface to set bitmap variables like this.

Value (dec)  Value (hex)  Level Enabling includes messages in log about
1 0x00001 Server local server issues, operational events, linked server communication events
2 0x00002 Client client issues, technical problems, abuse by users
4 0x00004 Login login events, locally and remotely, login failures
8 0x00008 Files file sharing operations, invalid files, conversions, file table troubles
16 0x00010 Share errors regarding client's shares
32 0x00020 Search faulty or invalid searches, spurious requestors or targets
64 0x00040 Debug lots of various events during server operation, which are mostly of interest for developers or testers only
128 0x00080 Error the server encountering error conditions, regarding initialization, network communication, file operations, resource management.
256 0x00100 Security unauthorized client accesses, ban creations, password issues
512 0x00200 Channel channel creation, destruction, management and verification
1024     0x00400 Stats frequent server statistics. See stats_click
2048 0x00800 Flood flood events by clients, regarding commands or connects
4096 0x01000 Connects every incoming connection, including rejected ones
8192 0x02000 Disconnects  clients being disconnected for various reasons
16384 0x04000 Rejected logins denied due to various reasons, i.e. bans or errors
32768 0x08000 Config server configuration has been altered
65536 0x10000 Init server initialization phase
131072  0x20000 Cleanup unused server resources being freed

The default is to enable messages of all sorts but Debug, Connects and Rejected. On server start, the Error level will always be anabled, regardless of the log_level setting in opennap-config.txt. If you really want to disable error messages you have to turn them off later using a /msg operserv config log_level <levels> command,



log_mode Group: log verbosity Type: boolean Default: off  
When set to on, Opennap-NG will log changes in user levels to a file.



log_split_hours Group: log verbosity Type: integer Default: 168 Since: NG 0.60
When output to log files is enabled in log_targets variable and this value is nonzero, the log will be split every log_split_hours hours. That means, the current log file will be closed and renamed to a file of pattern opennap-log-yyyymmdd-nn.txt, where yyyy is the current year, mm is the current month, dd is the current day and nn is the index of that logfile. Opennap NG will never overwrite existing logfiles when splitting multiple log files a day but always increase the index number to the first non-existing filename of that day, instead. Also note that split times of log files are aligned by the value of this variable. That means, if you specify a value of 24 hours, the log file won't be split exactly 24 hours after server start time but always at 00.00 local time. If you specify 6 hours, the log file will be split at 00.00, 06.00, 12.00 and 18.00, regardless of when the server was started. Hence the first archived log file after server start will span a shorter period than the following ones. The default value will result in one split log file per week. Log file splits by time and by size (log_split_mb) can both be set and coexist independetly. Log files will be split whenever any of the two split conditions become true.



log_split_mb Group: log verbosity Type: integer Default: 50 Since: NG 0.60
When output to log files is enabled in log_targets variable and this value is nonzero, the log will be split whenever its size reaches log_split_mb megabyte. That means, the current log file will be closed and renamed to a file of pattern opennap-log-yyyymmdd-nn.txt, where yyyy is the current year, mm is the current month, dd is the current day and nn is the index of that logfile. Opennap NG will never overwrite existing logfiles when splitting multiple log files a day but always increase the index number to the first non-existing filename of that day, instead. Log file splits by size and by time (log_split_hours) can both be set and coexist independetly. Log files will be split whenever any of the two split conditions become true.



log_targets Group: log verbosity Type: bitmap Default: 2 Since: NG 0.60
This variable specifies the output targets of log messages of any sort. It is a bitmap variable with the following target options:

Value  Target Notes
1 Standard output channel This is the terminal or console (window) in which Opennap NG was started.
2 Log &LOG channel A pseudo chat channel maintained by the server, to be joined by authorized clients
4 Log file File opennap-log.txt in the data directory on the local harddisk of the server

Standard output channel &LOG channel refers to the pseudo chat channel of the same name which may be joined by any Admins and Elites via their client. Log file refers to the log file opennap-log.txt which will be written into the data directory of Opennap NG. Note that existing log files will never be appended nor overwritten on server start. Instead, existing opennap-log.txt files will be removed to files of the naming scheme opennap-log-yyyymmdd-nn.txt, where yyyy is the current year, mm is the current month, dd is the current day and nn is the index of that log file within that day. Example: to enable log output to &LOG channel and log file but not to stdout, set this value to 6.



log_timefmt Group: log verbosity Type: string Default: none Since: NG 0.47H
If set then this variable specifies a time format which is used to create a time / date string. This date string is prepended to each line which is logged to stdout / the log file / channel. The format of log_timefmt must be according to the options of the GNU LIBC strftime() function. It's made up of conversion specifiers which compose the format of the time output (similar to the printf() function variants). A description of all conversion specifiers is beyond the scope of this manual. Look into the GNU LIBC documentation of the function strftime() for that. Only some useful examples are given here:

Format: Output: Description
%H:%M:%S: 12:34:56 <hour>:<minute>:<seconds>:
%m-%d %H:%M  09-23 12:34 <month>-<day of month> <hour>:<minute>
%a %H:%M:%S Tue 12:34:56  <weekday> <hour>:<minute>:<seconds>:



login_interval Group: flood protection Type: integer Default: 0  
Specifies how often (in seconds) clients from the same IP address are allowed to connect to the server. This allows you to ignore clients which are reconnecting too fast. Reasonable values are 5 to 30 (seconds). A value of 0 disables the check. Also see register_interval.



login_timeout Group: flood protection Type: integer Default: 60  
If a client has not completed the login process after this number of seconds, it will be disconnected. This is to prevent malicious parties from trying to open up many sockets to the server.



loopcount_ output_ interval Group: log verbosity Type: integer Default: 1000 Since: NG 0.47H
If non-zero, specifies the interval for executed main loop iterations being logged (with Debug level). Number of main loop iterations is a rough measure for servicing activity and efficiency since server start. The default value means that every 1000th main loop iteration will be logged.



max_block_ pct Group: user management Type: integer Default: 0 Since: NG 0.49
If this value is nonzero it specifies the maximum percentage of blocked files which are allowed per user. If i.e. a user attempts to share 2000 files but 1800 of them are blocked (90%) the user may not be suitable or welcome to the server at all. Files may be blocked because they match patterns in the opennap-block.txt file or are too small (min_file_size) or too large (max_file_size). If the percentage of blocked files of a user is higher than this value and max_block_pct_ban_ttl is nonzero, the user will be immediately banned. Mods+ will never be banned. Banning users who attempt to share a great amount of blocked files also reduces waste of internet bandwidth. The valid range for this value is 0 to 100. A value of 0 disables this feature. 75 seems to be a fair value for public servers. Reduce it to 50 or less to be more restrictive, but possibly also lose interesting content.



max_block_ pct_ban_ttl Group: user management Type: integer Default: 60400 Since: NG 0.49
If max_block_pct is set and a user attempts to share more than that percentage of blocked files, the user will be banned for this number of seconds. The default value is one week. This is a reasonable value since you deal with users who share a great amount (percentage) of stuff you don't want to have on your server, and experience has shown that the vast majority of users being banned for that wouldn't quickly change their entire shares just to get on a particular server or network.



max_browse_ num Group: performance Type: integer Default: 0 Since: NG 0.60
If nonzero, limits the number of browses a regular user may issue, no matter whether they are direct browses or server based browses. If a client requests to issue more browses than this number, they will be ignored and Mods+ will be notified about the attempt.



max_browse_ result Group: performance Type: integer Default: 500  
If nonzero, limits the output of a server browse to this number of files. Because of the limit imposed by client_queue_length, the number of files returned by a browse command is limited to this number. If this is too large, clients will be disconnected when they browse a user with many files. There is also a consideration of bandwidth, a high browse limit imposes a large amount of uplink bandwidth. Mods+ are exempt from this limit, however they are still limited by the max_shared value for the client being browsed. This setting has a high influence on the amount of internet bandwidth the server consumes, especially the upstream. If the server consumes too much upstream bandwidth then reduce this value to 200 or 100. If upstream bandwidth is no issue for you then you may increase this to 1000, 2000 or more. The default value is appropriate for servers running via DSL connections.

Note: this limit affects only server based browses. No limit is imposed on direct browses (client to client connections) since the server doesn't control data exchange in that case. Direct browses save server network bandwidth and are therefore the preferred method. Whether direct browses can be performed depends on which client programs are involved. Many client programs don't support direct browses yet. Both (requestor and responder) must support it in order to work and allow unlimited browsing.



max_channel_ length Group: chat control Type: integer Default: 32  
Specifies the max number of characters allowed in a channel name.



max_client_ string Group: user management Type: integer Default: 32  
Specifies the max number of characters allowed in the client version string.



max_clones Group: flood protection Type: integer Default: 0  
When set to a value greater than 0, the server will only allow this many connections from the same IP address, to limit clones. Also see login_interval and clones_allow_level. A value of 2 should be acceptable, as this description states.



max_ command_ length Group: flood protection Type: integer Default: 2048  
When set to a value greater than 0, the server will disconnect any client that sends a command longer than this value. Clients that trigger this are either attempting to flood the server or are out of sync. Actually, the default value of 2 KB should not be changed,. as most clients don't issue larger commands anyway, while all clients assume at least this command size to be accepted.



max_ connections Group: performance Type: integer Default: 1000  
When set to a value greater than 0, the server will only allow this many clients to log into the server. If max_connections users are already logged in and new users try to login they will be disconnected with a server full response. This is one of the most important server settings, as it specifies the general user capacity the server will be able to serve. This setting strongly affects CPU consumption, RAM consumption and internet bandwidth consumption of the server. Lower it to reduce server demands regarding those items. A more dynamic way of limiting connections with regard to server resource usage is max_mem. See also: connection_hard_limit.

Warning: when setting this variable to 0 or a value larger than your operating system limit the server may crash as soon as the number of connections gets close to the OS limit. For all Linux versions < 2.4.x this is 1000. Also consider increasing RAM, CPU and bandwidth consumption of high numbers of connections. Heavy lag and timed out connections are mostly the result of a too high value for max_connections. A typical P5-II class machine should be able to safely handle ~500 connections, a P5-III ~1000 and a P5-IV up to 2000 connections (if your OS permits it). Higher numbers may be feasible depending on other settings like max_shared, max_browse_result, max_searches_per_minute and some other flood protection settings.



max_data_size Group: Unix specific Type: integer Default: 0  
Sets the maximum amount of memory the process may consume. If this limit is reached further attempts by Opennap NG to allocate memory will fail. This will usually cause the servere to terminate immediately. Use max_mem as a softer alternative to limit memory consumption without terminating the server when the limit is reached. Also see max_rss_size.



max_file_size Group: content management Type: integer Default: 0 Since: NG 0.49
Set the upper limit of filesize (in bytes) which a single file must at most have to be shared. If the max_file_size is 0 then there is no checking on this parameter. Limiting the maximum size of files makes sense if you want to avoid complete CD or DVD images being shared, possibly for legal reasons. A value of 150 000 000 (150 MB) is recommended, if you want to allow music files, complete albums (as single files) and video files of limited size only, but no full CD images.



max_hotlist Group: performance Type: integer Default: 32  
When set to a value greater than 0, the server will only allow each user to have this many entries on their hotlist.



max_ignore Group: performance Type: integer Default: 32  
When set to a value greater than 0, this server will only allow each user to have this many entries on their ignore list. If the user tries to ignore more users those requests will simply be ignored. Depending on the setting of log_ignore_abuse such an event may be logged or not.

Note: a client may implement its own management of ignoring other users. This variable has effect only if the client requests ignores on the server. Most clients do so as this is part of the protocol and simpler for them to implement.



max_login_ban_ttl Group: flood protection Type: integer Default: 86 400 Since: NG 0.60
If nonzero and max_login_count and max_login_time are also set, this variable specifies the period for which login flooders are automatically banned. The default is 1 day.



max_login_count Group: flood protection Type: integer Default: 10 Since: NG 0.60
If nonzero and max_login_ban_ttl and max_login_time are also set, login flood protection is enabled. It aims at clients which connect and disconnect to the server very often. This can be due to network trouble, wrong client settings (in particular wrong or outdated server lists) or due to intentionallay flooding the server. Especially if clients have large filelists to share, frequent reconnecting virtually results in server flood. Note that disabling ghost_kill doesn't protect from this, as there are no ghosts being involved at all in most cases. This variable specifies the maximum number of logins a client may perform within max_login_time seconds. If a client disconnects and attempts to reconnect more often than this it will be banned for max_login_ban_ttl seconds. The default values allow a maximum number of 10 logins per hour. Any client exceeding this can certainly be assumed to be either in trouble or hostile.



max_login_time Group: flood protection Type: integer Default: 3600 Since: NG 0.60
If nonzero and max_login_ban_ttl and max_login_count are also set, login flood protection is enabled. It aims at clients which connect and disconnect to the server very often. This can be due to network trouble, wrong client settings (in particular wrong or outdated server lists) or due to intentionallay flooding the server. Especially if clients have large filelists to share, frequent reconnecting virtually results in server flood. Note that disabling ghost_kill doesn't protect from this, as there are no ghosts being involved at all in most cases. This variable specifies the period within at most max_login_count logins by one particular user are perimtted. If a client disconnects and attempts to reconnect more often it will be banned for max_login_ban_ttl seconds. The default values allow a maximum number of 10 logins per hour. Any client exceeding this can certainly be assumed to be either in trouble or hostile.



max_mem Group: performance Type: integer Default: 0 Since: NG 0.60

If nonzero, imposes a (very) soft limit on maximum main memory to be used by Opennap NG. If Opennap NG has allocated more than max_mem MB of RAM, it will reject any further logins by ordinary users. Only if memory usage drops below this value further logins will be allowed again. Memory usage drops whenever users disconnect from the server for any reason, freeing less or more file information they were sharing. This variable can be regarded a dynamic replacement for max_connections. It will not start rejecting logins when a fixed maximum number of users has connected but when the RAM usage of Opennap NG starts exceeding a predefined limit. However, there are two important issues to keep in mind when setting this value:

  1. Opennap NG calculates its current RAM consumption by the total amount of MB it has requested from the OS. The actual amount of MB allocated by the OS for the Opennap NG process is always higher, typically between 20% and 30%. (Only on Unix: see VMSize reported by OS and wasted RAM values in memory stats output to learn how much extra memory is allocated for Opennap NG by the OS.) Since the amount of memory actually allocated by the OS can't be determined easily on every platform and since usually that value barely or never shrinks, it is unsuitable for calculation of memory consumption by Opennap NG in this context.

  2. Even though there will be no new logins from the time when this limit has been reached, this doesn't mean that RAM consumption won't increase much further! Existing connections won't be disconnected or limited in their actions. A significant number of clients might still be uploading file lists while the limit has been reached, hence additional RAM may be allocated by Opennap NG still. The amount by which this limit will eventually be exceeded mostly depends on the current number of users uploading (as visible in user stats). You should typically expect Opennap NG to allocate a peak amount of RAM which is between 10% and 30% higher than the limit specified by this variable. So this is a very soft limit, indeed.
If you have 400 MB of free RAM to spend for Opennap NG, setting this variable to 250 would be a safe setting. A value of 350 or higher would not be. Also note that this setting is not available if Opennap NG was compiled with --disable-meminfo configure option.



max_new_ users_count Group: performance Type: integer Default: 20 Since: NG 0.47H
When max_new_users_count and max_new_users_time are set to nonzero the rate at which new users can connect is limited. During each interval of max_new_users_time seconds at most max_new_users_count users can connect. Further connection requests are refused until the next interval of max_new_users_time begins. This is to avoid splits and timeouts due to the fact that 2000 users who want to connect to the freshly advertised server simultaneously produce a pretty nice bandwidth peak. The default values allow up to 20 users to connect per 10 seconds (or 2 users per second in average).



max_new_ users_time Group: performance Type: integer Default: 10 Since: NG 0.47H
When max_new_users_count and max_new_users_time are set to nonzero the rate at which new users can connect is limited. During each interval of max_new_users_time seconds at most max_new_users_count users can connect. Further connection requests are refused until the next interval of max_new_users_time begins. This is to avoid splits and timeouts due to the fact that 2000 users who want to connect to the freshly advertised server simultaneously produce a pretty nice bandwidth peak. The default values allow up to 20 users to connect per 10 seconds (or 2 users per second in average).



max_nick_ length Group: user management Type: integer Default: 19  
If set to a value greater than 0, this specifies the max number of characters allowed in a nickname.



max_queue_notify Group: mod+ notifcation Type: integer Default: 200 Since: NG 0.60
If set to a value greater than 0, Mods+ will be notified whenever the upload queue of a client exceeds this size. It means that the client has very many upload requests pending and processes them either too slowly or not at all. In most cases this actually indicates freeloaders. Many users tend to limit their upload bandwidth to unreasonable values of 2 KB/sec. or less, taking requestors and network staff for fools. Mods+ should check those users, possibly ask them why their queue is so long, ask them to increase their output or possibly even eject them due to freeloading. Even users who share large amounts of presumably great stuff are not beneficial for a network if they don't allow any (or very few only) uploads.



max_reason Group: performance Type: integer Default: 96  
If set to a value greater than 0, this specifies the max number of characters allowed in the "reason" strings for such commands as ban, kick and kill.



max_results Group: performance Type: integer Default: 100  
If set to a value greater than 0, this specifies the max number of search results that are returned to a client.



max_rss_size Group: Unix specific Type: integer Default: 0  
Sets the maxiumum amount of real memory a process is allowed to consume . Any excess will be swapped to disk. Also see max_data_size, lock_memory and max_mem



max_searches_pending Group: performance Type: integer Default: 3  
Specifies the maximum number of pending searches a user is allowed to have. Once this threshold is reached, no more searches can be issued until one of the others has completed.



max_searches_ per_minute Group: flood protection Type: integer Default: 2  
Set the maximum number of searches (tag 200) a client is allowed to make during his connection. A value of 0 does not check the number of searches at all. This limit is calculated by using: ( count200 - evaluate_search_abuse_after_tags ) / onlinetime. So a value of 2 searches should be sufficient.



max_shared Group: content management Type: integer Default: 5 000  
If set to a value greater than 0, this specifies the max number of files that any client may share. This also affects the maximum number of browse results for Mods+ (they are exempt from the normal max_browse_result). This setting strongly affects RAM consumption and also affects internet bandwidth consumption of a running server. Increase this value if you have plenty of them left to spend. Decrease this value (or max_connections) if RAM consumption tends to grow too large after the server has been running for some hours. Also regard there may still be some users who like to share 20 000 files and more. They could feel disgusted if this value is too low, especially if they get additionally annoyed by verbose_too_many being on and notify_exceed_frequency being too low.



max_tags_ per_minute Group: flood protection Type: integer Default: 2  
Set the maximum number of certain tags per minute a client could issue to the server. Some analysis showed that the tags 218, 219 and 700 were abusively used by some buggy clients. When the client has more than max_tags_per_minute tags the request is simply ignored.



max_time_ delta Group: network Type: integer Default: 90  
Specifies the maximum number of seconds of difference in clock time between two servers in order for them to be able to link. Note that if this value is set too large, users can gain ops in channels even if they were not the first user to join the channel. A value of 0 will turn off this check completely.



max_topic Group: chat control Type: integer Default: 64  
If set to a value greater than 0, this specifies the max number of characters allowed in a channel topic.



max_ uploading Group: performance Type: integer Default: 200 Since: NG 0.49
If non-zero, limits the number of concurrent filelist uploads by clients. Most clients start to transmit their shared files lists immediately after connect. If many files are to be shared by clients this can mean an excessive incoming traffic for the server, especially shortly after the server has been started. Server overload and significant lag can be result of this. With this setting, if more than this number of clients are currently uploading, new logins are rejected until some clients have finished uploading their filelists. The stats log output shows how many users are uploading. However, for technical reasons the value being displayed isn't quite precise and usually a bit higher than the actual number of clients uploading. So it's recommended not to set this value too low, as on large servers this could not only limit incoming traffic but also the number of users being able to connect at all. Don't set this value lower than 50 for small servers. For large servers, values of 200 or 300 are recommended.



max_user_ channels Group: chat control Type: integer Default: 5  
If set to a value greater than 0, this specifies the max number of channels a user is allowed to join.



max_whois_ ban_ttl Group: flood protection Type: integer Default: 86400 Since: NG 0.49
If max_whois_count, max_whois_time and this value are non-zero, determines the ban TTL in seconds for excessively whois'ing clients. The default value is one week.



max_whois_ count Group: flood protection Type: integer Default: 0 Since: NG 0.49
If non-zero, specifies how many whois requests a user may issue within max_whois_time seconds. If the user exceeds this number of whois requests and max_whois_ban_ttl is non-zero, (s)he gets banned. Excessive numbers of whois requests are emitted automatically by some clients with certain settings, when users want to be selective (or denying at all) regarding their uploads, at the expense of server bandwidth. Most server owners don't want to support such behaviour. Since occasional whois'ses of other users aren't anything hostile, if non-zero, this value should not be set too low. A number of 20 whois requests per hour should be tolerable. Excessive clients will exceed this number by far quickly.



max_whois_ time Group: flood protection Type: integer Default: 0 Since: NG 0.49
If non-zero, specifies the period for max_whois_count in seconds. Recommended is a value pair of count 10 to 20 and time 3600 (1 hour)..



min_file_size Group: content management Type: integer Default: 0 Since: NG 0.47H
Set the lower limit of filesize (in bytes) which a single file must at least have to be shared. If the min_file_size is 0 then there is no checking on this parameter. If a user tries to share files with a size of less than min_file_size the user will receive a server message informing him about the rejected file. It should be considered that the Napster protocol isn't well suited to transfer large numbers of small files. Also, a significant amount of common small files consists of either images of unwelcome (or dangerous) kind or simply crap, like icon libraries, DLL files, installed driver files or simply fakes! Although noone will be interested in crap it may consume (waste!) significant amounts of server resources if not being filtered out. That's why for public servers a value of 100000 to 300000 (100 to 300 KB) is recommended, although this may suppress a small number of desired small files as well.



min_nick_ length Group: user management Type: integer Default: 0 Since: NG 0.60
If set to a value greater than 0, this specifies the minimum number of characters allowed in a nickname.



min_read Group: network Type: integer Default: 0  
If not 0 specifies the minimum number of bytes expected to be read from a connection. If less than min_read bytes are read the number of bytes read will be logged.



motd_fmt Group: user notification Type: bitmap Default: 255 (0xFF) Since: NG 0.60
This is a bitmap variable, specifying which items to show in the MOTD, prior to the custom MOTD file. Available items and associated values are summarized in the table.
Value  Meaning
1 Show custom MOTD file
2 Show IP address of connecting client
4 Show server uptime
8 Show user numbers of server
16 Show files numbers server
32 Show some performance stats, i.e. number of processed searches, public and private messages
64 Show minimum file requirements
128 Show some additional server rules as defined by server settings
For instance, to show all items but server rules and client's IP address, set this value to 1 + 4 + 8 + 16 + 32 + 64 = 125.


nick_expire Group: user management Type: integer Default: 604 800  
Specifies the time in seconds of after which unused registered user are expired and returned to the pool of available nicknames. Only regular users with no flags set can expire after this time. User accounts with the Friend flag set may expire after friend_expire seconds. Accounts of Mods+ and higher levels never expire. The default for this variable is 1 week. See also auto_register.



no_mod_ annoying Group: mod+ notification Type: boolean Default: off  
When set to on mod+ are exempt from the notification of tag abuse. This only affects mod+ who are on a server where notify_user_abuse is set to on.



no_share_ level Group: security Type: integer Default: 4 Since: NG 0.49
If nonero, specifies the user level from which on no shares are accepted. I.e. the user will always be listed as sharing 0 files, even if the client is configured to share files. This is helpful for Elites and Admins who connect to multiple networks with the same client and shares setting but don't want to share any files in the network where they are Elite or Admin, due to legal trouble, for instance. Meaningful values are 0 == no sharing restrictions, 2 == Moderators, 3 == Admins, 4 == Elite. The default value 4 means that all Elites won't appear sharing any files, regardless of their client settings.



notify_block_ sources Group: mod+ notification Type: integer Default: 2 Since: NG 0.60
This variable specifies what sorts of blocked files Mods+, the log and possibly the user are reported. On the first blocked file encountered from the filelist of a client during its upload process, this variable specifies what sorts of the following files should be reported. The variable notify_block_targets specifies to what targets the reports should be delivered. The following table shows valid values for this variable:
Value  Meaning
0 Don't report any files, neither blocked nor criminal
1 Report all files that match REs of class blocked or that don't match any REs of class must match (if any exist)
2 Report all files that match REs of class criminal
3 Report all files that match either of the above classes
4 Report all files the client is sharing subsequently (warning: produces very much output!)



notify_block_ targets Group: mod+ notification Type: bitmap Default: 1 Since: NG 0.60
This variable specifies what targets are informed about blocked or criminal files. Variable notify_block_sources specifies what sorts of files are to be reported. This variable is a bitmap where the following targets can be independently enabled and disabled:
Value  Target
1 Attempts to share blocked files will be noted in the log
2 Mods+ will be notified about blocked files
4 The user who is attempting to share the blocked file will be notified which file(s) from him are rejected



notify_exceed_ frequency Group: user notification Type: integer Default: 10 Since: NG 0.47H
Frequency of notifications which are sent to a user if he keeps trying to share files beyond the max_shared limit. The default value of 10 means that for every 10 rejected files the user gets one notification. The higher this value the less network bandwidth will be wasted.



notify_mod_ abuse Group: mod+ notification Type: boolean Default: on  
When set to on the abuse of the tags mentioned above is reported to the mod+ users on your system.



notify_mod_ abuse_ frequency Group: mod+ notification Type: integer Default: 100  
When notify_mod_abuse is set to 1 then this following var reports the frequency of notifications which are sent. A notify_mod_abuse_frequency of 100 means that every 100th abuse per user is reported via notify_mods().



notify_no_ uploads Group: mod+ notification Type: integer Default: 10 Since: NG 0.60
If nonzero, this variable enables notification of Mods+ on clients who share many files but have no uploads after a reasonable period. This usually suggests they either share crap only which no one is interested in, or they are actually freeloaders, i.e. they share files but don't allow any uploads. The notification message is: "Crap or freeloader alert: user x!y (z) shares n files for m minutes but has no uploads!" The period between a non-uploading user connecting and this notification being eemitted is inversely proportional to the number of files he shares. I.e. the more files are shared with no uploads the earlier the notification occurres and vice versa. Notifications are only generated on users sharing at least 500 files. Currently this variable should be set with one of the predefined values listed below. The columns show after what time notifications are generated for users who share the respective number of files but have no uploads within the period.
Value  Name 500 files 1000 files 3000 files
0 Off - - -
3 Tight 100 minutes   50 minutes   16 minutes
10 Normal 5.5 hours 2.7 hours 55 minutes
30 Relaxed   16.6 hours 8.3 hours 2.7 hours



notify_user_ abuse Group: user notification Type: boolean Default: off  
When set to on the abuse of the tags mentioned above is reported to the user issueing the tag via a privmsg.



notify_user_ abuse_ frequency Group: user notification Type: integer Default: 1000  
When notify_user_abuse is set to on then this following var reports the frequency of notifications which are sent. A notify_user_abuse_frequency of 1000 means that every 1000th abuse per user is reported via privmsg to the user.



notify_user_ block Group: user notification Type: boolean Default: off  
When set to on a user will receive a server response for every blocked file he tries to share. This is a way to let the user know which of his files are blocked.



persistent_filter Group: flood protection Type: boolean Default: off Since: NG 0.60
The server keeps a list of filtered search keywords which are too common to yield useful results without severe usage of server resources. keywords in that list will be ignored on searches for files. A predefined list of filtered keywords is loaded on each server start. Unless persistent_filter is set to on, the server won't change this file. The list of filtered keywords may grow in server memory as it runs, but won't be stored in the file. This way, after each server restart the filter list will be the same. This is the behaviour of earlier Opennap NG versions. If persistent_filter is enabled, the server will periodically store the updated list of filtered search keywords. But beware: this list (and the file as well then) can only grow, they will never shrink! This can easily lead to a situation in which many hundreds of keywords become filtered, even rather particular ones like certain artist's names, which will prevent files by those artists to be searchable by their name at all. If persistent filters are enabled, server owners should check from time to time the contents of this file and remove some potentially indispensable key words. Raise file_count_threshold to reduce chances of particular keywords to get into the filtered list. In fact, setting this to on is not really recommended.



portscan_ban_ttl Group: user management Type: integer Default: 21 600 Since: NG 0.60
Users who can't provide an open port for others to connect need to configure their client to operate in firewalled (port 0) mode. However, a number of users fails to do so. Their client announces a connect port being available, while it is actually not. This makes those clients freeloaders, as no one will be able to connect to them in order to download from them. If portscan_notify is nonzero, Opennap NG tries to connect to clients which announce open ports, to verify they're actually open. If they are found not to be open notifications will occur as specified by that variable. If portscan_ban_ttl is nonzero, clients with announced but unconnectable ports are automatically ejected and banned. Otherwise just notifications will take place. Portscanning of clients doesn't take place immediately after they connect. Instead, Opennap NG will wait until they have finished uploading their filelists and start sending other requests. Clients which have connected in firewalled (port 0) mode already, aren't scanned. The possible values for this variable



portscan_notify Group: user management Type: integer Default: 0 Since: NG 0.60
Users who can't provide an open port for others to connect need to configure their client to operate in firewalled (port 0) mode. However, a number of users fails to do so. Their client announces a connect port being available, while it is actually not. This makes those clients freeloaders, as no one will be able to connect to them in order to download from them. If this variable is nonzero, Opennap NG tries to connect to clients which announce open ports, to verify they're actually open. If they are found not to be open notifications will occur as specified by this variable. If portscan_ban_ttl is nonzero, clients with announced but unconnectable ports are automatically ejected and banned. Portscanning of clients doesn't take place immediately after they connect. Instead, Opennap NG will wait until they have finished uploading their filelists and start sending other requests. Clients which have connected in firewalled (port 0) mode already, aren't scanned. The possible values for this variable are as follows:
Value Meaning
0 Disable active portscanning
1 Write message into log if client port found not open
2 Notify all Mods+ if client port found not open
3 Both write message to log and notify Mods+ if client port not open
Users may be informed about their misconfiguration when they are banned if the respective bit in verbose_ban_msg is set.



ping_interval Group: network Type: integer Default: 600  
Specifies the interval (in seconds) of how often to sping peer (linked) servers.



protnet Group: security Type: string list Default: * Since NG 0.46
Protnet is a set of protections granted to an Elite user on the defined IP or list of IPs. The elite is protected from being killed, mkilled, their password changed, or account nuked, and their server killed, by someone NOT on the protnet, even if they are elite. The default setting works like normal, any elite can kill other elites, etc. Note, the protection only works on your own server, it can't protect you on another server, etc.

Example: protnet 128.1.128.1,192.168.0.*



register_ interval Group: flood protection Type: integer Default: 0  
Specifices how often (in seconds) clients from the same IP address are allowed to register new nicknames. This can be used in conjunction with auto_register to block web/clone clients which attempt to log in with random nicknames.



registered_ only Group: user management Type: boolean Default: off  
When set to on, the server only allows logins from registered clients. Also see auto_register, register_interval.



remote_browse Group: performance Type: boolean Default: on  
This variable controls whether or not the server supports remote browsing (where the client being browsed is not on the same server). In large networks, remote browsing can account for significant cross server traffic, increasing lag. Lopster or TekNap supportīs for clients to directly browse eachother outside of the servers, which is the recommended approach.



remote_ config Group: security Type: boolean Default: on  
If set to on then admins from other servers are permitted to change configuration values on this server.



report_ip Group: GotNap support Type: string Default: value of server_ name  
Sets the IP address this server listens on to be reported to Napigator (GotNap).



report_name Group: GotNap support Type: string Default: value of server_ name  
Sets the name of the server reported to Napigator (GotNap).



report_port Group: GotNap support Type: string Default: value of server_ ports  
Sets the TCP port this server listens on to be reported to Napigator (GotNap).



restrict_ registration Group: user management Type: boolean Default: off  
If set, disallow the automatic registration of new nicknames by clients as they log in for the first time. The only way to create new nicknames (accounts) is then to use the administrator commands to register, or by editing the users file directly (when the server is not running). This option is typically used with the registered_only option to run a private, access-controlled server where users need accounts before they can log in. For public servers this setting should remain off, to offer users the option to register themselves, for instance to avoid nick collisions.



search_max_ cache_entries Group: performance Type: integer Default: 500  
To give the hub in a distributed network some relief and to speed up repeated searches an internal cache is maintained. How many searches should be cached? The default value is 500 searches. You can query the cache stats using /raw 10116. The format of the output is: Counter Rank Usage Starttime LastUsedTime SearchString



search_timeout Group: network Type: integer Default: 180  
When servers are linked, searches will be timed out if no response has been received after this many seconds. This forces the server to send the final ack to the client.



server_alias Group: GotNap support Type: string Default: none  
Allows you to specify an alternate name by which the server refers to itself. This is useful for connecting a "hidden" hub (routing-only) server, or if you just want to use a shortcut for the full DNS name.



server_chunk Group: performance Type: integer Default: 0  
If not 0 then this is the minimum amount of data to queue before being sent to another server. If less data is to be sent the transmission will be delayed.



server_name Group: network Type: string Default: Hostname  
Specifies the server's DNS name.



server_ports Group: network Type: string Default: 8888  
This option specifies a list of TCP ports which the server should listen on for client connections. Each port number should be separated by whitespace.



server_ queue_ length Group: network Type: integer Default: 1 024 000  
Specifies the maximum number of bytes that can be queued for a server connection before it is considered dead.



set_group Group: Unix specific Type: string Default: nogroup Since: NG 0.60
This variable specifies either the name or number (GID) of a valid Unix group of your system. If the server is started as root, it will, after performing some initializations, drop its privileges and continue executing with the effective access rights of this group. Specify 0 or "root" if you explicitly want the server to execute with root group rights. That is not recommended, of course.



set_process_priority Group: performance Type: integer Default: 2 Since: NG 0.60
If nonzero, attempts to change the priotity of the Opennap NG process on startup, i.e. lower it. It is recommended to let Opennap NG run on a lower or even lowest process priority. It's a common misconception that low server priority means less performance, significantly greater lag or lower execution speed. This is not true. See the Opennap NG FAQ for a more detailed description about this issue. This variable can have three values:
Value Meaning
0 Don't alter process priority on startup
1 Reduce process priority to lower priority
2 Reduce process priority to lowest priority



set_server_ nicks Group: security Type: string list Default: (null)  
This is a list of names of users who are allowed access to raw 9998 and 9999. The users must still be elite, this adds another layer of security to restrict exactly who is allowed access. I suggest not doing wildcards in this list.



set_user Group: Unix specific Type: string Default: nobody Since: NG 0.60
This variable specifies either the name or number (UID) of a valid Unix user of your system. If the server is started as root, it will, after performing some initializations, drop its privileges and continue executing with the effective access rights of this user. Specify 0 or "root" if you explicitly want the server to execute with root user rights. That is not recommended, of course.



stat_click Group: log verbosity Type: integer Default: 60  
Specifies how often (in seconds) the server should send updates about server statistics (users/files/gigs) to the clients.



stats_fmt Group: log verbosity Type: bitmap Default: 255 (0xFF) Since: NG 0.60
this bitmap variable enables or disables particular sections in the frequently emitted stats output. Note that this setting only applies to stats emitted every stats_click seconds to log_targets. If enabled by live_stats, the opennap-state.txt file always contains all of the sections being listed here.
Value (dec)  Value (hex)  Section  Statistical information about
1 0x001 Time current time, server start time and server uptime
2 0x002 Clients local and global users, connects, disconnects, portscans, activities
4 0x004 Files local and global library sizes, changes, averages and requests
8 0x008 Memory current and total numbers, capacities and averages of memory allocations
16 0x010 Load CPU utilization, kernel usage and tags processing performance
32 0x020 Traffic internet bandwidth being utilized, amount of MBs being sent and received
64 0x040 Searches file searches numbers, throughput and capacities
128 0x080 Messages private and public messages throughput
256 0x100 Disconnects  numbers and reasons of disconnects
512 0x200 Rejects numbers and reasons of clients which couldn't login



stats_port Group: GotNap support Type: integer Default: 8889  
Specifies the TCP port on which the server should listen to reports stats. Typically used by Napigator (GotNap). If this port is set to -1, the server will not listen for stats reporting at all.



stat_server_ host Group: GotNap support Type: string Default: report.gotnap .com  
Sets the DNS/IP address of the Napigator (GotNap) server to report stats. Also see report_name, report_ip, report_port, stat_server_port, stat_server_user, stat_server_pass.



stat_server_ pass Group: GotNap support Type: string Default: none  
Sets the password for your Napigator (GotNap) account to list live server stats.



stat_server_ port Group: GotNap support Type: integer Default: 8890  
Sets the port number for your Napigator (GotNap) account to list live server stats.



stat_server_user Group: GotNap support Type: string Default: none  
Sets the username for your Napigator (GotNap) account to list live server stats.



strict_channels Group: chat control Type: boolean Default: off  
When set to on, the server will only allow privileged users to create new channels. Upon startup of the server the channels listed in the channels file are always created.



user_db_interval Group: security Type: integer Default: 1800  
Specifies the interval in seconds of how often the server should write out its database files to disk. This is important in case the server crashes prematurely, so that data loss is minimal. The default value of half an hour should be reasonable.



usermode Group: security Type: string Default: all  
Sets the default usermode for mods+ users. Note: this is not to be confused with user levels!



valid_clients Group: user management Type: string list Default: (null) Since: NG 0.47H
If not empty this is a string list of clients that are allowed on your server. The client's identification must match one of the entries to be allowed to connect. The default is empty so there are no restrictions. Some clients can't/don't share, some clients are broken, etc. See also: invalid_clients.

Example: valid_clients *lopster*,*xnap*,*winmx*,*audiognome*



verbose_ ban_msg Group: user notification Type: bitmap Default: 511 (0x1FF) Since: NG 0.60
This is a bitmap variable. It allows to selectively enable or disable verbose ban messages, to be sent to users via private message just before they are getting banned (immediately before they are ejected from the server).. Verbose ban messages may help users who are not familiar with Opennap protocol, features and habits better understanding why they are getting banned and what they should change in order to avoid getting banned again later. This may help or encourage users to change their behaviour in order to comply to the server rules next time. Verbose ban messages also inform the user about the duration of the ban. Hence, verbose ban messages can be regarded a matter of politeness. They are typically 2 to 4 lines long each and don't carry weight regarding output traffic, even if your server bans an average of more than 2 users per second (which is an unlikely frequency). See the list of automatic ban reasons, their settings and descriptions for a reference of verbose ban messages which users are sent in case of getting banned. There are no verbose ban messages being sent to users in case they are manually banned by Mods+. The default is to enable all verbose ban messages.

Value (dec)  Value (hex)  Send verbose ban message to user when being banned because of
1 0x001 not sharing enough files (eject_limit_files, eject_limit_libsize)
2 0x002 sharing too many blocked files (exceeding max_block_pct)
4 0x004 flooding the server by too many commands in too short period
8 0x008 too frequent disconnects and reconnects (max_login_count, max_login_time)
16 0x010 excessively whois'ing other clients (max_whois_count, max_whois_time)
32 0x020 upload port of client is unreachable (portscan_notify)
64 0x040 user shared files which matched block expressions of class criminal
128 0x080 user searched for terms which matched invalid search expressions
256 0x100 user was ignoring a Mod+.



verbose_too_many Group: log verbosity Type: boolean Default: on Since: NG 0.47H
If a user tries to share more files than max_shared there will be a server response to the user and a log entry informing that no more files of him will be accepted. If this setting is on the names and sizes of the rejected files are evaluated and logged. This can be helpful to find users which share lots of fake or useless files. If this setting is off then names and sizes of files will not be evaluated and logged. This reduces CPU consumption.



warn_time_ delta Group: network Type: integer Default: 30  
If the clock on a remote server is more than this many seconds out of sync, opennap-ng will print a warning message. Also see max_time_delta. A value of 0 turns off the warning completely.



who_was_time Group: user management Type: integer Default: 300  
Specifies the number of seconds after a user logs out that information on the client's ip address and server is kept in cache, so that mods+ may perform a whowas command. Note: this only controls how often the cache is purged, so some nicks may appear to be older than this amount.






Napigator (GotNap) support:
you should only need to set stat_server_user and stat_server_pass at the minimum. If you have used your correct DNS name for server_name above, then you don't need to use any of the report_* variables. If Opennap-NG has trouble detecting the proper values to send to Napigator, then you should set the report_* variables appropriately.

See the default opennap-config.txt file (in doc/examples/ directory in source package) as a basis to start your own configuration.






Administration


This section describes how to administer the OpenNap-NG server through the use of a connected client. It is assumed by the time you get here that you have set up at least one Elite level (server owner) account on your server (this is done by the setup program if you installed it that way). The first thing you want to do is log into your server with this account. When you log in, you should see a message from the server on your client, something like:
	server_name set you to level Elite (4).
where server_name is the name of your server. This message will let you know that you have fill privilege to access administrative commands on this server. Clients such as Lopster or TekNap already have all of the OpenNap-NG extensions built into it. Others, such as the official Napster client or WinMX do not (it was not inteded to be used by administrators). If you client is missing functions to directly access these administration commands, not to worry, OpenNap-NG has a way of getting around this. OpenNap-NG provides to pseudo-users, ChanServ for channel related commands, and OperServ for server related commands. For both of these, you can access their functionality by sending a privmsg (instant) message to either of these users (in most clients this will be either /msg user or /tell user).



Auto-ban reasons and variables


The following table summarizes all means and reasons to automatically eject and ban (ab)users from a server. In general, the ban triggers must be set correctly to killban users for the respective ban time.

The recommended ban times take into account the relative commonnesses, significance, server utilization and educational effects of the respective ban reasons. Multiply hour periods by 3600 to get the actual value for the respective TTL variable. Multiply day periods by 86 400 to get the actual value for the respective TTL.

You shouldn't set ban times too short. Don't assume that many of the banned users would quickly change their config / behaviour / shares in order to comply and deserve an early chance to do it better next time they connect. In fact, about 99% of users don't. That means, when the ban TTL for them expires and they reconnect, about 99% of them will soon be banned again for the same reason. The shorter you set ban TTLs the higher is the waste of resources due to increasing numbers of reconnects by have-been and will-be-again banned users. Don't worry about large banlists. Opennap NG is well suited to deal with 10 000, 20 000 or more ban entries without noteworthy performance loss. Messages are currently hardcoded in the server source code and are not customizable.


Ban type: file limits
Since version: Opennap NG 0.45
Description: A client is not sharing enough files to be allowed to stay in the network.
Ban time variable: eject_ban_ttl
Trigger: eject_limit_files, eject_limit_libsitze, eject_leeches, eject_when_full, min_file_size, max_file_size, ascii_filenames_pct, REs of class blocked, REs of class must match
Recommended TTL:    6, 12, 24 or 48 hours
Ban message: You shared less than x files or y GB (n files/z GB)
Verbose message: You have to share at least x files or y GB to stay on this server but you only share n files and m GB!
Regard that the server doesn't accept files smaller than k KB, and certain file types considered useless
may be blocked by server rules as well. Please upgrade your set of shared files if you want to return.
You will be banned for z hours.
   
Ban type: login flood
Since version: Opennap NG 0.60
Description: A client is disconnecting and reconnecting frequently, potentially flooding the server with filelist uploads
Ban time variable: max_login_ban_ttl
Trigger: max_login_count, max_login_time
Recommended TTL:    3, 6, 12 or 24 hours
Ban message: Trouble? x logins in y minutes! Fix your connection problems!
Verbose message: This is your x th login within y minutes! You either seem to be having network or configuration trouble
or attempting to flood the server! Fix your problems. You will be banned for z!"
   
Ban type: whois flood
Since version: Opennap NG 0.49
Description: A client is whois'ing other clients in great numbers. This wastes server resources and often indicates freeloaders.
Ban time variable: max_whois_ban_ttl
Trigger: max_whois_count, max_whois_time
Recommended TTL:    12, 24 or 48 hours
Ban message: Excessive whois'ing: x in y min.! No automated user scans here!
Verbose message: Your client issued x whois requests within y minutes! This is regarded server flooding and user espionage!
Tools doing so inherently, like MXMonitor, are PROHIBITED (not allowed) on this server!
Configure your client to stop emitting whois requests in masses! You will be banned for z hours!
   
Ban type: command flood
Since version: Opennap NG 0.49
Description: A client is flooding the server (issueing too many commands in too short time).
Ban time variable: max_whois_ban_ttl
Trigger: flood_commands, flood_time, flood_eject
Recommended TTL:    6 or 12 hours
Ban message: Flood: x tags in y min! (n searches, m requests)
Verbose message: You were flooding the server: more than x requests in y seconds (z total), n times.
Reduce your activity, i.e. number of file searches or download requests
if you want to come back. You will be banned for m hours!
   
Ban type: too many blocked files
Since version: Opennap NG 0.49
Description: A client shares a too high percentage of files which are blocked
Ban time variable: max_block_pct_ban_ttl
Trigger: max_block_pct
Recommended TTL:    1, 2 or 3 days
Ban message: Shared too many blocked files (x%) y of z files
Verbose message: x percent of the files you wanted to share here were rejected by the server due to block rules!
This suggests you are trying to share a huge amount of needless or illegal crap! This isn't tolerated here!
You will be banned for %.1f hours! Correct your shares if you want to come back!
   
Ban type: upload port not open
Since version: Opennap NG 0.60
Description: A client which announces an open upload port was scanned and the upload port couldn't be accessed, hence making that client a freeloader.
Ban time variable: portscan_ban_ttl
Trigger: portscan_notify
Recommended TTL:    12, 24 or 48 hours
Ban message: Your port x is closed, you're a freeloader! Fix your config!
Verbose message: Your TCP port x can't be connected! However, your client is configured to invite other clients to connect to it!
This way other clients can't download anything from you and hence you are a freeloader, either accidentally or on purpose!
Open your port (adjust your firewall?) or configure your client to operate in firewalled mode (port 0)!
Since this sort of disguised freeloading isn't tolerated here you will be banned for y hours!
   
Ban type: shared criminal files
Since version: Opennap NG 0.60
Description: A client attempted to share files which match criminal class block expressions.
Ban time variable: criminal_ban_ttl
Trigger: REs of class criminal
Recommended TTL:    1 week
Ban message:  
Verbose message: You were attempting to share one or more files on this server which are regarded criminal!
You are banned for x hours! Clean up your shares if you want to return after that!
   
Ban type: invalid searches
Since version: Opennap NG 0.60
Description: A client attempted to search for terms which match invalid search class block expressions.
Ban time variable: invalid_search_ban_ttl
Trigger: REs of class invalid searches
Recommended TTL:    1, 2 or 3 days
Ban message: No searching here for x!
Verbose message: You were searching for terms which are considered invalid by the server owner,
either due to legal reasons or because of potential perversity!
You will be banned for x hours. Cancel your invalid searches if you want to stay here after that.
   
Ban type: Mods+ ignore
Since version: Opennap NG 0.45
Description: A client was ignoring a mod+.
Ban time variable: discipline_ignorers_ban_ttl
Trigger: discipline_ignorers_ban_ttl
Recommended TTL:    1 week
Ban message: Don't ignore a Mod+ ever again!
Verbose message: You are ignoring a moderator, admin or elite of this network! This is prohibited!
Moderators and above are staff members. They manage or own servers or the network.
You have to listen to them carefully and obey their orders if you want to stay on this network!
Blocking any download requests from staff members is not acceptable either.
For this significant violation of server rules you will be banned for x hours.





ChanServ


You can administer chat channels either by using your client's built in functions, or by sending private (instant) messages to the user ChanServ. Note that most all of the following that actually affect the channel require the user issuing the command to be a channel operator.


ban /msg chanserv ban #channel nick ["reason"]
  Places a ban on channel such that nick is prevented from joining. You can optionally give a reason for the ban that will be displayed to the user (Note: if you specify the reason, it must be quoted with double-quotes (") or else the server will only show the first word of the reason).

banclear /msg chanserv banclear #channel
  Removes all bans from the channel.

banlist /msg chanserv banlist #channel
  Displays the list of bans for the channel. Note: this does not work for the official Windows Napster client since it doesn't have support for displaying it.

clear /msg chanserv clear #channel
  Kicks all users in the channel out of the channel, only leaving yourself.

deop /msg chanserv deop #channel nick
  Removes user nick as a channel operator and makes him/her a normal channel user.

help /msg chanserv help
  Displays a summary of all available commands.

invite /msg chanserv invite #channel nick
  Send an invitation to user nick allowing them to join a channel which is set +INVITE.

kick /msg chanserv kick #channel nick ["reason"]
  Kick user nick out of the channel. A reason can optionally be given. Note: if reason is given, it must be quoted with double-quotes (") or else the server will only display the first word.

level /msg chanserv level #channel [level]
  Displays / sets the minimum required user level to be allowed to join a channel.

limit /msg chanserv limit #channel [numusers]
  Displays/sets the maximum number of users allowed to join a channel.

mode /msg chanserv mode #channel [mode [mode ...]]
  Displays/sets the channel mode. If no modes are given, it returns what the current channel mode is. Acceptable modes are:
TOPIC allows any user to change the channel topic (normally only channel operators are allowed)
MODERATED  only channel operators and those who have been given channel voice can speak
INVITE users must be invited before allowed to join
PRIVATE makes the channel not show up in the server's channel list
REGISTERED  (mods+ only) makes the channel persist even when no users are present in the channel, and disallows channel operator to the first user that joins it.

To set a channel mode, prefix it with a plus-sign (+). To unset a channel mode, prefix it with a minus-sign (-). You can specify however many different modes on the same command as you like.
muzzle /msg chanserv muzzle #channel nick
  Prevent user nick from being able to send messages to the channel.

op /msg chanserv op #channel [nick [nick ...]]
  If no nicknames are given, it returns a list of the current channel operators. If given one or more nicknames, each user will be given channel operator status (and thus the ability to execute any of the other channel admin commands).

topic /msg chanserv topic #channel [topic]
  Display / set the channel topic.

unban /msg chanserv unban #channel nick
  Remove channel ban against nick, allowing him/her to join the channel again.

unmuzzle /msg chanserv unmuzzle #channel nick
  Allow a previously muzzled user to send messages to the channel.

unvoice /msg chanserv unvoice #channel nick
  Remove the ability to speak in a +MODERATED channel.

voice /msg chanserv voice #channel nick
  Give the ability for a user to speak in a +MODERATED channel

wallop /msg chanserv wallop #channel text
  Send a message to all channel operators on the channel (that is not seen by other users in the channel).


NickServ


NickServ
is a pseudo-user which provides access to registered user accounts. You can /msg (or /tell) it with the following commands.

ghost /msg nickserv ghost user password
  This command allows you to kill a ghost which is holding your nickame so that you can log in again. user is the nick which is ghosting, and password is the password for that account.

register /msg nickserv register password
  Allows a user to register a nickname that has not been previously registered, such that no other user may use the nickname without the corresponding password.

usermode /msg nickserv usermode [flags]
  See usermode.


OperServ


OperServ
is a pseudo-user which allows mods+ level users to execute server administration command. This is primarily intended for those clients which do not have built in support for these commands, but there is no restriction on its use.

add_server /msg operserv add_server <hostname> <their_pass> <my_pass> <port> [alias]
  Adds a temporary server to the servers list

cloak /msg operserv cloak
  Toggles invisibility to normal users. When cloaked, normal users do not see your real nickname when you perform actions such as kill, ban, etc. Instead, it will display Operator. Other mods+ users still see the real nickname.

config /msg operserv config var [value]
  Display / set a server configuration variable. When value is missing, OpenNap-NG displays the value of var. If value is specified, it sets the configuration variable.

connect /msg operserv connect server [remote_server]
  Links the server running on server. If remote_server is specified, it tries to make a connection from remote_server to server instead of from the local server.

disconnect /msg operserv disconnect server
  De-links a server from the cluster.

killserver /msg operserv killserver server
  Causes the specified server to shut down (terminates the OpenNap-NG process).

links /msg operserv links
  Display a list of all linked servers.

list_server /msg operserv list_server
  Display the servers file, the list of known servers.

reconfig /msg operserv reconfig var
  Resets the configuration variable var to its default value.

rehash /msg operserv rehash [server]
  Causes the server to reload its configuration files.

server /msg operserv server nick
  Displays which server a particular user is logged in through.

stats /msg operserv stats server
  Displays stats about the server (uptime, bytes send/recv'd, etc).

userflags /msg operserv userflags Nick FLAG
  Change userflags of a user. Flags can be Friend or None.

usermode /msg operserv usermode [mode [mode ...]]
  Toggles the various server messages. Each message the server sends to mods+ is given a type so that if you don't want to see a particular type of message, you can simply turn it off and still see the other messages.

ERROR error messages
BAN server-wide ban messages
CHANGE messages about user info being modified (password, etc.)
KILL notifications when users are killed
LEVEL notifications when a user's level is changed
SERVER server link messages
MUZZLE notifications about users being muzzled
PORT notifications about user's data ports being changed
WALLOP messages from other mods+
CLOAK messages about mods+ being cloaked
FLOOD server flood protection messages
PING server ping messages (for lag detection)
MSG private (instant) messages
WHOIS whois notifications

To stop messages of a particular type, simply prefix the mode with a minus-sign (-). If you wish to only see a particular subset of messages, specify the ones you want with no prefix. You can also use the keyword ALL in conjunction with -<MODE> if you want "all but..."

whowas /msg operserv whowas nick
  Displays information about a user that has recently logged out. Information is kept cached for who_was_time seconds.




User levels


Each user on a OpenNap NG server has a level associated with them that tells the server which commands it may execute. When you first log into a server, you start out at level User. Userlevels are changed via a client command. The exact way is client-dependent, please consult the documentation of your client software how to accomplish it. For instance, in Lopster the command to enter at its chat page is /level <username> <level>. Userlevels can bet changed by Moderators, Admins and Elites only. Moderators can just change userlevels between User and Leech, Admins can additionally promote users to Moderators and Elites can set any user to any level. The following user levels are defined by Opennap NG


Level Num.   Description
Leech 0 Leech is a term for someone who is a freeloader. This is the lowest user level of Opennap NG and is given to those users which are misbehaving in some way. Leeches can't do the following things:
  • download files from other users
  • join chat channels
  • send messages to chat channels
User 1

A user is a plain-old-joe. This is what the vast majority of users are. Users may do the following:

  • offer lists of files they share
  • search for files from other users
  • download files from other users
  • upload files to other users
  • send PMs to other users or Mods+
  • join existing chat channels
  • create new chat channels (only if strict_channels is off)
Moderator    2 A moderator, or "mod" for short, has the ability to execute some of the administrative functions on the server. Moderators are especially responsible for keeping the order in chat channels and remove disturbing or otherwise misbheaving users. Moderators are assigned by Admins and Elites. A moderator can:
  • kill - disconnect other users from the server
  • muzzle - prevent other users from sending messages to chat channels or joining channels
  • ban - prevent users from logging into the server
  • change data port - reset the data port your client listens on for file transfers
  • announce - send a message to all users
  • wallop - send a message to all mods+
  • setuserlevel - change a user's level
In addition, moderators have the ability to execute all ChanServ functions to adminster chat channels.
Admin 3 An admin is a special user level which allows you to execute all of the moderator functions, plus the following:
  • link a server
  • disconnect a server
  • give moderator status to other users
  • read (but not write) server configuration variables
Elite 4 An elite user is generally a server owner (the person who actually runs the OpenNap-NG software on their computer). They can basically do whatever they want. Don't step on their toes, these are the people providing you the service!






Stats output


Opennap NG 0.60 comes with a completely rewritten and heavily improved stats output feature. Stats can be emitted to both the configured log channels and a special live stats file. The latter is updated more frequently, usually every 5 to 10 seconds (see variable live_stats), and is used for nearly instant monitoring of server state. It can be directly output via cat command (on Unix) or be used for other, possibly GUI tools to present the current server stats.

On Unix, a typical shell command sequence to watch live stats is the following. You should have a terminal with at least 80x50 text resolution. Higher resolution, especially more rows, are beneficial.
    watch -n 5 cat opennap-state.txt \| head -n 47
You may use head and tail commands with varying numbers to adjust excerpts of the stats file you're particularly interested in. This only works on Unix shells. For Windows there is currently no equivalent for auto-updating the stats from the stats dump file available.

Compared to <= 0.49 stats format, many new output fields were added. Some of them may help you optimizing performance of your server by adjusting settings. Others may be just interesting to watch. Stats are divided into 10 groups (time, user, file, mem, load, traf, srch, chat, dcon, rejc). For the stats output into the log targets (log channel, log file or stdout), stats groups can be enabled or disabled in any combination. The special live stats file is always filled with all available stats groups. A full stats output looks like this:

time: --- Server state dump --- delta:   5 seconds -----------------------------------
time: current time:          Wed May 18 19:26:31 2005  (1116437191)
time: server start time:     Wed May 18 09:24:44 2005  (1116401084)
time: server uptime:         0 days, 10 hours, 1 minutes, 47 seconds (36107 seconds)
user: local users:           1055         d: -3      (100%)
user: global users:          1055         d: +0      Avg. clones: 0.06
user: users uploading:       88           d: +2      (8%)
user: total connects:        67542        d: +11     2 / sec.
user: successful logins:     21299        d: +4      0 / sec.  registered: 1122
user: total disconnects:     70046        d: +14     2 / sec.  IP addr.    999
user: number of ban entries: 4406         d: +0      IBL: 274  d: +0
user: client portscans:      3556         d: +0      0%%  current: 1
user: firewalled clients:    548          d: +1      51%%
user: entries in flood list: 0            d: +0      Whowas list: 1246    d: +0
file: local files count:     1078100      d: +1262   +252   / sec.  (100%)
file: global files count:    1078100      d: +1262   +252   / sec.
file: local library in MB:   27252648     d: +23777                 (100%)
file: global library in MB:  27252648     d: +23   
file: files shared:          7857418      d: +2273   454 / sec
file: files unshared:        6042634      d: +743    148 / sec
file: files blocked:         640106       d: +258    (8%)
file: avg. files / user:     1020         d: +4      MB/file: 25885    d: -7    
file: download requests:     99263        d: +20     4 /sec
file: downloads committed:   160562       d: +31     6 /sec  (161%)
file: entries in file table: 283092                  mallocs per file: 9.1
mem : VmSize reported by OS: 405972   KB  d: +0      wasted RAM: 30%
mem : currently allocated:   283128   KB  d: +255    KB        MemOps/sec: 5584
mem : current allocations:   9849224      d: +8822   average chunk size: 29 bytes
mem : total allocations:     65619730     d: +18373  total frees: 55770506 d: +9551
mem : average KB per user:   268                     bytes/file:  268    
load: CPU load factor:       0.87         d: +0.01   freezes: 0   delta: +0
load: tags processed:        6380128      d: +1866   373    / sec.
load: I/O syscalls:          19201397     d: +4731   946    / sec.
traf: total KB incoming:     969310       d: +309    B/sec:  63447 
traf: total KB outgoing:     110215       d: +23     B/sec:  4772   ratio: 1:8.8
traf: avg. user throughput:  46601        bytes in   5298     bytes out
traf: server based browses:  4208     KB  27422      files   41 browses
srch: searches processed:    185211       d: +26     Search/sec:  5
srch: results delivered:     339995       d: +107    avg. results/search: 1.8
srch: kilobytes delivered:   55433        b/result:  166    b/search: 306
srch: filtered searches      52           d: +0      0%
srch: filtered keywords      838          not found: 0
srch: searches pending:      0            expired:   0         cancelled: 0   
chat: public messages:       0            d: +0      channels:    4
chat: private messages:      119          d: +0      ignored:     1  (0%)
chat: winmx wantqueue waste: 92           d: +0      (77%)
dcon: disconnect reason 1:   1899         d: +1      (2%) no more data
dcon: disconnect reason 2:   12469        d: +2      (17%) login rejected
dcon: disconnect reason 3:   564          d: +0      (0%) ghost kills
dcon: disconnect reason 4:   711          d: +0      (1%) server rules
dcon: disconnect reason 5:   0            d: +0      (0%) can't send to
dcon: disconnect reason 6:   93           d: +0      (0%) login timeout
dcon: disconnect reason 7:   437          d: +0      (0%) ul port closed
dcon: disconnect reason 8:   1506         d: +1      (2%) connection resets
dcon: disconnect reason 9:   1861         d: +0      (2%) timeouts
rejc: login reject reason 1: 0      server is full      51     connecting too fast
rejc: login reject reason 2: 38     too many clones     8646   user is banned
rejc: login reject reason 3: 0      already logged in   33     already registered
rejc: login reject reason 4: 1568   invalid nick        2      invalid client
rejc: login reject reason 5: 2166   invalid password    0      admin connect only
rejc: login reject reason 6: 0      invalid line speed  0      invalid port
rejc: login reject reason 7: 0      restricted server   0      auto-register off
rejc: login reject reason 8: 0      wrong parms client  0      wrong parms server


The following table describes the available output fields and their group belongings. The column "delta" indicates whether for particular stats values deltas are shown or not. Deltas are simply the differences of values between current and previous stats emission. They can be understood as a trend indicator.

Name Delta  Description
section: time
current time - The current time (time when this output was created) in a verbose plain text format, including day of week, date, time and the Unix time number (seconds since midnight 1970.1.1)
server start time - The time when the server was started, also in a verbose plain text format, including day of week, date, time and the Unix time number (seconds since midnight 1970.1.1)
server uptime - Time this server is running without any restart, given in days, hours, minutes, seconds and total number of seconds.
 
section: user
local users Yes The number of users currently being connected to this server. Followed by a percentage value which indicates how many percent of users of the entire network are on this server.
global users Yes The number of users currently being connected to all linked servers of this network.
avg. clones - The average number of clones connected to this server. This is simply the number of locally connected users divided by the number of different IP addresses used by clients, minus 1. For instance, if you have 240 users connected but only 200 different IP addresses are used by them, the average number of clones would be 0.2.
users uploading Yes The number of users who are currently flagged as uploading file lists, i.e. pumping data into your server. This number isn't quite precise. It's usually higher (by 5% - 20%) than the actual number of users uploading, since this flag is only reset if clients start doing anything else (searching, requesting downloads, chatting) after uploading their list. If a client just uploads a list and remains inactive after that, the flag isn't reset for that one. The percentage value indicates how many percent of locally connected users are currently flagged uploading.
total connects Yes This is the number of total connect attempts to this server by all clients. This includes both rejected connecvtions and successful logins. Also shown is the number of connect attempts per second.
successful logins Yes This is the number of connect attempts to this server which succeeded (weren't rejected).
registered - The number of registered users (entries in file opennap-users.txt).
total disconnects Yes This is the total number of disconnects from this server. It includes both rejected logins and connections from successful logins which ended. Also shown is the number of disconnects per second.
IP addr - The number of different IP addresses from which clients are currently being connected to this server. This number is usually a bit smaller than number of local users, indicating that from some IP addresses multiple clients are connected to the server.
number of ban entries Yes This is the number of user entries which are currently banned from this server.
IBL Yes This is the number of users which are currently listed in the IBL of this server.
client portscans Yes The total number of portscans (TCP connect attempts to the ports being announced open by clients).
current - The current number of pending TCP connect attempts to clients, accompanied by a percentage value, indicating how many percent of connected clients are currently being portscanned.
firewalled clients Yes The current number of locally connected clients which are configured being in firewalled (port 0) mode. Those clients will never be portscanned as this setting is rather failsafe in terms of enabling others to download from them. Also shown is the percentage of locally connected clients in firewalled mode.
entries in flood list Yes The current number of clients which are under observation due to flooding events. Searaches and download requests by users being in the flood list are ignored.
whowas list Yes The number of entries in whowas list. These are clients which disconnected recently. Infos about them can be queried by the whowas command for some time.
 
section: files
local files count Yes The number of file infos this server is serving currently. Also shown are the number of files which have been shared or unshared per second and the percentage value which indicates how many percent of all files of the network are hosted by this server.
global files count Yes The number of file infos currently being available in the network of all linked servers. Also shown is the number of files which have been shared oir unshared per second network-wide.
local library in MB Yes The number of Megabytes all listed files on this server sum up to. Also shown is the percentage value which indicates how many percent of MB of the network are hosted by this server.
global library in MB Yes the number of Megabytes all listed files in the entire network sum up to.
avg. files / user Yes The average number of files each user shares
files shared Yes The total number of all files ever being (or being attempted to be) shared on the server. Also shown is the average rate of incoming file share requests per second.
files unshared Yes The total number of all previously shared files ever being unshared (removed from the server). Also shown is the average rate of incoming file unshare requests per second.
files blocked Yes The total number of files that clients were attempting to share but which were blocked by the server due to one of the various rules. Also shown is how many percent of all files being attempted to be shared were blocked.
avg. files / user Yes The average number of files each user shares.on this server
MB/file Yes The average size of files shared on this server in MB
downloads requested Yes The total number of download requests issued by clients on this server. Also shown is the number of requests per second.
downloads committed Yes The total number of committed uploads by clients (in response to download requests of others). Also shown is the number of committed transfers per second and the percentage value which indicates how many percent of requests were committed.
entries in file table - How many different file entries the server currently maintains.
mallocs per file - The average number of distinct malloc calls (memory objects) each shared file consumes. This is mainly affected by the average length of file names (including paths) and the number of tokens into which those filenames are to be split.
 
section: mem
VmSize reported by OS Yes The total amount of accessable RAM space the OS has currently assigned to Opennap NG. Due to overhead of the OS memory management this value is usually signifcantly higher than the actual amount of memory requested by Opennap NG. This value is available only on certain Unix systems.
wasted RAM - The percentage of currently wasted RAM. That is RAM the OS has assigned to Opennap NG which actually isn't used (wasn't requested) by Opennap NG. Reason for this waste is overhead / inefficency of memory management by the respective OS. Commonly this value is between 25% and 35%. On a server with more users disconnecting than connecting it is even higher. The value doesn't seem to ever fall below 20%. This value is available only on certain Unix systems.
currently allocated Yes The actual amount of RAM being allocated by Opennap NG, by calls to malloc () or similar functions.
MemOps/sec - The average rate of both memory allocation and deallocation function calls per second.
current allocations Yes The number of currently allocated memory objects of all sorts by Opennap NG.
average chunk size - The average size in bytes of allocated memory objects.
total allocations Yes The total number of calls to malloc () and similar functions by the server while it has been running
total frees Yes The total number of calls to free () by the server to release memory objects while it has been running
average KB per user - The average amount of RAM in KB each connected user consumes
bytes/file - The average amount of RAM in bytes each listed file consumes
 
section: load
CPU load factor Yes The CPU load factor as traditionally calculated by the OS. 0.00 means the CPU is idle and 1.00 (in theory) means the CPU is busy. However, this is a very imprecise value. It doesn't reflect the CPU utilization of Opennap NG but of all running processes of a system. It may well raise (far) above 1.00 with neither Opennap NG starting to lag noteworthy nor the CPU being actually utilized 100%. This value is available on some Unuix systems only.
freezes Yes The total number of times the server was very busy in the depths of its subroutines, hence not responding and lagging. This value will be maintained only if the server was compiled in Debug mode.
tags processed Yes The total number of tags (client requests or commands of all sorts) the server has been processing since start. Also shown is the average rate of tags per second the server is currently processing. A good rule of thumb to calculate system load by this value is that there should be one MHz of clock speed for every tag per second. I.e., a server frequently processing 500 tags per second should run on at least a 500 MHz machine. However, peaks of limited duration above this margin are harmless.
I/O syscalls Yes The total number of core input / output syscalls the server has been issuing. This refers to calls to read() / receive(),. write() / send() and poll() / select(). Also shown is the current average rate of syscalls per second. A good rule of thumb to calculate system load by this value is that there should be one MHz of clock speed for every three system calls per second, i.e. a server frequently processîng 1500 system calls per second should run on at least a 500 MHz machine. However, peaks of limited duration above this margin are harmless.
 
section: traf
total KB incoming Yes The total number of KB the server has received from the internet via all of its connections. Also shown is the current average rate of incoming data in bytes per second.
total KB outgoing Yes The total number of KB the server has sent to various internet connections. Also shown is the current average rate of outgoing data in bytes per second. Note that Opennap NG reports net values only, that is, just the amount of all byte sequences being sent via write() / send() syscalls. If you check these values via an independent facility, i.e. a firewall or external traffic monitor, you may be reported significantly higher values. This is because external traffic measurements usually refer to gross values only. The difference is the overhead of TCP and IP packaging of data being sent by Opennap NG. There is no way for the server to correctly determine this overhed and show correct gross values.
avg. user throughput - The average number of bytes each user has sent to and received from the server while he was or is connected. usually the server receives much more data from users than it sends back.
server based browses - The total amount of file data in KB which has been sent to clients in response to server browse requests.
files - The total number of file informations which have been sent to clients in response to server browse requests.
browses - The total number of server browses being processed by the server
 
section: search
searches processed Yes The total number of client file search requests this server has been processing since its start. Also shown is the current average rate of processed searches per second.
results delivered Yes The total number of file entries being returned to clients in response to search requests.
avg. results / search - The average number of file results a search yields on this server.
kilobytes delivered Yes The total amount of KB sent to clients containing file information of search results
b/result - The average number of bytes being sent to clients per file search result
b/search - The average number of bytes being sent to clients per file search
filtered searches Yes The number of searches which weren't processed because they contained no valid keywords
filtered keywords - The number of keywords the search filter list currently contains.
not found - The number of searches which produced no results
searches pending - The number of pending searches being issued on remote servers
expired   The number of searches which didn't yield results from remote servers in time
cancelled   The number of searches which were cancelled whiole being processed by remote servers
 
section: chat
public messages Yes The total number of public messages being sent by any client in any chat channels since server start
channels - The current number of existing chat channels
private messages Yes The total number of private messages being sent by any client to any other client since server start.
ignored - Total number and percentage of private messages being ignored by recipient.
winmx wantqueue waste Yes Number and percentage of those private messages which are actually no user to user communication but being sent by the WinMX client while excercising its custom protocol violation to privilege other WinMX clients. In other words: those messages are a nuisance. They (and the privileges) can be suppressed b the break_mx_queue variable.
 
section: dscon (disconnect reasons)
1: no more data Yes Connection failure. The OS signaled the connection to be readable but a read() call didn't yield any data.
2: login rejected Yes A connection was established and a client was about to login but it was rejected for any reason.
3: ghost kills Yes A client connection has been killed because another client using the same nick (and optionally correct password) is just logging in.
4: server rules Yes Client ejection due to violation of server rules
5: can't send to Yes Connection failure. The client queue was full but data couldn't be delivered to the client.
6: login timeout Yes A connection was established but no proper login occurred in time. This may indicate portscans by non-clients.
7: ul port closed Yes On being portscanned the announced upload port of a client has been found not reachable (closed).
8: connection resets Yes The client just terminated the connection. (Available in poll() mode only)
9: timeouts Yes Connection failure. A TCP timeout occurredand rendered the connection invalid. (Available in poll() mode only)








Clients


The following is a list of known clients to support the Opennap NG server. Part of the administration of Opennap NG is carried out via clients. The bold entries are recommended clients, as they are


Operating system Client Remark
Amiga Amster  
Apple Macintosh Drumbeat  
  Xnap Best featured platform-independent client (Java)
BeOS BeNapster  
Linux AutoNap Perl
BitchX IRC napster plugin
Gnap Project closed
Gnapster  
Gnome-Napster Project closed, use Lopster instead
GTK Napster Project closed, use Lopster instead
Knapster Project closed
Lopster Best featured and supported Linux GUI client (GTK+)
Nap Command line client
TekNap Formerly called BWap, standalone console Unix client based on bx-nap plugin for BitchX
Xnap Best featured platform-independent client (Java)
iNapster WWW interface
OS/2 Napster/2  
PMNapster Project closed
Warpster  
QNX Phaster  
RiscOS Riscster  
Windows AudioGnome  
CQ_EX  
Dagsta  
Duskster Perl
FileNavigator  
Hackster  
Lopster (WinLop) Windows port of the famous Lopster Linux client
Lopster Ramadev Italian Windows port of Lopster
NapAmp  Napster plugin for WinAmp
Napster Historical, meanwhile uses different protocol and software and has revived as a pay per transfer service
Napster Fast Search  
Rapigator  
Shuban  
Spotlight  
SunshineUN  
Swaptor  
WinLop Windows port of the famous Lopster Linux client
WinMX  
Xnap Best featured platform-independent client (Java)
Platform-independent: Jnapster Java
Jnap Java
MyNapster Webclient  
WebNap PHP
Xnap Best featured platform-independent client (Java)
Xnapster Java






Glossary


Admin     A privileged user level, usually assigned to members of network staff only.

Bitmap (variables)   Bitmap variables are essentially integer variables. Their values are numbers. However, these values are interpreted in a binary fashion by the server. Usually each single bit of a bitmapped value enables or disables a particular item. Hence, a bitmap variable can be thought of multiple boolean variables (on/off-switches) in one variable. Calculating the correct value to represent a given bitmap pattern requires some mathematical skills and knowledge about binary numbers representation. People lacking these should use the Opennap NG GUI config tool to adjust bitmap variables, as it offers a much more convenient interface to calculate bitmap values. Here is just a short example of how to set them: bitmap variables always have pairs of numbers and items listed in their description. For instance, a bitmap variable may feature the four items A, B, C and D, to be independantly enabled or disabled. The associated numbers would be 1, 2, 4 and 8. (For each item the numbers are doubled.) To enable B and D just add the associated numbers, i.e. 2 + 8. The result (10) enables B and D and disables A and C.

Boolean (variables)   Booleans are variables that can take only two values: on or off. Hence they can be thought of as simple switches. In the config file, the values can be written as either "1", "on", "yes" (for on) and "0", "off", "no" (for off). Bitmap variables are a more complex variation of boolean variables, combining multiple related boolean switches into one variable.

Bot   Bots are scripts (programs), mainly being used in the context of chat channels. They appear like normal users but usually run autonomous. Their complexity and purpose is highly variable. Some useful bots perform housekeeping duties, like detecting and ejecting channel flooders, greeting other users, attempt to start or manipulate discussions, offer helpful services like emitting server or channel statistics, acting as a chat gateway between different networks or provide some world news on request. Those bots are usually authorized or put in place by Mods+. However, there exist also evil bots, which are usually not authorized. Their most common intentions are either flood attacks of some sort or annoying people in chatrooms or via PM. Technically, bots are implemented via clients with scripting capabilities. For the Napster protocol this is mainly the TekNap client.

Channel operator   A channel operator, also known as a chanop or just op, is a user that is allowed to administer a chat channel. See ChanServ for a list of available commands. Channel operators have no special privileges outside of the channel they are opped in. Channel operator status is given either when a user is the first user to join a chat channel, or another channel operator makes a user a channel operator using the op command. All channel operators are equivalent, meaning that if you op a user, they can immediately deop you (remove your channel operator privilege). Note that being a channel operator is not a user level. Most channel operators are only normal users.

Client browse

  Synonym for direct browse, opposite of server browse.

Clones   Usually each user who connects to a server has its own, distinct IP address. If multiple users with the same IP address connect to a server they are referred to as clones. A great number of clones from the same IP address can often be regarded a simple form of DoS attack, as each clone consumes one of the limited connections. With the max_clones setting Opennap NG offers to limit this sort of abuse. However, some users and especially Mods+ may wish to use at least one other clone without hostile intentions, maybe to test a secondary client, run a bot or because they have much more than max_shares files to offer and hence want to use two connections to offer separate collections of them. So accepting at least one clone (setting the variable to 2!) usually isn't a bad idea. If only higher user levels like Mods+ should be granted clones then the setting clones_allow_level should be used.

CVS   Concurrent Version System, a software system to allow multiple developers to work on a software packages, concurrently submit changes and track version history. Ordinary users are able to obtain any version of a software package from the entire version history tree via CVS. CVS is used by SourceForge for version controlling of and access to various software packages, including Opennap NG.

(Server) desync   If two or more servers are linked together to form a network they need to maintain a consistent state, that is, know which users are connected, what files are listed etc. It is possible that occasionally this consistency is lost for some reasons, i.e. server splits, floods, freezes or software bugs. If this happens, the results may be confusing for some users. For instance, a user may appear connected (visible) from one server but not connected (invisible) from another server of the same network. This is especially irritating when userswho want to chat in channels are affected. Similar inconsistencies apply to file lists. Servers can be resynced by manually unlinking and relinking them. Opennap NG versions prior to 0.49 are known to have contained a software bug which effectuated desync inconsistencies.

Direct browse   Opposite of server browse, also referred to as client bowse. A client who wants to retrieve the entire filelist of another user directly connects to that other user's client and receives the filelist from it. The server only mediates the request but isn't involved in the actual list data transfer, hence, no server bandwidth is consumed. Direct browses allow to retrieve the entire fileset of other users, even blocked files which were not accepted and aren't listed by the server. Direct browses are an advanced feature of the protocol which isn't supported by all clients. Both clients being involved have to support direct browse, otherwise server browse is used automatically. Since they save server resources, are faster and uncensored, direct browses are preferred over server browses.

DoS   Denial of Service, a common result of flood attacks against internet servers of all kinds. A large number of requests is sent to the server with the intention to overload it, cause it to freeze or crash. Opennap NG contains various settings to control possible flood attacks and limit their effects. No harmful large scale DoS attacks against Opennap NG servers have been reported so far.

Elite   Highest user level supported by Opennap NG. Usually only assigned to server owners.

Flood / flooding   If a client issues a large number of requests of any kind to the server, this is referred to as flooding. This isn't necessarily a hostile act. Some users simply issue a lot of searches or request a great number of file downloads, or even accept a great number of file uploads. In case of ghost kill deadlock floods the corresponding clients are usually misconfigured. If, however, a client starts to issue senseless, random or even disturbing requests in large numbers, intending to provoke a DoS, this is to be regarded a flood attack. Flood attacks, as well as non-hostile floodings, can cause the server to freeze (hang) or even crash. For this reason Opennap NG supports a number of settings to detect and deal with floods. It's generally up to the server owner to decide, how many requests in a given period are to be considered unblamable and from which number of requests on flooding is to be assumed.

Freeloader   A user who intends to download a significant number of files without offering own files in return. In other words: they take but refuse to give. Freeloaders share either very little or nothing or crap only when connecting to a server, or they block uploads to other users who request files from them. Freeloaders are often leeches as well, so these two terms are commonly used interchangably. Most server owners won't want to have freeloaders on their system. Freeloaders of the first sort can automatically be dealt with by settings like eject_when_full, eject_limit_files, eject_limit_libsize, min_file_size and the opennap-block.txt file.

Freeze   A server which is not responding to any requests, often because it's overloaded and still processing previous requests or experiences internet connection trouble. Freezes can last from a few seconds to several minutes. In most cases the server CPU will be utilized to 100% for these periods. Most freezes are of temporary nature, i.e. the server doesn't crash and will return to business. However, for the time the server freezes especially chatting users experience a severe lag.

Friend   A Friend is a user that can join the network at any time, even when the server is full and normally wouldn't accept any more logins by users. Friends are assigned by Mods+. With /msg operserv userflags USERNAME Friend you can give this status to any user. Important: For the Friend Flag the user must be a registered user at your network. For Mods+ the Friends flag has no meaning as they are allowed to login any time anyway.

Ghost   A ghost is a user whose connection to the server is lost without the server getting to know about this. Normally, when a user disconnects intentionally, the server receives a corresponding disconnect message from that client and immediately knows the user has left. It's a common symptom of dial-up or DSL internet connections of clients or unreliable or faulty network connection of the server that sometimes connections may break without the server getting informed about it. As a result, the server still believes the user is connected, while he is actually not. Those users are referred to as ghosts. Ghosts always stay silent and the actual user doesn't get anything of what is written to him in either public channels or via PM. Since becoming a ghost is almost always an involuntary and unexpected event, the actual user will most likely be trying to reconnect to the server. The user normally won't succeed, because the server believes the user is already and still being connected. Without ghost kill enabled the user would have to wait something between 10 and 30 minutes to be able to reconnect, until the server eventually realizes the connection is dead. This can be very annoying for users and confuse others, especially if the user was chatting when he became a ghost or when others are requesting files from a ghost. Those requests will stay unanswered on ghosts. Ghost kill turned on enables the user to immediately reconnect, despite the server believes he is already being connected. The existing, actually dead, connection will be removed and the user will be allowed to reconnect. Also, turning on ghost kill can save a tiny amount of server resources. Without ghost kill enabled the user will be trying to reconnect again and again, producing quite a bit of wasted incoming traffic and processing power of the server. This can be conserved if the user will be able to immediately reconnect. Most but not all ghost kills come along with a change of the IP address of the user. See also: ghost kill deadlock.

Ghost kill deadlock   Users who keep connecting and getting (ghost)killed by the server rather frequently, about once or twice per minute, are experiencing a ghost kill deadlock. All of them can only happen if ghost_kill is enabled. There are three possible reasons for this: 1. misconfigured clients (most common), 2. nick collisions, 3. flood attacks. Misconfigured client here refers to outdated server lists or server lists filled with wrong data. Only clients which support concurrent connections to multiple different networks are affected by this. Any given nick may connect only once to a network. It is possible that in the client's server list two servers appear as belonging to different networks while they actually belong to the same network. This may happen since servers sometimes change their network affiliations indeed. So the client believes it is attempting to connect to two different networks concurrently (which would be okay) while it is actually attempting to connect to two servers of the same network all the time. If both connection attempts use the same nick then the second successful connect will always eject the first successful connect. Usually the first one will immediately start to reconnect again, then ejecting the second one, and so on. Countermeasures: true nick collisions can be avoided / stopped if the affected nick gets registered by one of its users or a Mod+. Misconfigured clients and flood attacks are to be put down by banning their related nicks for some time. Disabling ghost kill at all is not recommended, since the number of harmless ghosts seeking a single, immediate reconnect uses to outweigh deadlocks by far.

GotNap   An internet service (http://www.gotnap.com) which can be used by public networks to advertise themselves. Clients may get network / server addresses to connect to from GotNap. New servers and networks who want to attract a large number of users have to advertise in GotNap. This service is up since summer 2004. It's the inofficial successor to Napigator, which provided similar services until early 2004.

IM / Instant Message   Basically a private message to another user. However, nowadays the term instant message is mostly used in context of instant messenger programs. Most of those programs feature buffering of messages, to be able to message other users even when they're offline. This isn't supported by Opennap NG. Other users being messaged must be connected to the same network at the time of the message being sent.

Lag   In public channels, each message sent by a user gets distributed by the server to all other users in the chat. If the server is mostly idle, this happens almost instantaneously. However, If a server is temporary overloaded or freezes, it either can't process any client requests at all or it takes some seconds for each.. This results in a notable delay between a message being sent by a user and that message becoming available to the other users in a channel. If this delay gets so long that it starts disturbing conversations (more than roughly 10 seconds) the server is said to experience lag or be laggy.

Leech   In Opennap NG, leech is a user level. In general, leeches are users who download an enormous amount of files, often from just a few other users, while sharing and / or uploading very little or nothing. Hence they resemble freeloaders and are generally not welcome on servers.

Moderator   An advanced user level.

Mods+   All users with a level of Moderator or higher. Generally this refers to the staff of a server or network.

MOTD   Message Of The Day. This is the text the server sends to your client when you log in. In Opennap NG the MOTD is contained in file opennap-motd.txt and may be edited using any ASCII text editor. MOTDs may be coloured, which is to be controlled by escape codes. However, this is a feature being supported by few clients only.

Napigator   Formerly an internet service with its own website (http://www.napigator.com) and support software, where networks could be publicly advertised and clients got server addresses to connect to from. New servers and networks who want to attract a large number of users had to advertise in Napigator. Napigator has ceased its service in early 2004. Meanwhile GotNap provides a nearly identical and compatible network advertisment service. Technical references to Napigator in this manual are historic and can be regarded as applying to GotNap nowadays.

Net(work)   In Opennap NG context, a network is a pool of Opennap NG servers which are linked together to bundle their capacities, especially user and file counts. Servers of a network communicate with each other to maintain a consistent and synchronized state. This means, that all servers of a network should know whether and to which server particular users are connected, what files are searchable and what users are joined in what chat channels. If his client supports it, a user may be connected to several networks concurrently, but only to one server of a given network. Two users must be connected to the same network to be able to chat (publicly or privately) or exchange files via Opennap NG. Networks can be composed of a basically arbitrary number of servers. However, the more servers are linked together, the greater the internal synchronization overhead gets and more internet bandwidth is consumed. Note that in Opennap NG context even single servers, which aren't linked to any others, may be referred to as networks.

Nick   The name a user chose for his or her appearance in a network. Opennap NG connections are nick-based, that is, every connection to a server is associated with a nick. Users can choose and change their nicks nearly at will between sessions. However, most users rarely change their nicks, especially if they intend to chat with others. If a server allows clones, one user may connect to a server or network multiple times (up to max_clones times) concurrently, using a different nick for every connection. Nicks should commonly be between 2 and 20 characters long If alnum_nicks is enabled then nicks consisting of upper- and lowercase english letters, digits and characters "-" and "_" only are accepted.

Nick collision   Two or more unrelated users may chose the same nick, possibly a common one, and attempt to connect to a network concurrently. If ghost kill is disabled only the first one will succeed, followers will be rejected until the connection of the first one terminates. If ghost kill is enabled then a ghost kill deadlock may occur, where user A connects, gets ghost killed by user B, user B then gets ghost killed by user A, and so on. This can be avoided or stopped if one of the users registers himself with a private password. The other one(s) then won't be able to use the same nick any more as they don't know the password required to use that nick. Nick collisions are a pretty rare event.

Ping   Not to be confused with common IP (internet protocol) ping command and action, although the purpose is similar. In the Napster protocol, ping is a special command to test whether other clients are still alive and reachable and responding. The ping command is sent to the server which relays it to the target client. The target client should respond with an automatic pong then, which will be relayed back through the server to the pinging client. Although they appear to be present, other clients may actually not be reachable, for instance, because they have become ghosts or servers are desynced. Usually pings are emitted on manual request only. It's a good idea to precede especially PM conversations with a ping to confirm the other user can receive your messages and isn't ignoring you. In Napster protocol, incoming pings are to be answered automatically with a pong. Unfortunately some clients either don't support or ignore this feature. Hence, a missing pong doesn't always mean the peer is not reachable, while a successful pong always means it is.

PM / Private Message   Private Message, a text message which is sent from one user to another, not to be seen by others. Similar in meaning with instant messages Along with public chats and file exchange, PMs are a core feature of the Napster protocol on which Opennap NG bases. To be reachable via PM a user must be connected to the same server or network. Contrary to other server software, in the original (unmodified) Opennap NG server software private messages are really kept private, that is, they aren't stored or made visible to anyone else but the intended recipient. This also means, there is no buffering (as in instant messengers) if the recipient of the PM is currently offline. However, since Opennap NG is open source software, anyone with adequate programming skills would be able to change this fine behaviour. In fact, it is known that some server owners expressed a strong and sick desire to spy on private messages of their users. So users must not be absolutely sure their privacy is kept when communicating via PMs in this sort of network. In Opennap NG, the runtime server administration is mostly done via special PMs to the server.

Server browse   The opposite of direct browse. A server browse is initiated if a client wants to retrieve the entire filelist of another user, but either of their clients (or both) doesn't support direct browses. In this case the two clients don't contact each other to transmit the filelist. Instead, the stored copy of the requested filelist is sent from the server to the requestor. This may consume a lot of outgoing server bandwidth. Even more if the requestor and the requested user are connected to different servers (of the same network). Therefore, most servers limit the amount of file data being browsable via server browses. The max_browse_result setting is used to control this. Since they save server resources and are faster, direct browses are usually preferred by both server owners and users. Unfortunately only a few clients support direct browsing as yet.

(Server) split   Term used to describe when two linked servers become disconnected from one another (you can generally tell when this happens because if you are in a chat channel you will see a bunch of users leave at the same time).

Sping   A term meaning server ping, or how long it takes a server to see your data and respond.

 


Last updated May 18, 2005.