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.