Helga is a powerful Server-Bot. It can be controlled by normal chat messages you send to email@example.com, helga.yourserver.com or generally firstname.lastname@example.org. You will be automatically registered if you add Helga to your roster. Alternatively you can register via service discovery.
requirements and license
- Openfire 3.5.x, 3.6.0 or newer
- MySQL database is fully supported. Microsoft SQL-Server and HSQLDB (embedded-db) databases are reported to work, too. All other databases supported by Openfire are still beta, because completely untested.
- released under GNU General Public License
- I use parts of official plugins ( presence and search ) and Openfire itself. I am not the owner of the complete copyright, so I can’t release it under any other license for you.
- advanced shared groups (see below)
- LaTeX interface: compile LaTeX code into images, using external application.
- some nice admin commands (e.g. message or email to every registered user, …)
- send remind messages to yourself or other users, simple management of this messages
- import/export your own roster, import nicknames names from vCards (does work with transports, too!)
- features taken from presence plugin: provide users presence via HTTP-Request, this does only work if the affected user has explicit allowed this.
- currently available in German and an (maybe bad) English translation. (it would be great if a native English speaking could help translating it)
- for developers
- English comments and identifiers in source code (use of JavaDoc)
- use of i18n files, you can translate Helga in your language
- use of Openfire’s internal database schema manager
- easy to use base class for commands
- feature rich utility classes
- event system, to realize timeouts, callbacks, etc.
- it should be easy to extend Helga with your ideas!
helga shared groups
Helga builds an advanced shared group system around the constricted Openfire system. So everything that was possible with Openfire itself, is possible with Helga, too. A more detailed description is available in German language.
- All group settings are available through Helga chat commands. This should work with ALL jabber clients.
- different user classes:
- everyone - just a user who has an account on your server
- group member - user who is member of a group
- moderator - moderators for example can kick or ban users. Only serveradmins can give you this rights.
- serveradmin - member of special group “Jabber Admins”, this users can do everything
- different group types:
- OPEN - everyone can join this group or invite others. Moderators can kick or ban users. The list of group members is public and the group appears in global group list.
- MODERATED - everyone can request a join, moderators can accept their request, invite, kick or ban users. The list of group moderators is public, member list is visible for members. The group appears in global group list.
- CLOSED - users can only join this group, if they got an invitation from a moderator before. Moderators can kick or ban users, too. The list of group moderators is public, member list is visible for members. The group does not appear on global group list.
An complete manual to all commands and parameters is currently only available in German language. Also a first steps guide is available in German.
Get a list of all supported commands.
Get help to an specific command.
Reads out the current setting of an option. To change a setting, use the ‘set’-command.
Complies given LaTeX Code to an GIF image, uploaded on the server. Helga provides two links:
permanent link to the image
always the same link which points always onto your last image.
See README for more details.
Send a remind message to someone. This command can be used to send an message to yourself or someone else. You can manage your messages with ‘show’ and ‘remove’ commands. The number of messages per user is limited to 10.
Simple command which just answers “pong”. Helpful to check if your internet connection is still available.
Gives the time when an user was last seen or his presence if the user is only at the moment. For security reasons is is only possible to query users who are registered with Helga and have set public setting to ‘true’.
Serveradmins get extended information about users operating system and client.
Active events can be removed. The ‘remove’-Command removes an specific or all messages. You can only remove your own messages. You can get the MessageID by the ‘show’-Command.
Set an option to an new value. To read out the current setting use the ‘get’-command.
Prints a list of all your active messages.
Sends current servertime
Sends welcome-message again.
This command is only for serveradmins. You can add one ore more users directly to a group. (without user demand)
This command is only for moderators. The user will deleted from the group and append to a ban list, which prevents the user from rejoin to the group. The ban can be revoked with the ‘revoke’ command. This ban list of a group can be shown using the ‘info’ command.
Serveradmins can create new groups with this command. To change group settings later, use ‘update’. Both commands are identically, except that ‘create’ can only create new groups and ‘update’ can only change existing groups. (security against typos)
This command has two functions:
You can decline an invitation explicitly. Moderators will noticed about this with a message.
Moderators can decline a join request.
Serveradmins can delete existing groups.
This command lists all available groups of type OPEN and MODERATED. Groups of type CLOSED are only showed to serveradmins.
An optional filter can be used to restrict the search. All groups are listed who have the given filter in their name. The wildcards * and ? are interpreted as usual. The filter is case sensitive.
A list of groups you are member of or information to an specific group.
Inside of OPEN groups every member can send invitations. Inside of MODERATED or CLOSED group only moderators are allowed to do this. Make an user an join request, then all moderators will receive a message. By inviting this user a moderator can accept the request. In this case the user will not receive an invite message, but will added to the group directly.
With this command you can join a group. If the group is MODERATED, only a join request is made. This request can be accepted by an moderator with an ‘invite’ or decline with ‘decline’. In CLOSED groups you can only join if you have been invited.
Only serveradmins can ‘join’ other users.
Groupmembers can leave the group with this command. Moderators can kick other users out of the group.
Send a message to all members of a group. Only for group members in case of the group is in ONLYGROUP mode. In all other cases this can only done by group moderators.
This command is only for moderators. It revokes a ban that was declared using the ‘ban’ command.
With this command you can add multiple contacts at once to your roster (contactlist). This only makes sence if you want to import many contacts, for example a complete contact list if you are doing a server relocation.
This command does export your roster (contactlist) using the format described under ‘import’. Contacts form shared groups where exported, too. Contacts that have a jabberID without a username (e.g. Transports as icq.jabber.rwth-aachen.de) where not exported.
This command iterates through your complete roster and sets nicknames automatically. This could take some seconds, especially if vCard are not locally available and have to be requested from remote.
Serveradmins can send an email to all users of your server.
Serveradmins can send a message to all registered users of your server. (really all users, not only available)
2.22 – August 18, 2008
Fixed bugs in database scripts for hsqldb. Using HSQLDB (embedded-db) with Helga should work now. (thx @ dfaure)
Changed time format for locale EN to 24h clock for usability reasons.
Fixed time format bug in ‘message’ command manpage.
Fixed minor leap year bug in ‘message’ command.
New compile script: No longer hardcoded absolute paths. JavaDoc creation should no longer flood with warnings.
2.21 – April 8, 2008
Applied API changes for Openfire 3.5.0. Set minServerVersion to 3.5.0
Fixed some bad quoting bugs in i18n files.
Fixed NullPointerException for commands ‘group create’ and ‘group update’ if parameter ‘-g’ is not given.
Fixed NullPointerException when revoking moderator rights with command ‘group update’.
command ‘presence’ does now show also group memberships, if an admin is querying.
2.20 – March 13, 2008
- new command: ‘latex’ - compiles LaTeX code to images, using an external application.
2.11 – March 4, 2008
Fixed serveral problems with SQL-server database. SQL-server should work now, but helga’s group features are still untested with SQL-server. thx@deafsquad
Other databases than MySQL and SQL-server are still Beta. Would be nice if someone could test it and report results to me.
Added some linebreaks to in-band-registration-instructions.
2.1 – February 21, 2008
‘message’ command does now check if a local resource is available before sending to it. If the resource is unavailable it redirects to bare JID. For external resources can’t checked if they are available, so message were lost, if the external server does not redirect the message.
fixed small bug while loading message events from database
‘admin message’ sends to all connected resources now, not only to the most available resource of each user. Added option not to send to unavailable users, too. This should be equivalent to send a message through the admin console.
new command: ‘ping’ - It just answers “pong”. Helpful to check you Internet connection.
new alias: (date -> time)
removed experimental transport settings, because they didn’t work and are not needed anymore. Removed HelgaTransportManager class and related code.
Helga should now be able to import nicknames from everything that supports vCards (XEP-0054 vcard-temp). In particular this should work with pyICQt and pyMSNt.
command: ‘roster names’, added an option to restrict work on an specific domain or subdomain.
massive changes on database tables. Helga should now support all databases that openfire supports, but everything else than MySQL is still Beta.
Helga is now integrated into Openfires database update system. In future database changes can be done automatically. If you are updating from Helga 2.1x execute the following SQL statement before updating to a newer version of Helga:
> INSERT INTO jiveVersion (name, version) VALUES ('helga', 0);
- If you are updating from 1.xx (before offical release), you have to update manually.
2.02 – November 18, 2007
compiled with Openfire 3.4.1 and JDK 6u3
2.01 – November 2, 2007
nicer presence images, images taken from Psi’s “Crystal (Roster)” Icons (Author: Everaldo Coelho, http://www.everaldo.com)
changed the way how Helga loads the presence images
now an local username is accepted in a HTTP-Request. You can use something like: *…helga/user?jid=user1 *instead of *…*email@example.com
This complete bundle contains: compiled jar-file, source code, JavaDoc files, some scripts and GPL license text.
You should read the configuration section in README file before using!
Do not use on productive systems, if you do not have an MySQL database!
German project site
If you have questions, improvements, etc. leave a comment on this document.
Martin Weusten (Coolcat)