diff --git a/actions/hostname-change b/actions/hostname-change index ad71edc80..abb7b293f 100755 --- a/actions/hostname-change +++ b/actions/hostname-change @@ -8,3 +8,5 @@ if [ -x /etc/init.d/hostname.sh ] ; then else service hostname start fi + +service avahi-daemon restart diff --git a/actions/xmpp-hostname-change b/actions/xmpp-hostname-change new file mode 100755 index 000000000..698a01a23 --- /dev/null +++ b/actions/xmpp-hostname-change @@ -0,0 +1,43 @@ +#!/bin/bash + +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +# Action to set up new hostname for ejabberd and jwchat. + +hostname="$1" +old_hostname=`debconf-show ejabberd | awk '/hostname/ { print $3 }'` + +# Based on http://www.process-one.net/docs/ejabberd/guide_en.html#htoc77 + +# Setup some variables +BACKUP=/tmp/ejabberd.dump + +echo "ejabberd ejabberd/hostname string $hostname" | debconf-set-selections +echo "jwchat jwchat/ApacheServerName string $hostname" | debconf-set-selections +DEBIAN_FRONTEND=noninteractive dpkg-reconfigure jwchat + +# Debconf can't handle our manual changes to ejabberd's config yet. +sed -i "s/$old_hostname/$hostname/g" /etc/ejabberd/ejabberd.cfg +sed -i "s/$old_hostname/$hostname/g" $BACKUP + +service ejabberd restart + +# Load backup database +sleep 10 +ejabberdctl load $BACKUP +rm $BACKUP diff --git a/actions/xmpp-pre-hostname-change b/actions/xmpp-pre-hostname-change new file mode 100755 index 000000000..d7dde1ff9 --- /dev/null +++ b/actions/xmpp-pre-hostname-change @@ -0,0 +1,28 @@ +#!/bin/sh + +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +# Action to backup ejabberd database before changing hostname. + +BACKUP=/tmp/ejabberd.dump +ejabberdctl dump $BACKUP +ejabberdctl stop + +# Make sure there aren't files in the Mnesia spool dir +mkdir -p /var/lib/ejabberd/oldfiles +mv /var/lib/ejabberd/*.* /var/lib/ejabberd/oldfiles/ diff --git a/modules/installed/system/config.py b/modules/installed/system/config.py index 7d352beb9..dc00f9124 100644 --- a/modules/installed/system/config.py +++ b/modules/installed/system/config.py @@ -55,7 +55,9 @@ def set_hostname(hostname): cfg.log.info("Changing hostname to '%s'" % hostname) try: + superuser_run("xmpp-pre-hostname-change") superuser_run("hostname-change", hostname) + superuser_run("xmpp-hostname-change", hostname, async=True) # don't persist/cache change unless it was saved successfuly sys_store = filedict_con(cfg.store_file, 'sys') sys_store['hostname'] = hostname