changeset 948:abd3a75d629c

plugin account: prosody gid is used to spawn prosodyctl process
author Goffi <goffi@goffi.org>
date Mon, 31 Mar 2014 12:23:10 +0200
parents 61c4755f0394
children b4cd968e30fb
files src/plugins/plugin_misc_account.py
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/plugin_misc_account.py	Fri Mar 28 19:19:11 2014 +0100
+++ b/src/plugins/plugin_misc_account.py	Mon Mar 31 12:23:10 2014 +0200
@@ -64,6 +64,7 @@
 
 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 @@
         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 @@
         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