Inhaltsverzeichnis
Transports zu anderen Netzwerken einbinden
Voraussetzung
- Dieses Howto setzt ejabberd Installation und Spectrum 2 installieren und einrichten voraus.
Einleitung
Am Beispiel von Whatsapp erkläre ich, wie dieses Transport an deinen XMPP Server angebunden wird. Das Vorgehen lässt sich leicht auf andere Transports anwenden.
Einrichtung
Benötigte Pakete installieren:
$ apt -y install libpurple0 libpurple-dev pkg-config cmake make gcc
Go installieren:
$ wget https://go.dev/dl/go1.19.3.linux-amd64.tar.gz $ tar -C /usr/local -xzf go1.19.3.linux-amd64.tar.gz $ export PATH=$PATH:/usr/local/go/bin
Go Installation überprüfen:
$ go version
Ausgabe:
go version go1.19.3 linux/amd64
purple-gowhatsapp installieren:
$ mkdir /opt/transports $ cd /opt/transports $ wget -O purple-gowhatsapp-v1.8.0.tar.gz https://github.com/hoehermann/purple-gowhatsapp/archive/refs/tags/v1.8.0.tar.gz $ tar -xzf purple-gowhatsapp-v1.8.0.tar.gz $ cd purple-gowhatsapp-1.8.0 $ mkdir build $ cd build $ cmake .. $ cmake --build . $ make install/strip
Spectrum 2 Konfiguration erstellen:
$ jed /etc/spectrum2/transports/whatsapp.<beispiel.de>
Die Datei sollte zum Schluss so aussehen:
[service] # 1 if Spectrum should run in server mode. server_mode = 0 # The name of user/group Spectrum runs as. user=nobody group=nogroup # JID of Spectrum instance. jid = whatsapp.<beispiel.de> # Password used to connect the XMPP server in gateway mode. # In server mode, this option is ignored. password = <geheim> # XMPP server to which Spectrum connects in gateway mode. # In server mode, this option is ignored. server = 127.0.0.1 # XMPP server port. port = 5360 # Interface on which Spectrum listens for backends. backend_host = 127.0.0.1 # Number of users per one legacy network backend. users_per_backend=10 # Full path to backend binary. backend=/usr/bin/spectrum2_libpurple_backend # Libpurple protocol-id for spectrum_libpurple_backend protocol=prpl-hehoe-whatsmeow #web_directory= #web_url= [identity] # Name of Spectrum instance in service discovery name=WhatsApp # Category of transport, default is "gateway category=gateway [logging] # log4cxx/log4j logging configuration file in ini format used for main spectrum2 instance. config = /etc/spectrum2/logging.cfg # log4cxx/log4j logging configuration file in ini format used for backends. backend_config = /etc/spectrum2/backend-logging.cfg [database] # Database backend type # "sqlite3", "mysql", "pqxx", or "none" without database backend type = sqlite3 # For SQLite3: Full path to database # For MySQL and PostgreSQL: name of database # default database = /var/lib/spectrum2/$jid/database.sql database = /var/lib/spectrum2/$jid/database.sql # Server. #server = localhost # Port. #port = 3306 # User. #user = # Paasword. #password = # Prefix used for tables #prefix = [registration] # Enable public registrations enable_public_registration=1 # Text to display upon user registration form username_label=Phone Number (e.g. 491717676750): instructions=Enter your Phone Number as shown (Yes, the missing + is correct!) [purple] #read-receipts=0 qrcode-size=256 plain-text-login=0 #spectrum-compatibility=1 bridge-compatibility=1 send-receipt=on-answer embed-max-file-size=16 autojoin-chats=1
Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.
ejabberd Konfiguration anpassen:
$ su - ejabberd $ jed opt/ejabberd/conf/ejabberd.yml
Suche nach:
listen:
und füge einen neuen Block ein:
- port: 5360 module: ejabberd_service check_from: false hosts: "whatsapp.<beispiel.de>": password: "<geheim>" access: all
Suche nach:
modules:
und füge ein neues Modul ein:
mod_privilege: roster: both: - allow: - server: - "whatsapp.<beispiel.de>" message: outgoing: - allow: - server: - "whatsapp.<beispiel.de>" presence: roster: - allow: - server: - "whatsapp.<beispiel.de>"
Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.
Damit erlaubst du unter anderem, dass deine Kontaktliste von Whatsapp mit deinem XMPP Server ausgetauscht werden kann, sodass deine Whatsapp Kontakte in deiner XMPP Kontaktliste auftauchen.
Mache ejabberd die geänderte Konfiguration bekannt:
$ ./opt/ejd/bin/ejabberdctl reload_config
Starte dein Whatsapp Transport:
$ exit $ spectrum2_manager whatsapp.<beispiel.de> start