From ca8ea9427cfcfdcd0e2ae7b896a31bfb7ec977da Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 21 Aug 2019 15:45:38 -0700 Subject: [PATCH] action_utils: Introduce utility for setting debconf answers Tests: mldonkey - Installs - /etc/default/mldonkey-server has LAUNCH_AT_STARTUP=true - systemctl status mldonkey-server shows daemon running ejabberd - Installs - /etc/ejabberd/ejabberd.yml has domainname properly configured privoxy - Installs - /etc/privoxy/config has listen-address set to '[::]:8118' roundcube - Installs and works - /etc/roundcube/debian-db.php contains dbtype sqlite3 ttrss - Installs and works - /etc/ttrss/database.php has dbtype 'pgsql'. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/diaspora | 25 ++++++++++++------------- actions/ejabberd | 5 ++--- actions/mldonkey | 8 ++++---- actions/privoxy | 10 ++++------ actions/roundcube | 11 ++++------- actions/ttrss | 4 ++-- plinth/action_utils.py | 6 ++++++ 7 files changed, 34 insertions(+), 35 deletions(-) diff --git a/actions/diaspora b/actions/diaspora index 4a4795bae..ee464f645 100755 --- a/actions/diaspora +++ b/actions/diaspora @@ -129,21 +129,20 @@ def subcommand_disable_user_registrations(_): def subcommand_pre_install(_): """Pre installation configuration for diaspora""" presets = [ - b'diaspora-common diaspora-common/url string dummy_domain_name', - b'diaspora-common diaspora-common/dbpass note ', - b'diaspora-common diaspora-common/enablessl boolean false', - b'diaspora-common diaspora-common/useletsencrypt string false', - b'diaspora-common diaspora-common/services multiselect ', - b'diaspora-common diaspora-common/ssl boolean false', - b'diaspora-common diaspora-common/pgsql/authmethod-admin string ident', - b'diaspora-common diaspora-common/letsencrypt boolean false', - b'diaspora-common diaspora-common/remote/host string localhost', - b'diaspora-common diaspora-common/database-type string pgsql', - b'diaspora-common diaspora-common/dbconfig-install boolean true' + 'diaspora-common diaspora-common/url string dummy_domain_name', + 'diaspora-common diaspora-common/dbpass note ', + 'diaspora-common diaspora-common/enablessl boolean false', + 'diaspora-common diaspora-common/useletsencrypt string false', + 'diaspora-common diaspora-common/services multiselect ', + 'diaspora-common diaspora-common/ssl boolean false', + 'diaspora-common diaspora-common/pgsql/authmethod-admin string ident', + 'diaspora-common diaspora-common/letsencrypt boolean false', + 'diaspora-common diaspora-common/remote/host string localhost', + 'diaspora-common diaspora-common/database-type string pgsql', + 'diaspora-common diaspora-common/dbconfig-install boolean true' ] - for preset in presets: - subprocess.check_output(['debconf-set-selections'], input=preset) + action_utils.debconf_set_selections(presets) def main(): diff --git a/actions/ejabberd b/actions/ejabberd index 8e7fb4fbe..f753ecca6 100755 --- a/actions/ejabberd +++ b/actions/ejabberd @@ -100,9 +100,8 @@ def subcommand_pre_install(arguments): # If new domainname is blank, use hostname instead. domainname = socket.gethostname() - subprocess.check_output( - ['debconf-set-selections'], - input=b'ejabberd ejabberd/hostname string ' + domainname.encode()) + action_utils.debconf_set_selections( + ['ejabberd ejabberd/hostname string ' + domainname]) def subcommand_setup(arguments): diff --git a/actions/mldonkey b/actions/mldonkey index 942dadeb1..013085225 100755 --- a/actions/mldonkey +++ b/actions/mldonkey @@ -21,7 +21,8 @@ Configuration helper for mldonkey. """ import argparse -import subprocess + +from plinth import action_utils def parse_arguments(): @@ -37,9 +38,8 @@ def parse_arguments(): def subcommand_pre_install(_): """Preseed debconf values before packages are installed.""" - subprocess.check_output([ - 'debconf-set-selections' - ], input=b'mldonkey-server mldonkey-server/launch_at_startup boolean true') + action_utils.debconf_set_selections( + ['mldonkey-server mldonkey-server/launch_at_startup boolean true']) def main(): diff --git a/actions/privoxy b/actions/privoxy index fdf58904c..20e6a0d37 100755 --- a/actions/privoxy +++ b/actions/privoxy @@ -15,13 +15,13 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Configuration helper for Privoxy server. """ import argparse -import subprocess + +from plinth import action_utils def parse_arguments(): @@ -39,10 +39,8 @@ def parse_arguments(): def subcommand_pre_install(_): """Preseed debconf values before packages are installed.""" - subprocess.run( - ['debconf-set-selections'], - input=b'privoxy privoxy/listen-address string [::]:8118', - check=True) + action_utils.debconf_set_selections( + ['privoxy privoxy/listen-address string [::]:8118']) def main(): diff --git a/actions/roundcube b/actions/roundcube index bb14d41ad..3396b6868 100755 --- a/actions/roundcube +++ b/actions/roundcube @@ -21,7 +21,6 @@ Configuration helper for Roundcube server. import argparse import re -import subprocess from plinth import action_utils @@ -44,12 +43,10 @@ def parse_arguments(): def subcommand_pre_install(_): """Preseed debconf values before packages are installed.""" - subprocess.check_output( - ['debconf-set-selections'], - input=b'roundcube-core roundcube/dbconfig-install boolean true') - subprocess.check_output( - ['debconf-set-selections'], - input=b'roundcube-core roundcube/database-type string sqlite3') + action_utils.debconf_set_selections([ + 'roundcube-core roundcube/dbconfig-install boolean true', + 'roundcube-core roundcube/database-type string sqlite3' + ]) def subcommand_setup(_): diff --git a/actions/ttrss b/actions/ttrss index 012f662e6..ec4bb7a05 100755 --- a/actions/ttrss +++ b/actions/ttrss @@ -51,8 +51,8 @@ def parse_arguments(): def subcommand_pre_setup(_): """Preseed debconf values before packages are installed.""" - subprocess.check_output(['debconf-set-selections'], - input=b'tt-rss tt-rss/database-type string pgsql') + action_utils.debconf_set_selections( + ['tt-rss tt-rss/database-type string pgsql']) def subcommand_setup(_): diff --git a/plinth/action_utils.py b/plinth/action_utils.py index 93012f334..8b973dc1b 100644 --- a/plinth/action_utils.py +++ b/plinth/action_utils.py @@ -529,6 +529,12 @@ Owners: {package} pass +def debconf_set_selections(presets): + """Answer debconf questions before installing a package.""" + presets = '\n'.join(presets) + subprocess.check_output(['debconf-set-selections'], input=presets.encode()) + + def is_disk_image(): """Return whether the current machine is from a disk image.