From 63746ce39f1772e4b6c34931189e7a70d9ee743d Mon Sep 17 00:00:00 2001 From: fliu <10025-fliu@users.noreply.salsa.debian.org> Date: Sat, 21 Aug 2021 21:26:16 +0000 Subject: [PATCH] email: postconf.get_many_unsafe: batch query --- plinth/modules/email_server/postconf.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/plinth/modules/email_server/postconf.py b/plinth/modules/email_server/postconf.py index cba3a007b..31826ddf5 100644 --- a/plinth/modules/email_server/postconf.py +++ b/plinth/modules/email_server/postconf.py @@ -61,10 +61,26 @@ def get_many(key_list): return get_many_unsafe(key_list) -def get_many_unsafe(key_iterator): +def get_many_unsafe(key_iterator, flag=''): result = {} + args = ['/sbin/postconf'] + if flag: + args.append(flag) + + number_of_keys = 0 for key in key_iterator: - result[key] = get_unsafe(key) + args.append(key) + number_of_keys += 1 + + stdout = _run(args) + for line in filter(None, stdout.split('\n')): + key, sep, value = line.partition('=') + if not sep: + raise ValueError('Invalid output detected') + result[key.strip()] = value.strip() + + if len(result) != number_of_keys: + raise ValueError('Some keys were missing from the output') return result