From 09515a7159e2c8e374b8cbc65d8eef3c10d1f652 Mon Sep 17 00:00:00 2001 From: Jonas Wielicki Date: Fri, 20 Apr 2018 13:51:24 +0200 Subject: Newspeak --- README.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.rst b/README.rst index 392df51..368b758 100644 --- a/README.rst +++ b/README.rst @@ -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 `_ * *While simple and limited, sed is sufficiently powerful for a large number of purposes.* — `Wikipedia `_ * *oh my god this actually works* — `Test `_ + +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). -- cgit v1.2.3