# xmpp-rs `xmpp-rs` is an XMPP client library (for now). Under active development. [![Build Status](https://travis-ci.org/Freyskeyd/xmpp-rs.svg?branch=master)](https://travis-ci.org/Freyskeyd/xmpp-rs) ## Install This library is splitted in 3 crates (`client`, `server`, `proto`). As defined by the naming, you can use every crate independently. - `xmpp-client`: will allow you to build a client. - `xmpp-server`: is an implementation of XMPP on server side. - `xmpp-rs`: Grab both client and server in a single crate. **Cargo.toml** ```toml xmpp-rs = "0.1" ``` ```rust // Client extern crate xmpp; ``` ## Build To build xmpp-rs: `cargo build --release` ## ROADMAP ### Client roadmap - [ ] :rocket: Root implementation - [ ] **TCP Connection**: Base of all the interaction, we need to provide a way to connect to different kind of servers. - [x] Can connect to IP - [x] Can connect to domain - [ ] Can connect to untrusted domain - [x] **TLS Connection and negociation**: TLS connection is mandatory. - [x] **PLAIN authentication**: Authentification with a PLAIN mechanism must be possible. - [ ] **Ping IQ client**: We need to be able to send a ping to the server and listen for the anwser. - [x] **Send First presence**: We need to be able to send our presence to the server. - [ ] :satellite: Components - [ ] **SASL**: Handle every needed SASL auth mechanisms - [ ] :electric_plug: Plugins - [ ] **Message**: Handle all incomming/outcomming user or server message. - [ ] **IQ**: Handle all IQ requests/responses. - [ ] **Presence**: Offer a way to manage user's presence. - [ ] **MUC**: Activation option to deal with groupchat. - [ ] **MAM**: Activation option to retrieve history. ### Server roadmap - [ ] :rocket: Root implementation - [ ] **TCP Connection**: Able to accept TCP connection from clients - [ ] **Open stream reading**: Listen to an open `stream` stanza and respond to it ## XEPs - [ ] [XEP-0199: XMPP Ping](https://xmpp.org/extensions/xep-0199.html) - [ ] [XEP-0004: Data Forms](https://xmpp.org/extensions/xep-0004.html) - [ ] [XEP-0030: Service Discovery](https://xmpp.org/extensions/xep-0030.html) - [ ] [XEP-0048: Bookmarks](https://xmpp.org/extensions/xep-0048.html) - [ ] [XEP-0049: Private XML Storage](https://xmpp.org/extensions/xep-0049.html) ## License xmpp-rs is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses. See LICENSE-APACHE, and LICENSE-MIT for details.