mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-06-03 10:50:20 +00:00
Convert xmpp-hostname-change to python, merge into xmpp action file.
This commit is contained in:
parent
ff4fd4728c
commit
6fc721a727
52
actions/xmpp
52
actions/xmpp
@ -23,6 +23,13 @@ Configuration helper for the ejabberd service
|
||||
|
||||
import argparse
|
||||
import subprocess
|
||||
import re
|
||||
import time
|
||||
import os
|
||||
|
||||
JWCHAT_CONFIG = '/etc/jwchat/config.js'
|
||||
EJABBERD_CONFIG = '/etc/ejabberd/ejabberd.yml'
|
||||
EJABBERD_BACKUP = '/tmp/ejabberd.dump'
|
||||
|
||||
|
||||
def parse_arguments():
|
||||
@ -34,6 +41,15 @@ def parse_arguments():
|
||||
subparsers.add_parser('get-installed',
|
||||
help='Get whether ejabberd is installed')
|
||||
|
||||
# Update ejabberd and jwchat with new hostname
|
||||
hostname_change = subparsers.add_parser(
|
||||
'change-hostname',
|
||||
help='Update ejabberd and jwchat with new hostname')
|
||||
hostname_change.add_argument('--old-hostname',
|
||||
help='Previous hostname')
|
||||
hostname_change.add_argument('--new-hostname',
|
||||
help='New hostname')
|
||||
|
||||
# Register a new user account
|
||||
register = subparsers.add_parser('register',
|
||||
help='Register a new user account')
|
||||
@ -50,6 +66,42 @@ def subcommand_get_installed(_):
|
||||
print('installed' if get_installed() else 'not installed')
|
||||
|
||||
|
||||
def subcommand_change_hostname(arguments):
|
||||
"""Update ejabberd and jwchat with new hostname"""
|
||||
if not get_installed():
|
||||
print('Failed to update XMPP hostname: ejabberd is not installed.')
|
||||
|
||||
old_hostname = arguments.old_hostname
|
||||
new_hostname = arguments.new_hostname
|
||||
|
||||
with open(JWCHAT_CONFIG, 'r') as conffile:
|
||||
lines = conffile.readlines()
|
||||
with open(JWCHAT_CONFIG, 'w') as conffile:
|
||||
for line in lines:
|
||||
conffile.write(re.sub('var SITENAME = "' + old_hostname + '";',
|
||||
'var SITENAME = "' + new_hostname + '";',
|
||||
line))
|
||||
|
||||
with open(EJABBERD_CONFIG, 'r') as conffile:
|
||||
lines = conffile.readlines()
|
||||
with open(EJABBERD_CONFIG, 'w') as conffile:
|
||||
for line in lines:
|
||||
conffile.write(re.sub(old_hostname, new_hostname, line))
|
||||
|
||||
with open(EJABBERD_BACKUP, 'r') as dumpfile:
|
||||
lines = dumpfile.readlines()
|
||||
with open(EJABBERD_BACKUP, 'w') as dumpfile:
|
||||
for line in lines:
|
||||
dumpfile.write(re.sub(old_hostname, new_hostname, line))
|
||||
|
||||
subprocess.call(['service', 'ejabberd', 'restart'])
|
||||
|
||||
# load backup database
|
||||
time.sleep(10)
|
||||
subprocess.call(['ejabberdctl', 'load', EJABBERD_BACKUP])
|
||||
os.remove(EJABBERD_BACKUP)
|
||||
|
||||
|
||||
def subcommand_register(arguments):
|
||||
"""Register a new user account"""
|
||||
if not get_installed():
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
#!/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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# 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
|
||||
|
||||
BACKUP=/tmp/ejabberd.dump
|
||||
|
||||
sed -i "s/var SITENAME = \"$old_hostname\";/var SITENAME = \"$hostname\";/" /etc/jwchat/config.js
|
||||
sed -i "s/$old_hostname/$hostname/g" /etc/ejabberd/ejabberd.yml
|
||||
sed -i "s/$old_hostname/$hostname/g" $BACKUP
|
||||
|
||||
service ejabberd restart
|
||||
|
||||
# Load backup database
|
||||
sleep 10
|
||||
ejabberdctl load $BACKUP
|
||||
rm $BACKUP
|
||||
@ -154,6 +154,8 @@ def _apply_changes(request, old_status, new_status):
|
||||
|
||||
def set_hostname(hostname):
|
||||
"""Sets machine hostname to hostname"""
|
||||
old_hostname = get_hostname()
|
||||
|
||||
# Hostname should be ASCII. If it's unicode but passed our
|
||||
# valid_hostname check, convert to ASCII.
|
||||
hostname = str(hostname)
|
||||
@ -161,4 +163,6 @@ def set_hostname(hostname):
|
||||
LOGGER.info('Changing hostname to - %s', hostname)
|
||||
actions.superuser_run('xmpp-pre-hostname-change')
|
||||
actions.superuser_run('hostname-change', hostname)
|
||||
actions.superuser_run('xmpp-hostname-change', hostname, async=True)
|
||||
actions.superuser_run('xmpp', 'change-hostname',
|
||||
'--old-hostname', old_hostname,
|
||||
'--new-hostname', hostname, async=True)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user