diff options
Diffstat (limited to 'README.rst')
-rw-r--r-- | README.rst | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -7,14 +7,6 @@ This is an XMPP echo bot written in (mostly) sed. Bash is used to do the pre-aut Tested to work against Prosody 0.9. -Tricks and shortcuts --------------------- - -* We use ``tr`` to convert ``>`` to ``\n`` -- since sed is line (or NUL) based, there’s not really another way to parse XMPP XML (which generally never contains newlines) with sed. -* TLS is handled outside of sed for similar reasons. And to keep my sanity (some people might question whether I still have any bit of sanity left). -* Likewise, SRV lookup and composition of the authentication data is entirely handled in bash. This also means that only PLAIN SASL authentication is supported -- SCRAM requires a level of interactivity which would be extremely hard to achieve in sed (not impossible though; we would "just" have to implement base64 and sha1-hmac in sed). -* Since XMPP is a protocol where the client speaks first, we need to hand sed some initial input to allow it to generate a "line" of output (the stream header). We do that with bash, and use that opportunity to pass some configuration to the sed program (namely JID and authentication string). - Usage ----- @@ -36,3 +28,11 @@ Testimonials * *I'm frightened. It's only two steps away from gaining consciousness.* — `Georg Lukas <https://op-co.de/>`_ * *While simple and limited, sed is sufficiently powerful for a large number of purposes.* — `Wikipedia <https://en.wikipedia.org/wiki/Sed>`_ * *oh my god this actually works* — `Test <xmpp:test@hub.sotecware.net>`_ + +Implementation Details +---------------------- + +* We use ``tr`` to convert ``>`` to ``\n`` -- since sed is line (or NUL) based, there’s not really another way to parse XMPP XML (which generally never contains newlines) with sed. +* TLS is handled outside of sed for similar reasons. And to keep my sanity (some people might question whether I still have any bit of sanity left). +* Likewise, SRV lookup and composition of the authentication data is entirely handled in bash. This also means that only PLAIN SASL authentication is supported -- SCRAM requires a level of interactivity which would be extremely hard to achieve in sed (not impossible though; we would "just" have to implement base64 and sha1-hmac in sed). +* Since XMPP is a protocol where the client speaks first, we need to hand sed some initial input to allow it to generate a "line" of output (the stream header). We do that with bash, and use that opportunity to pass some configuration to the sed program (namely JID and authentication string). |