1. General & History |
|||||||||||||||||||||||||||
| Q: | What is Opennap? | ||||||||||||||||||||||||||
| A: | Opennap was the first free,
open source server software to serve the original Napster peer 2 peer filesharing
protocol. Original Opennap was written in 2000 and 2001 by DrScholl, up
to version 0.44. |
||||||||||||||||||||||||||
| Q: | What is Opennap NG? | ||||||||||||||||||||||||||
| A: | Opennap 0.44 from 2001 was the last version by DrScholl. After its release
DrScholl completely left the scene. The Opennap
NG (Next Generation) project was created in early 2002 by a group of
volunteers, consisting mostly of then existing server owners with more or
less programming skills. It directly based on Opennap 0.44 but introduced
many new features and bugfixes. Major versions of Opennap NG were 0.45 and
0.46, both released in 2002. After that, development was mostly halted again.
0.47 (2003) and 0.47.2 (2004) were only minor bugfix releases with only
one new config variable. Opennap NG 0.49.1 (March 2005) is a new major bugfix
and feature extension release (more than 25 new config variables),
including new accessory programs, scripts, manual and website presence. |
||||||||||||||||||||||||||
| Q: | Why are there two different sites / branches of Opennap NG? | ||||||||||||||||||||||||||
| A: | For a detailed explanation, please see http://opennap-ng.sourceforge.net/split_story.html. Short summary: during 2003 and 2004 the Opennap NG project was mostly controlled by one particular (now former) member of the development team. There was little progress during that time. In January 2005 Opennap NG 0.49 became available. It was being developped mostly by other volunteers. It featured massive extensions and important bugfixes over 0.47.2. However, that former project member declined to accept the 0.49 improvements, claiming especially the new features were unneeded. Later he started to claim that 0.49 based directly on old 0.45, missing all the bugfixes and extensions of 0.46 and 0.47. This is wrong, of course. The rest of the project team disagreed with him and welcomed 0.49 as a great continuation of the project. When he learned he was outvoted that former member quickly chose to leave the NG development team in dispute. Soon after that he created his own Opennap NG website where he offers his own version of Opennap NG, which bases on 0.47.2 and has none of the improvements of 0.49! The version from SourceForge features all extensions and bugfixes of NG 0.46, many bugfixes of 0.47.2 and a lot of unique extensions, new acessory software, new manual and more bugfixes, which the other project doesn't. |
||||||||||||||||||||||||||
| Q: | For how long does Opennap (NG) exist? | ||||||||||||||||||||||||||
| A: | The Opennap NG project was created on May 26th, 2002, basing on Opennap
0.44. The first publically available version Opennap NG 0.45b2 was released
on June 9th, 2002. Original Opennap was registered January 10th, 2000. Latest
version 0.44 is from September 29th, 2001. |
||||||||||||||||||||||||||
| Q: | Why was there so little progress for past two years and more? | ||||||||||||||||||||||||||
| A: | In 2003 some of the original project team members of Opennap NG retired.
Others suffered from lack of time or lost interest in spending much more
time in it. So, during 2003 and 2004 there was mainly just one Opennap NG
project member on duty. Unfortunately that person showed no real interest
in improving Opennap NG ever since, especially not in terms of feature extensions
and by thoroughly incorporating contributions from others. It took up to
early 2005 until other project members fully realized this and decided to
change the direction, actively work on the project and also accept contributions
and feature extensions on it. |
||||||||||||||||||||||||||
| Q: | Why the big jump from version 0.49.x to 0.60? | ||||||||||||||||||||||||||
| A: | There are two reasons for this:
|
||||||||||||||||||||||||||
| Q: | Why was there no (SourceForge version of) Opennap NG 0.48? | ||||||||||||||||||||||||||
| A: | There never was a public one. It was used only internally by a few people
at end of 2004 / beginning of 2005. At that time a quarrel between SourceForge
Opennap NG team members was to arise. One (now former) team member strictly
declined to accept post-0.47H improvements of Opennap NG as a new official
version 0.48. The full story of the quarrel is available here.
While the quarrel was ongoing for some time, development of Opennap NG was
doing as well. After the situtation was resolved (by that former member
voluntarily leaving the team and continuing to work on his own branch which
bases on old 0.47.2), further improvements were already applied to the code,
so we felt the jump to 0.49 was reasonable. Nowadays, Opennap NG version
0.48 is occupied by the inofficial branch. It is no predecssor to 0.49 and
0.60 and vice versa. Successors to 0.48 won't have the features of 0.49
and 0.60. |
||||||||||||||||||||||||||
| Q: | Is Opennap NG mature or premature software? | ||||||||||||||||||||||||||
| A: | Opennap NG has been in use especially on Unix systems for years. Some
servers are known to have run a year(!) and more without any need to restart
Opennap NG software! Many bugs were removed and improvements applied since
0.44. So we think Opennap NG is to be considered mature, indeed. One of
the remaining issues, a well performing, reliable Windows version, has been
addressed with Opennap NG 0.49. Note that between March 3rd and March 15th
2005 unfortunately some premature versions of 0.49 were available at SourceForge,
which contained a serious Windows crash bug. This has been fixed meanwhile. |
||||||||||||||||||||||||||
| Q: | Why did it take so long for the GUI config tool to emerge? | ||||||||||||||||||||||||||
| A: | It was simply no priority for any of the Opennap NG developers until 2005.
Opennap NG was developped on and mainly for Unix. GUI requests came mainly
from Windows users. In Unix, almost no server software has any GUI components,
while in Windows most has. Furthermore, until version 0.49, Opennap NG couldn't
be considered really stable and well performing on Windows. We know of no
Windows servers which ran over a longer duration. Some of its earlier programmers
used to blame Windows itself for this (which has turned out not to be true,
there were some Windows-specific bugs in Opennap NG instead!). As Opennap
NG 0.49 was able to demonstrate good performance and stability on Windows,
the ever-existing demands for a GUI were eventually addressed. Since the
complexity of its configuration has grown as well, the GUI config tool is
even appreciated by some Unix users meanwhile. |
||||||||||||||||||||||||||
| Q: | What skills are required to run an Opennap NG server? | ||||||||||||||||||||||||||
| A: |
|
||||||||||||||||||||||||||
| Q: | What's the cost of Opennap NG? | ||||||||||||||||||||||||||
|
A: |
The software itself doesn't cost anything, it's available for free, may
be copied and received arbitrarily. However, note that if you don't have
an internet flat rate, running Opennap NG could be expensive for you, due
to ongoing costs of internet traffic. |
||||||||||||||||||||||||||
| Q: | Is Opennap NG being actively developped? | ||||||||||||||||||||||||||
| A: | Most of 2003 and 2004 Opennap NG development was dormant, because a person
who generally rejected most improvements from others was in response. After
this person has left Opennap NG development team and others took over responsibilities
again, Opennap NG development has revived and some major improvements became
available. As of April 2005, Opennap NG is actively being developped towards
upcoming 0.5x releases, which will be major new feature releases. |
||||||||||||||||||||||||||
| Q: | Where can I get support in server installation? | ||||||||||||||||||||||||||
| A: | Please have a look at the contacts & requests page. | ||||||||||||||||||||||||||
2. Features |
|||||||||||||||||||||||||||
| Q: | What operating systems does Opennap NG support? | ||||||||||||||||||||||||||
| A: | Opennap NG was written to basically support all POSIX-compliant
operating systems. This includes most Unices. Furthermore, a native Windows
build (without need for any additional emulation software) has become available
with 0.49. However, most Unices feature some specific sorts of POSIX aberrations
or custom interpretations. Most of them are minor ones. A rule of thumb
is: if Opennap NG sources compile on a given platform it will likely run
flawless as well. However, as the source is continously being upgraded at
this time there is no guarantee that opennap NG will compile on particular
platforms. Current development platforms are Linux and Windows. Reports
from other platforms are welcome. |
||||||||||||||||||||||||||
| Q: | Is there a good working Windows version of Opennap NG available? | ||||||||||||||||||||||||||
| A: | Yes. Opennap NG 0.49 includes some Windows-specific bugfixes and performance
improvements. Available Windows binary was created using the free MinGW
compiler suite, which produces a 100% native Windows application with no
need for additional software, especially no Unix
/ POSIX emulation layers or similar. There were also Windows versions
of earlier versions available but they didn't run as stable as the Unix
versions and consumed more CPU. Those Windows-specific bugs of earlier versions
have been fixed since 0.49. |
||||||||||||||||||||||||||
| Q: | Does Opennap NG support MD5 sums? | ||||||||||||||||||||||||||
| A: | It sort of does but this feature is turned off by default and it is recommended
to leave it off. You should neither rely on it nor assume it's available.
Support for MD5 sums in Opennap NG has to be enabled by specifying the --enable-resume
option when configuring the source, prior to compiling it. Neither the precompiled
Linux nor the Windows binaries are created with this option enabled. There
are some important reasons for this.
|
||||||||||||||||||||||||||
| Q: | Is Opennap NG restricted to serving MP3 files only? | ||||||||||||||||||||||||||
| A: | No, this was a restriction of the original Napster servers. Opennap NG
allows to serve all sorts of files. However, MP3 files still receive special
treatment, as their content-specific attributes like duration and sample
frequency are regarded by Opennap NG. |
||||||||||||||||||||||||||
| Q: | Can I configure Opennap NG to serve MP3 files only? | ||||||||||||||||||||||||||
| A: | Basically yes. As of version 0.50 you can specify one or more patterns
in file opennap-allow.txt.
Every filename which is to be shared must match at least one of the patterns
specified there. So, for instance a pattern like \.(mp3|ogg)$ would
allow only files with the extension .mp3 and .ogg (case-insensitive) to
be shared. Similarly you can chose to serve archives, HTML, text or picture
files only. However, be aware that this feature only works on filename level.
Mislabeled files cannot be sorted out by this, i.e. a movie file which is
labeled "matrix.mp3" by the user trying to share it won't
be recognized nor blocked. On versions prior to 0.50 you need to do it the
other way round, that is to edit file opennap-block.txt
instead. In that file you would specify all types of filenames you want
not to be listed on your server, i.e. video files, executables, archives,
libraries, pictures, etc. |
||||||||||||||||||||||||||
| Q: | Does the server control download and upload starts and file request queues? | ||||||||||||||||||||||||||
| A: | No. In Napster protocol, queues are implemented entirely on client side.
Whenever one client requests a file from someone else and get a response
like "remoteley queued" or similar, this response is not from
the server but from the other client. There is no sort of file request queue
management or buffering in the server. This is implemented all client-side.
The server just relays (forwards) messages between clients. Whether an incoming
upload request is to be granted immediately, put into a request queue or
ignored at all is totally under control of the client which received the
request. |
||||||||||||||||||||||||||
| Q: | Can clients be forced to start uploads or provide appropriate bandwidth? | ||||||||||||||||||||||||||
| A: | No. The clients have full control of when and whether to start uploads
requested by others. The server just informs a client about someone else
requesting a file. It's completely up to the client then to decide how to
deal with it. If the client doesn't decide to start an upload there is nothing
either the server or other clients can do about it. Neither the protocol
nor the server provides means to try to enforce particular behaviour of
clients and even if they did it would be technically easier for clients
do disobey such orders than to adhere to them. Bandwidth limitations are
also a client-specific feature. The server neither knows about nor can do
anything against it. The protocol doesn't contain any requirements of minimum
bandwidth to be fulfilled by clients, and even if it did, clients were still
free to disobey such a protocol feature. However, this way users always
have sufficient control over whom to grant uploads and whom not to. Upload
control is entirely on users's side. |
||||||||||||||||||||||||||
| Q: | Why is there no GUI (Graphical user Interface) for Opennap? | ||||||||||||||||||||||||||
| A: | Opennap started out as a plain POSIX
server application, mainly targeted at several Unix platforms. In Unix,
server software is always GUI-less. The POSIX standard doesn't contain any
GUI elements for software. The merge between server software and a GUI commonly
becoming one is a Windows-specific and not easily portable concept. Besides,
a missing GUI is not only a missing feature but for many Unix users actually
a positive feature. Most Unix geeks prefer to manually hack text configurations
files over clicking on graphical items with the mouse. |
||||||||||||||||||||||||||
| Q: | Will there ever be a GUI version of Opennap NG? | ||||||||||||||||||||||||||
| A: | No. The server will always run as a non-GUI application with only basic
output to a console or terminal window or screen. However, additional GUI
software to manage or control Opennap NG operation (at least partly) isn't
ruled out by this. |
||||||||||||||||||||||||||
| Q: | What is the difference between Opennap (NG) and IRC? | ||||||||||||||||||||||||||
| A: | IRC (Internet Relay Chat) is a protocol. Opennap (NG) is a server software.
IRC uses its own server software, which is available in numerous flavours.
Opennap NG serves the original Napster protocol, which is entirely different
from IRC. Both protocols support chatting, privately and in public channels,
and single file transfers. While many chat commands are identical between
IRC and Opennap, Opennap supports extended features, like more and persistent
user levels, which IRC doesn't. IRC doesn't support true filesharing. Opennap
(NG) supports true file sharing, based on file lists and search capabilities.
Neither can pure Napster protocol clients connect to IRC networks nor can
IRC clients connect to Opennap servers. While sharing some features they're
technically almost completely different. |
||||||||||||||||||||||||||
| Q: | What is the difference between Opennap NG and Slavanap? | ||||||||||||||||||||||||||
| A: |
|
||||||||||||||||||||||||||
| Q: | Can Opennap NG and Slavanap servers link together? | ||||||||||||||||||||||||||
| A: | No. Linking to other servers contains some proprietary protocol extensions
which are server specific and differ between Opennap NG and Slavanap. Networks
are composed of either Slavanap or opennap (NG) servers, respectively. However,
you can link all versions of Opennap NG (starting with 0.45) together, including
servers running on different platforms (i.e servers running on Windows and
servers running on Unix). |
||||||||||||||||||||||||||
| Q: | I am used to Slavanap. Shall I switch to Opennap NG? | ||||||||||||||||||||||||||
| A: | Don't do that if these features of Slavanap are important to you:
|
||||||||||||||||||||||||||
3. Operation |
|||||||||||||||||||||||||||
| Q: | What do I need to run an Opennap NG server? | ||||||||||||||||||||||||||
| A: | Please see section System Requirements in the manual
or on the homepage. In short: a free computer, at least a 100 MHz CPU, plenty
of RAM (at least 128 MB free for a small filesharing server) and a reasonable
internet connection (see below). 24h/day machine availability and connection
to the internet is preferred although not required. |
||||||||||||||||||||||||||
| Q: | What internet connection do I need to run Opennap NG? | ||||||||||||||||||||||||||
| A: | Preferrably a flat rate with ISDN speed or above. Bandwidths of at least
1024 / 256 kbps down/up are recommended for linked servers. See System
requirements in the manual or on the homepage for more detailed explanations. |
||||||||||||||||||||||||||
| Q: | Can I run Opennap NG despite having a dynamic IP address? | ||||||||||||||||||||||||||
| A: | Yes. Together with the underlying TCP/IP stack of the operating system,
Opennap NG is able to deal with that without urgent need to restart the
server. A server with frequently changing IP address may be considered a
bit inconvenient for clients but there is no major problem with it |
||||||||||||||||||||||||||
| Q: | What happens if my internet line (dialup connections) breaks? | ||||||||||||||||||||||||||
| A: | All existing client connections become invalid and silent at once. However,
the server itself doesn't get to know this immediately. You should note
the CPU utilization of Opennap NG dropping to almost zero. All server activity
ceases for some moments because the server doesn't receive any requests
for the time being. If the line isn't reestablished automatically then after
some moments users will begin "leaving" the server. I.e. the server
starts to notice their connections have become invalid and ejects them.
If the line is reestablished automatically then you will see (if logging
of those items is enabled) a massive increase of ghost kill events (or requests,
if ghost
killing is disabled), possibly together with a number of "connection
reset by peer" error messages. This means that clients have started
to realize their existing connections to the server became invalid, and
most of them are trying to reconnect automatically. However, not all previously
connected clients will attempt to reconnect at the very same moment. Due
to the nature and parameters of TCP/IP it takes all clients different amounts
of time to realize the lost connection. It may take them up to 20 minutes,
though the majority of clients will realize it within 5 minutes. So reconnection
attempts will be staggered. The server is designed to handle this pretty
well. Remaining dead connections of clients which do not automatically try
to reconnect will eventually be realized and removed by the server within
30 minutes after the line break. |
||||||||||||||||||||||||||
| Q: | I am behind a firewall. Can I still run Opennap NG? | ||||||||||||||||||||||||||
| A: | Yes. You just need to open Opennap NG's listen port to the outside world.
This is by default 8888 but can be changed using the server_ports setting.
If you want to run a public server which is listed at GotNap's
server list then you also need to allow the server to make outgoing TCP
connections to server stat_server_host
at port stat_server_port. |
||||||||||||||||||||||||||
| Q: | Do I really need a big machine and fast internet connection for Opennap NG? | ||||||||||||||||||||||||||
| A: | No. Server demands on the three main resources RAM, CPU and bandwidth
are highly variable, depending on the configuration. It's just a matter
of how big (in terms of numbers of users and files) you plan your server
to become. For instance, if you plan to run a standalone server with no
more than 100 connections, where each user shares an average of 500 files,
you could get by with even an old 80486 machine with less than 100 MHz clock
speed, 64 MB RAM and an ISDN line with no noteworthy lag. This was actually
being tested. |
||||||||||||||||||||||||||
| Q: | Can I use Opennap NG as a chat only server? | ||||||||||||||||||||||||||
| A: | Yes. If you set allow_share
to off then no files will be listed, searcheable or transmitable through
your server. Only channel and private chats will be supported then, making
Opennap NG behaving much like an IRC
server. |
||||||||||||||||||||||||||
| Q: | Can I link Opennap NG to IRC servers or networks? | ||||||||||||||||||||||||||
| A: | No. The underlying protocol differs completely. IRC is a protocol of its
own. Opennap NG bases on the original Napster protocol which offers similar
chat features but internally works completely different. |
||||||||||||||||||||||||||
| Q: | How reliable does Opennap NG run? | ||||||||||||||||||||||||||
| A: | Opennap NG is in use especially on Unix systems for years. Some servers
are known to have run a year(!) and more without any need to restart Opennap
NG software! Many bugs were removed and improvements applied since 0.44.
Thanks to the excellent code base by DrScholl, no vulnerabilities were discovered
in the code so far, although many people were studying it ever since. One
of the remaining issues, a well performing, reliable Windows version, has
been addressed with Opennap NG 0.49. We have confirmed reports of server
runtimes of two weeks on Windows, serving about 2000 users for that time.
However, we also learned that your mileage may vary depending on the Windows
and Service Pack versions you are using. We got some indications that Opennap
NG doesn't perform that well on Windows with recent Service Packs installed,
apparently due to some changes in their handling of TCP/IP connections.
These issues are under investigation. |
||||||||||||||||||||||||||
| Q: | Why does Opennap NG open a text window on Windows? Can I close it? | ||||||||||||||||||||||||||
| A: | Closing the window terminates the server. It's a proper way to do so,
though. As of Opennap NG 0.49 the text window is the default output interface
of Opennap NG. It is directly connected to the running server process. All
text messages the server wants to output go to this window. You can't close
it without forbidding Opennap NG to output text messages, which means to
forbid further execution of the program at all. |
||||||||||||||||||||||||||
| Q: | What is the proper way to terminate Opennap NG? | ||||||||||||||||||||||||||
| A: |
"Saves state" refers to an up to date dump of opennap-users.txt, opennap-bans.txt and optionally opennap-filters.txt file on exit. During normal operation they are dumped frequently, every user_db_interval (I) seconds (defaults to every 30 minutes). Note that on Windows the only way to terminate Opennap NG in a way that it creates up to date dumps of users, bans and channels files is to terminate it via client command. Any other way no current versions will be created on exit. By default, those files are automatically dumped every 30 minutes so you may lose up to 30 minutes of recent user registration or ban data. |
||||||||||||||||||||||||||
| Q: | Users and I experience frequent lag! What can i do? | ||||||||||||||||||||||||||
| A: | The main cause for lag on a server is CPU overload. If you open a CPU
monitor such as top, ktop or Task Manager (Windows) you will see the CPU
likely being at 100% for some time, usually seconds, sometimes minutes.
During these periods the server is not responsive, either not at all or
with notable delay only. On a CPU histogram you will see the CPU occasionally
hitting 100% utilization for some seconds, even if the average utilization
is just 30%, 20% or less. This is nothing to worry about, it's a result
of occaiosnal internal cleanup operations by the server. Reduce max_shared
to reduce these brief lags. However, if the average CPU utilization raises
over 70% or 80% then your server is probably operating on the edge of its
capacity. 100% CPU periods usually become much more frequent then. In this
case you should reduce max_connections.The
second possible cause for lag is overload of internet bandwidth. The server
may want to send more data than your line can handle in time. This is a
less common cause, though. |
||||||||||||||||||||||||||
| Q: | Why does Opennap NG consume so much RAM? | ||||||||||||||||||||||||||
| A: | When Opennap NG runs with filesharing enabled and is filled with users
it usually has many millions of distinct items to keep in memory. Most important
are the lists of file informations. Separate memory records are created
for each single file to be shared by a user. Filenames are split into keywords,
assigned to user records, stored in communication buffers for inter-server
communication or user search results, etc. Between 10 and 20 memory allocations
per file to be shared are required. Although most of them are just a few
bytes each. However, there's always a significant allocation overhead, since
operating systems don't allocate memory byte-wise, but rather aligned on
minimum-sized blocks (similar to a filesystem on disk), which are usually
8, 16 or 32 bytes (OS-dependent). In average, information for one shared
file may consume up to 350 bytes on Linux and up to 500 bytes on Windows. |
||||||||||||||||||||||||||
| Q: | Why doesn't it ever free any RAM? | ||||||||||||||||||||||||||
| A: | It does! Memory consumption would look much worse if it didn't. However,
there is a difference between an application freeing memory, and the operating
system making this freed memory available for other processes again. The
former takes place, the latter does not. But this is not Opennap's fault.
If you monitor the memory usage of a running server over some time, as new
users connect and files are being uploaded, you'll notice it continously
growing. When the server has reached its connection limit, the memory usage
will increase only very slightly and flatten over time. However, if you
kick all users (and files) out of your server without restarting it, you'll
notice the system reports still the same memory usage on an empty server
as when the server was full. This is what you are wondering about!
Actually, the server has returned (nearly) all memory properly to
the OS, but the OS didn't take it properly. This is a limitation of POSIX!
The OS can take back and free memory only under some special conditions
which are not met by Opennap NG (nor by many other applications). The OS
won't take back and free RAM from them until the applications terminate!
Note that this limitation does not fully apply to the Windows version of
Opennap NG! On Windows it can occasionally free some KB of RAM, indeed,
but unfortunately usually no significant amounts while the server keeps
being filled with users. However, on POSIX systems, if you start again filling
the server with users and files you will see almost no further increase
of memory usage. The once allocated and previously freed memory will
be reused. Besides, we still can't absolutely rule out the existance
of further small memory leaks. But if they really exist they must be insignificantly
small, since many Opennap NG servers have been running for many months,
and most of them were not restarted because of memory leaks became apparent
after that time. Of course, when a server process terminates all its consumed
memory is immediately returned to the system. |
||||||||||||||||||||||||||
| Q: | How can I reduce or limit RAM demands? | ||||||||||||||||||||||||||
| A: | The most important measures are:
|
||||||||||||||||||||||||||
| Q: | Should I increase my virtual memory pool for Opennap? | ||||||||||||||||||||||||||
| A: | Not for Opennap! Virtual memory works by moving parts of the allocated
RAM which are considered "not being used at the moment" by the
OS to disk. For instance, if you have a paint program with 5 pictures open,
usually 4 of them should be considered "not being used at the moment"
while you are working on one of them, hence be worthy objects for being
swapped out to disk. However, Opennap NG uses to frequently traverse a majority
of all of its allocated memory blocks, during searching for keywords, file
data, user records, and so on. So it's nearly impossible to rate any part
of the memory allocated by Opennap as "not being used at the moment".
Letting Opennap NG use virtual memory when physical memory is running low
creates the risk of having the harddisk permanently swapping parts of Opennap
NG's allocated memory in and out. This not only almost freezes the server
but also reduces the lifetime of your harddisk! |
||||||||||||||||||||||||||
| Q: | Why is CPU utilization at 100% for several minutes after a server start? | ||||||||||||||||||||||||||
| A: | This is the case if your server is already known by at least some hundred
users who automatically and permanantly attempt to connect to your server,
even when it's not online. When you start your server you'll experience
an initial boost of logins by users. If not throtteled by means like max_uploading,
max_new_users_count
and max_new_users_time,
connection requestors will consume all available bandwidth and CPU to get
in as quickly as possible, overrunning themselves and possibly temporarily
overloading the server. If you use to have 1000 users or more connected
to your server, this initial connect boost can take 5 to 10 minutes, depending
on your available bandwidth and CPU speed. After the initial connect boost
has been processed, CPU utilization should generally reduce to convenient
levels. |
||||||||||||||||||||||||||
| Q: | How many files can an Opennap NG server serve? | ||||||||||||||||||||||||||
| A: | The only limit for this is the amount of available physical RAM. On Unix
calculate up to 350 KB of RAM usage per 1000 files. On Windows calculate
up to 500 KB of RAM usage per 1000 files. So if you have 512 MB RAM you
should be able to serve well over 1 million files on Unix and nearly 1 million
files on Windows. See also: system requirements. |
||||||||||||||||||||||||||
| Q: | How many users can my Opennap NG server serve? | ||||||||||||||||||||||||||
| A: | In general the number of users connected to a server is limited by available
hardware resources and operating system limits only. If you run a filesharing
server, most users will consume more or less RAM as they upload their file
lists (see previous question). Also consider the increasing demand of internet
bandwidth and CPU power, as more and more users upload their file lists,
search and request response file lists, keep requesting downloads, etc.
Some operating systems impose their own upper limit for number of connections
any process can handle. For instance, in Linux kernels up to 2.2 this was
roughly 1000 by default. In Linux >= 2.4 and Windows 2K / XP there is
no such OS limit any more. Besides those general limits yoy can precisely
control the maximum number of users on your server via the max_connections
setiing. |
||||||||||||||||||||||||||
| Q: | Must Opennap NG run on a dedicated server computer? | ||||||||||||||||||||||||||
| A: | No. You can basically use your daily-life computer as long as it is connected
to the internet and fulfills the other system requirements
for running Opennap NG. However, while the server is running on a machine,
don't do any of the following on it:
|
||||||||||||||||||||||||||
| Q: | What priority / nice level should the server process run at? | ||||||||||||||||||||||||||
| A: | It is recommended to let Opennap NG run on a lower or even lowest process
priority. This is true for most other server applications as well, by
the way. It's a common misconception that low server priority means less
performance, significantly greater lag or lower execution speed. This is
not true. You just need to obey the previous answer. If so, the server will
neither run slower nor develop more lag. In contrast, concurrently performing
others of the allowed tasks (like writing, browsing, etc.), those actions
will be much smoother than with the server running at normal priority. If
indeed the server started to lag when running at low priority, and system
CPU usage is at 100%, then you were simply performing an operation (i.e.
starting or using an application) you are not allowed to on a server machine!
Don't run Opennap NG at high process priority! That is a security
risk! Occasionally it may grab 100% of CPU for some time (seconds, sometimes
minutes). If running at high priority, the rest of the system is virtually
dead during that period. This doesn't make Opennap NG faster. However, if
Opennap NG erroneously enters an endless loop state, the system would likely
need to be rebooted to become responsive again. |
||||||||||||||||||||||||||
| Q: | Why is there so much text output by Opennap NG? | ||||||||||||||||||||||||||
| A: | One of the strengths of Opennap NG is, that it allows pretty detailed
insight about what it is doing and what is going on. Except for users sharing
content rated as criminal, no private information about users will be emitted.
If being stored, much of the output by Opennap NG can be used for later
performance analysis, fault detection, configuration optimization and creation
of statistics. |
||||||||||||||||||||||||||
| Q: | Can I reduce text output by Opennap NG? | ||||||||||||||||||||||||||
| A: | Yes. Via the log_level
setting you can pretty precisely control what sorts of information you want
to have emitted and what not. |
||||||||||||||||||||||||||
| Q: | Can those server messages be output in another language but english? | ||||||||||||||||||||||||||
| A: | Not as yet. However, as of NG 0.60, preparations for NLS (National Language
Support) have already been built into Opennap NG. They're finished to about
90% but as yet there are no translated text versions for other languages
available. Note that only log and system state messages, to be examined
by Admins and Elites, would be translated. Mod+ notifications and response
messages for users will always stay english, since running Opennap NG servers
are typically being attended by an international audience. |
||||||||||||||||||||||||||
| Q: | My harddisk isn't filling up. Does the server work correctly? | ||||||||||||||||||||||||||
| A: | Yes. Unless a log is being stored to disk, Opennap NG makes almost no
use of the harddisk. The only items Opennap NG frequently writes to disk
are its lists of users, bans and channels. All of that usually fits within
some hundred KBs. So there's no rank growth of harddisk space demands by
the server. |
||||||||||||||||||||||||||
| Q: | Does the server store any files from users locally? | ||||||||||||||||||||||||||
| A: | No. Filelists being received by Opennap NG are kept in RAM only, they
are never written to disk. |
||||||||||||||||||||||||||
| Q: | I have Opennap NG 0.46 or 0.47.x running. Shall I upgrade? | ||||||||||||||||||||||||||
| A: | If you believe your server system runs stable, you don't worry about known
bugs and you are not interested in any of the new
features of Opennap NG 0.49, there is no need to upgrade. Remember one
of administrator's most important rules: never change a running system!
No critical vulnerabilities or other bugs relevant to security are known
or needed to be corrected so far. However, if you like to see some bugs
fixed, optimize operation, have better flood and leech detection and ejection,
want new in-depth information about the configuration variables, a tool
to easily set them and a number of other nifty features then you should
consider an upgrade indeed. |
||||||||||||||||||||||||||
| Q: | When do I need to restart the server? | ||||||||||||||||||||||||||
| A: | The server is designed to run without frequent restarts for a long time,
many weeks or months usually. There are three important reasons to restart
your server. They usually become apparent shortly (within few days our hours)
after a server start:
|
||||||||||||||||||||||||||
4. Administration |
|||||||||||||||||||||||||||
| Q: | Why can't I share files any more after upgrading to the new server version? | ||||||||||||||||||||||||||
| A: | It's actually a feature, not a bug. See variable no_share_level.
You are apparently an Elite on your server. For safety considerations, by
default Elites (server owners) are exempt from sharing any files. This can
be changed, of course, but due to legal risks that isn't recommended. |
||||||||||||||||||||||||||
| Q: | Is Opennap NG remotely administratable? | ||||||||||||||||||||||||||
| A: | Yes. Actually, parts of server administration can be carried out remotely
only. Special messages are to be sent to special nicks to conduct server
and channel administration. Elites can use any client software that supports
private messages for that. See administration
for further details. Currently the only thing that can't be conducted remotely
is a permanent change of the server config file. All remote changes last
only until the next server restart (or rehash). |
||||||||||||||||||||||||||
| Q: | Do I need the GUI config tool for Opennap NG administration? | ||||||||||||||||||||||||||
| A: | No. You just need a proper configuration file. Opennap NG operates completely
independent from the config tool. However, since the configuration file
of Opennap NG becomes increasingly complex and difficult to overview, it
is recommended at least to check out the config tool, as it displays a logical
hierarchy of variable groups with inline help. |
||||||||||||||||||||||||||
| Q: | What clients do I need to administer Opennap NG? | ||||||||||||||||||||||||||
| A: | Any client with fully implemented chat features should do fine. Lopster,
Teknap
and Xnap are our
favourite clients. You may find other fulfilling this requirement in this
extensive list of clients Note that WinMX and AudioGnome
don't support some key features of the protocol properly and are not
suitable for Opennap NG server administration. |
||||||||||||||||||||||||||
| Q: | What information do server operators gain about their users? | ||||||||||||||||||||||||||
| A: | By a simple whois request Mods+
gather the following information about users:
|
||||||||||||||||||||||||||
| Q: | Can I get insight to private chats of users to verify something? | ||||||||||||||||||||||||||
| A: | No! Opennap NG doesn't support espionage on user activities beyond the
level necessary to detect hostile clients. The contents of private conversations
between users are taboo! They are neither logged nor made visible anywhere
nor will the SourceForge Opennap NG development team ever support such intentions! |
||||||||||||||||||||||||||
| Q: | Can I get an overview over connected users or what files are in the server? | ||||||||||||||||||||||||||
| A: | Not as yet. If the log is appropriately configured you can at least determine
whether and when particular users connected to your server. Currently there
is no way to unveil the entire file pool in the server. However, this is
on the ToDo list. |
||||||||||||||||||||||||||
| Q: | I have started a new server. Why are there no users on it? | ||||||||||||||||||||||||||
| A: | You need to advertise your server to make it publically known. Users need
to learn about the existance of your (new) server. Without advertising or
manually inviting particular users there will be no connects to your server.
Other than on some other protocols, Opennap NG doesn't automatically link
into existing network structures of other server owners to inherit users
from them. Nowadays GotNap
is the primary service to make your server publically known. If there continue
to be no users connected at all (maybe except yourself) then your port or
firewall settings may be wrong; you may be unreachable from the outside
world. |
||||||||||||||||||||||||||
| Q: | Why does my server fill up so slowly? | ||||||||||||||||||||||||||
| A: |
If, even after several days of public advertisement in GotNap, your server appears to be filling rather slowly with new users, do the following:
|
||||||||||||||||||||||||||
| Q: | How can I attract more users to my server? | ||||||||||||||||||||||||||
| A: | Keep advertising it in GotNap. Ease
your ban rules to cause less bans. Remove existing long-term bans if they
may not be absolutely justified. Check whether you can link to another successful
and well known Opennap NG network to appear in their server list. |
||||||||||||||||||||||||||
| Q: | Users report they often get a "connecting too fast" response, Why? | ||||||||||||||||||||||||||
| A: | They try to connect more frequently to your server than the current login_interval
setting permits. This applies only if the server has reached its configured
maximum number of connections, can't accept new connections but someone
tries again and again at high frequency. By some users the server might
actually be flooded with connection requests if the frequency wasn't limited.
So this is a flood protection. |
||||||||||||||||||||||||||
| Q: | Users report they often get a "connection timed out" or "no response" response, Why? | ||||||||||||||||||||||||||
| A: | There are a number of possible reasons to get these responses on attempting
to connect, ncluding:
|
||||||||||||||||||||||||||
| Q: | What do all those "connection reset by peer" messages mean? | ||||||||||||||||||||||||||
| A: | They basically mean the connection from the client to your server has
been closed by that client. It's not always the client itself which closed
the connection, though. Sometimes connections can be closed by the operating
system itself, firewalls or routers between client and server. In general
it's a client which has signed off. |
||||||||||||||||||||||||||
| Q: | Why were options to automatically kick users without banning them removed? | ||||||||||||||||||||||||||
| A: | You likely have in mind former variables like discipline_ignorers
(B), eject_also_bans (B) and discipline_block_mod (B).
They were removed because they are redundant (pointless). Why would you
want a user to be automatically ejected? Because he did something wrong,
i.e. didn't comply to your server rules, didn't share enough, shared crap
or perhaps even was flooding the server. Essentially, you want to get rid
of them. Well, without banning this doesn't work. The majority of them would
be back again within seconds or minutes, since clients are commonly configured
to endlessly try to auto-reconnect on ejection. So instead of getting rid
of, i.e. flooders, you rather worsen the situation by just killing without
banning them: they will reconnect all the time and likely start their flooding
over and over again. The same is true for users who share i.e. 10 000 files
of crap: they will reconnect again and again, wasting your three main server
resources bandwidth, RAM and CPU. So either you want to tolerate them, then
don't eject them. Or you don't want to tolerate them, then eject and ban
them. This only applies to automated ejection means. You still can manually
eject (kill) users without banning them, although this makes barely more
sense. |
||||||||||||||||||||||||||
| Q: | When should I ban users? | ||||||||||||||||||||||||||
| A: | FIXME! |
||||||||||||||||||||||||||
| Q: | For how long should I ban users? | ||||||||||||||||||||||||||
| A: | It depends. Opennap NG is capable of automatically banning lots of users
for several reasons. For those bans usually a few hours to a few days are
reasonable periods, as their number may grow quickly. Occasionally you may
also ban users manually, i.e. for severe misbehaviour in chats, sharing
illegal stuff or other reasons. For those manual bans a few days to a some
weeks are likely appropriate durations. Ban durations of more than a month
barely make any sense. Unlike earlier versions, Opennap NG 0.60 doesn't
support unlimited bans any more. |
||||||||||||||||||||||||||
| Q: | Why do very long or unlimited ban durations make no sense? | ||||||||||||||||||||||||||
| A: | First of all: there is no way to guarantee that a banned user really
doesn't connect again to your server (even while the ban is still active!)
There are many tricks for skilled users to bypass existing bans, which include
changing nicks and passwords, IP addresses, client IDs and filesets between
each connect. You'll hardly be able to identify reincarnations of a banned
user if he decides to play all tricks, including proxy servers, and wants
to stay undiscovered. When you identify him, you need to create new ban
entries again and again, obsoleting existing ones targetting at that user.
If lasting a long time or unlimited, these entries would be nothing but
a pure waste of server resources. There are likely two main reasons why
you would like to have long time bans:
|
||||||||||||||||||||||||||
| Q: | How many entries can the banlist contain? | ||||||||||||||||||||||||||
| A: | Other than by available RAM and users the size of the banlist is not restricted.
While Slavanap reportedly develops some notable performance problems on
banlists with more than 1000 entries, no such problems are known for Opennap
NG. The server can easily maintain banlists of 10 000 entries and more without
noteworthy reduction of performance. Memory consumption is negligible as
well. The IBL facility of Opennap NG effeciently helps dealing with large
numbers of banned users attempting to reconnect frequently. A rule of thumb
is, that ibl_ttl
should be set to at least your maximum number of ban entries divided by
5. For instance, if you have 10 000 entries in your banlists, ibl_ttl
shouldn't be set to less than 2000. |
||||||||||||||||||||||||||
| Q: | What contents should I care about? | ||||||||||||||||||||||||||
| A: | FIXME! |
||||||||||||||||||||||||||
| Q: | Can I (or others) see the values of server configuration variables at runtime? | ||||||||||||||||||||||||||
| A: | Admins and elites can. Via the operserv
config <varname> mechanism, using your client. You send a
private message to pseudo-user "operserv", consisting of the keyword
"config" and the name of the variable you want to get the value
from. Userlevels below admin cannot query server configuration variables. |
||||||||||||||||||||||||||
| Q: | How do I change configure settings at runtime? | ||||||||||||||||||||||||||
| A: | Via the operserv
config <varname> <value> mechanism, using your client.
You send a private message to pseudo-user "operserv", consisting
of the keyword "config", the name of the variable you want to
change and the new value you want to assign to that variable. Please note
that not all configuration variables of Opennap NG can be changed this way
during runtime. Some require the server to be rehashed, a few ones can only
be changed on a server restart. |
||||||||||||||||||||||||||
| Q: | How do I change user levels? | ||||||||||||||||||||||||||
| A: | This is a client-specific operation. For instance, in Lopster
you use the command /level <nick> <level>. In TekNap
the command is /setuserlevel <nick> <level>. Replace
<nick> with the nick of the user whose level you want to change and
<level> with the new user level. Please refer to the documentation
of your client fore further info on this. |
||||||||||||||||||||||||||
| Q: | How do I assign / take away Friends flags? | ||||||||||||||||||||||||||
| A: | Via the operserv
userflags <flags> mechanism. Replace <flags> with friend
for assigning a friends flag to a user and none to take it away. |
||||||||||||||||||||||||||
| Q: | What do the new user flags "leech" and "stingy" mean? | ||||||||||||||||||||||||||
| A: | They are automatically assigned by the server to users if leech detection
(notify_leeches)
and crap sharer detection (notify_no_uploads)
are enabled. They are non-persistent flags, i.e. they are cleared every
time the user disconnects. A user is assigned the leech flag if he
downloads much more files (16, 32 or 64 times, this configurable) than he
uploads. The stingy flag is assigned to users who share very many
files but don't have any uploads after quite some time. This usually means
they either share crap no one is interested in (hence wasting server resources),
or they have blocked all their uploads on purpose (hence being freeloaders).
Only a small percentage of users nowadays still use clients that don't report
their uploads properly, hence being listed as having no uploads despite
they may be uploading, indeed. Most users being assigned one or both of
these flags deserve closer examination by Mods+, if they intend to keep
their server clean of rubbish and evildoers. Checking their filelists for
crap and attempting a test download are proper measures. |
||||||||||||||||||||||||||
| Q: | Why can I see more server messages than on other networks? | ||||||||||||||||||||||||||
| A: | This is because of your high user
level on your own server. Mods+
receive a number of server messages which ordinary users don't receive.
Sorts of messages to be sent or suppressed can typically be configured in
your client, or generally via the operserv
usermode. |
||||||||||||||||||||||||||
| Q: | Can I link my server to existing networks? | ||||||||||||||||||||||||||
| A: | Not without their permission and access code. You need a mutual agreement
with server owners of an existing network to be able to link to them, to
help making their network even bigger. Usually you have to accept certain
policy guidelines of existing networks to be allowed to link with them. |
||||||||||||||||||||||||||
| Q: | How safe is it to run Opennap NG? | ||||||||||||||||||||||||||
| A: | From the technical side, there are no major risks known. Opennap NG appears
to be a solid server application. Despite many people having examined the
source code meanwhile, no previous or current vulnerabilities are known
by today. Nevertheless, on Unix system Opennap NG's default behaviour is
to run as user nobody, if not configured otherwise. Neither on Unix nor
on Windows Opennap NG requires root / Administrator privileges, neither
for configuration nor operation. There are two possible causes for Opennap
NG to bring your entire system down or even jeopardize the harddisk. (These
are not specific to Opennap NG but can happen with many other applications
as well.)
|
||||||||||||||||||||||||||
| Q: | What external connections does Opennap NG try to establish? | ||||||||||||||||||||||||||
| A: | FIXME! | ||||||||||||||||||||||||||
| Q: | What are the risks of running a public Opennap NG server? | ||||||||||||||||||||||||||
| A: | See warnings for a detailed description of risks
running an Opennap NG server. The main risk of running an Opennap NG server
appear to be legal trouble nowadays. In some countries it may be prohibited
to run this type of server at all, others may be disallowed to run a server
by ISP contract. Even if neither of those are true for you, you still can
get into trouble if users keep sharing significant amounts of illegal material
on your server without you taking measures to suppress this. |
||||||||||||||||||||||||||
| Q: | Does my server need to become publically known? | ||||||||||||||||||||||||||
| A: | No. You can always run non-public or private servers. New servers are
non-public by nature, until they are advertised at GotNap.
GotNap advertising doesn't take place until you register at GotNap and configure
your Opennap NG server properly to contact GotNap, using your personal GotNap
account data. Unless a server has been advertised at GotNap you need to
invite all users to connect to it manually, providing them with info about
server address and connect port and possibly user account data as well.
However, if you don't want your server to become publically known you should
be very careful on selection of whom to invite. Keep in mind the risk of
reckless or gawky users who may make your server public on their own by
other means. |
||||||||||||||||||||||||||
| Q: | What can I do to avoid dirty or unwanted content? | ||||||||||||||||||||||||||
| A: | First you need to consider and define what "dirty or unwanted
content" is for you. You need to determine filenames or common
parts of filenames you don't want to be listed on your server. Then you
need to translate descriptions of that into regular
expressions. Those regular expressions are then put into the files opennap-block.txt
or opennap-block-ban.txt.
If they are correct, from next server restart or rehash on every filename
that matches one of the patterns will be blocked, that bis not listed on
searches or server browses. |
||||||||||||||||||||||||||
| Q: | Are there bots available for Opennap NG servers? | ||||||||||||||||||||||||||
| A: | |||||||||||||||||||||||||||
| Q: | How do I create my own bot to be run on my Opennap NG server? | ||||||||||||||||||||||||||
| A: | Bots in Oennap networks are created using the TekNap client. It features its own, powerful scripting language, enabling skilled programmers to realize almost all sorts of functionality for bots they desire. To create your own bot you should have good knowledge about both the client and its scripting language. | ||||||||||||||||||||||||||
5. Technical background |
|||||||||||||||||||||||||||
| Q: | In what language is Opennap NG programmed? | ||||||||||||||||||||||||||
| A: | Opennap started being programmed in plain ANSI
C, hence being portable across very many platforms and compilers. Meanwhile,
Opennap NG sources have been upgraded to new language standard ISO
C99. The sources make frequent use of some of its language extensions
like inline, new data types and library functions. This is for
better performance, better source code readability and to get rid of security
risks. For instance, new ISO C 99 functions like snprintf () (replacing
old ANSI sprintf ()) are an important milestone to avoid common
buffer overflow errors, which trouble many other software. |
||||||||||||||||||||||||||
| Q: | What compiler is required to compile Opennap NG? | ||||||||||||||||||||||||||
| A: | Opennap NG's current codebase is written in ISO
C99. Unfortunately, most commercial C compilers do not (or not fully)
support ISO C99 but rather define their own, proprietary and non-portable
language extensions. GCC
(GNU Compiler Collection) fully supports ISO C99. As it also makes some
use of features unique to GCC, such as platform-dependent inline assembly,
Opennap NG requires GCC as compiler. This is not a loss of platform
portability, since GCC is free, open source and available for more different
platforms and architectures than Opennap NG can dream of running on. Opennap
NG currently requires at least version 3.0 of GCC. On 2.9.x and earlier
versions it currently fails to compile due to a compiler bug. |
||||||||||||||||||||||||||
| Q: | What about compiler warnings during compilation? | ||||||||||||||||||||||||||
| A: | For compiling Opennap NG 0.60, GCC is configured to operate in very high
warning level. It emits many new warning types which weren't emitted on
earlier versions. There should mainly be two sorts of warnings left:
|
||||||||||||||||||||||||||
| Q: | Is Opennap NG for Windows a native app. or does it use Unix emulation stuff? | ||||||||||||||||||||||||||
| A: | The offered Opennap NG binaries are created via MinGW,
which is essentially a native GCC
environment for Windows. While the build process itself takes place in an
emulated Unix environment, the resulting binaries are native Windows applications
with no need for further emulation layers or other inconvenient properties.
It can be used to either create console applications (like Opennap NG) or
native Windows GUI applications. Note that the GUI config tool for Opennap
NG isn't quite a native Windows application, as it uses the portable GTK+
GUI instead of the non-portable Windows builtin GUI. Currently the only
not 100%-standard dependancy of Opennap NG is libz, a compression code library.
It's not present on all Windows versions by default. However, on Windows
it's a native binary as well. |
||||||||||||||||||||||||||
| Q: | I see some "unknown variable" errors in the server output after upgrading. Why? | ||||||||||||||||||||||||||
| A: | Your config file apparently reflects the capabilities of an earlier Opennap
NG version. See changed
variables to learn what variables were removed from previous versions
and why. It is recommended to let the GUI config tool update your existing
config file. It is capable of reading older ones, as far as their contents
are still part of Opennap NG, and create a new one, also with new, previously
missing variables and comments added. Currently the Windows version also
complains about 4 unknown variables which are Unix-specific and not available
on Windows. |
||||||||||||||||||||||||||
| Q: | What about native 64 bit versions of Opennap NG? | ||||||||||||||||||||||||||
| A: | Opennap NG compiles on systems like i.e. AMD64 and starts. However, some
instabilities were reported on 64 bit systems which have yet to be investigated.
We don't know whether this is the result of a compiler bug that creates
improper code portions or whether it is due to erroneous code in Opennap
NG which is incompatible with 64 bit architecturesl. In standard compile
mode, with all warnings enabled, GCC creates lots of new warnings when compiling
for a 64 bit target which it doesn't when compiling for a traditional 32
bit target. They are all of sort "different width due to prototype"..
It seems like GCC 3.x always creates warnings when functions are defined
which use integers of non-native size (i.e. 16 bit on a 32 bit system and
32 bit on a 64 bit system), ignoring type casts in that case. However, the
compiler still creates correct code on such occasions. Also regard that
while a 64 bit binary is about 20% - 25% larger than a 32 bit binary and
resource consumptions increases a bit as well, benefits are very limited..
Since Opennap NG doesn't use any 64 bit variables and there is no real need
for them anyway, it wouldn't benefit from 64 bit mode in terms of speed.
It's just accessing 32 bit variables in 64 bit mode rather than accessing
32 bit variables in 32 bit mode. Nevertheless, while you are free to create
your own 64 bit binary of Opennap NG and test it (reports are appreciated),
we currently do not offer any native 64 bit binaries, neither for Unix nor
for Windows. |
||||||||||||||||||||||||||
| Q: | What is the state of Opennap NG's memory management functions? | ||||||||||||||||||||||||||
| A: | In version 0.60, Opennap NG contains no less than 6 distinct code variants
for function sets like malloc(), free(), realloc(), etc. The three main
variants are:
|
||||||||||||||||||||||||||
| Q: | What is JMM (Jondo's Memory Management) | ||||||||||||||||||||||||||
| A: | JMM is an alternate memory management system, a replacement for C library
functions like malloc(), free() and others. It is optimized to address demands
of applications like Opennap NG, which is to frequently allocate and free
huge amounts of tiny memory chunks. Memory overhead of JMM is significantly
lower than that of standard C library implementations. It is able to reduce
Opennap NG's memory overhead by 70% - 80%, hence reducing the total RAM
demands of a running Opennap NG process by up to 20%. JMM features its very
own implementation of standard C library functions like malloc(), calloc(),
free(), realloc() and strdup(). Compatibility at interface level is maintained,
though. JMM doesn't use existing implementions of the system's C library
(on Unix: not at all, on Windows: rarely). On Unix, JMM completely bypasses
brk() and sbrk(), the standard (but inefficient) POSIX kernel means for
address space calculation and RAM assignment for processes. Their main drawback
is that, if not used in a strict LIFO order, they are unable to return any
freed RAM to the system (until the process eventually terminates). This
is unsuitable for many applications, very especially for Opennap NG. On
POSIX systems JMM uses mmap() and munmap() only, as they are the lowest
level memory management interface functions to the kernel. All higher level
memory content organization is completely managed by JMM. The use of mmap()
/ munmap() instead of brk() / sbrk() at kernel level also allows JMM to
return memory pages back to the OS. This is basically never the case with
default memory management. |
||||||||||||||||||||||||||
| Q: | I am a programmer, too. Can I join the development team? | ||||||||||||||||||||||||||
| A: | Basically yes. Opennap development is and has ever been handed from one
single or group of programmers to the next. As anyone of us may decide to
retire from Opennap NG development any time in the future, new keen personel
to keep server maintenance going is welcome. However, as the server code
is currently undergoing some major changes by people already knowing quite
well about its internals, you should wait for some weeks to start learning
about Opennap NG internals and how to improve them. |
||||||||||||||||||||||||||
| Q: | Can I reprogram or modify Opennap NG to better reflect my needs? | ||||||||||||||||||||||||||
| A: | If you have sufficient programming skills: yes. Opennap NG is released
under the GPL (GNU Public License) so you can change and mostly do with
it what you want, and either republish it or keep the changes private for
your own. If you developped some changes which might be of use for the public
and are not conflicting with the non-features list we welcome you to contribute
your changes to the official version. |
||||||||||||||||||||||||||
| Q: | What protocol does Opennap NG use? | ||||||||||||||||||||||||||
| A: | Opennap NG bases on the original Napster file sharing protocol. It features
some own extensions to it and hence is referred to as the Opennap protocol.
Slavanap adopted
those extensions and supports them as well, as far as we know. |
||||||||||||||||||||||||||
| Q: | What clients should be used for Opennap NG? | ||||||||||||||||||||||||||
| A: | Any client for the original Napster protocol is basically usable. However,
only few clients fully comply to the protocol. The majority of clients is
either incomplete (regarding protocol compliance) or violates the protocol
on purpose, to implement own, product-specific extensions. The three top
recommended clients are: Lopster,
Xnap and Teknap.
See this extensive list of clients for further
options. |
||||||||||||||||||||||||||
| Q: | How does colour support in chats work? | ||||||||||||||||||||||||||
| A: | At protocol level, colours are set by an ETX-character (Ascii code 3,
also known as [CTRL]+[C] or ^C in short), followed by two Ascii digits,
where the first is either "3", "4" or "5" and the second a number between
"0" and "7". The first digit determines which flavour of color to set (background,
normal foreground or bright foreground), the second determines the actual
colour value. At client interface level it may already look quite different.
For instance, in Lopster
you colours are changed by typing a "%", followed by a letter. In TekNap
full ANSI-complying Escape sequences have to be entered to to change colours,
starting with [ESC]-[[] and going on with some weird codes and characters
(up to 8 characters to specify an exact colour). The latter is the way how
colours are set in terminals like Linux consoles, Telnet or SSH sessions
or similar as well, btw. |
||||||||||||||||||||||||||
| Q: | Does Opennap NG support encryption? | ||||||||||||||||||||||||||
| A: | With one tiny exception: no. The whole protocol is plain-text based and
all traffic between servers and clients, servers and servers and clients
and clients is conducted unencrypted. This includes private chats! The only
exception is user passwords. They are one-way-hashed immediately after reception
(when users are being registered). |
||||||||||||||||||||||||||
| Q: | Why is the server software so small? | ||||||||||||||||||||||||||
| A: | Simply put: because it's written so well and doesn't carry any ballast
not needed for operation. It's a native C application and, except for zlib,
doesn't need more external software resources than any not too old operating
system offers by default. |
||||||||||||||||||||||||||
| Q: | What is IBL? | ||||||||||||||||||||||||||
| A: | IBL stands for Internal Ban List and is a mechanism of Opennap NG to efficiently
handle large numbers of frequently requested bans. |
||||||||||||||||||||||||||
| Q: | What is the difference between IBL and usual bans? | ||||||||||||||||||||||||||
| A: | FIXME! IBL entries contain IP address and expiration time only.
IBL entries are created by the serverautomatically, not by Mods+
manually. Normal bans typically last for hours, days, weeks or even months.
IBL entries typically last for minutes only. |
||||||||||||||||||||||||||
| Q: | How can I compile Opennap NG on Windows to creaty my own binary? | ||||||||||||||||||||||||||
| A: | Opennap NG currently requires the GCC
(GNU Compiler Collection) version 3.x to be built. Other compilers or
build environments are not suppported. This is because newer versions of
Opennap NG are written in ISO
C99, which most commercial compilers don't (or not fully) support. Our
Windows binaries were built using the MinGW
(Minimalist's GNU for Windows) environment, a free collection of capable
compilers, assemblers, linkers, debuggers, build tools and shell tools for
Windows. However, MinGW operates the Unix way, not the Windows way. It's
fully text-terminal-controlled, there's no GUI or IDE at all. While this
is the common and preferred way to build software on Unix, it's very uncommon
for developers on Windows. Explanation about how to use MinGW and its shell,
how GCC and the other tools are configured and invoked is far beyond the
scope of this document. In short: MinGW works exactly the Unix way, which
is "configure" and "make". You need
to learn about standardized software building procedures of the Unix world
(namely the autotools) to be able to create your own Windows binary of Opennap
NG using MinGW. |
||||||||||||||||||||||||||
| Q: | Are there any known major bugs left? | ||||||||||||||||||||||||||
| A: | None which we are aware of at this time. No server vulnerabilities are
known at this time nor have ever emerged before, In Unix environments the
software has already proven to be able to run for a year and more without
crashes. We expect the same to be possible on Windows since 0.49. Some minor
bugs, i.e. regarding proper inter-channel server synchronization and dumps,
are known and likely to be addressed soon. They're non-critical, however,
and most server owners didn't realize them even after years of Opennap NG
operation. Even more very minor bugs may lurk in the software, without anyone
having noticed or reported it as yet. |
||||||||||||||||||||||||||
| Q: | I have a feature request or an idea. What can I do? | ||||||||||||||||||||||||||
| A: | Please contact us. |
||||||||||||||||||||||||||
| Q: | I found a bug. What can I do? | ||||||||||||||||||||||||||
| A: | Please contact us. |
||||||||||||||||||||||||||
| Q: | How else can I contribute? | ||||||||||||||||||||||||||
| A: | See the contact & request page for further offers we'd be glad about. | ||||||||||||||||||||||||||