3
votes

I'm trying to implement a custom in-band registration module for ejabberd, which requires a little bit of specialized back and forth using custom clients. Since this contains a bunch of business logic and I'm not really comfortable using Erlang yet, I'd like to implement it as an external component of some sort. Is XEP-0114 (Jabber Component Protocol) usable for this, or will unregistered clients not be able to contact it (catch 22)?

What are other valid approaches for externalizing ejabberd components/modules? Ideally I'd like a Gearman-like setup in which ejabberd can distribute certain actions to external programs, but am so far stumped by the lack of documentation and working code on the Erlang side.

1
As an update, I am currently heading towards a solution involving a simple ejabberd module publishing messages to a rabbitmq server via bunny_farm and clients processing these messages on the other end. I'll write this up in an answer once it's more complete.deceze
What language are you comfortable with?ggozad

1 Answers

1
votes

If you are familiar with python, a really clean and performant way is to use Twisted in combination with wokkel. A simple example here: http://metajack.im/2008/10/09/echo-bot-part-two-making-a-component/ ejabberd supports XEP-0144 just fine. If you want custom logic to manage users you can combine your component with XEP-133 Service Administration