Raptor, traffic control plugin

Version 10


    Raptor allows to monitor traffic and drop or reject selective packets. Basically it is similar than the official PacketFilter plugin, but has much more features. For each packet going through the server it processes a list of Actions. In principle this list is processed from the top down, but branching is also allowed. You can define functions and if-then-else like structures. Even recursion is possible. These features can improve performance and open a complete new world of features. There are Actions for logging, sending Jabber messages and emails. Another key feature are counters. They count packets per JID. This allows you for example to detect abuse or react on something at maximum only once every minute. E.g. if you intercept 100 packets per second you probably don't want 100 log entries per second.


    Such sets of actions are called profiles. Profiles can be easily imported and exported in an XML format. You will find it useful to share profiles or parts of them within the community.


    You will find much more information about what is possible and how to use Raptor in the online manual included in the packet. Check out the self-explanatory XML examples below to get an idea what is possible with Raptor.


    Raptor is clearly targeted to advanced users. Basic programming knowledge is required, some experience with multithreaded applications is recommend.


    requirements and license

    • This is an BETA release, be aware of bugs! Use on production systems at your own risk!
    • Openfire 3.5.2 or newer
    • Raptor is licensed under GPLv3.
    • Raptor does not need direct database access, so it should support all databases Openfire supports. Instead profiles are stored by default as XML in "..../openfire/conf/raptor". You may change this directory, see README.
    • Currently there is no editor for profiles, you will need to write XML code by hand. However, an AJAX based editor for admin console is planned for future releases.



    version 0.2.1 (March 19, 2009)

    • Added XML Viewer with Syntax-Highlight to Admin Console Interface.
    • Traffic to component.your-server.tld was blocked in some examples in manual. You components would not work correctly then.
    • Mentioned email sender properties in manual.
    • Email sender does now default to admin@your-server.tld.


    version 0.2 (March 15, 2009)

    • Solved several race condition bugs in Counter. Packets are now synchronized using bare JID strings, instead of using AtomicInteger class.
    • new check:set_count is an atomic combination of check:count and action:set_count. This helps to deal with race conditions at user/profile level. See new examples in manual.
    • check:address does now support checking against a GROUP. If a domain ends with localhost this is automatically replaced with your servername.
    • new action:message can send Jabber messages.
    • new action:email can send emails. New emailmapper can map jabber to email adresses, e.g. you could map username@jabber.example.com to username@example.com.
    • new concept of functions. Functions are similar as the old action:branch, but they can be called multiple times using new action:call. In combination with variables even loops (as recursion) might be possible, if someone finds that useful. New entry point for your program is now a special function named MAIN. Old entry-Action are still supported, but deprecated.
    • Rules are now also Actions (action:rule), so you can place rules everywhere you can place actions. Old action:branch was removed, because there is no more need for them. However, action:branch is still supported when loading old profiles. An action:branch is substituted using an action:rule without Checks. However, it is recommend to rewrite your profiles, since there are many new features now.
    • new concept of variables. Variables allow to store information per packet during processing. Allowed Datatypes are JID and INT. Use this feature with new check:jid and action:set_jid rather new check:int and action:set_int.
    • new check:incoming reads incoming parameter of Openfire's PacketInterceptor.
    • new Raptor icon.
    • updated manual.
    • (for developers) improved usage of M4 macro processor for conditional comments.

    version 0.1 (October 10, 2008)

    • initial version



    • raptor-0.2.1-544.tar.gz
    • raptor-0.2.1-544.zip
    • This is an BETA release, be aware of bugs! Use on production systems at your own risk!
    • This download includes compiled JAR file, online manual, source code, javadoc docs, several scripts and used libraries.



    XML examples

    Several example XML files are attached to this document.