aboutsummaryrefslogtreecommitdiff
path: root/debian/taler-merchant.postinst
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-01-01 20:43:30 +0100
committerChristian Grothoff <christian@grothoff.org>2021-01-01 20:43:30 +0100
commitbfbbb5f8182fa668a992fadd504e43daa31962a4 (patch)
tree453f9dd82da615694193fac28cb028173597d412 /debian/taler-merchant.postinst
parent9bc5229ff2dce91cd941538d7c1907fcd1597064 (diff)
improving Debian package (untested)
Diffstat (limited to 'debian/taler-merchant.postinst')
-rw-r--r--debian/taler-merchant.postinst152
1 files changed, 150 insertions, 2 deletions
diff --git a/debian/taler-merchant.postinst b/debian/taler-merchant.postinst
index 5cc1a6ad..baa291f6 100644
--- a/debian/taler-merchant.postinst
+++ b/debian/taler-merchant.postinst
@@ -2,15 +2,163 @@
set -e
+# Set permissions for sqlite3 file
+# (for when we support sqlite3 in the future)
+dbc_dbfile_owner="${_USERNAME}:${_GROUPNAME}"
+dbc_dbfile_perms="0600"
+
+
+# 1st argument will be the SECURITYTOKEN to use.
+apache_install() {
+ mkdir -p /etc/apache2/conf-available
+ if [ ! -f /etc/apache2/conf-available/taler-merchant.conf ];
+ then
+ cat /etc/taler-merchant/apache.conf | sed -e "s/%SECURITYTOKEN%/$1/" > /etc/apache2/conf-available/taler-merchant.conf
+ fi
+ # TODO: might want to remember if *we* enabled those, and disable in postrm
+ a2enmod proxy
+ a2enmod proxy_http
+ a2enmod headers
+ a2enmod rewrite
+}
+
+# 1st argument will be the SECURITYTOKEN to use.
+nginx_install() {
+ mkdir -p /etc/nginx/conf-available
+ if [ ! -f /etc/apache2/conf-available/taler-merchant.conf ];
+ then
+ cat /etc/taler-merchant/nginx.conf | sed -e "s/%SECURITYTOKEN%/$1/" > /etc/nginx/conf-available/taler-merchant.conf
+ fi
+}
+
. /usr/share/debconf/confmodule
+
case "${1}" in
configure)
db_version 2.0
- db_get taler-merchant/autostart
- _AUTOSTART="${RET}" # boolean
+ db_get taler-merchant/username
+ _USERNAME="${RET:-taler-merchant-httpd}"
+
+ db_get taler-merchant/groupname
+ _GROUPNAME="${RET:-www-data}"
+
+ # Read default values
+ TALER_HOME="/var/lib/taler-merchant"
+
+ # Creating taler group if needed
+ if ! getent group ${_GROUPNAME} > /dev/null
+ then
+ echo -n "Creating new Taler group ${_GROUPNAME}:"
+ addgroup --quiet --system ${_GROUPNAME}
+ echo " done."
+ fi
+ # Creating taler users if needed
+ if ! getent passwd ${_USERNAME} > /dev/null
+ then
+ echo -n "Creating new Taler user ${_USERNAME}:"
+ adduser --quiet --system --ingroup ${_GROUPNAME} --home ${TALER_HOME}/httpd ${_USERNAME}
+ echo " done."
+ fi
+
+ # Create access secret
+ SECRET=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1`
+ echo SECRET > ${TALER_HOME}/master-api-key.txt
+ chown ${_USERNAME}:${_GROUPNAME} ${TALER_HOME}/master-api-key.txt
+ chmod 440 ${TALER_HOME}/master-api-key.txt
+
+ # Writing new values to configuration file
+ echo -n "Writing new configuration file:"
+ CONFIG_NEW=$(tempfile)
+
+cat > "${CONFIG_NEW}" <<EOF
+# This file controls the behaviour of the Taler init script.
+# It will be parsed as a shell script.
+# please do not edit by hand, use 'dpkg-reconfigure taler-merchant'.
+
+TALER_USER=${_USERNAME}
+TALER_GROUP=${_GROUPNAME}
+EOF
+
+
+cat > "/etc/systemd/system/taler-merchant-httpd.service" <<EOF
+[Unit]
+Description=GNU Taler payment system merchant backend
+
+[Service]
+EnvironmentFile=/etc/default/taler-merchant
+User=${_USERNAME}
+Type=simple
+Restart=on-failure
+ExecStart=/usr/bin/taler-merchant-httpd -c /etc/taler-merchant.conf
+EOF
+
+ systemctl daemon-reload
+
+ cp -f "${CONFIG_NEW}" "${CONFIG_FILE}"
+ echo " done."
+
+ # Setup postgres database (needs dbconfig-pgsql package)
+ if [ -f /usr/share/dbconfig-common/dpkg/postinst.pgsql ]; then
+ . /usr/share/dbconfig-common/dpkg/postinst.pgsql
+ dbc_pgsql_createdb_encoding="UTF8"
+ dbc_go taler-merchant "$@"
+ fi
+
+ # get database settings from dbconfig-common
+ if [ -f /etc/dbconfig-common/taler-merchant.conf ]; then
+ . /etc/dbconfig-common/taler-merchant.conf
+ case "$dbc_dbtype" in
+ pgsql)
+ taler-config -c /etc/taler-merchant.conf \
+ -s "merchantdb-postgres" \
+ -o "CONFIG" \
+ -V "postgres://$dbc_dbuser:$dbc_dbpass@$dbc_dbserver/$dbc_dbname"
+ taler-config -c /etc/taler-merchant.conf \
+ -s "merchant" \
+ -o "DB" \
+ -V "postgres"
+ ;;
+ sqlite3)
+ # Later: use something like:
+ # sqlite:///$DATA_DIR/merchant.db
+ # But for now, sqlite is unsupported:
+ echo "Unsupported database type $dbc_type."
+ exit 1
+ ;;
+ "")
+ ;;
+ *)
+ echo "Unsupported database type $dbc_type."
+ exit 1
+ ;;
+ esac
+ fi
+
+ # Configure Webserver
+ db_get taler-merchant/reconfigure-webserver
+ webservers="$RET"
+ for webserver in $webservers; do
+ webserver=${webserver%,}
+ if [ "$webserver" = "nginx" ] ; then
+ nginx_install "$SECRET"
+ else
+ apache_install "$SECRET"
+ fi
+ if [ -f /etc/init.d/$webserver ] ; then
+ if which invoke-rc.d > /dev/null ; then
+ if invoke-rc.d $webserver status > /dev/null 2>&1 ; then
+ invoke-rc.d $webserver reload 3>/dev/null || true
+ fi
+ else
+ if /etc/init.d/$webserver status > /dev/null 2>&1 ; then
+ /etc/init.d/$webserver reload 3>/dev/null || true
+ fi
+ fi
+ fi
+ done
db_stop
# Cleaning