| 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. |
| -- |
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:
|
| 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. |
| 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 |
<target> <nick> <when> "<reason>" <timeout>
| 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. |
<channel> <flags> <limit> <level> "<topic>"
[level] [filename] [function name] [line number] <log message>
| 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 | ||||||
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.
<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.
<nickname> <password> <email> <level> <created> <lastseen>
| 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) |
| 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:
|
||||||||||||||||
| 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:
All formats have their pros and cons:
|
||||||||||||||||
| 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:
|
||||||||||||||||
| 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:
|
||||||||||||||||
| 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.
|
||||||||||||||||
| 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.
|
||||||||||||||||
| 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. Typi | ||||||||||||||||