Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:transports_zu_anderen_netzwerken_einbinden

Transports zu anderen Netzwerken einbinden

Voraussetzung

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
de/transports_zu_anderen_netzwerken_einbinden.txt · Zuletzt geändert: 25.11.2022, 14:19 von Christoph Stoltz