All Projects → horazont → Xmpp Echo Bot

horazont / Xmpp Echo Bot

XMPP/Jabber echo bot (written in sed)

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
Wechatrobot
个人微信号自动回复、陪聊、查天气、查垃圾分类。新增查看今日新闻和知乎热榜功能。
Stars: ✭ 115 (-9.45%)
Mutual labels:  chatbot
Jarvis
J.A.R.V.I.S - Just Another Rudimentary Verbal Instruction Shell
Stars: ✭ 117 (-7.87%)
Mutual labels:  chatbot
Lic2019 Competition
2019语言与智能技术竞赛-基于知识图谱的主动聊天
Stars: ✭ 109 (-14.17%)
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
Chatbots
Chatbots build with Intelligo Framework.
Stars: ✭ 119 (-6.3%)
Mutual labels:  chatbot
Cathy
Artificial intelligence (AI) chat bot for Discord written in Python 3
Stars: ✭ 112 (-11.81%)
Mutual labels:  chatbot
Alpha
Craft your own web-based chatbot
Stars: ✭ 113 (-11.02%)
Mutual labels:  chatbot
Jared
An easily extensible chat bot for iMessage written in Swift.
Stars: ✭ 117 (-7.87%)
Mutual labels:  chatbot
Twitch Bot
🤖 Easily create chat bots for Twitch.tv
Stars: ✭ 111 (-12.6%)
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
Quantified Self
Self-knowledge through numbers
Stars: ✭ 118 (-7.09%)
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. wowLance <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 worksTest <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 that 2xm[ doesn’t like stream resets. Also, using the tr 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].