view docker/base/scripts/set_account_domain @ 134:4549cf265131

flatpak: install D-Bus .service on each frontend: work around lack of dependency handling in Flatpak by installing D-Bus .service on each frontend. This works because all backend is included in the runtime, but we have to add backend permissions to all frontend, and set --own-name=org.salutatoi.SAT. Furthermore, if one frontend is removed, the symbolic link is removed and the backend will not be launched automatically anymore, even if other frontends are still there. The benefict of this method is that backend has not to be installed manually to use a frontend.
author Goffi <goffi@goffi.org>
date Sun, 15 Jul 2018 16:56:55 +0200
parents b69056368901
children
line wrap: on
line source

#!/usr/bin/env python2

# This script set account domain in sat.conf if not already set
# if not set, domain is got from prosody container or DOMAIN environment variable

import os, os.path, xmlrpclib, ConfigParser, socket, subprocess
from sat.core.constants import Const as C
from sat.tools import config as sat_config

SECTION = "plugin account"
OPTION = "new_account_domain"
CONFIG_PATH = "/home/sat/.config/sat/sat.conf"

try:
    os.makedirs(os.path.dirname(CONFIG_PATH))
except OSError:
    pass

config = ConfigParser.SafeConfigParser()
config.read(C.CONFIG_FILES)
domain = sat_config.getConfig(config, SECTION, OPTION)

if domain is None:
    os.getenv("DOMAIN")
    if domain is None:
        proxy = xmlrpclib.ServerProxy("http://prosody:9999/")
        try:
            if "prosody" not in open("/etc/hosts").read():
                raise socket.gaierror # this avoid waiting for timeout if prosody is not linked
            domain = proxy.getenv("DOMAIN")
        except socket.gaierror:
            print "No prosody container connected or known domain, using \"localhost\" for new domains"
            domain = "localhost"

    config = ConfigParser.SafeConfigParser()
    config.readfp(open(CONFIG_PATH, "a+"))

    try:
        config.add_section(SECTION)
    except ConfigParser.DuplicateSectionError:
        pass

    config.set(SECTION, OPTION, domain)
    config.write(open(CONFIG_PATH, "w"))

subprocess.call(["add_host", domain, "prosody"])

for subdomain in ("chat", "proxy", "upload", "pubsub", "salut"):
    subprocess.call(["add_host", "{}.{}".format(subdomain, domain), "prosody"])