You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
6.0 KiB
Org Mode

3 years ago
#+TITLE: weechat-xmpp
7 years ago
#+AUTHOR: Tony Olagbaiye
#+EMAIL: frony0@gmail.com
7 years ago
#+DATE: 2018-05-09
3 years ago
#+DESCRIPTION: Weechat plugin for XMPP
#+KEYWORDS: weechat xmpp c api
7 years ago
#+LANGUAGE: en
#+OPTIONS: H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS: TeX:t LaTeX:nil skip:nil d:nil todo:t pri:t tags:not-in-toc
7 years ago
#+EXPORT_EXCLUDE_TAGS: exclude
#+STARTUP: showall
3 years ago
[[https://travis-ci.org/bqv/weechat-xmpp][file:https://api.travis-ci.org/bqv/weechat-xmpp.svg?branch=master]]
[[https://coveralls.io/github/bqv/weechat-xmpp?branch=master][file:https://coveralls.io/repos/github/bqv/weechat-xmpp/badge.svg?branch=master]]
[[https://github.com/bqv/weechat-xmpp/issues][file:https://img.shields.io/github/issues/bqv/weechat-xmpp.svg]]
[[https://github.com/bqv/weechat-xmpp/issues?q=is:issue+is:closed][file:https://img.shields.io/github/issues-closed/bqv/weechat-xmpp.svg]]
[[https://github.com/bqv/weechat-xmpp/blob/master/LICENSE][file:https://img.shields.io/github/license/bqv/weechat-xmpp.svg]]
[[https://github.com/bqv/weechat-extras/][file:https://img.shields.io/badge/weechat--extras-xmpp-blue.svg]]
3 years ago
[[https://github.com/bqv/weechat-extras/][file:https://inverse.chat/badge.svg?room=weechat@muc.xa0.uk]]
7 years ago
3 years ago
| Status: | XMPP for power users and digital masochists |
| Location: | [[http://github.com/bqv/weechat-xmpp]] |
| Version: | 0.1.1 |
| Disclaimer: | I'm lazy and unashamedly clinically insane |
7 years ago
* Description
A weechat plugin in C to extend the chat client to
3 years ago
support XMPP and a currently minimal but ideally maximal
set of XEPs.
3 years ago
My priority here is to have an android-available XMPP client
that hides as little as possible from the user. To use this with
android, set up a relay (`/relay`) and see weechat-android.
3 years ago
I'm gonna rewrite this in C++ at some point when I have a feel
for the full behaviour of an average client.
3 years ago
* Usage
3 years ago
1. Start with =/xmpp add=, use =/help xmpp= for instructions.
3 years ago
2. Use =/xmpp connect <account-name>= with the name set at
add-time.
7 years ago
7 years ago
* Installing
3 years ago
Place xmpp.so in the appropriate place for weechat plugins.
7 years ago
7 years ago
* Dependencies
3 years ago
- libstrophe (dynamic, dependency)
- libxml2 (dynamic, dependency)
3 years ago
- libsignal-protocol-c (dynamic, dependency)
- rnp (dynamic, dependency)
- weechat (>= v3.0)
7 years ago
.. or just use the guix spec in .envrc
7 years ago
* Building
#+begin_src sh
3 years ago
git clone git://github.com/bqv/weechat-xmpp.git
cd weechat-xmpp
git submodule update --init --recursive
7 years ago
make
make install
#+end_src
3 years ago
Do *NOT* run make install as root, it installs the plugin to your
local weechat plugins directory
3 years ago
* Development
3 years ago
I use emacs for development of this, although I am also a fan of vim.
My debug build process involves static analysis with clang and cppcheck,
and dynamic analysis with address-sanitizer and leak-sanitizer.
My debug evaluation process involves gdb/mi run with the arguments
=-ex "handle SIGPIPE nostop noprint pass" --args weechat -a 2>asan.log=
since part of weechat and it's default plugins use SIGPIPE as control.
3 years ago
I have no real requests for style of pull requests besides a wish that
you keep vaguely to the indentation style I use for this project.
Happy coding!
7 years ago
* Tasks
3 years ago
** DONE [#A] Implement basic functionality (milestone v0.1)
3 years ago
* [X] Connecting
* [X] Pretty-printing stanzas
* [X] Receiveing and formatting PMs to a dedicated buffer
* [X] Responding to PMs and formatting responses
* [X] Opening PMs (/chat)
3 years ago
** TODO [#A] Implement essential functionality (milestone v0.2)
3 years ago
* [X] Opening PMs with initial message
3 years ago
* [-] OOB messages
* [X] Single media on a line
* [ ] Multiple media inline (protocol?)
3 years ago
* [X] Buffer autoswitch on enter/open
* [X] Handle open/enter jids with a resource without breaking
* [X] Allow /close without crashing
3 years ago
* [ ] [#B] Handle wide errors gracefully
* [ ] [#B] Event-driven MUC entrance
* [ ] [#C] XMPP Ping (xep-199)
* [X] [#A] Highlight
3 years ago
* [-] MUCs
3 years ago
* [X] Opening (/enter)
* [ ] [#B] Leave on /close
3 years ago
* [X] Receiving
* [X] Sending
* [X] With /msg
3 years ago
* [-] [#B] Edits
* [X] [#B] Displaying
* [X] [#B] Tagging
* [ ] [#B] Making
3 years ago
* [X] [#C] Diff highlighting
3 years ago
* [ ] [#B] Handle errors gracefully
* [X] [#B] Presence/nicklist
* [X] [#B] Enters
* [X] [#B] Leaves
* [X] [#B] Tracking
* [X] [#B] Set/show topic
3 years ago
* [-] OMEMO (libsignal-protocol-c)
3 years ago
* [-] Presence
* [X] Disco
3 years ago
* [X] Disco response
3 years ago
* [-] Key Generation / storage (lmdb)
3 years ago
* [X] Generation
3 years ago
* [?] Storage
* [-] Announce
* [X] Device ID
* [ ] Bundles
3 years ago
* [ ] Messages
* [ ] [#C] MUC PMs
3 years ago
* [X] [#A] Send typing notifications
* [X] [#A] Recv typing notifications
* [X] [#C] Read receipts
* [X] Chat Markers (XEP-0333)
3 years ago
* [X] Composing
* [X] Paused
* [?] Active
* [ ] Inactive
* [ ] Gone
3 years ago
* [X] Message Delivery (XEP-0184)
* [X] Message Carbons
* [ ] Service Disco
3 years ago
* [X] MAM Fetching
3 years ago
* [-] Bookmarks / Roster
3 years ago
* [X] Autojoin bookmarks
* [ ] Add bookmarks
* [ ] Delete bookmarks
* [ ] Roster
3 years ago
* [ ] OTR (libotr)
3 years ago
* [X] PGP (rnpgp)
* [X] Use keyrings (e.g. exported from gnupg)
* [X] Presence
* [X] Decryption
* [X] Encryption
* [X] Custom set/clear key (/pgp)
3 years ago
* [ ] OOB data and media
3 years ago
* [ ] Room Explorer (https://search.jabber.network/docs/api)
3 years ago
** TODO [#C] Implement completion engine (milestone v0.3)
** TODO [#D] Close all issues (milestone v1.0)
7 years ago
* Contributing
*Your contributions are always welcome!*
Please submit a pull request or create an issue
to add a new or missing feature.
* Testimonials
"Weechat-Strophe - for the discerning dual IRCer XMPPer" -- [[github.com/janicez][Ellenor et al Bjornsdottir]]
7 years ago
* License
3 years ago
weechat-xmpp is licensed under the Mozilla Public
7 years ago
License Version 2.0 available [[https://www.mozilla.org/en-US/MPL/2.0/][here]] and in LICENSE.