From 3bcbe1941aa660c628359330aa9bfe286e38a3d8 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Tue, 3 Jul 2018 20:43:18 +0200 Subject: [PATCH 1/4] [mod] remove useless imports --- src/yunohost/user.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/yunohost/user.py b/src/yunohost/user.py index bed5fb8c..bbcecc8d 100644 --- a/src/yunohost/user.py +++ b/src/yunohost/user.py @@ -36,7 +36,6 @@ import subprocess from moulinette import m18n from moulinette.core import MoulinetteError from moulinette.utils.log import getActionLogger -from moulinette.utils.filesystem import read_file from yunohost.service import service_status logger = getActionLogger('yunohost.user') @@ -112,7 +111,6 @@ def user_create(auth, username, firstname, lastname, mail, password, mailbox_quota -- Mailbox size quota """ - import pwd from yunohost.domain import domain_list, _get_maindomain from yunohost.hook import hook_callback from yunohost.app import app_ssowatconf From 14387c43ebd24737065514f187275c53d794291a Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Mon, 9 Jul 2018 14:08:28 +0200 Subject: [PATCH 2/4] [mod] uses app_list installed option instead --- src/yunohost/app.py | 51 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/yunohost/app.py b/src/yunohost/app.py index 420a5fb3..68615118 100644 --- a/src/yunohost/app.py +++ b/src/yunohost/app.py @@ -1284,7 +1284,7 @@ def app_ssowatconf(auth): redirected_urls = {} try: - apps_list = app_list()['apps'] + apps_list = app_list(installed=True)['apps'] except: apps_list = [] @@ -1293,31 +1293,30 @@ def app_ssowatconf(auth): return s.split(',') if s else [] for app in apps_list: - if _is_installed(app['id']): - with open(APPS_SETTING_PATH + app['id'] + '/settings.yml') as f: - app_settings = yaml.load(f) - for item in _get_setting(app_settings, 'skipped_uris'): - if item[-1:] == '/': - item = item[:-1] - skipped_urls.append(app_settings['domain'] + app_settings['path'].rstrip('/') + item) - for item in _get_setting(app_settings, 'skipped_regex'): - skipped_regex.append(item) - for item in _get_setting(app_settings, 'unprotected_uris'): - if item[-1:] == '/': - item = item[:-1] - unprotected_urls.append(app_settings['domain'] + app_settings['path'].rstrip('/') + item) - for item in _get_setting(app_settings, 'unprotected_regex'): - unprotected_regex.append(item) - for item in _get_setting(app_settings, 'protected_uris'): - if item[-1:] == '/': - item = item[:-1] - protected_urls.append(app_settings['domain'] + app_settings['path'].rstrip('/') + item) - for item in _get_setting(app_settings, 'protected_regex'): - protected_regex.append(item) - if 'redirected_urls' in app_settings: - redirected_urls.update(app_settings['redirected_urls']) - if 'redirected_regex' in app_settings: - redirected_regex.update(app_settings['redirected_regex']) + with open(APPS_SETTING_PATH + app['id'] + '/settings.yml') as f: + app_settings = yaml.load(f) + for item in _get_setting(app_settings, 'skipped_uris'): + if item[-1:] == '/': + item = item[:-1] + skipped_urls.append(app_settings['domain'] + app_settings['path'].rstrip('/') + item) + for item in _get_setting(app_settings, 'skipped_regex'): + skipped_regex.append(item) + for item in _get_setting(app_settings, 'unprotected_uris'): + if item[-1:] == '/': + item = item[:-1] + unprotected_urls.append(app_settings['domain'] + app_settings['path'].rstrip('/') + item) + for item in _get_setting(app_settings, 'unprotected_regex'): + unprotected_regex.append(item) + for item in _get_setting(app_settings, 'protected_uris'): + if item[-1:] == '/': + item = item[:-1] + protected_urls.append(app_settings['domain'] + app_settings['path'].rstrip('/') + item) + for item in _get_setting(app_settings, 'protected_regex'): + protected_regex.append(item) + if 'redirected_urls' in app_settings: + redirected_urls.update(app_settings['redirected_urls']) + if 'redirected_regex' in app_settings: + redirected_regex.update(app_settings['redirected_regex']) for domain in domains: skipped_urls.extend([domain + '/yunohost/admin', domain + '/yunohost/api']) From d27cce4af6f3b3267e4db74a6ec83f2b498beedb Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Mon, 9 Jul 2018 18:04:22 +0200 Subject: [PATCH 3/4] [mod] put code closer to usage --- src/yunohost/app.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/yunohost/app.py b/src/yunohost/app.py index 68615118..a9091577 100644 --- a/src/yunohost/app.py +++ b/src/yunohost/app.py @@ -1270,10 +1270,6 @@ def app_ssowatconf(auth): main_domain = _get_maindomain() domains = domain_list(auth)['domains'] - users = {} - for username in user_list(auth)['users'].keys(): - users[username] = app_map(user=username) - skipped_urls = [] skipped_regex = [] unprotected_urls = [] @@ -1342,7 +1338,8 @@ def app_ssowatconf(auth): 'protected_regex': protected_regex, 'redirected_urls': redirected_urls, 'redirected_regex': redirected_regex, - 'users': users, + 'users': {username: app_map(user=username) + for username in user_list(auth)['users'].keys()}, } with open('/etc/ssowat/conf.json', 'w+') as f: From 2bf327970b9f9270d6d5453a68b31fa835d22392 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Mon, 9 Jul 2018 18:30:45 +0200 Subject: [PATCH 4/4] [enh] allow an application to optout of sso --- src/yunohost/app.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/yunohost/app.py b/src/yunohost/app.py index a9091577..3c654cbe 100644 --- a/src/yunohost/app.py +++ b/src/yunohost/app.py @@ -399,6 +399,8 @@ def app_map(app=None, raw=False, user=None): continue if 'domain' not in app_settings: continue + if 'no_sso' in app_settings: # I don't think we need to check for the value here + continue if user is not None: if ('mode' not in app_settings or ('mode' in app_settings @@ -1291,6 +1293,10 @@ def app_ssowatconf(auth): for app in apps_list: with open(APPS_SETTING_PATH + app['id'] + '/settings.yml') as f: app_settings = yaml.load(f) + + if 'no_sso' in app_settings: + continue + for item in _get_setting(app_settings, 'skipped_uris'): if item[-1:] == '/': item = item[:-1]