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.
Feature | Supports? |
---|---|
Messaging (XEP-0022) | Yes |
Browsing (XEP-0011) | Partial |
Last Activity (XEP-0012) | Yes |
Service Discovery (XEP-0030) | Partial |
vcard-temp (XEP-0054) | Yes1 |
Gateway Interaction (XEP-0100) | Yes2 |
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.
Name | Instructions | URL |
---|---|---|
WAIF | Download the WAIF branch from GitHub (view project) that contains the base upon which I build. | https://github.com/xythian/wp-lambdamoo |
XML | Download Ken Fox's Expat binding for MOO and install that. | https://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
whereobj.prop[index]
is a string or number.index
Object code: dict.zip
@property #0.waif
;$waif = _
@property #0.dict
;$dict = _
;$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
@register xml on $local
;$local.xml.node = _
Ben Jackson wrote an in-MOO resolver using WAIFs. XMPP utilizes this to support SRV records.
Object code: dns.zip
@register resolver on $local
;$local.resolver.header = _
;$local.resolver.header.query = _
;$local.resolver.header.resource = _
IP address for your local DNS server;$local.resolver.server = "
"
;$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.
Code: xmpp.zip
@register crypto on $local
@register image_utils on $local
@register jabber on $local
,:notify
,:read_bytes
,:notify_lines
, and:notify_lines_safe
must be wizardly.:notify_raw
;$local.jabber.handler = _
Kenny Root
Copyright © Kenny Root. All rights reserved.