From 81519dcca4032bedae8e003204381981d3014219 Mon Sep 17 00:00:00 2001 From: Disassembler Date: Tue, 14 Aug 2018 15:36:09 +0200 Subject: [PATCH] Modify app config only when the app is installed --- basic.sh | 3 +- basic/srv/spotter/appmgr/confupdater.py | 106 +++++++++++++++--------- 2 files changed, 69 insertions(+), 40 deletions(-) diff --git a/basic.sh b/basic.sh index 18ca660..af56af3 100755 --- a/basic.sh +++ b/basic.sh @@ -59,5 +59,4 @@ service docker start docker build -t alpine ${SOURCE_DIR} # Set dummy host and generate related files -# Note: This will fail with an exception due to nonexistant application files. The exception can be ignored -spotter-appmgr update-host spotter.vm 443 || true +spotter-appmgr update-host spotter.vm 443 diff --git a/basic/srv/spotter/appmgr/confupdater.py b/basic/srv/spotter/appmgr/confupdater.py index 6a7eef3..366bde3 100644 --- a/basic/srv/spotter/appmgr/confupdater.py +++ b/basic/srv/spotter/appmgr/confupdater.py @@ -33,73 +33,103 @@ def run_mysql_query(query, database): if not maria_started: tools.stop_service('mariadb') +def app_exists(app): + return os.path.exists(os.path.join('/srv/', app)) + def update_gmaps_api_key(api_key): # CKAN - replace_file_line('/srv/ckan/conf/ckan.ini', 'ckanext.geoview.gapi_key = ', api_key) + if app_exists('ckan'): + replace_file_line('/srv/ckan/conf/ckan.ini', 'ckanext.geoview.gapi_key = ', api_key) # Crisis Cleanup - replace_file_line('/srv/crisiscleanup/conf/boot.rb', 'ENV[\'GOOGLE_MAPS_API_KEY\'] = ', api_key) + if app_exists('crisiscleanup'): + replace_file_line('/srv/crisiscleanup/conf/boot.rb', 'ENV[\'GOOGLE_MAPS_API_KEY\'] = ', api_key) # Pan.do/ra - replace_file_line('/srv/pandora/conf/local_settings.py', 'GOOGLE_API_KEY = ', '\'{}\''.format(api_key)) + if app_exists('pandora'): + replace_file_line('/srv/pandora/conf/local_settings.py', 'GOOGLE_API_KEY = ', '\'{}\''.format(api_key)) # Sahana - replace_file_line('/srv/sahana/conf/000_config.py', 'settings.gis.api_google = ', '"{}"'.format(api_key)) + if app_exists('sahana'): + replace_file_line('/srv/sahana/conf/000_config.py', 'settings.gis.api_google = ', '"{}"'.format(api_key)) # Sahana Demo - replace_file_line('/srv/sahana-demo/conf/000_config.py', 'settings.gis.api_google = ', '"{}"'.format(api_key)) + if app_exists('sahana-demo'): + replace_file_line('/srv/sahana-demo/conf/000_config.py', 'settings.gis.api_google = ', '"{}"'.format(api_key)) # SAMBRO - replace_file_line('/srv/sambro/conf/000_config.py', 'settings.gis.api_google = ', '"{}"'.format(api_key)) + if app_exists('sambro'): + replace_file_line('/srv/sambro/conf/000_config.py', 'settings.gis.api_google = ', '"{}"'.format(api_key)) # Sigmah - replace_file_line('/srv/sigmah/conf/sigmah.properties', 'maps.key=', api_key) + if app_exists('sigmah'): + replace_file_line('/srv/sigmah/conf/sigmah.properties', 'maps.key=', api_key) # Ushahidi - replace_file_line('/srv/ushahidi/conf/config.json', ' "google_analytics_id": ', '"{}"'.format(api_key)) + if app_exists('ushahidi'): + replace_file_line('/srv/ushahidi/conf/config.json', ' "google_analytics_id": ', '"{}"'.format(api_key)) def update_email(email): # CKAN - replace_file_line('/srv/ckan/conf/ckan.ini', 'smtp.mail_from = ', email) - replace_file_line('/srv/ckan-datapusher/conf/datapusher_settings.py', 'FROM_EMAIL = ', '\'{}\''.format(email)) + if app_exists('ckan'): + replace_file_line('/srv/ckan/conf/ckan.ini', 'smtp.mail_from = ', email) + replace_file_line('/srv/ckan-datapusher/conf/datapusher_settings.py', 'FROM_EMAIL = ', '\'{}\''.format(email)) # Crisis Cleanup - replace_file_line('/srv/crisiscleanup/conf/initializers/devise.rb', ' config.mailer_sender = ', '\'{}\''.format(email)) + if app_exists('crisiscleanup'): + replace_file_line('/srv/crisiscleanup/conf/initializers/devise.rb', ' config.mailer_sender = ', '\'{}\''.format(email)) # CTS - replace_file_line('/srv/cts/conf/spotter.py', 'SERVER_EMAIL = ', '\'{}\''.format(email)) + if app_exists('cts'): + replace_file_line('/srv/cts/conf/spotter.py', 'SERVER_EMAIL = ', '\'{}\''.format(email)) # GNU Health - replace_file_line('/srv/gnuhealth/conf/trytond.conf', 'from = ', email) + if app_exists('gnuhealth'): + replace_file_line('/srv/gnuhealth/conf/trytond.conf', 'from = ', email) # KanBoard - replace_file_line('/srv/kanboard/conf/config.php', 'define(\'MAIL_FROM\', ', '\'{}\');'.format(email)) + if app_exists('kanboard'): + replace_file_line('/srv/kanboard/conf/config.php', 'define(\'MAIL_FROM\', ', '\'{}\');'.format(email)) # Mifos X - query = 'UPDATE `c_external_service_properties` SET `value` = "{}" WHERE `external_service_id` = 2 and `name` LIKE "username";'.format(email) - run_mysql_query(query, 'mifostenant-default') + if app_exists('mifosx'): + query = 'UPDATE `c_external_service_properties` SET `value` = "{}" WHERE `external_service_id` = 2 and `name` LIKE "username";'.format(email) + run_mysql_query(query, 'mifostenant-default') # Sahana - replace_file_line('/srv/sahana/conf/000_config.py', 'settings.mail.sender = ', '"{}"'.format(email)) - replace_file_line('/srv/sahana/conf/000_config.py', 'settings.mail.approver = ', '"{}"'.format(email)) + if app_exists('sahana'): + replace_file_line('/srv/sahana/conf/000_config.py', 'settings.mail.sender = ', '"{}"'.format(email)) + replace_file_line('/srv/sahana/conf/000_config.py', 'settings.mail.approver = ', '"{}"'.format(email)) # Sahana Demo - replace_file_line('/srv/sahana-demo/conf/000_config.py', 'settings.mail.sender = ', '"{}"'.format(email)) - replace_file_line('/srv/sahana-demo/conf/000_config.py', 'settings.mail.approver = ', '"{}"'.format(email)) + if app_exists('sahana-demo'): + replace_file_line('/srv/sahana-demo/conf/000_config.py', 'settings.mail.sender = ', '"{}"'.format(email)) + replace_file_line('/srv/sahana-demo/conf/000_config.py', 'settings.mail.approver = ', '"{}"'.format(email)) # SAMBRO - replace_file_line('/srv/sambro/conf/000_config.py', 'settings.mail.sender = ', '"{}"'.format(email)) - replace_file_line('/srv/sambro/conf/000_config.py', 'settings.mail.approver = ', '"{}"'.format(email)) + if app_exists('sambro'): + replace_file_line('/srv/sambro/conf/000_config.py', 'settings.mail.sender = ', '"{}"'.format(email)) + replace_file_line('/srv/sambro/conf/000_config.py', 'settings.mail.approver = ', '"{}"'.format(email)) # SeedDMS - replace_file_line('/srv/seeddms/conf/settings.xml', ' '.format(email)) + if app_exists('seeddms'): + replace_file_line('/srv/seeddms/conf/settings.xml', ' '.format(email)) # Sigmah - replace_file_line('/srv/sigmah/conf/sigmah.properties', 'mail.from.address=', email) - replace_file_line('/srv/sigmah/conf/sigmah.properties', 'mail.support.to=', email) + if app_exists('sigmah'): + replace_file_line('/srv/sigmah/conf/sigmah.properties', 'mail.from.address=', email) + replace_file_line('/srv/sigmah/conf/sigmah.properties', 'mail.support.to=', email) # Ushahidi - email_json = '{\"incoming_type\":\"IMAP\",\"incoming_server\":\"localhost\",\"incoming_port\":143,\"incoming_security\":\"None\",\"incoming_username\":\"{}\",\"incoming_password\":\"password\",\"outgoing_type\":\"SMTP\",\"outgoing_server\":\"postfix\",\"outgoing_port\":25,\"outgoing_security\":\"None\",\"outgoing_username\":\"{}\",\"outgoing_password\":\"password\",\"from\":\"{}\",\"from_name\":\"Ushahidi\"}' - query = 'UPDATE `config` SET `config_value` = "{}" WHERE `group_name` LIKE "data-provider" AND `config_key` LIKE "email";'.format(email_json) - run_mysql_query(query, 'ushahidi') + if app_exists('ushahidi'): + email_json = '{\"incoming_type\":\"IMAP\",\"incoming_server\":\"localhost\",\"incoming_port\":143,\"incoming_security\":\"None\",\"incoming_username\":\"{}\",\"incoming_password\":\"password\",\"outgoing_type\":\"SMTP\",\"outgoing_server\":\"postfix\",\"outgoing_port\":25,\"outgoing_security\":\"None\",\"outgoing_username\":\"{}\",\"outgoing_password\":\"password\",\"from\":\"{}\",\"from_name\":\"Ushahidi\"}' + query = 'UPDATE `config` SET `config_value` = "{}" WHERE `group_name` LIKE "data-provider" AND `config_key` LIKE "email";'.format(email_json) + run_mysql_query(query, 'ushahidi') def update_url(host): # CKAN - replace_file_line('/srv/ckan/conf/ckan.ini', 'ckan.site_url = ', 'https://ckan.{}'.format(host)) + if app_exists('ckan'): + replace_file_line('/srv/ckan/conf/ckan.ini', 'ckan.site_url = ', 'https://ckan.{}'.format(host)) # Motech - replace_file_line('/srv/motech/conf/config/motech-settings.properties', 'server.url=', 'https://motech.{}'.format(host)) + if app_exists('motech'): + replace_file_line('/srv/motech/conf/config/motech-settings.properties', 'server.url=', 'https://motech.{}'.format(host)) # Pan.do/ra - replace_file_line('/srv/pandora/conf/config.jsonc', ' "url": ', '"pandora.{}"'.format(host)) + if app_exists('pandora'): + replace_file_line('/srv/pandora/conf/config.jsonc', ' "url": ', '"pandora.{}"'.format(host)) # Sahana - replace_file_line('/srv/sahana/conf/000_config.py', 'settings.base.public_url = ', '"https://sahana.{}"'.format(host)) + if app_exists('sahana'): + replace_file_line('/srv/sahana/conf/000_config.py', 'settings.base.public_url = ', '"https://sahana.{}"'.format(host)) # Sahana Demo - replace_file_line('/srv/sahana-demo/conf/000_config.py', 'settings.base.public_url = ', '"https://sahana-demo.{}"'.format(host)) + if app_exists('sahana-demo'): + replace_file_line('/srv/sahana-demo/conf/000_config.py', 'settings.base.public_url = ', '"https://sahana-demo.{}"'.format(host)) # SAMBRO - replace_file_line('/srv/sambro/conf/000_config.py', 'settings.base.public_url = ', '"https://sambro.{}"'.format(host)) + if app_exists('sambro'): + replace_file_line('/srv/sambro/conf/000_config.py', 'settings.base.public_url = ', '"https://sambro.{}"'.format(host)) # Ushahidi - replace_file_line('/srv/ushahidi/conf/config.json', ' "backend_url": ', '"https://ush.{}/platform",'.format(host)) - api_url = '\"https:\\/\\/ush.{}\\/platform\\/api\\/v3\\/config\\/data-provider\"' - query = 'UPDATE `config` SET `config_value` = "{}" WHERE `group_name` LIKE "data-provider" AND `config_key` LIKE "url";'.format(api_url) - run_mysql_query(query, 'ushahidi') + if app_exists('ushahidi'): + replace_file_line('/srv/ushahidi/conf/config.json', ' "backend_url": ', '"https://ush.{}/platform",'.format(host)) + api_url = '\"https:\\/\\/ush.{}\\/platform\\/api\\/v3\\/config\\/data-provider\"' + query = 'UPDATE `config` SET `config_value` = "{}" WHERE `group_name` LIKE "data-provider" AND `config_key` LIKE "url";'.format(api_url) + run_mysql_query(query, 'ushahidi')