ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source •...
Transcript of ejabberdmweibel.github.io/presentations/ejabberd.pdf · 2013-07-03 · Basics • Open Source •...
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
Alternatives
• MongooseIM (ejabberd fork)
• Tigase (java)
• Prosody (lua)
• Openfire (java)
Mittwoch, 3. Juli 13
Thanks.
Questions?
Mittwoch, 3. Juli 13