From bcd2fc01eb6b7856956b7bbc05757c7a4e9c122a Mon Sep 17 00:00:00 2001 From: Dan Caseley Date: Fri, 10 Sep 2021 09:52:03 +0100 Subject: [PATCH 1/3] Switch start file to getopts to remove ordering constraint --- start.sh | 53 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/start.sh b/start.sh index 94850f8..2499926 100755 --- a/start.sh +++ b/start.sh @@ -1,17 +1,42 @@ -#!/bin/sh +#!/bin/bash -COMPOSE_FILE=docker-compose-federated.yml +usage() { echo "Usage: $0 [-c] [-n openfire-tag] [-h] -if [ "$1" = "-c" ]; then - echo "Starting a clustered environment." - COMPOSE_FILE=docker-compose-clustered.yml - shift -else - echo "Starting a federated environment (use -c to start a clustered environment instead)." -fi + -c Launches a Cluster instead of a FMUC stack + -n openfire-tag Launches all Openfire instances with the specified tag. This overrides the value in .env + -h Show this helpful information +"; exit 0; } -docker-compose -f $COMPOSE_FILE down -docker-compose -f $COMPOSE_FILE pull +CLUSTER_MODE=false +COMPOSE_FILE_COMMAND=("docker-compose") + +while getopts cn:h o; do + case "$o" in + c) + CLUSTER_MODE=true + ;; + n) + echo "Using Openfire tag: $1" + export OPENFIRE_TAG=$1 + ;; + h) + usage + ;; + *) + usage + ;; + esac +done + +case $CLUSTER_MODE in + (true) echo "Starting a clustered environment." + COMPOSE_FILE_COMMAND+=("-f" "docker-compose-clustered.yml");; + (false) echo "Starting a federated environment (use -c to start a clustered environment instead)." + COMPOSE_FILE_COMMAND+=("-f" "docker-compose-federated.yml");; +esac + +"${COMPOSE_FILE_COMMAND[@]}" down +"${COMPOSE_FILE_COMMAND[@]}" pull # Clean up temporary persistence data rm -rf _data @@ -19,8 +44,4 @@ mkdir _data cp -r xmpp _data/ cp -r plugins _data/ -if [ -n "$1" ]; then - echo "Using Openfire tag: $1" - export OPENFIRE_TAG=$1 -fi -docker-compose -f $COMPOSE_FILE up \ No newline at end of file +"${COMPOSE_FILE_COMMAND[@]}" up \ No newline at end of file From 185891aeeb234b0d1514b0cc611d3f8471b8694a Mon Sep 17 00:00:00 2001 From: Dan Caseley Date: Sun, 12 Sep 2021 14:51:22 +0100 Subject: [PATCH 2/3] Initial version of other XMPP domain and infrastructure --- docker-compose-otherdomain.yml | 60 + sql/otherdomain/openfire.sql | 1257 +++++++++++++++++ start.sh | 18 +- xmpp/otherdomain/conf/openfire.xml | 64 + xmpp/otherdomain/conf/security.xml | 66 + .../conf/security/archive/readme.txt | 1 + .../conf/security/client.truststore | Bin 0 -> 32 bytes xmpp/otherdomain/conf/security/keystore | Bin 0 -> 2237 bytes xmpp/otherdomain/conf/security/truststore | Bin 0 -> 174089 bytes 9 files changed, 1464 insertions(+), 2 deletions(-) create mode 100644 docker-compose-otherdomain.yml create mode 100644 sql/otherdomain/openfire.sql create mode 100644 xmpp/otherdomain/conf/openfire.xml create mode 100644 xmpp/otherdomain/conf/security.xml create mode 100644 xmpp/otherdomain/conf/security/archive/readme.txt create mode 100644 xmpp/otherdomain/conf/security/client.truststore create mode 100644 xmpp/otherdomain/conf/security/keystore create mode 100644 xmpp/otherdomain/conf/security/truststore diff --git a/docker-compose-otherdomain.yml b/docker-compose-otherdomain.yml new file mode 100644 index 0000000..ddefecc --- /dev/null +++ b/docker-compose-otherdomain.yml @@ -0,0 +1,60 @@ +version: '3.7' + +services: + + otherdb: + image: library/postgres:9.6.17-alpine + ports: + - "5433:5432" + environment: + - "POSTGRES_DB=openfire" + - "POSTGRES_USER=openfire" + - "POSTGRES_PASSWORD=hunter2" + volumes: + - ./sql/otherdomain:/docker-entrypoint-initdb.d + networks: + openfire-clustered-net: + ipv4_address: 172.60.0.111 + + otherxmpp: + image: "openfire:${OPENFIRE_TAG}" + ports: + - "5229:5222" + - "5269:5269" + - "7079:7070" + - "7449:7443" + - "9099:9090" + depends_on: + - "otherdb" + volumes: + - ./_data/xmpp/otherdomain/conf:/var/lib/openfire/conf + #- ./_data/plugins:/opt/plugins + - ./wait-for-it.sh:/wait-for-it.sh + command: ["/wait-for-it.sh", "-s", "otherdb:5432", "--", "/sbin/entrypoint.sh"] + networks: + openfire-clustered-net: + ipv4_address: 172.60.0.110 + extra_hosts: + - "xmpp.localhost.example:172.60.0.10" + - "xmpp.localhost.example:172.60.0.20" + - "xmpp.localhost.example:172.60.0.30" + - "conference.xmpp.localhost.example:172.60.0.10" + - "conference.xmpp.localhost.example:172.60.0.20" + - "conference.xmpp3.localhost.example:172.60.0.30" + - "otherxmpp.localhost.example:172.60.0.110" + - "conference.otherxmpp.localhost.example:172.60.0.110" + + xmpp1: + extra_hosts: + - "otherxmpp.localhost.example:172.60.0.110" + - "conference.otherxmpp.localhost.example:172.60.0.110" + + xmpp2: + extra_hosts: + - "otherxmpp.localhost.example:172.60.0.110" + - "conference.otherxmpp.localhost.example:172.60.0.110" + + xmpp3: + extra_hosts: + - "otherxmpp.localhost.example:172.60.0.110" + - "conference.otherxmpp.localhost.example:172.60.0.110" diff --git a/sql/otherdomain/openfire.sql b/sql/otherdomain/openfire.sql new file mode 100644 index 0000000..defcae6 --- /dev/null +++ b/sql/otherdomain/openfire.sql @@ -0,0 +1,1257 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.17 +-- Dumped by pg_dump version 9.6.17 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: ofextcomponentconf; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofextcomponentconf ( + subdomain character varying(255) NOT NULL, + wildcard integer NOT NULL, + secret character varying(255), + permission character varying(10) NOT NULL +); + + +ALTER TABLE public.ofextcomponentconf OWNER TO openfire; + +-- +-- Name: ofgroup; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofgroup ( + groupname character varying(50) NOT NULL, + description character varying(255) +); + + +ALTER TABLE public.ofgroup OWNER TO openfire; + +-- +-- Name: ofgroupprop; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofgroupprop ( + groupname character varying(50) NOT NULL, + name character varying(100) NOT NULL, + propvalue text NOT NULL +); + + +ALTER TABLE public.ofgroupprop OWNER TO openfire; + +-- +-- Name: ofgroupuser; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofgroupuser ( + groupname character varying(50) NOT NULL, + username character varying(100) NOT NULL, + administrator integer NOT NULL +); + + +ALTER TABLE public.ofgroupuser OWNER TO openfire; + +-- +-- Name: ofid; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofid ( + idtype integer NOT NULL, + id integer NOT NULL +); + + +ALTER TABLE public.ofid OWNER TO openfire; + +-- +-- Name: ofmucaffiliation; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofmucaffiliation ( + roomid integer NOT NULL, + jid character varying(1024) NOT NULL, + affiliation integer NOT NULL +); + + +ALTER TABLE public.ofmucaffiliation OWNER TO openfire; + +-- +-- Name: ofmucconversationlog; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofmucconversationlog ( + roomid integer NOT NULL, + messageid integer NOT NULL, + sender character varying(1024) NOT NULL, + nickname character varying(255), + logtime character(15) NOT NULL, + subject character varying(255), + body text, + stanza text +); + + +ALTER TABLE public.ofmucconversationlog OWNER TO openfire; + +-- +-- Name: ofmucmember; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofmucmember ( + roomid integer NOT NULL, + jid character varying(1024) NOT NULL, + nickname character varying(255), + firstname character varying(100), + lastname character varying(100), + url character varying(100), + email character varying(100), + faqentry character varying(100) +); + + +ALTER TABLE public.ofmucmember OWNER TO openfire; + +-- +-- Name: ofmucroom; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofmucroom ( + serviceid integer NOT NULL, + roomid integer NOT NULL, + creationdate character(15) NOT NULL, + modificationdate character(15) NOT NULL, + name character varying(50) NOT NULL, + naturalname character varying(255) NOT NULL, + description character varying(255), + lockeddate character(15) NOT NULL, + emptydate character(15), + canchangesubject integer NOT NULL, + maxusers integer NOT NULL, + publicroom integer NOT NULL, + moderated integer NOT NULL, + membersonly integer NOT NULL, + caninvite integer NOT NULL, + roompassword character varying(50), + candiscoverjid integer NOT NULL, + logenabled integer NOT NULL, + subject character varying(100), + rolestobroadcast integer NOT NULL, + usereservednick integer NOT NULL, + canchangenick integer NOT NULL, + canregister integer NOT NULL, + allowpm integer, + fmucenabled integer, + fmucoutboundnode text, + fmucoutboundmode integer, + fmucinboundnodes text +); + + +ALTER TABLE public.ofmucroom OWNER TO openfire; + +-- +-- Name: ofmucroomprop; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofmucroomprop ( + roomid integer NOT NULL, + name character varying(100) NOT NULL, + propvalue text NOT NULL +); + + +ALTER TABLE public.ofmucroomprop OWNER TO openfire; + +-- +-- Name: ofmucservice; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofmucservice ( + serviceid integer NOT NULL, + subdomain character varying(255) NOT NULL, + description character varying(255), + ishidden integer NOT NULL +); + + +ALTER TABLE public.ofmucservice OWNER TO openfire; + +-- +-- Name: ofmucserviceprop; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofmucserviceprop ( + serviceid integer NOT NULL, + name character varying(100) NOT NULL, + propvalue text NOT NULL +); + + +ALTER TABLE public.ofmucserviceprop OWNER TO openfire; + +-- +-- Name: ofoffline; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofoffline ( + username character varying(64) NOT NULL, + messageid integer NOT NULL, + creationdate character(15) NOT NULL, + messagesize integer NOT NULL, + stanza text NOT NULL +); + + +ALTER TABLE public.ofoffline OWNER TO openfire; + +-- +-- Name: ofpresence; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofpresence ( + username character varying(64) NOT NULL, + offlinepresence text, + offlinedate character varying(15) NOT NULL +); + + +ALTER TABLE public.ofpresence OWNER TO openfire; + +-- +-- Name: ofprivacylist; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofprivacylist ( + username character varying(64) NOT NULL, + name character varying(100) NOT NULL, + isdefault integer NOT NULL, + list text NOT NULL +); + + +ALTER TABLE public.ofprivacylist OWNER TO openfire; + +-- +-- Name: ofproperty; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofproperty ( + name character varying(100) NOT NULL, + propvalue character varying(4000) NOT NULL, + encrypted integer, + iv character(24) +); + + +ALTER TABLE public.ofproperty OWNER TO openfire; + +-- +-- Name: ofpubsubaffiliation; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofpubsubaffiliation ( + serviceid character varying(100) NOT NULL, + nodeid character varying(100) NOT NULL, + jid character varying(1024) NOT NULL, + affiliation character varying(10) NOT NULL +); + + +ALTER TABLE public.ofpubsubaffiliation OWNER TO openfire; + +-- +-- Name: ofpubsubdefaultconf; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofpubsubdefaultconf ( + serviceid character varying(100) NOT NULL, + leaf integer NOT NULL, + deliverpayloads integer NOT NULL, + maxpayloadsize integer NOT NULL, + persistitems integer NOT NULL, + maxitems integer NOT NULL, + notifyconfigchanges integer NOT NULL, + notifydelete integer NOT NULL, + notifyretract integer NOT NULL, + presencebased integer NOT NULL, + senditemsubscribe integer NOT NULL, + publishermodel character varying(15) NOT NULL, + subscriptionenabled integer NOT NULL, + accessmodel character varying(10) NOT NULL, + language character varying(255), + replypolicy character varying(15), + associationpolicy character varying(15) NOT NULL, + maxleafnodes integer NOT NULL +); + + +ALTER TABLE public.ofpubsubdefaultconf OWNER TO openfire; + +-- +-- Name: ofpubsubitem; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofpubsubitem ( + serviceid character varying(100) NOT NULL, + nodeid character varying(100) NOT NULL, + id character varying(100) NOT NULL, + jid character varying(1024) NOT NULL, + creationdate character(15) NOT NULL, + payload text +); + + +ALTER TABLE public.ofpubsubitem OWNER TO openfire; + +-- +-- Name: ofpubsubnode; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofpubsubnode ( + serviceid character varying(100) NOT NULL, + nodeid character varying(100) NOT NULL, + leaf integer NOT NULL, + creationdate character(15) NOT NULL, + modificationdate character(15) NOT NULL, + parent character varying(100), + deliverpayloads integer NOT NULL, + maxpayloadsize integer, + persistitems integer, + maxitems integer, + notifyconfigchanges integer NOT NULL, + notifydelete integer NOT NULL, + notifyretract integer NOT NULL, + presencebased integer NOT NULL, + senditemsubscribe integer NOT NULL, + publishermodel character varying(15) NOT NULL, + subscriptionenabled integer NOT NULL, + configsubscription integer NOT NULL, + accessmodel character varying(10) NOT NULL, + payloadtype character varying(100), + bodyxslt character varying(100), + dataformxslt character varying(100), + creator character varying(1024) NOT NULL, + description character varying(255), + language character varying(255), + name character varying(50), + replypolicy character varying(15), + associationpolicy character varying(15), + maxleafnodes integer +); + + +ALTER TABLE public.ofpubsubnode OWNER TO openfire; + +-- +-- Name: ofpubsubnodegroups; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofpubsubnodegroups ( + serviceid character varying(100) NOT NULL, + nodeid character varying(100) NOT NULL, + rostergroup character varying(100) NOT NULL +); + + +ALTER TABLE public.ofpubsubnodegroups OWNER TO openfire; + +-- +-- Name: ofpubsubnodejids; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofpubsubnodejids ( + serviceid character varying(100) NOT NULL, + nodeid character varying(100) NOT NULL, + jid character varying(1024) NOT NULL, + associationtype character varying(20) NOT NULL +); + + +ALTER TABLE public.ofpubsubnodejids OWNER TO openfire; + +-- +-- Name: ofpubsubsubscription; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofpubsubsubscription ( + serviceid character varying(100) NOT NULL, + nodeid character varying(100) NOT NULL, + id character varying(100) NOT NULL, + jid character varying(1024) NOT NULL, + owner character varying(1024) NOT NULL, + state character varying(15) NOT NULL, + deliver integer NOT NULL, + digest integer NOT NULL, + digest_frequency integer NOT NULL, + expire character(15), + includebody integer NOT NULL, + showvalues character varying(30) NOT NULL, + subscriptiontype character varying(10) NOT NULL, + subscriptiondepth integer NOT NULL, + keyword character varying(200) +); + + +ALTER TABLE public.ofpubsubsubscription OWNER TO openfire; + +-- +-- Name: ofremoteserverconf; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofremoteserverconf ( + xmppdomain character varying(255) NOT NULL, + remoteport integer, + permission character varying(10) NOT NULL +); + + +ALTER TABLE public.ofremoteserverconf OWNER TO openfire; + +-- +-- Name: ofroster; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofroster ( + rosterid integer NOT NULL, + username character varying(64) NOT NULL, + jid character varying(1024) NOT NULL, + sub integer NOT NULL, + ask integer NOT NULL, + recv integer NOT NULL, + nick character varying(255) +); + + +ALTER TABLE public.ofroster OWNER TO openfire; + +-- +-- Name: ofrostergroups; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofrostergroups ( + rosterid integer NOT NULL, + rank integer NOT NULL, + groupname character varying(255) NOT NULL +); + + +ALTER TABLE public.ofrostergroups OWNER TO openfire; + +-- +-- Name: ofsaslauthorized; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofsaslauthorized ( + username character varying(64) NOT NULL, + principal character varying(4000) NOT NULL +); + + +ALTER TABLE public.ofsaslauthorized OWNER TO openfire; + +-- +-- Name: ofsecurityauditlog; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofsecurityauditlog ( + msgid integer NOT NULL, + username character varying(64) NOT NULL, + entrystamp bigint NOT NULL, + summary character varying(255) NOT NULL, + node character varying(255) NOT NULL, + details text +); + + +ALTER TABLE public.ofsecurityauditlog OWNER TO openfire; + +-- +-- Name: ofuser; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofuser ( + username character varying(64) NOT NULL, + storedkey character varying(32), + serverkey character varying(32), + salt character varying(32), + iterations integer, + plainpassword character varying(32), + encryptedpassword character varying(255), + name character varying(100), + email character varying(100), + creationdate character(15) NOT NULL, + modificationdate character(15) NOT NULL +); + + +ALTER TABLE public.ofuser OWNER TO openfire; + +-- +-- Name: ofuserflag; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofuserflag ( + username character varying(64) NOT NULL, + name character varying(100) NOT NULL, + starttime character(15), + endtime character(15) +); + + +ALTER TABLE public.ofuserflag OWNER TO openfire; + +-- +-- Name: ofuserprop; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofuserprop ( + username character varying(64) NOT NULL, + name character varying(100) NOT NULL, + propvalue text NOT NULL +); + + +ALTER TABLE public.ofuserprop OWNER TO openfire; + +-- +-- Name: ofvcard; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofvcard ( + username character varying(64) NOT NULL, + vcard text NOT NULL +); + + +ALTER TABLE public.ofvcard OWNER TO openfire; + +-- +-- Name: ofversion; Type: TABLE; Schema: public; Owner: openfire +-- + +CREATE TABLE public.ofversion ( + name character varying(50) NOT NULL, + version integer NOT NULL +); + + +ALTER TABLE public.ofversion OWNER TO openfire; + +-- +-- Data for Name: ofextcomponentconf; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofextcomponentconf (subdomain, wildcard, secret, permission) FROM stdin; +\. + + +-- +-- Data for Name: ofgroup; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofgroup (groupname, description) FROM stdin; +\. + + +-- +-- Data for Name: ofgroupprop; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofgroupprop (groupname, name, propvalue) FROM stdin; +\. + + +-- +-- Data for Name: ofgroupuser; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofgroupuser (groupname, username, administrator) FROM stdin; +\. + + +-- +-- Data for Name: ofid; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofid (idtype, id) FROM stdin; +18 11 +19 1 +26 2 +23 6 +27 51 +25 9 +\. + + +-- +-- Data for Name: ofmucaffiliation; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofmucaffiliation (roomid, jid, affiliation) FROM stdin; +1 admin@otherxmpp.localhost.example 10 +2 admin@otherxmpp.localhost.example 10 +\. + + +-- +-- Data for Name: ofmucconversationlog; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofmucconversationlog (roomid, messageid, sender, nickname, logtime, subject, body, stanza) FROM stdin; +1 1 muc1@conference.otherxmpp.localhost.example \N 001605193216988 \N +2 2 muc2@conference.otherxmpp.localhost.example \N 001605193235014 \N +\. + + +-- +-- Data for Name: ofmucmember; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofmucmember (roomid, jid, nickname, firstname, lastname, url, email, faqentry) FROM stdin; +\. + + +-- +-- Data for Name: ofmucroom; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofmucroom (serviceid, roomid, creationdate, modificationdate, name, naturalname, description, lockeddate, emptydate, canchangesubject, maxusers, publicroom, moderated, membersonly, caninvite, roompassword, candiscoverjid, logenabled, subject, rolestobroadcast, usereservednick, canchangenick, canregister, allowpm, fmucenabled, fmucoutboundnode, fmucoutboundmode, fmucinboundnodes) FROM stdin; +1 1 001605193216969 001605193216979 muc1 MUC One First MUC room 000000000000000 \N 0 30 1 0 0 0 \N 1 1 7 0 1 1 0 0 \N \N \N +1 2 001605193235007 001605193235010 muc2 MUC Two Second MUC room 000000000000000 \N 0 30 1 0 0 0 \N 1 1 7 0 1 1 0 0 \N \N \N +\. + + +-- +-- Data for Name: ofmucroomprop; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofmucroomprop (roomid, name, propvalue) FROM stdin; +\. + + +-- +-- Data for Name: ofmucservice; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofmucservice (serviceid, subdomain, description, ishidden) FROM stdin; +1 conference \N 0 +\. + + +-- +-- Data for Name: ofmucserviceprop; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofmucserviceprop (serviceid, name, propvalue) FROM stdin; +\. + + +-- +-- Data for Name: ofoffline; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofoffline (username, messageid, creationdate, messagesize, stanza) FROM stdin; +\. + + +-- +-- Data for Name: ofpresence; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofpresence (username, offlinepresence, offlinedate) FROM stdin; +\. + + +-- +-- Data for Name: ofprivacylist; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofprivacylist (username, name, isdefault, list) FROM stdin; +\. + + +-- +-- Data for Name: ofproperty; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofproperty (name, propvalue, encrypted, iv) FROM stdin; +xmpp.socket.ssl.active true 0 \N +provider.admin.className org.jivesoftware.openfire.admin.DefaultAdminProvider 0 \N +xmpp.domain otherxmpp.localhost.example 0 \N +xmpp.auth.anonymous false 0 \N +provider.auth.className org.jivesoftware.openfire.auth.DefaultAuthProvider 0 \N +provider.lockout.className org.jivesoftware.openfire.lockout.DefaultLockOutProvider 0 \N +provider.group.className org.jivesoftware.openfire.group.DefaultGroupProvider 0 \N +provider.vcard.className org.jivesoftware.openfire.vcard.DefaultVCardProvider 0 \N +provider.securityAudit.className org.jivesoftware.openfire.security.DefaultSecurityAuditProvider 0 \N +provider.user.className org.jivesoftware.openfire.user.DefaultUserProvider 0 \N +passwordKey YJ1nKWyrMeGvTKu 0 \N +log.debug.enabled true 0 \N +update.lastCheck 1605956807055 0 \N +\. + + +-- +-- Data for Name: ofpubsubaffiliation; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofpubsubaffiliation (serviceid, nodeid, jid, affiliation) FROM stdin; +pubsub otherxmpp.localhost.example owner +\. + + +-- +-- Data for Name: ofpubsubdefaultconf; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofpubsubdefaultconf (serviceid, leaf, deliverpayloads, maxpayloadsize, persistitems, maxitems, notifyconfigchanges, notifydelete, notifyretract, presencebased, senditemsubscribe, publishermodel, subscriptionenabled, accessmodel, language, replypolicy, associationpolicy, maxleafnodes) FROM stdin; +pubsub 1 1 10485760 0 1 1 1 1 0 1 publishers 1 open English \N all -1 +pubsub 0 0 0 0 0 1 1 1 0 0 publishers 1 open English \N all -1 +\. + + +-- +-- Data for Name: ofpubsubitem; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofpubsubitem (serviceid, nodeid, id, jid, creationdate, payload) FROM stdin; +\. + + +-- +-- Data for Name: ofpubsubnode; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofpubsubnode (serviceid, nodeid, leaf, creationdate, modificationdate, parent, deliverpayloads, maxpayloadsize, persistitems, maxitems, notifyconfigchanges, notifydelete, notifyretract, presencebased, senditemsubscribe, publishermodel, subscriptionenabled, configsubscription, accessmodel, payloadtype, bodyxslt, dataformxslt, creator, description, language, name, replypolicy, associationpolicy, maxleafnodes) FROM stdin; +pubsub 0 001605193079586 001605193079586 \N 0 0 0 0 1 1 1 0 0 publishers 1 0 open otherxmpp.localhost.example English \N all -1 +\. + + +-- +-- Data for Name: ofpubsubnodegroups; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofpubsubnodegroups (serviceid, nodeid, rostergroup) FROM stdin; +\. + + +-- +-- Data for Name: ofpubsubnodejids; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofpubsubnodejids (serviceid, nodeid, jid, associationtype) FROM stdin; +\. + + +-- +-- Data for Name: ofpubsubsubscription; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofpubsubsubscription (serviceid, nodeid, id, jid, owner, state, deliver, digest, digest_frequency, expire, includebody, showvalues, subscriptiontype, subscriptiondepth, keyword) FROM stdin; +\. + + +-- +-- Data for Name: ofremoteserverconf; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofremoteserverconf (xmppdomain, remoteport, permission) FROM stdin; +\. + + +-- +-- Data for Name: ofroster; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofroster (rosterid, username, jid, sub, ask, recv, nick) FROM stdin; +1 user3 user1@otherxmpp.localhost.example 3 -1 -1 user1 +2 user1 user3@otherxmpp.localhost.example 3 -1 -1 user3 +3 user2 user1@otherxmpp.localhost.example 3 -1 -1 user1 +4 user1 user2@otherxmpp.localhost.example 3 -1 -1 user2 +5 user2 user3@otherxmpp.localhost.example 3 -1 -1 user3 +6 user3 user2@otherxmpp.localhost.example 3 -1 -1 user2 +\. + + +-- +-- Data for Name: ofrostergroups; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofrostergroups (rosterid, rank, groupname) FROM stdin; +1 0 Friends +2 0 Friends +3 0 Friends +4 0 Friends +5 0 Friends +6 0 Friends +\. + + +-- +-- Data for Name: ofsaslauthorized; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofsaslauthorized (username, principal) FROM stdin; +\. + + +-- +-- Data for Name: ofsecurityauditlog; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofsecurityauditlog (msgid, username, entrystamp, summary, node, details) FROM stdin; +1 admin 1605193086180 Successful admin console login attempt otherxmpp.localhost.example The user logged in successfully to the admin console from address 172.60.0.1. +2 admin 1605193167191 created new user user1 otherxmpp.localhost.example name = User One, email = null, admin = false +3 admin 1605193178661 created new user user2 otherxmpp.localhost.example name = User Two, email = null, admin = false +4 admin 1605193216992 created new MUC room muc1 otherxmpp.localhost.example subject = \nroomdesc = First MUC room\nroomname = MUC One\nmaxusers = 30 +5 admin 1605193235018 created new MUC room muc2 otherxmpp.localhost.example subject = \nroomdesc = Second MUC room\nroomname = MUC Two\nmaxusers = 30 +6 admin 1605957429200 created new user user3 otherxmpp.localhost.example name = null, email = null, admin = false +\. + + +-- +-- Data for Name: ofuser; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofuser (username, storedkey, serverkey, salt, iterations, plainpassword, encryptedpassword, name, email, creationdate, modificationdate) FROM stdin; +admin \N \N \N \N admin \N Administrator admin@example.com 0 0 +user1 bwwYjdvCySlDbPP8ThRhIRPNIsg= kghyw1bnKARQIQFnq1ro4EeC24s= 2q5Haus5PeiKO6T0U7BWPW6p+6B2xNPv 4096 \N d8835ca5c85385d31b06e30d0479559f241d3c6c9bfe37b5a2ee228a258a73b8 User One \N 001605193167159 001605193167159 +user2 qQZJ/YRNwP4ongfV375LPUlDkeE= t0pnVWMK/9MAEBGYka0bNJfYe/Q= nl9R20qgvMHcet0lZVPFuzH0gVs32naO 4096 \N 58af7cf2b2717559f2d4a8b642257fbbb5f60763989294d1698e647b332d8ca7 User Two \N 001605193178643 001605193178643 +user3 +03PBnVHvhdMSRRT5QBvcKkEzQE= 75I3lmGj2CYHQhKd76wrXltXqBA= LDmgafUpzJd2N2RlYH8S8Rd/wXDM/h4w 4096 \N 03ffc319cac75a3da02777e376f09e4a13fe7d654cdc291a7a55f3792738d65c User Three \N 001605957429153 001605957429153 +\. + + +-- +-- Data for Name: ofuserflag; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofuserflag (username, name, starttime, endtime) FROM stdin; +\. + + +-- +-- Data for Name: ofuserprop; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofuserprop (username, name, propvalue) FROM stdin; +\. + + +-- +-- Data for Name: ofvcard; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofvcard (username, vcard) FROM stdin; +\. + + +-- +-- Data for Name: ofversion; Type: TABLE DATA; Schema: public; Owner: openfire +-- + +COPY public.ofversion (name, version) FROM stdin; +openfire 32 +\. + + +-- +-- Name: ofextcomponentconf ofextcomponentconf_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofextcomponentconf + ADD CONSTRAINT ofextcomponentconf_pk PRIMARY KEY (subdomain); + + +-- +-- Name: ofgroup ofgroup_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofgroup + ADD CONSTRAINT ofgroup_pk PRIMARY KEY (groupname); + + +-- +-- Name: ofgroupprop ofgroupprop_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofgroupprop + ADD CONSTRAINT ofgroupprop_pk PRIMARY KEY (groupname, name); + + +-- +-- Name: ofgroupuser ofgroupuser_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofgroupuser + ADD CONSTRAINT ofgroupuser_pk PRIMARY KEY (groupname, username, administrator); + + +-- +-- Name: ofid ofid_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofid + ADD CONSTRAINT ofid_pk PRIMARY KEY (idtype); + + +-- +-- Name: ofmucaffiliation ofmucaffiliation_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofmucaffiliation + ADD CONSTRAINT ofmucaffiliation_pk PRIMARY KEY (roomid, jid); + + +-- +-- Name: ofmucmember ofmucmember_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofmucmember + ADD CONSTRAINT ofmucmember_pk PRIMARY KEY (roomid, jid); + + +-- +-- Name: ofmucroom ofmucroom_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofmucroom + ADD CONSTRAINT ofmucroom_pk PRIMARY KEY (serviceid, name); + + +-- +-- Name: ofmucroomprop ofmucroomprop_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofmucroomprop + ADD CONSTRAINT ofmucroomprop_pk PRIMARY KEY (roomid, name); + + +-- +-- Name: ofmucservice ofmucservice_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofmucservice + ADD CONSTRAINT ofmucservice_pk PRIMARY KEY (subdomain); + + +-- +-- Name: ofmucserviceprop ofmucserviceprop_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofmucserviceprop + ADD CONSTRAINT ofmucserviceprop_pk PRIMARY KEY (serviceid, name); + + +-- +-- Name: ofoffline ofoffline_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofoffline + ADD CONSTRAINT ofoffline_pk PRIMARY KEY (username, messageid); + + +-- +-- Name: ofpresence ofpresence_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofpresence + ADD CONSTRAINT ofpresence_pk PRIMARY KEY (username); + + +-- +-- Name: ofprivacylist ofprivacylist_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofprivacylist + ADD CONSTRAINT ofprivacylist_pk PRIMARY KEY (username, name); + + +-- +-- Name: ofproperty ofproperty_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofproperty + ADD CONSTRAINT ofproperty_pk PRIMARY KEY (name); + + +-- +-- Name: ofpubsubaffiliation ofpubsubaffiliation_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofpubsubaffiliation + ADD CONSTRAINT ofpubsubaffiliation_pk PRIMARY KEY (serviceid, nodeid, jid); + + +-- +-- Name: ofpubsubdefaultconf ofpubsubdefaultconf_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofpubsubdefaultconf + ADD CONSTRAINT ofpubsubdefaultconf_pk PRIMARY KEY (serviceid, leaf); + + +-- +-- Name: ofpubsubitem ofpubsubitem_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofpubsubitem + ADD CONSTRAINT ofpubsubitem_pk PRIMARY KEY (serviceid, nodeid, id); + + +-- +-- Name: ofpubsubnode ofpubsubnode_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofpubsubnode + ADD CONSTRAINT ofpubsubnode_pk PRIMARY KEY (serviceid, nodeid); + + +-- +-- Name: ofpubsubnodejids ofpubsubnodejids_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofpubsubnodejids + ADD CONSTRAINT ofpubsubnodejids_pk PRIMARY KEY (serviceid, nodeid, jid); + + +-- +-- Name: ofpubsubsubscription ofpubsubsubscription_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofpubsubsubscription + ADD CONSTRAINT ofpubsubsubscription_pk PRIMARY KEY (serviceid, nodeid, id); + + +-- +-- Name: ofremoteserverconf ofremoteserverconf_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofremoteserverconf + ADD CONSTRAINT ofremoteserverconf_pk PRIMARY KEY (xmppdomain); + + +-- +-- Name: ofroster ofroster_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofroster + ADD CONSTRAINT ofroster_pk PRIMARY KEY (rosterid); + + +-- +-- Name: ofrostergroups ofrostergroups_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofrostergroups + ADD CONSTRAINT ofrostergroups_pk PRIMARY KEY (rosterid, rank); + + +-- +-- Name: ofsaslauthorized ofsaslauthorized_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofsaslauthorized + ADD CONSTRAINT ofsaslauthorized_pk PRIMARY KEY (username, principal); + + +-- +-- Name: ofsecurityauditlog ofsecurityauditlog_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofsecurityauditlog + ADD CONSTRAINT ofsecurityauditlog_pk PRIMARY KEY (msgid); + + +-- +-- Name: ofuser ofuser_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofuser + ADD CONSTRAINT ofuser_pk PRIMARY KEY (username); + + +-- +-- Name: ofuserflag ofuserflag_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofuserflag + ADD CONSTRAINT ofuserflag_pk PRIMARY KEY (username, name); + + +-- +-- Name: ofuserprop ofuserprop_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofuserprop + ADD CONSTRAINT ofuserprop_pk PRIMARY KEY (username, name); + + +-- +-- Name: ofvcard ofvcard_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofvcard + ADD CONSTRAINT ofvcard_pk PRIMARY KEY (username); + + +-- +-- Name: ofversion ofversion_pk; Type: CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofversion + ADD CONSTRAINT ofversion_pk PRIMARY KEY (name); + + +-- +-- Name: ofmucconversationlog_msg_id; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofmucconversationlog_msg_id ON public.ofmucconversationlog USING btree (messageid); + + +-- +-- Name: ofmucconversationlog_time_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofmucconversationlog_time_idx ON public.ofmucconversationlog USING btree (logtime); + + +-- +-- Name: ofmucroom_roomid_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofmucroom_roomid_idx ON public.ofmucroom USING btree (roomid); + + +-- +-- Name: ofmucroom_serviceid_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofmucroom_serviceid_idx ON public.ofmucroom USING btree (serviceid); + + +-- +-- Name: ofmucservice_serviceid_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofmucservice_serviceid_idx ON public.ofmucservice USING btree (serviceid); + + +-- +-- Name: ofprivacylist_default_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofprivacylist_default_idx ON public.ofprivacylist USING btree (username, isdefault); + + +-- +-- Name: ofpubsubnodegroups_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofpubsubnodegroups_idx ON public.ofpubsubnodegroups USING btree (serviceid, nodeid); + + +-- +-- Name: ofroster_jid_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofroster_jid_idx ON public.ofroster USING btree (jid); + + +-- +-- Name: ofroster_username_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofroster_username_idx ON public.ofroster USING btree (username); + + +-- +-- Name: ofrostergroups_rosterid_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofrostergroups_rosterid_idx ON public.ofrostergroups USING btree (rosterid); + + +-- +-- Name: ofsecurityauditlog_tstamp_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofsecurityauditlog_tstamp_idx ON public.ofsecurityauditlog USING btree (entrystamp); + + +-- +-- Name: ofsecurityauditlog_uname_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofsecurityauditlog_uname_idx ON public.ofsecurityauditlog USING btree (username); + + +-- +-- Name: ofuser_cdate_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofuser_cdate_idx ON public.ofuser USING btree (creationdate); + + +-- +-- Name: ofuserflag_etime_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofuserflag_etime_idx ON public.ofuserflag USING btree (endtime); + + +-- +-- Name: ofuserflag_stime_idx; Type: INDEX; Schema: public; Owner: openfire +-- + +CREATE INDEX ofuserflag_stime_idx ON public.ofuserflag USING btree (starttime); + + +-- +-- Name: ofrostergroups ofrostergroups_rosterid_fk; Type: FK CONSTRAINT; Schema: public; Owner: openfire +-- + +ALTER TABLE ONLY public.ofrostergroups + ADD CONSTRAINT ofrostergroups_rosterid_fk FOREIGN KEY (rosterid) REFERENCES public.ofroster(rosterid) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/start.sh b/start.sh index 2499926..06fc9f4 100755 --- a/start.sh +++ b/start.sh @@ -1,20 +1,25 @@ #!/bin/bash -usage() { echo "Usage: $0 [-c] [-n openfire-tag] [-h] +usage() { echo "Usage: $0 [-c] [-o] [-n openfire-tag] [-h] -c Launches a Cluster instead of a FMUC stack + -o Launches another separate domain alongside the cluster -n openfire-tag Launches all Openfire instances with the specified tag. This overrides the value in .env -h Show this helpful information "; exit 0; } CLUSTER_MODE=false +OTHER_DOMAIN=false COMPOSE_FILE_COMMAND=("docker-compose") -while getopts cn:h o; do +while getopts con:h o; do case "$o" in c) CLUSTER_MODE=true ;; + o) + OTHER_DOMAIN=true + ;; n) echo "Using Openfire tag: $1" export OPENFIRE_TAG=$1 @@ -28,6 +33,15 @@ while getopts cn:h o; do esac done +if [ $OTHER_DOMAIN == "true" ]; then + if [ $CLUSTER_MODE == "false" ]; then + echo "Other domains are only supported alongside clusters" + exit 1 + else + COMPOSE_FILE_COMMAND+=("-f" "docker-compose-otherdomain.yml") + fi +fi + case $CLUSTER_MODE in (true) echo "Starting a clustered environment." COMPOSE_FILE_COMMAND+=("-f" "docker-compose-clustered.yml");; diff --git a/xmpp/otherdomain/conf/openfire.xml b/xmpp/otherdomain/conf/openfire.xml new file mode 100644 index 0000000..d1f0922 --- /dev/null +++ b/xmpp/otherdomain/conf/openfire.xml @@ -0,0 +1,64 @@ + + + + + + + + 9090 + 9091 + + en + + + + + + org.jivesoftware.database.DefaultConnectionProvider + + + + org.postgresql.Driver + jdbc:postgresql://otherdb:5432/openfire + 10d847caed2654fbb1fe6cefac0f381893323ae6b5eea27d31503d5880091fca + 30c1893796e0110fc4607c8b1bca0d0e54f10b270c4615d3 + select 1 + false + false + 500 + 30000 + 900000 + 500 + 5 + 25 + 1.0 + + + true + otherxmpp.localhost.example + diff --git a/xmpp/otherdomain/conf/security.xml b/xmpp/otherdomain/conf/security.xml new file mode 100644 index 0000000..4185021 --- /dev/null +++ b/xmpp/otherdomain/conf/security.xml @@ -0,0 +1,66 @@ + + + + + + + Blowfish + + + + + + + database.defaultProvider.username + database.defaultProvider.password + + + + diff --git a/xmpp/otherdomain/conf/security/archive/readme.txt b/xmpp/otherdomain/conf/security/archive/readme.txt new file mode 100644 index 0000000..62573a5 --- /dev/null +++ b/xmpp/otherdomain/conf/security/archive/readme.txt @@ -0,0 +1 @@ +This directory is used as a default location in which Openfire stores backups of keystore files. diff --git a/xmpp/otherdomain/conf/security/client.truststore b/xmpp/otherdomain/conf/security/client.truststore new file mode 100644 index 0000000000000000000000000000000000000000..c408465500cb0af9cfd1f7371422ef8899ae6725 GIT binary patch literal 32 ncmezO_TO6u1_mY|W_Xm5=la|E{*s%M?mC{^wn--0;QAy0^AQhj literal 0 HcmV?d00001 diff --git a/xmpp/otherdomain/conf/security/keystore b/xmpp/otherdomain/conf/security/keystore new file mode 100644 index 0000000000000000000000000000000000000000..8ac6ed6ec3f8529f5731cd1c68fbfa71b6590965 GIT binary patch literal 2237 zcma)-c{CJy8^>og%-9K8uA&)b88b+6?PRSahLAmpY*{BlhL}4}h_Xi3G(t03u0#wX zg)AkECd-VaY%yb3ukLyOc;EBhd(QjE^T+r6p7Z?v_&n$H{8;+21ONa)2L=4AB=G^k z!D#;=FAx7~L7`!2Z@fo9u)nukNT|m_OL+6fgBSn+3cwH`dl-H$xDpo-0#pPE0fA5e zgaDc6m7pX{Y`yo6coWO*gUyc2d}6R6>ug9$7st#zCNe}?PUWL<#kohf}vk;dRBy&!(e{3 zlhN&M!l(AG;ZTLPRW~%%eF`rZYzYNKSuSsj$n}Z1qh3i)bOIE~gJ7`eyOriMhTJ1v z%5jlHE8JM$Z`{Z$TC0;Xo48veXHpN{TLzivm-&T8jkqX95>jFvZC(gAQdA!y;Peuk z_+`v=glRFgO~@{(8{fR8qU9%wdr->NmHSeGM=2raCA%t!Kl42EdS7eRtOygCr}SLM zSQsaHxqZc%d~R|S)n1K?FBy%Ieg8DfLC|;g@RY1VX>6!zMQ*rNM_Byq=|KB0O|xjE z?aF#JOjVp>7*U&H0$Am^&7D`Bt+tyO7Bg7Le^&X}c5Ow4m1r^77ybr`(?314ITRVf z^dD5eA^jONLX%|^b@8|R6|1*q6xFl*60p#Tx}C<272TmYG+%lpB7{CXd|jETm48&@ zD9dNkPsjF0x7Vs1Pi4H!jby9r=-s(PvWYGBM zWF>xw@lnDdf5oXEoh<(k@?bjJ+AM?WQE+p%|Pu|0v#!JfXe4D38gsWGb5^ zke&PMf76$p#C+NrG|ZQhBVPDnIT~5fvYJ6aNSJK>v1o<#WuQvj z!QH)Dm5we;o{^la`>f!_O<|#DaK0s+i-73r3+9s45P^ja>7PmJTwfNPw98vX+@X3^ zcHl*|My@)hRL#*|)O)?tgYZvtw_A$rG*zt8v|+r`*qXN@>sd6TPJ8VI1-_4iRYXdx z#OjXtHNCu!Pl3A=4(`z~%*BULaVoub67W~|@yj&uBm--0Apxl3cd|+lU z0Vr^wY#0` zToHZY-0Kr9Z<9%*z}H!<006Py%}3Ig%zaCeme$n(Pp>{3RHkdrn&+OuiH2OP|VW^oL z&unUA6()rQT`)w?PazhGDB3fDVORrg#Z$rhaGH+36aE>ApZqYbHR1$-OISMmhH6Fc zp`VT*Fc1JNjnBozXJPCPXvhdb&S9(w;=hPs|M&C}{s9$1LJ|EB5Pvb2;fIJpL<^~! z)cNF;V=vb84ha@*qZ~V}?_*?tJ&7JCRQXW+o^lM+t0n!H0XceF0HR9iyJFHAvowk*!Ni~D%%;DcOL zi_CLA4+t9VjbBnT+8xvQYN|nA-!S{VM*LM;t`Wkvy?d;cQnrBevYMh*dbzURbkobn F{{?`i1^xg4 literal 0 HcmV?d00001 diff --git a/xmpp/otherdomain/conf/security/truststore b/xmpp/otherdomain/conf/security/truststore new file mode 100644 index 0000000000000000000000000000000000000000..cc04a6534d93cf3834fb361e7db4cee684047642 GIT binary patch literal 174089 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%0D-Lq#M?@Mo2K3X2ySn)rL;jsV+w@PGTi9vtUo?% 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 z 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 Date: Wed, 22 Sep 2021 13:43:36 +0200 Subject: [PATCH 3/3] Augmented documentation for 'other domain' --- README.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/README.md b/README.md index 3b0f3ff..cff39e9 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ See the "How it's built" section below if you want to understand how this was do 3. Launch the environment 1. use `./start.sh` if you want two **federated** Openfire instances, or 2. use `./start.sh -c` if you want three **clustered** Openfire instances. + 3. use `./start.sh -co` if you want a combination: a cluster, with an additional federated Instance. ## Federated configuration @@ -131,6 +132,51 @@ The following MUC rooms are configured: * `muc1` * `muc2` + +### Add a federated domain to the cluster + +Running `./start.sh -co` (instead of `./start.sh -c`) will, apart from the cluster described above, also instantiate a second XMPP domain that consists of one Openfire server. This will result in the following components to be added to the system as described above: + +``` + +------------------------+ + | 172.60.0.110 | + | +------------+ | +(XMPP-C2S) 5229 -| | | | +(XMPP-S2S) 5269 -|------| OTHER XMPP | | +(HTTP-Admin) 9099 -| | | | +(BOSH) 7079/7449 -| +------+-----+ | + | | | + | | | + | +-----+----+ | + | | | | +(Database) 5433 -|-------| OTHER DB | | + | | | | + | +----------+ | + | 172.60.0.111 | + | | + +------172.60.0.0/24-----+ +``` + +The additional Openfire is configured with the following XMPP domain: + +* `otherxmpp.localhost.example` + +Openfire is configured with the following hostname: + +* `otherxmpp.localhost.example` + +The following users are configured: + +* `user1` `password` +* `user2` `password` + +The following MUC rooms are configured: + +* `muc1` +* `muc2` + +Note that users and MUC rooms on the additional Openfire domain have a similar name to those on the cluster. This does not lead to collisions, as the domain-part of their JIDs will differ. + ## Network The Docker compose file defines a custom bridge network with a single subnet (`172.50.0.0/24` for the federated