ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · basics • open source •...

44
ejabberd Extending & Using Mittwoch, 3. Juli 13

Upload: others

Post on 07-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

ejabberdExtending & Using

Mittwoch, 3. Juli 13

Page 2: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Hi

@weibelm@mweibel

Mittwoch, 3. Juli 13

Page 3: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Mittwoch, 3. Juli 13

Page 4: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Contents

• XMPP

• Ejabberd Basics

• Module Development

Mittwoch, 3. Juli 13

Page 5: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

XMPP

Mittwoch, 3. Juli 13

Page 6: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Mittwoch, 3. Juli 13

Page 7: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Mittwoch, 3. Juli 13

Page 8: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Basics

• RFC 6120, 6121 and 6122

• XEPs for extensions

Mittwoch, 3. Juli 13

Page 9: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Basics

• 1-1 Chat

• Multi-User-Chat (MUC)

• Publish-Subscribe (Pubsub)

Mittwoch, 3. Juli 13

Page 10: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Basics

• Jingle

• Federation

Mittwoch, 3. Juli 13

Page 11: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Stanza

• Message

• Presence

• IQ

Mittwoch, 3. Juli 13

Page 12: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Web

• BOSH

• Websockets

Mittwoch, 3. Juli 13

Page 13: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

ejabberd

Mittwoch, 3. Juli 13

Page 14: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Basics

• Open Source

• Commercial Version by ProcessOne

• www.ejabberd.im

• www.process-one.net

Mittwoch, 3. Juli 13

Page 15: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Basics

• erlang R14

• ejabberd 2.1 & ejabberd 3.0

Mittwoch, 3. Juli 13

Page 16: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Basics

• lots of built-in modules

• extendable

Mittwoch, 3. Juli 13

Page 17: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Configuration

• ejabberd.cfg

• splittable into multiple files

• constants

Mittwoch, 3. Juli 13

Page 18: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Configuration

Mittwoch, 3. Juli 13

Page 19: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Module Development

Mittwoch, 3. Juli 13

Page 20: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Auth Modules

Mittwoch, 3. Juli 13

Page 21: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

• internal

• anonymous

• external

• odbc

• pam

• ldap

Core Auth Modules

Mittwoch, 3. Juli 13

Page 22: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  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

Page 23: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

No custom mechanism :(

Mittwoch, 3. Juli 13

Page 24: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Stanza interceptors

Mittwoch, 3. Juli 13

Page 25: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Let‘s write an own Module

Mittwoch, 3. Juli 13

Page 26: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Setup

Mittwoch, 3. Juli 13

Page 27: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

gen_mod

• start/2

• stop/1

Mittwoch, 3. Juli 13

Page 28: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

gen_server

• Just for fun :)

Mittwoch, 3. Juli 13

Page 29: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Setup hook & gen_server

Mittwoch, 3. Juli 13

Page 30: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Hook listener

Mittwoch, 3. Juli 13

Page 31: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Upsides

Mittwoch, 3. Juli 13

Page 32: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Erlang

Mittwoch, 3. Juli 13

Page 33: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

ProcessOne

Mittwoch, 3. Juli 13

Page 34: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Downsides

Mittwoch, 3. Juli 13

Page 35: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Documentation

Mittwoch, 3. Juli 13

Page 36: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Community

Mittwoch, 3. Juli 13

Page 37: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

No rebar (yet)

Mittwoch, 3. Juli 13

Page 38: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

No mobile reliability(by default)

Mittwoch, 3. Juli 13

Page 39: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

No websockets(by default)

Mittwoch, 3. Juli 13

Page 40: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

No stats builtin

Mittwoch, 3. Juli 13

Page 41: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Tools

Mittwoch, 3. Juli 13

Page 42: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  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

Page 44: ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source • Commercial Version by ProcessOne •  •  Mittwoch, 3. Juli 13

Thanks.

Questions?

Mittwoch, 3. Juli 13