plugin account: prosody gid is used to spawn prosodyctl process

This commit is contained in:
Goffi 2014-03-31 12:23:10 +02:00
commit 9f5df82f1e

View file

@ -64,6 +64,7 @@ class PasswordsMatchingError(Exception):
class ProsodyRegisterProtocol(protocol.ProcessProtocol):
""" Try to register an account with prosody """
prosody_gid = None
def __init__(self, password=None, deferred=None):
"""
@ -73,6 +74,14 @@ class ProsodyRegisterProtocol(protocol.ProcessProtocol):
self.password = password
self.deferred = deferred
self.data = ''
if ProsodyRegisterProtocol.prosody_gid is None:
try:
import grp
ProsodyRegisterProtocol.prosody_gid = grp.getgrnam("prosody").gr_gid
info("prosody gid found: %s" % ProsodyRegisterProtocol.prosody_gid)
except:
warning("Can't find prosody gid")
def connectionMade(self):
if self.password is None:
@ -107,7 +116,7 @@ class ProsodyRegisterProtocol(protocol.ProcessProtocol):
prosody_reg = ProsodyRegisterProtocol(password, d)
prosody_exe = join(plugin._prosody_path, plugin.getConfig('prosodyctl'))
# TODO delete account which are not on the same host
reactor.spawnProcess(prosody_reg, prosody_exe, [prosody_exe, command, "%s@%s" % (profile, plugin.getConfig('new_account_domain'))], path=plugin._prosody_path)
reactor.spawnProcess(prosody_reg, prosody_exe, [prosody_exe, command, "%s@%s" % (profile, plugin.getConfig('new_account_domain'))], path=plugin._prosody_path, gid=ProsodyRegisterProtocol.prosody_gid)
return d