X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=util%2Fprosodyctl.lua;h=d7ca1a3063727abd832c6293bd2471a51fe1724d;hb=eecf63b9e5aff94dc3d3e88e3b5dfa853d92fc1a;hp=8131fed9f3edcc093fce690ed87d7c48336986eb;hpb=b4cb1e8079c6d93fdb6997327f06b8461244175b;p=prosody.git diff --git a/util/prosodyctl.lua b/util/prosodyctl.lua index 8131fed9..d7ca1a30 100644 --- a/util/prosodyctl.lua +++ b/util/prosodyctl.lua @@ -12,6 +12,7 @@ local encodings = require "util.encodings"; local stringprep = encodings.stringprep; local usermanager = require "core.usermanager"; local signal = require "util.signal"; +local set = require "util.set"; local lfs = require "lfs"; local nodeprep, nameprep = stringprep.nodeprep, stringprep.nameprep; @@ -21,6 +22,8 @@ local tostring, tonumber = tostring, tonumber; local CFG_SOURCEDIR = _G.CFG_SOURCEDIR; +local prosody = prosody; + module "prosodyctl" function adduser(params) @@ -30,6 +33,11 @@ function adduser(params) elseif not host then return false, "invalid-hostname"; end + + local provider = prosody.hosts[host].users; + if not(provider) or provider.name == "null" then + usermanager.initialize_host(host); + end local ok = usermanager.create_user(user, password, host); if not ok then @@ -39,7 +47,13 @@ function adduser(params) end function user_exists(params) - return usermanager.user_exists(params.user, params.host); + local user, host, password = nodeprep(params.user), nameprep(params.host), params.password; + local provider = prosody.hosts[host].users; + if not(provider) or provider.name == "null" then + usermanager.initialize_host(host); + end + + return usermanager.user_exists(user, host); end function passwd(params) @@ -65,6 +79,11 @@ function getpid() return false, "no-pidfile"; end + local modules_enabled = set.new(config.get("*", "core", "modules_enabled")); + if not modules_enabled:contains("posix") then + return false, "no-posix"; + end + local file, err = io.open(pidfile, "r+"); if not file then return false, "pidfile-read-failed", err; @@ -109,10 +128,8 @@ function start() end if not CFG_SOURCEDIR then os.execute("./prosody"); - elseif CFG_SOURCEDIR:match("^/usr/local") then - os.execute("/usr/local/bin/prosody"); else - os.execute("prosody"); + os.execute(CFG_SOURCEDIR.."/../../bin/prosody"); end return true; end