ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source •...

Post on 07-Jul-2020

1 views 0 download

transcript

ejabberdExtending & Using

Mittwoch, 3. Juli 13

Hi

@weibelm@mweibel

Mittwoch, 3. Juli 13

Mittwoch, 3. Juli 13

Contents

• XMPP

• Ejabberd Basics

• Module Development

Mittwoch, 3. Juli 13

XMPP

Mittwoch, 3. Juli 13

Mittwoch, 3. Juli 13

Mittwoch, 3. Juli 13

Basics

• RFC 6120, 6121 and 6122

• XEPs for extensions

Mittwoch, 3. Juli 13

Basics

• 1-1 Chat

• Multi-User-Chat (MUC)

• Publish-Subscribe (Pubsub)

Mittwoch, 3. Juli 13

Basics

• Jingle

• Federation

Mittwoch, 3. Juli 13

Stanza

• Message

• Presence

• IQ

Mittwoch, 3. Juli 13

Web

• BOSH

• Websockets

Mittwoch, 3. Juli 13

ejabberd

Mittwoch, 3. Juli 13

Basics

• Open Source

• Commercial Version by ProcessOne

• www.ejabberd.im

• www.process-one.net

Mittwoch, 3. Juli 13

Basics

• erlang R14

• ejabberd 2.1 & ejabberd 3.0

Mittwoch, 3. Juli 13

Basics

• lots of built-in modules

• extendable

Mittwoch, 3. Juli 13

Configuration

• ejabberd.cfg

• splittable into multiple files

• constants

Mittwoch, 3. Juli 13

Configuration

Mittwoch, 3. Juli 13

Module Development

Mittwoch, 3. Juli 13

Auth Modules

Mittwoch, 3. Juli 13

• internal

• anonymous

• external

• odbc

• pam

• ldap

Core Auth Modules

Mittwoch, 3. Juli 13

• implement ejabberd_auth

• check_password/3

• store_type/0

• plain_password_required/0

• is_user_exists/2

• etc.

Own Authentication

Mittwoch, 3. Juli 13

No custom mechanism :(

Mittwoch, 3. Juli 13

Stanza interceptors

Mittwoch, 3. Juli 13

Let‘s write an own Module

Mittwoch, 3. Juli 13

Setup

Mittwoch, 3. Juli 13

gen_mod

• start/2

• stop/1

Mittwoch, 3. Juli 13

gen_server

• Just for fun :)

Mittwoch, 3. Juli 13

Setup hook & gen_server

Mittwoch, 3. Juli 13

Hook listener

Mittwoch, 3. Juli 13

Upsides

Mittwoch, 3. Juli 13

Erlang

Mittwoch, 3. Juli 13

ProcessOne

Mittwoch, 3. Juli 13

Downsides

Mittwoch, 3. Juli 13

Documentation

Mittwoch, 3. Juli 13

Community

Mittwoch, 3. Juli 13

No rebar (yet)

Mittwoch, 3. Juli 13

No mobile reliability(by default)

Mittwoch, 3. Juli 13

No websockets(by default)

Mittwoch, 3. Juli 13

No stats builtin

Mittwoch, 3. Juli 13

Tools

Mittwoch, 3. Juli 13

ej.sh

• ej build

• ej tail

• ej conf

• ej restart

• all ejabberdctl commands

https://gist.github.com/pstadler/3918130

Mittwoch, 3. Juli 13

Thanks.

Questions?

Mittwoch, 3. Juli 13