MOO-XMPP
From Kenny Root
MOO-XMPP was written by Kenny Root as an experiment in connecting to XMPP (AKA Jabber) services. It was initially developed on his MOO ice-nine and later ported to Waterpoint.
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.
Contents |
Features
| Feature | Supports? |
|---|---|
| Messaging (XEP-0022) | Yes |
| Browsing (XEP-0011) | Partial |
| Last Activity (XEP-0012) | Yes |
| Service Discovery (XEP-0030) | Partial |
| vcard-temp (XEP-0054) | Yes[1] |
| Gateway Interaction (XEP-0100) | Yes[1] |
Prerequisites
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.
Server Patches
| Name | Instructions | URL |
|---|---|---|
| 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
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()
XML Utilities
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 = _
In-MOO Resolver
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()
Source Code
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.
Code: xmpp.zip
- 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 ---
