ubuntuusers.de

prosody: Versenden von Dateien

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

VolkerRaschek

Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Hallo zusammen, ich habe mir den Jabber Server prosody installiert aus dem PPA, sodass ich die Version 0.10 installieren kann.

Ich versuche nun prosody so einzurichten, dass ich über die Clients (Gajim für Desktop PCs und Conversations für Android) Dateien, insbesondere Bilder versenden kann. Mit meiner Konfiguration funktioniert das auch, allerdings nur, wenn der Datenaustausch zwischen zwei Desktop PCs stattfindet. Von Conversations zu Gajim startet der Datentransfer nicht.

Ich habe nun versucht, das Modul http_upload einzurichten und mit dem Gajim Addon HttpUpload Dateien auf den Webserver von prosody zu speichern und den Link dem Gesprächsteilnehmer zu senden.

Allerdings warnt mich das Addon schon, dass mein prosody Server keine http uploads ermöglicht. Ich kann mir leider nicht erklären wieso.

Ich poste daher mal hier meine Konfigurationsdatei von prosody. Wichtige Informationen habe ich unkenntlich gemacht.

------------------- Prosody Dienst ----------------------------

-- demonize
-- Den Server als Dienst laufen lassen
-- demonize = true;
daemonize = true;

-- pidfile
-- Bitte ändere nicht diese Einstellung, da prosody in das Verzeichnis
-- /var/run/prosody den Prozess startet. Der Dienst hat in diesem Verzeichnis
-- schreib Berechtigungen.
-- pidfile = "/var/run/prosody/prosody.pid";
pidfile = "/var/run/prosody/prosody.pid";


------------------- Netzwerk Einstellungen --------------------

-- interfaces
-- Generelle Netzwerkschnittstellen, auf den der Server lauschen soll.
-- Das spezial Interface "*" bindet alle IPv4 Adressen
-- Das spezial Interface "::" bindet alle IPv6 Adressen
-- Bevorzugt für Verbindungen von externen Servern oder Clients.
interfaces = { "*", "::" }

-- local_interfaces
-- Generelle Netzwerkschnittstellen, auf den der Server lauschen soll.
-- Bevorzugt für eigene Module und Componenten.
local_interfaces = { "127.0.0.1", "::1" }

-- c2s_interfaces
-- Netzwerkschnittstelle, auf den der Server laufen soll für Verbindungen vom Client zum Server
c2s_interfaces = { "*", "::" }

-- c2s_ports
-- Ports für die Verbindung zwischen Client und diesem Server.
-- c2s_ports = { "5222" }
c2s_ports = { "5222" }

-- s2s_interface
-- Netzwerkschnittstelle, auf den der Server laufen soll für Verbindungen vom Server zum Server
-- s2s_interface = { "10.0.0.10" }
s2s_interface = { "*", "::" }

-- s2s_ports
-- Ports für die Verbindung zwischen Server und diesem Server.
-- s2s_ports = { "5222" }
s2s_ports = { "5269" }

-- s2s_timeout
-- Timeout für unauthentifizierte Server-zu-Server Verbindungen
-- s2s_timeout = 90
s2s_timeout = 90

-- http_interface
-- Netzwerkschnittstelle, auf den der Server einen HTTP Zugriff erlauben soll.
http_interfaces = { "*", "::" }

-- http_ports
-- Ports für die HTTP Verbindung
http_ports = { "5280" }

-- https_interface
-- Netzwerkschnittstelle, auf den der Server einen HTTPS Zugriff erlauben soll.
https_interfaces = { "*", "::" }

-- https_ports
-- Ports für die HTTP Verbindung
https_ports = { "5281" }

-- http_upload_file_size_limit
-- Maximale Größe an Dateien die durch HTTP hochgeladen werden können.
-- Die Größe kann nicht den Wert von http_max_content_size überschreiten
-- Default 1024*1024 = 1MB
http_upload_file_size = 5242880

-- http_upload_expire_after
-- Ablaufdatum für hochgeladene Dateien setzen
-- Angaben in Sekunden
http_upload_expire_after = 60 * 60 * 24 * 7 * 31

-- http_upload_quota
-- Eine maximale größe von hochgeladenen Dateien pro Benutzer.
http_upload_quota = 52428800

-- http_upload_path
-- Der Pfad, indem die hochgeladenen Dateien gespeichert werden sollen
http_upload_path = "/etc/prosody/uploads"

--------------------- SSL Einstellungen --------------------------

-- ssl
-- Generellen SSL/TLS-Einstellungen.
-- Falls kein SSL unterstützt werden soll, kann man es auskommentieren
ssl = {
  key         = "/etc/ssl/private/example.com/domain.key";
  certificate = "/etc/ssl/public/example.com/domain.crt";
  cafile      = "/etc/ssl/public/example.com/chain.crt";
  capath      = "/etc/ssl/certs";
}

--https_ssl
-- Generellen SSL/TLS-Einstellungen.
-- Falls kein SSL unterstützt werden soll, kann man es auskommentieren
https_ssl = {
  key             = "/etc/ssl/private/example.com/domain.key";
  certificate     = "/etc/ssl/public/example.com/domain.crt";
  cafile          = "/etc/ssl/public/example.com/chain.crt";
  capath          = "/etc/ssl/certs";
}


-- c2s_require_encryption
-- Zwingt Clients bei der Anmeldung am Server SSL zu verwenden.
-- c2s_require_encryption = false
c2s_require_encryption = true


-- s2s_require_encryption
-- Zwingt bei Server-zu-Server Verbindungen eine SSL-Verbindung auf zu bauen.
-- s2s_require_encryption = fase
s2s_require_encryption = true

-- s2s_secure_auth
-- Zwingt bei Server-zu-Server Verbindungen die Authentifizierung per SSL ab zu wickeln.
-- Dies bietet ideale Sicherheit, die Server müssen allerdings bei Kommunikation
-- Verschlüsselung anbieten und das Zertifikat muss valide und vertraut sein!
-- s2s_secure_auth = false
s2s_secure_auth = true

-- s2s_insecure_domains
-- Manche Server unterstützen keine Verschlüsselung oder haben ein selbst
-- signiertes Zertifikat. In dieser Liste können domains von der SSL-
-- Zertifizierung ausgeschlossen werden. Diese Server werden mittels DNS
-- überprüft.
-- s2s_insecure_domains = { "gmail.com" }

-- s2s_secure_domains
-- Wenn s2s_secure_auth deaktiviert ist, können über diese Option trozdem
-- Domains auf ein valides SSL-Zertifikat überprüft werden.
-- s2s_secure_domains = { "jabber.org" }


----------------------- Authentifizierung ----------------------------

-- authentication
-- Wähle ein Authentifikations backend, das benutzt werden soll.
-- 'internal' Sagt Prosody, dass die Authentifikationsdaten unter storage zu speichern sind.
-- 'plain'    Sagt Prosody, dass die Passwörter im Klartext gespeichert werden sollen.
-- 'hashed'   Sagt Prosody, dass die Passwörter gehasht gepeichert werden sollen.
-- authentication = "internal_plain"
authentication = "internal_hashed"

-- storage
-- Wähle einen Speicherort der genutzt werden soll.
-- Als Standard nutzt Prosody flat Dateien die im konfigurierten Datenspeicherort gespeichert werden.
-- Neben flat Dateien bietet Prosody weitere Module an wie 'sql'.
-- SQL benötigt allerdings weitere Abhängigkeiten.
-- sqlite3    lua-dbi-sqlite3
-- mysql      lua-dbi-mysql
-- postgresql lua-dbi-postgresql
storage = "sql"

-- sql
-- Als sql backend kann ein Treiber einkommentiert werden
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "KrmEnzSJzU2gx3LWoutmgLrT", host = "localhost" }
sql = {
  driver = "PostgreSQL",
  database = "postgres",
  username = "xxx",
  password = "xxx",
  host = "localhost"
}


------------------------ Module --------------------------------------

-- plugin_path
-- Lädt zusätzliche Plugins (Module) aus einem Pfad
-- plugin_paths = { "/usr/lib/prosody/modules" }

-- modules_enabled
-- Diese Liste an Modulen wird Prosody beim Systemstart laden.
-- Es schaut nach mod_modulename.lua im Pluginverzeichnis. Bitte schaue nach, ob das Verzeichnis vorhanden ist.
modules_enabled = {
  "roster";         -- RFC 6121:  Allow users to have a roster.
  "saslauth";       -- RFC 6120:  Authentication using SASL
  "tls";            -- RFC 6120:  Add support for secure TLS on c2s/s2s connections
  "dialback";       -- XEP-0220:  s2s dialback support
  "disco";          -- XEP-0030:  Service discovery
  "private";        -- XEP-0049:  Private XML storage (for room bookmarks, etc.)
  "vcard";          -- XEP-0054:  Allow users to set vCards
  "version";        -- XEP-0092:  Replies to server version requests
  "uptime";         -- XEP-0012:  Report how long server has been running
  "time";           -- XEP-0090:  Let others know the time here on this server
  "ping";           -- XEP-0199:  Replies to XMPP pings with pongs
  "pep";            -- XEP-0163:  Lets users broadcast various information to interested contacts
  "register";       -- XEP-0077:  In-band registration for managing user accounts
  "blocklist";      -- XEP-0191:  Block list
  "carbons";        -- XEP-0280:  Allowing users to maintain a shared and synchronized view of all conversations across all their online clients and devices.

  "admin_adhoc";    -- XEP-0133:  Allows administration via an XMPP client that supports ad-hoc commands
  --"bosh";         -- XEP-0124:  Enable BOSH clients, aka "Jabber over HTTP"
  --"http_files";     -- RFC 2616:  Serve static files from a directory over HTTP
  "http";           -- RFC 2616:  Allow Prosody modules to expose various services over HTTP
  "http_upload";    -- XEP-0363:  Let clients upload files over HTTP
  "posix";          -- POSIX:     Support for POSIX-only system features
  "announce";       --            Send announcement to all online users
  --"legacyauth";   -- XEP-0078:  Legacy authentication. Only used by some old clients and bots.
  "mam";            -- XEP-0313:  Offline Message Archive
  "lastactivity";   -- XEP-0012:  Support querying for user idle times
  --"profile";        -- XEP-0054:  Allow users to set vCards. ATTENTION: disable "vcard" and "pep".

};

-- modules_disabled
-- Diese Module werden durch den Autostart geladen,
-- sollen die Module deaktiviert werden, so müssen Sie nur noch auskommentiert werden.
modules_disabled = {
  -- "offline";   -- Store offline messages
  -- "c2s";       -- RFC 6120:    Handle client connections
  -- "s2s";       -- RFC 6120:    Handle server-to-server connections
};


------------------------ Weitere Einstellungen ----------------------------------------------

-- allow_registration
-- Deaktivieren der Benutzerregistration, Standard: false
allow_registration = false;

-- admins
-- Eine Liste alle Admins des Servers
-- admins = { "user1@example.com", "user2@example.net" }
admins = { "markus.pesch@example.com" }

-- use_libevent
-- Enable use of libevent for better performance under high load
-- For more information see: http://prosody.im/doc/libevent
--use_libevent = true;

-- http_default_host
-- Standard HTTP-Server
-- http_default_host = "example.com"

----------------------- Einstellungen von Modulen ------------------------------------------

-- Modul 'mam'
archive_expires_after = "1y"
default_archive_policy = true


------------------------ Virtual hosts ------------------------------------------------------
-- Es muss für jede Domain ein VirtualHost hinzugefügt werden den Prosody unterstützen soll.
-- Einstellungen unter jedem VirtualHost gelten auch nur für diese Domain

VirtualHost "example.com"
  -- enabled = false -- Remove this line to enable this host

  -- http_host
  -- HTTP-Server für den Virtuellen Host
  http_host = "xmpp.cyptic.systems"

  ssl = {
    key          = "/etc/ssl/private/example.com/domain.key";
    certificate  = "/etc/ssl/public/example.com/domain.crt";
    cafile       = "/etc/ssl/public/example.com/chain.crt";
    capath       = "/etc/ssl/certs";
  }

------ ----------------- Components ---------------------------------------------------------
-- Hier können spezielle Komponenten oder Dienste des Hosts gefiniert werden.
-- Beispielsweise multi-user Konferenzen oder Transporte.

---Installation eines MUC-Rooms für example.com
Component "conference.example.com" "muc"

Component "upload.example.com" "http_upload"

-- Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
--Component "proxy.example.com" "proxy65"

---Set up an external component (default component port is 5347)
--
-- External components allow adding various services, such as gateways/
-- transports to other networks like ICQ, MSN and Yahoo. For more info
-- see: http://prosody.im/doc/components#adding_an_external_component
--
--Component "gateway.example.com"
--  component_secret = "password"

------------------------- Additional config files -------------------------------------------
-- For organizational purposes you may prefer to add VirtualHost and
-- Component definitions in their own config files. This line includes
-- all config files in /etc/prosody/conf.d/

Include "conf.d/*.cfg.lua"

Folgende DNS-Records habe ich für prosody gesetzt.

_xmpp-client._tcp.example.com  SRV   0 5222 xmpp.example.com
_xmpp-server._tcp.example.com  SRV   0 5269 xmpp.example.com
upload.example.com             CNAME xmpp.example.com
xmpp.example.com               CNAME pontos.example.com 

Auf dem Port 80 und 443 des Servers pontos.example.com lauscht ein nginx Server. Dieser leitet alle Anfragen von upload.example.com an localhost:5280 für http requests weiter und für https Anfragen an localhost:5281, sofern Anfragen nicht direkt mit dem Port angegeben werden. Beispielsweise upload.example.com:5280 für http.

Wenn ich allerdings mit meinem Browser die Seite upload.example.com aufrufe, erhalte ich die Fehlermeldung des prosody webservers Unkown host upload.example.com. Erst dachte ich, es läge an der Weiterleitung vom nginx, doch wenn ich die Seite upload.example.com:5280 erhalte ich die gleiche Fehlermeldung.

Ich kann mir das momentan nicht erklären und hoffe, dass mir jemand bei der Konfiguration helfen kann.

Volker

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

Hat das Verzeichnis:

-- Der Pfad, indem die hochgeladenen Dateien gespeichert werden sollen
http_upload_path = "/etc/prosody/uploads"

die richtigen Rechte, zum Speichern von Dateien?

EDIT:

Wie sind die Ausgaben von:

sudo prosodyctl check config
sudo prosodyctl check certs
sudo prosodyctl status

?

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

ls -la /etc/prosody/

root@pontos:~# ls -la /etc/prosody/
insgesamt 44
drwxr-xr-x  5 root root     4096 Okt 30 16:01 .
drwxr-xr-x 99 root root     4096 Okt 30 12:20 ..
drwxr-x---  2 root prosody  4096 Okt 30 12:20 certs
drwxr-xr--  2 root prosody  4096 Sep 12 16:39 conf.d
-rw-r-----  1 root prosody 11411 Okt 30 15:48 prosody.cfg.lua
-rw-r-----  1 root prosody  9020 Sep 28 16:18 prosody.cfg.lua.orig
drwxrwx---  2 root prosody  4096 Okt 16 11:55 uploads

sudo prosodyctl check config

root@pontos:~# prosodyctl check config
Checking config...
Done.

All checks passed, congratulations!

sudo prosodyctl check certs

root@pontos:~# prosodyctl check certs
Checking certificates...
Checking certificate for example.com
  Certificate: /etc/ssl/public/example.com/domain.crt
Checking certificate for upload.example.com
  Certificate: /etc/ssl/public/example.com/domain.crt
Checking certificate for conference.example.com
  Certificate: /etc/ssl/public/example.com/domain.crt

All checks passed, congratulations!

sudo prosodyctl status

root@pontos:~# sudo prosodyctl status
Prosody is running with PID 1560

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

VolkerRaschek schrieb:

ls -la /etc/prosody/

root@pontos:~# ls -la /etc/prosody/
drwxrwx---  2 root prosody  4096 Okt 16 11:55 uploads

Versuch mal mit:

sudo chmod 777 /etc/prosody/uploads

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

lubux schrieb:

Versuch mal mit:

sudo chmod 777 /etc/prosody/uploads

Das hilf leider auch nicht weiter.

Über Gajim kann man über Dienste durchsuchen eine Domain Adresse angeben. Gebe ich dort meine Domain an werden mir drei Dienste angezeigt.

  • Meine Domain selber mit Prosody als Jabber Server

  • Meine MUC Adresse

  • Mein upload.example.com Dienst

Mein Upload Dienst wird allerdings als veraltet oder defekt markiert.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

VolkerRaschek schrieb:

Über Gajim kann man über ...

Hast Du evtl. auch schon mit einem anderen jabber-Client (z. B. pidgin) probiert?

Teste mal ob z. B. "modules_enabled = { "pastebin" }", mit Gajim funktioniert. Ist ja auch eine Art temporärer upload.

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Ich habe gerade noch etwas festgestellt. Besuche ich erst mit Gajim einen Server zb. den MUC von conversation.im. Dann wird das Button bei mir in Gajim aktiv (der ausgegraute Zustand verschwindet).

Wechsel ich zurück in den MUC meines Servers, ist der Button für den http_upload immer noch aktiv. Wähle ich dort eine Datei zum Upload aus, erhalte ich die Fehlermeldung mit dem Titel "Could not request upload slot" und der Nachricht "Denied by ACL".

Das mit Pastebin versuche ich jetzt mal.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

VolkerRaschek schrieb:

Das mit Pastebin versuche ich jetzt mal.

BTW: Bei mir funktioniert das pastebin im muc, mit pidgin und prosody 0.10.

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Also, ich habe das Modul pastebin nun mal aktiviert, sowie es beschrieben ist in der Doku.

Component "conference.example.com" "muc"
  modules_enabled = {
    "pastebin"
  }

Der Button des Plugins http_upload ist nun auch bei mir aktiviert. Ich erhalte allerdings immer noch den ACL Fehler. Siehe Anhang.

Bilder

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

VolkerRaschek schrieb:

Ich erhalte allerdings immer noch den ACL Fehler.

Ist dieser "ACL Fehler", etwas vom Server (prosody) oder von deinem jabber-Client? Wenn vom Server, wie hast Du die ACL im Server konfiguriert?

BTW: Für pastebin bedarf es weiterer Konfiguration. Z. B.:

pastebin_threshold = 410;
pastebin_line_threshold = 3;
pastebin_trigger = "!paste";
pastebin_expire_after = 1;
pastebin_url = "https://###.xxx.eu:<Port>/pastebin/";

EDIT:

Siehe auch: https://modules.prosody.im/mod_pastebin.html

EDIT 2:

pastebin_expire_after	Number of hours after which to expire (remove) a paste, defaults to 24. Set to 0 to store pastes permanently on disk.

Mit z. B.:

pastebin_expire_after = 0

kannst Du das auch (permanent) auf die Festplatte schreiben lassen und schauen wo das ist bzw. wie die Rechte sind.

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

lubux schrieb:

Ist dieser "ACL Fehler", etwas vom Server (prosody) oder von deinem jabber-Client? Wenn vom Server, wie hast Du die ACL im Server konfiguriert?

Also ich habe nirgends eine ACL eingestellt, weder bei nginx noch irgendwie bei dem HTTP-Server von prosody.

Hier mal die Konfiguration von nginx für den VirtualHost upload.example.com

server {
  listen 80;
  listen [::]:80;
  server_name upload.example.com;

  location ~ /\.well-known {
    allow all;
    autoindex on;
    root /var/www/letsencrypt;
  }

  location / {
    proxy_pass       http://localhost:5280;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
  }


}


server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name upload.example.com;

# SSL-Options
  ssl_certificate     /etc/ssl/public/example.com/fullchain.crt;
  ssl_certificate_key /etc/ssl/private/example.com/domain.key;
  ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;

  location ~ /\.git {
    deny all;
  }

  location / {
    proxy_pass       https://localhost:5281;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
  }

}

BTW: Für pastebin bedarf es weiterer Konfiguration. Z. B.:

pastebin_threshold = 410;
pastebin_line_threshold = 3;
pastebin_trigger = "!paste";
pastebin_expire_after = 1;
pastebin_url = "https://###.xxx.eu:<Port>/pastebin/";

Okay, dass habe ich nun hinzugefügt.

pastebin_threshold = 410;
pastebin_line_threshold = 3;
pastebin_trigger = "!paste";
pastebin_expire_after = 1;
pastebin_url = "https://upload.example.com:5281/pastebin/";

Component "conference.example.com" "muc";
  modules_enabled = {
    "pastebin"
  }

Allerdings funktioniert auch nicht die pastebin Erweiterung.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

VolkerRaschek schrieb:

Allerdings funktioniert auch nicht die pastebin Erweiterung.

Funktioniert der MUC-Room (für example.com)?

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

lubux schrieb:

Funktioniert der MUC-Room (für example.com)?

Ja, der MUC-Room conference.example.com funktioniert einwandfrei. Ich kann auch nochmal die komplette prosody Konfiguration bereitstellen.

------------------- Prosody Dienst ----------------------------

-- demonize
-- Den Server als Dienst laufen lassen
-- demonize = true;
daemonize = true;

-- pidfile
-- Bitte ändere nicht diese Einstellung, da prosody in das Verzeichnis
-- /var/run/prosody den Prozess startet. Der Dienst hat in diesem Verzeichnis
-- schreib Berechtigungen.
-- pidfile = "/var/run/prosody/prosody.pid";
pidfile = "/var/run/prosody/prosody.pid";


------------------- Netzwerk Einstellungen --------------------

-- interfaces
-- Generelle Netzwerkschnittstellen, auf den der Server lauschen soll.
-- Das spezial Interface "*" bindet alle IPv4 Adressen
-- Das spezial Interface "::" bindet alle IPv6 Adressen
-- Bevorzugt für Verbindungen von externen Servern oder Clients.
interfaces = { "*", "::" }

-- local_interfaces
-- Generelle Netzwerkschnittstellen, auf den der Server lauschen soll.
-- Bevorzugt für eigene Module und Componenten.
local_interfaces = { "127.0.0.1", "::1" }

-- c2s_interfaces
-- Netzwerkschnittstelle, auf den der Server laufen soll für Verbindungen vom Client zum Server
c2s_interfaces = { "*", "::" }

-- c2s_ports
-- Ports für die Verbindung zwischen Client und diesem Server.
-- c2s_ports = { "5222" }
c2s_ports = { "5222" }

-- s2s_interface
-- Netzwerkschnittstelle, auf den der Server laufen soll für Verbindungen vom Server zum Server
-- s2s_interface = { "10.0.0.10" }
s2s_interface = { "*", "::" }

-- s2s_ports
-- Ports für die Verbindung zwischen Server und diesem Server.
-- s2s_ports = { "5222" }
s2s_ports = { "5269" }

-- s2s_timeout
-- Timeout für unauthentifizierte Server-zu-Server Verbindungen
-- s2s_timeout = 90
s2s_timeout = 90

-- http_interface
-- Netzwerkschnittstelle, auf den der Server einen HTTP Zugriff erlauben soll.
http_interfaces = { "*", "::" }

-- http_ports
-- Ports für die HTTP Verbindung
http_ports = { "5280" }

-- https_interface
-- Netzwerkschnittstelle, auf den der Server einen HTTPS Zugriff erlauben soll.
https_interfaces = { "*", "::" }

-- https_ports
-- Ports für die HTTP Verbindung
https_ports = { "5281" }

-- http_upload_file_size_limit
-- Maximale Größe an Dateien die durch HTTP hochgeladen werden können.
-- Die Größe kann nicht den Wert von http_max_content_size überschreiten
-- Default 1024*1024 = 1MB
http_upload_file_size = 5242880;


-- http_upload_expire_after
-- Ablaufdatum für hochgeladene Dateien setzen
-- Angaben in Sekunden
http_upload_expire_after = 60 * 60 * 24 * 7 * 31;

-- http_upload_quota
-- Eine maximale größe von hochgeladenen Dateien pro Benutzer.
http_upload_quota = 52428800;

-- http_upload_path
-- Der Pfad, indem die hochgeladenen Dateien gespeichert werden sollen
http_upload_path = "/etc/prosody/uploads";

--------------------- SSL Einstellungen --------------------------

-- ssl
-- Generellen SSL/TLS-Einstellungen.
-- Falls kein SSL unterstützt werden soll, kann man es auskommentieren
ssl = {
  key         = "/etc/ssl/private/example.com/domain.key";
  certificate = "/etc/ssl/public/example.com/domain.crt";
  cafile      = "/etc/ssl/public/example.com/chain.crt";
  capath      = "/etc/ssl/certs";
}

--https_ssl
-- Generellen SSL/TLS-Einstellungen.
-- Falls kein SSL unterstützt werden soll, kann man es auskommentieren
https_ssl = {
  key             = "/etc/ssl/private/example.com/domain.key";
  certificate     = "/etc/ssl/public/example.com/domain.crt";
  cafile          = "/etc/ssl/public/example.com/chain.crt";
  capath          = "/etc/ssl/certs";
}


-- c2s_require_encryption
-- Zwingt Clients bei der Anmeldung am Server SSL zu verwenden.
-- c2s_require_encryption = false
c2s_require_encryption = true;


-- s2s_require_encryption
-- Zwingt bei Server-zu-Server Verbindungen eine SSL-Verbindung auf zu bauen.
-- s2s_require_encryption = fase
s2s_require_encryption = true;

-- s2s_secure_auth
-- Zwingt bei Server-zu-Server Verbindungen die Authentifizierung per SSL ab zu wickeln.
-- Dies bietet ideale Sicherheit, die Server müssen allerdings bei Kommunikation
-- Verschlüsselung anbieten und das Zertifikat muss valide und vertraut sein!
-- s2s_secure_auth = false
s2s_secure_auth = true;

-- s2s_insecure_domains
-- Manche Server unterstützen keine Verschlüsselung oder haben ein selbst
-- signiertes Zertifikat. In dieser Liste können domains von der SSL-
-- Zertifizierung ausgeschlossen werden. Diese Server werden mittels DNS
-- überprüft.
-- s2s_insecure_domains = { "gmail.com" }

-- s2s_secure_domains
-- Wenn s2s_secure_auth deaktiviert ist, können über diese Option trozdem
-- Domains auf ein valides SSL-Zertifikat überprüft werden.
-- s2s_secure_domains = { "jabber.org" }


----------------------- Authentifizierung ----------------------------

-- authentication
-- Wähle ein Authentifikations backend, das benutzt werden soll.
-- 'internal' Sagt Prosody, dass die Authentifikationsdaten unter storage zu speichern sind.
-- 'plain'    Sagt Prosody, dass die Passwörter im Klartext gespeichert werden sollen.
-- 'hashed'   Sagt Prosody, dass die Passwörter gehasht gepeichert werden sollen.
-- authentication = "internal_plain"
authentication = "internal_hashed";

-- storage
-- Wähle einen Speicherort der genutzt werden soll.
-- Als Standard nutzt Prosody flat Dateien die im konfigurierten Datenspeicherort gespeichert werden.
-- Neben flat Dateien bietet Prosody weitere Module an wie 'sql'.
-- SQL benötigt allerdings weitere Abhängigkeiten.
-- sqlite3    lua-dbi-sqlite3
-- mysql      lua-dbi-mysql
-- postgresql lua-dbi-postgresql
storage = "sql";

-- sql
-- Als sql backend kann ein Treiber einkommentiert werden
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "KrmEnzSJzU2gx3LWoutmgLrT", host = "localhost" }
sql = {
  driver = "PostgreSQL",
  database = "postgres",
  username = "xxx",
  password = "xxx",
  host = "localhost"
}


------------------------ Module --------------------------------------

-- plugin_path
-- Lädt zusätzliche Plugins (Module) aus einem Pfad
-- plugin_paths = { "/usr/lib/prosody/modules" }

-- modules_enabled
-- Diese Liste an Modulen wird Prosody beim Systemstart laden.
-- Es schaut nach mod_modulename.lua im Pluginverzeichnis. Bitte schaue nach, ob das Verzeichnis vorhanden ist.
modules_enabled = {
  "roster";         -- RFC 6121:  Allow users to have a roster.
  "saslauth";       -- RFC 6120:  Authentication using SASL
  "tls";            -- RFC 6120:  Add support for secure TLS on c2s/s2s connections
  "dialback";       -- XEP-0220:  s2s dialback support
  "disco";          -- XEP-0030:  Service discovery
  "private";        -- XEP-0049:  Private XML storage (for room bookmarks, etc.)
  "vcard";          -- XEP-0054:  Allow users to set vCards
  "version";        -- XEP-0092:  Replies to server version requests
  "uptime";         -- XEP-0012:  Report how long server has been running
  "time";           -- XEP-0090:  Let others know the time here on this server
  "ping";           -- XEP-0199:  Replies to XMPP pings with pongs
  "pep";            -- XEP-0163:  Lets users broadcast various information to interested contacts
  "register";       -- XEP-0077:  In-band registration for managing user accounts
  "blocklist";      -- XEP-0191:  Block list
  "carbons";        -- XEP-0280:  Allowing users to maintain a shared and synchronized view of all conversations across all their online clients and devices.

  "admin_adhoc";    -- XEP-0133:  Allows administration via an XMPP client that supports ad-hoc commands
  --"bosh";         -- XEP-0124:  Enable BOSH clients, aka "Jabber over HTTP"
  --"http_files";     -- RFC 2616:  Serve static files from a directory over HTTP
  "http";           -- RFC 2616:  Allow Prosody modules to expose various services over HTTP
  "http_upload";    -- XEP-0363:  Let clients upload files over HTTP
  "posix";          -- POSIX:     Support for POSIX-only system features
  "announce";       --            Send announcement to all online users
  --"legacyauth";   -- XEP-0078:  Legacy authentication. Only used by some old clients and bots.
  "mam";            -- XEP-0313:  Offline Message Archive
  "lastactivity";   -- XEP-0012:  Support querying for user idle times
  --"profile";        -- XEP-0054:  Allow users to set vCards. ATTENTION: disable "vcard" and "pep".

};

-- modules_disabled
-- Diese Module werden durch den Autostart geladen,
-- sollen die Module deaktiviert werden, so müssen Sie nur noch auskommentiert werden.
modules_disabled = {
  -- "offline";   -- Store offline messages
  -- "c2s";       -- RFC 6120:    Handle client connections
  -- "s2s";       -- RFC 6120:    Handle server-to-server connections
};


------------------------ Weitere Einstellungen ----------------------------------------------

-- allow_registration
-- Deaktivieren der Benutzerregistration, Standard: false
allow_registration = false;

-- admins
-- Eine Liste alle Admins des Servers
-- admins = { "user1@example.com", "user2@example.net" }
admins = { "markus.pesch@example.com" }

-- use_libevent
-- Enable use of libevent for better performance under high load
-- For more information see: http://prosody.im/doc/libevent
--use_libevent = true;

-- http_default_host
-- Standard HTTP-Server
-- http_default_host = "example.com"

----------------------- Einstellungen von Modulen ------------------------------------------

-- Modul 'mam'
archive_expires_after = "1y";
default_archive_policy = true;

-- Modul 'pastebin'
pastebin_threshold = 410;
pastebin_line_threshold = 3;
pastebin_trigger = "!paste";
pastebin_expire_after = 1;
pastebin_url = "https://upload.example.com:5281/pastebin/";

------------------------ Virtual hosts ------------------------------------------------------
-- Es muss für jede Domain ein VirtualHost hinzugefügt werden den Prosody unterstützen soll.
-- Einstellungen unter jedem VirtualHost gelten auch nur für diese Domain

VirtualHost "example.com";
  -- enabled = false -- Remove this line to enable this host

  -- http_host
  -- HTTP-Server für den Virtuellen Host
  http_host = "xmpp.cyptic.systems";

  ssl = {
    key          = "/etc/ssl/private/example.com/domain.key";
    certificate  = "/etc/ssl/public/example.com/domain.crt";
    cafile       = "/etc/ssl/public/example.com/chain.crt";
    capath       = "/etc/ssl/certs";
  }

------ ----------------- Components ---------------------------------------------------------
-- Hier können spezielle Komponenten oder Dienste des Hosts gefiniert werden.
-- Beispielsweise multi-user Konferenzen oder Transporte.

---Installation eines MUC-Rooms für example.com
Component "conference.example.com" "muc";
  modules_enabled = {
    "pastebin"
  }

Component "upload.example.com" "http_upload";

-- Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
--Component "proxy.example.com" "proxy65"

---Set up an external component (default component port is 5347)
--
-- External components allow adding various services, such as gateways/
-- transports to other networks like ICQ, MSN and Yahoo. For more info
-- see: http://prosody.im/doc/components#adding_an_external_component
--
--Component "gateway.example.com"
--  component_secret = "password"

------------------------- Additional config files -------------------------------------------
-- For organizational purposes you may prefer to add VirtualHost and
-- Component definitions in their own config files. This line includes
-- all config files in /etc/prosody/conf.d/

Include "conf.d/*.cfg.lua"

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

VolkerRaschek schrieb:

Ja, der MUC-Room conference.example.com funktioniert einwandfrei. Ich kann auch nochmal die komplette prosody Konfiguration bereitstellen.

Du musst die Konfiguration für pastebin, unter die Zeilen:

Component "conference.example.com" "muc";
  modules_enabled = {
    "pastebin"
  }

schreiben. Deine Konfigurationsdatei ist nicht so übersichtlich. Evtl. trennen in 2 Dateien: eine mit den globalen Einstellungen und die andere mit den virt. hosts und mucs/components.

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Okay, ich habe gerade mal in die original Konfiguration hinein geschaut und den Optionen für das Loggen aktiviert.

Ich erhalte nun in prosody.err folgende Einträge.

Nov 03 21:13:26 modulemanager	error	Unable to load module 'http_upload': /usr/lib/prosody/modules/mod_http_upload.lua: No such file or directory
Nov 03 21:13:26 modulemanager	error	Unable to load module 'http_upload': /usr/lib/prosody/modules/mod_http_upload.lua: No such file or directory
Nov 03 21:13:26 modulemanager	error	Unable to load module 'pastebin': /usr/lib/prosody/modules/mod_pastebin.lua: No such file or directory

Ich denke, ich sollte mal schauen, wo ich die Module her bekomme.

Antworten |