horazont / Xmpp Echo Bot
XMPP/Jabber echo bot (written in sed)
Stars: ✭ 127
Programming Languages
bash
514 projects
Labels
Projects that are alternatives of or similar to Xmpp Echo Bot
Botonomous
A PHP Framework For Creating Autonomous Slack Bots
Stars: ✭ 109 (-14.17%)
Mutual labels: chatbot
Know Your Intent
State of the Art results in Intent Classification using Sematic Hashing for three datasets: AskUbuntu, Chatbot and WebApplication.
Stars: ✭ 116 (-8.66%)
Mutual labels: chatbot
Transformer In Generating Dialogue
An Implementation of 'Attention is all you need' with Chinese Corpus
Stars: ✭ 121 (-4.72%)
Mutual labels: chatbot
Reddit Karma Farming Bot
"Is karma really that important to you? Damn bro, you need a life" - YouTube Comment
Stars: ✭ 111 (-12.6%)
Mutual labels: chatbot
Jarvis
J.A.R.V.I.S - Just Another Rudimentary Verbal Instruction Shell
Stars: ✭ 117 (-7.87%)
Mutual labels: chatbot
Botkit
Botkit is an open source developer tool for building chat bots, apps and custom integrations for major messaging platforms.
Stars: ✭ 10,555 (+8211.02%)
Mutual labels: chatbot
Nlp Models Tensorflow
Gathers machine learning and Tensorflow deep learning models for NLP problems, 1.13 < Tensorflow < 2.0
Stars: ✭ 1,603 (+1162.2%)
Mutual labels: chatbot
Cathy
Artificial intelligence (AI) chat bot for Discord written in Python 3
Stars: ✭ 112 (-11.81%)
Mutual labels: chatbot
Jared
An easily extensible chat bot for iMessage written in Swift.
Stars: ✭ 117 (-7.87%)
Mutual labels: chatbot
Mlds2018spring
Machine Learning and having it Deep and Structured (MLDS) in 2018 spring
Stars: ✭ 124 (-2.36%)
Mutual labels: chatbot
Ovh Chatbot
The goal of this tool is to help you to have fast responses when you have some problems with OVH services.
Stars: ✭ 109 (-14.17%)
Mutual labels: chatbot
Stanford Tensorflow Tutorials
This repository contains code examples for the Stanford's course: TensorFlow for Deep Learning Research.
Stars: ✭ 10,098 (+7851.18%)
Mutual labels: chatbot
Neuro
🔮 Neuro.js is machine learning library for building AI assistants and chat-bots (WIP).
Stars: ✭ 126 (-0.79%)
Mutual labels: chatbot
Dialog corpus
用于训练中英文对话系统的语料库 Datasets for Training Chatbot System
Stars: ✭ 1,662 (+1208.66%)
Mutual labels: chatbot
XMPP Echo Bot
Do you know that situation, you really really need an XMPP echo bot, but you don’t have access to high-level tools like Python <https://github.com/horazont/aioxmpp>
_ to write one? All you have is openssl
, bash
, dig
, stdbuf
and sed
? Then this tool is for you.
This is an XMPP echo bot written in (mostly) sed. Bash is used to do the pre-authentication setup (look up DNS records, establish TLS via openssl s_client
). sed processes the XML stream and handles all interaction with the server on the XMPP level. Yes, this kinda parses XML in sed.
Tested to work against Prosody 0.9.
Usage
::
./echoz.sh [email protected] password
Supported Features
- Off-the-Record messaging
-
XEP-0092 (Software Version) <https://xmpp.org/extensions/xep-0092.html>
_ -
XEP-0199 (XMPP Ping) <https://xmpp.org/extensions/xep-0199.html>
_
Testimonials
-
This is crazy, I haven't crashed it yet! —
Matthew Wild <https://github.com/mwild1>
_ -
I'm frightened. It's only two steps away from gaining consciousness. —
Georg Lukas <https://op-co.de/>
_ -
I am simultaneously appalled and in awe. wow —
Lance <https://github.com/legastero>
_ - With Echoz.sed, we were able to reduce our XMPP Echo server costs by 90% compared to our previous TeX-based solution. — Leon
-
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:[email protected]>
_
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).
Design Considerations
- We considered using
xml2
to convert the XML stream into events; however, it turns out that2xm[
doesn’t like stream resets. Also, using thetr
approach also allows us to detect the end of elements, which is useful for various purposes.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].