Don't change ejabberd hosts or jwchat sitename when changing hostname.

Update these only when the domain name is changed.
This commit is contained in:
James Valleroy 2014-12-20 11:22:50 -05:00 committed by Sunil Mohan Adapa
parent b8a7007552
commit 01bea7808c

View File

@ -60,6 +60,12 @@ def parse_arguments():
hostname_change.add_argument('--new-hostname',
help='New hostname')
# Update ejabberd and jwchat with new domainname
domainname_change = subparsers.add_parser(
'change-domainname',
help='Update ejabberd and jwchat with new domainname')
domainname_change.add_argument('--domainname', help='New domainname')
# Register a new user account
register = subparsers.add_parser('register',
help='Register a new user account')
@ -105,38 +111,6 @@ def subcommand_change_hostname(arguments):
old_hostname = arguments.old_hostname
new_hostname = arguments.new_hostname
# update jwchat's sitename, if it's installed
if os.path.exists(JWCHAT_CONFIG):
with open(JWCHAT_CONFIG, 'r') as conffile:
lines = conffile.readlines()
with open(JWCHAT_CONFIG, 'w') as conffile:
for line in lines:
if re.match(r'\s*var\s+SITENAME', line):
conffile.write('var SITENAME = "' + new_hostname + '";\n')
else:
conffile.write(line)
else:
print('Skipping configuring jwchat hostname: %s not found'
% JWCHAT_CONFIG)
# update ejabberd hosts
with open(EJABBERD_CONFIG, 'r') as conffile:
lines = conffile.readlines()
with open(EJABBERD_CONFIG, 'w') as conffile:
in_hosts_section = False
for line in lines:
if in_hosts_section:
if re.match(r'\s*-\s+"', line):
conffile.write(line.replace('"' + old_hostname + '"',
'"' + new_hostname + '"'))
else:
in_hosts_section = False
conffile.write(line)
else:
if re.match(r'\s*hosts:', line):
in_hosts_section = True
conffile.write(line)
subprocess.call(['service', 'ejabberd', 'stop'])
subprocess.call(['pkill', '-u', 'ejabberd'])
@ -161,6 +135,43 @@ def subcommand_change_hostname(arguments):
% EJABBERD_BACKUP_NEW)
def subcommand_change_domainname(arguments):
"""Update ejabberd and jwchat with new domainname"""
if not get_installed():
print('Failed to update XMPP domainname: ejabberd is not installed.')
return
domainname = arguments.domainname
# update jwchat's sitename, if it's installed
if os.path.exists(JWCHAT_CONFIG):
with open(JWCHAT_CONFIG, 'r') as conffile:
lines = conffile.readlines()
with open(JWCHAT_CONFIG, 'w') as conffile:
for line in lines:
if re.match(r'\s*var\s+SITENAME', line):
conffile.write('var SITENAME = "' + domainname + '";\n')
else:
conffile.write(line)
else:
print('Skipping configuring jwchat sitename: %s not found',
JWCHAT_CONFIG)
subprocess.call(['service', 'ejabberd', 'stop'])
subprocess.call(['pkill', '-u', 'ejabberd'])
# add new domainname to top of ejabberd hosts list
with open(EJABBERD_CONFIG, 'r') as conffile:
lines = conffile.readlines()
with open(EJABBERD_CONFIG, 'w') as conffile:
for line in lines:
conffile.write(line)
if re.match(r'\s*hosts:', line):
conffile.write(' - "' + domainname + '"\n')
subprocess.call(['service', 'ejabberd', 'start'])
def subcommand_register(arguments):
"""Register a new user account"""
if not get_installed():