It acts as a server connection for other XMPP-compliant servers to connect to. This means that any user on the MOO can use MOO-XMPP to send messages to other XMPP users or register with XMPP gateways.
The MOO-XMPP service uses a couple extensions from the "basic" LambdaMOO Server. It uses the WAIF extensions written by Ben Jackson, current LambdaMOO server maintainer, and Expat binding for MOO written by Ken Fox.
|Last Activity (XEP-0012)||Yes|
|Service Discovery (XEP-0030)||Partial|
|vcard-temp (XEP-0054)||Yes<ref>Just avatars and nicknames are supported.</ref>|
|Gateway Interaction (XEP-0100)||Yes<ref>This feature needs more testing</ref>|
The MOO core MOO-XMPP was designed around was a Waterpoint-style JHCore extraction. If you are using a different core then you may be lacking the prerequisite objects. If you are, contact me and I'll try to post more object dumps here.
|WAIF||Download the WAIF branch from Sourceforge CVS (view CVS) that contains the base upon which I build. The steps for doing this are on Sourceforge.||http://sourceforge.net/projects/lambdamoo/|
|XML||Download Ken Fox's Expat binding for MOO and install that.||http://www.xythian.com/moo/expat-binding/|
Dictionary WAIFs were originally coded by Jay Carlson as an extension to Ben Jackson's WAIF work. The dictionary WAIFs basically add a way for obj.prop[index] where index is a string or number.
Object code: dict.zip
- Install waif.moo
- @property #0.waif
- ;$waif = _
- Install dict-utils.moo
- @property #0.dict
- ;$dict = _
- Install dict-waif.moo
- ;$dict._waif_class = _
- ;_.utils = $dict
- ;$dict.empty = $dict:new()
These XML objects make a standard interface for interaction with the Expat bindings by Ken Fox.
Object code xml.zip
- Install xml.moo
- @register xml on $local
- Install xml-node.moo
- ;$local.xml.node = _
Ben Jackson wrote an in-MOO resolver using WAIFs. XMPP utilizes this to support SRV records.
Object code: dns.zip
- Install dns-resolver.moo
- @register resolver on $local
- Install dns-waif.moo
- Install dns-header-waif.moo
- ;$local.resolver.header = _
- Install dns-query-waif.moo
- ;$local.resolver.header.query = _
- Install dns-rr-waif.moo
- ;$local.resolver.header.resource = _
- ;$local.resolver.server = "IP address for your local DNS server"
- Install semaphore.moo
- ;$local.resolver.mutex = _:new()
Here is the heart of the XMPP system. It is a very complicated installation process simply because of the nature of MOO. These instructions are a work in progress right now.
- Install crypto.moo
- @register crypto on $local
- Install image-utils.moo
- @register image_utils on $local
- Install xmpp-s2s-daemon.moo
- @register jabber on $local
- Open binary-handler.moo and change the parent object to the local generic daemon service handler from a JHCore/Waterpoint core.
- Note: binary-handler's :notify, :read_bytes, :notify_lines, :notify_lines_safe, and :notify_raw must be wizardly.
- --- INSERT MORE INSTRUCTIONS HERE ---
- Install xmpp-s2s-handler.moo
- ;$local.jabber.handler = _
- --- UNFINISHED ---