Frequently Asked Questions (FAQ)
- 1.1 - What is OOMon?
- 1.2 - Why should I use it?
- 1.3 - What Operating Systems are supported?
- 1.4 - What IRC Servers are supported?
- 1.5 - Where should I ask for help?
- 2.1 - How do I build the most recent code?
- 2.2 - Why does it take so long to compile OOMon?
- 2.3 - Why can't I build OOMon on <insert commercial Unix OS name>
- 3.1 - Why is OOMon showing duplicate "STATS p" notices?
- 3.2 - How do I completely disable Open Proxy DNSBL look-ups?
- 3.3 - How do I make OOMon initiate a DCC request?
- 4.1 - How do I report bugs?
- 4.2 - Will you add <feature> in the next version?
- 4.3 - My OOMon crashed or disconnected with the message "Abnormal termination." What happened?
- 4.4 - I can't find a core file! Now what?
1.0 - What is OOMon and Where can I get it?
1.1 - What is OOMon? (top)
OOMon is an Object-Oriented Monitor bot for Internet Relay Chat (IRC) servers. OOMon monitors various types of IRC activity for possible abuse. When abuse is detected, the OOMon may automatically remove and/or ban the abusive client from the server, or notify server operators for them to deal with the issue appropriately.
The official OOMon website is http://oomon.sourceforge.net/.
1.2 - Why should I use it? (top)
If you are an IRC server operator or administrator who does not want users to abuse the service you provide and/or support, you should run an OOMon connection monitor.
1.3 - What Operating Systems are supported? (top)
Practically any Unix-like operating system should compile and run OOMon successfully. However, the following operating systems have been confirmed to run OOMon without problems:
- Cygwin (Windows)
If you are running an operating system other than one listed above, don't despair! If you have GNU C++ and the GNU Standard Template Library (STL) installed, chances are OOMon will build successfully on your system.
1.4 - What IRC Servers are supported? (top)
OOMon is known to work well with the following IRC Servers:
- ircd-hybrid (versions 5, 6, and 7)
If you run a different ircd version and OOMon works correctly on your server, please let us know by submitting a documentation bug tracker item.
1.5 - Where should I ask for help? (top)
There are several ways to get your questions answered. In the order of most likely to get answered, they are:
- Check the official OOMon web site. In particular, read the FAQ, in case your question has already been answered there.
- Post your question to the oomon-discuss mailing list.
- Post your question to the OOMon Help forum.
- Join the IRC channel #OOMon on EFNet.
When asking questions, please follow these guidelines to ensure prompt and accurate answers:
Ask your question directly, without any unnecessary preamble.
Can I ask a question?
Has anyone ever used X?
Can someone help me with Y?
When using FOO, why does BAR always make QUUX disconnect?
Saying "it doesn't work" is not a good problem description. Rather than saying, "Spambot detection doesn't work", say something like, "Even though I've enabled WATCH_SPAMBOT_NOTICES and set SPAMBOT_ACTION to KLINE, my OOMon never klines any spambots."
Don't be annoying, obnoxious, or offensive. Please follow standard netiquette.
Ask your question in English only. While many users speak other languages, asking your question in English ensures the greatest possible audience for your question, and allows others to benefit from any answers as well.
On IRC, please DO NOT paste large amounts of text. Instead, use a "paste bin" site like http://www.nomorepasting.com/ and paste the resulting URL to the channel.
On IRC, use your space bar to separate words. Doing the following will likely get you removed from the channel:
<n00b> So <n00b> I tried <n00b> ".kline" and <n00b> ".dline" but uhm... <n00b> like... <n00b> it doesn't work
2.1 - How do I build the most recent code? (top)
2.2 - Why does it take so long to compile OOMon? (top)
A large portion of the time spent compiling OOMon is due
to the optimizations the compiler performs. You can reduce
the time it takes to compile OOMon by removing the
-O" flag from
CXXFLAGS in the
There is a trade-off when removing the optimize flag. Decreasing the compile time will probably cause OOMon to run slower and use memory less efficiently.
2.3 - Why can't I build OOMon on <insert commercial Unix OS name> (top)
You're probably using the broken compiler shipped with the
OS. Please use the GNU C++ compiler to build OOMon. If you
know you already have GNU C++ installed, enter the following
command prior to running the
CXX=g++; export CXX
Or, if you use the
setenv CXX g++
3.0 - Run-Time Issues
3.1 - Why is OOMon showing duplicate "STATS p" notices? (top)
Most likely you are running ircd-hybrid-7, or an ircd derived from it, and have the modules spy_stats_notice.so and spy_stats_p_notice.so both loaded. Unload one of them, and you'll stop seeing duplicates.
3.2 - How do I completely disable Open Proxy DNSBL look-ups? (top)
As of OOMon-2.3, you can completely disable all DNSBL
look-ups by setting
.set dnsbl_proxy_enable off
Users of older version of OOMon can disable DNSBL look-ups
by clearing the
3.3 - How do I make OOMon initiate a DCC request? (top)
Users who IRC from behind a firewall or NAT device may find it useful to have the bot initiate DCC requests so that they do not have to open or forward TCP ports in their network hardware. To make OOMon initiate a DCC request, issue a CTCP CHAT command as follows:
/ctcp <nickname> chat
Note that the same rules apply in this scenario. If OPER_ONLY_DCC is enabled, your userhost must match one of the masks listed an O: line in the config file. If no matching masks are found, OOMon will ignore your CTCP command.
Before submitting a bug report, please check this FAQ for possible solutions.
Submit your bug reports through the SourceForge.net bug tracker interface. You do not have to login to a SourceForge account to submit bug reports, but PLEASE include contact information in the text of your report. In particular, your email address or IRC information (nick@network) will help me in case I need to contact you for additional information.
Try to include as much information about the problem as possible. Include excerpts from your OOMon log file if necessary. Please do not send a core dump file unless it is specifically requested.
It's always a good idea to periodically check on your bug report in case additional information is requested.
Submit your feature requests through the SourceForge.net feature request interface. Like bug reports, you do not have to login to a SourceForge account to submit feature requests, but PLEASE include contact information in the text of your request!
Please note that asking in channel
private messaging me will not get your
request automatically added to the list, even if I tell you
its a great idea! If the feature request is important to you,
you must submit it through the web site.
It's always a good idea to periodically check on your feature request in case additional information is requested.
4.3 - My OOMon crashed or disconnected with the message "Abnormal termination." What happened? (top)
Your OOMon appears to have crashed due to a bug. You can help me out by filling out a bug report containing the following information:
- The version of OOMon you were running if it was an official release. If it was from CVS, the date and time of the checkout. If it was a from a snapshot tarball, the date of the snapshot.
- A description of what you were doing when OOMon crashed.
- The last 5 to 10 lines of your
tail -10 oomon.log
- A full backtrace of the crash using the GDB debugger:
Find the location of the resulting core file. It's
usually called "
oomon.core" or just
Change to the directory containing the source code to your OOMon. The version of the source code MUST match the version of the executable that crashed Run GDB:
Make sure you replace "<EXECUTABLE>" with the
OOMon executable filename that crashed and
"<CORE>" with the resulting core filename. At the
(gdb)" prompt, type the following
Please copy the entire output of this command to your bug report.
There are several reasons for why a core file might not be generated:
- Your OOMon was built without debug information. Rebuild
OOMon with "
-g" in the
- Your OOMon executable was stripped. Rebuild OOMon and don't strip the executable this time.
- Your resource limits are preventing core files from
being generated. The command to change resource limits is
OS dependent, so check your documentation. On FreeBSD, you
can use this command to increase the core file limit:
limits -c infinity
If none of the above help you create core files, try running your OOMon from inside GDB:
- Start GDB (you might want to do this inside a
- At the first "
(gdb)" prompt, set your command line arguments to include the "
set args -d
- Be sure to specify any other command line arguments you
would normally use. At the next "
(gdb)" prompt, run your OOMon:
- Now let your OOMon run until it crashes. When that
happens, enter the following command at the
- Copy the entire output of this command to your bug report.
I started writing OOMon while I was taking a C++ course at the University of Arizona. At the time, I had made some minor modifications to the TCM (Texas.NET Connection Monitor) bot source code, and I realized how much more pleasant it would have been to work on TCM had it been written using object orientation.
Don't get me wrong--TCM was an amazing piece of work at the time. In fact, much of OOMon's code is based on TCM, so it deserves much credit. However, I wanted to apply what I learned in my C++ course to make a better connection monitor bot.
First, don't use my OOMon code as a model for good C++ programming. At heart, I'm really an x86 assembly and C programmer. I learned C++ later on and that fact probably shows well in my code. I'm still learning, however, so I'm gradually rewriting various pieces of OOMon to make it better and better.
If you are, like me, a C programmer and you want to pick up some C++ skills, I highly recommend Accelerated C++: Practical Programming by Example, by Andrew Koenig and Barbara E. Moo. This book was recommended to me and I promptly read it cover-to-cover. I still refer to it regularly as I'm coding.