view docker/libervia/scripts/libervia_cont_launch @ 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 5d8b9ca2afd4
children
line wrap: on
line source

#!/usr/bin/env python2

# this script check if libervia and admin accounts exist, and create them if necessary
# then it launch libervia
import os, sys, string, random
from sat.plugins import plugin_misc_account as account
from sat.tools import config
from sat_frontends.bridge import DBus

def generate_pwd():
    chars = string.letters + string.digits
    length = 12
    return "".join(random.choice(chars) for _ in range(length))

sat=DBus.DBusBridgeFrontend()
sat.getReady()
admin_email = sat.getConfig(account.CONFIG_SECTION, "admin_email") or account.default_conf["admin_email"]

for profile in ["libervia", "admin"]:
    try:
        sat.getProfileName(profile)
    except Exception as e:
        print "{} profile doesn't exists, creating it".format(profile)
        print "registering {}@{}".format(profile, sat.getNewAccountDomain())
        pwd = generate_pwd()
        if profile == "libervia":
            config.fixConfigOption("libervia", "passphrase", pwd)
        elif profile == "admin":
            with open("/home/sat/ADMIN_PWD", "w") as f:
                f.write("%s\n" % pwd)
        sat.registerSatAccount(admin_email, pwd, profile)

os.execvp("libervia", ["libervia"] + sys.argv[1:])