X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;ds=sidebyside;f=util%2Fprosodyctl.lua;h=cc48d5907155a9eee8b5afe1183f55daaa8b0e28;hb=e1e1bd2dfa385b1003eb6ccbabda639ecb99114e;hp=8c58f2cdc309e2a6d3e95e1fe27a442cde890ed8;hpb=1cec98db7c5f3cb4922a44a155cb6c0b58137473;p=prosody.git diff --git a/util/prosodyctl.lua b/util/prosodyctl.lua index 8c58f2cd..cc48d590 100644 --- a/util/prosodyctl.lua +++ b/util/prosodyctl.lua @@ -136,11 +136,16 @@ function adduser(params) return false, "invalid-hostname"; end - local provider = prosody.hosts[host].users; + local host_session = prosody.hosts[host]; + if not host_session then + return false, "no-such-host"; + end + + storagemanager.initialize_host(host); + local provider = host_session.users; if not(provider) or provider.name == "null" then usermanager.initialize_host(host); end - storagemanager.initialize_host(host); local ok, errmsg = usermanager.create_user(user, password, host); if not ok then @@ -151,11 +156,12 @@ end function user_exists(params) local user, host, password = nodeprep(params.user), nameprep(params.host), params.password; + + storagemanager.initialize_host(host); local provider = prosody.hosts[host].users; if not(provider) or provider.name == "null" then usermanager.initialize_host(host); end - storagemanager.initialize_host(host); return usermanager.user_exists(user, host); end @@ -172,19 +178,23 @@ function deluser(params) if not _M.user_exists(params) then return false, "no-such-user"; end - params.password = nil; + local user, host = nodeprep(params.user), nameprep(params.host); - return _M.adduser(params); + return usermanager.delete_user(user, host); end function getpid() - local pidfile = config.get("*", "core", "pidfile"); + local pidfile = config.get("*", "pidfile"); if not pidfile then return false, "no-pidfile"; end + + if type(pidfile) ~= "string" then + return false, "invalid-pidfile"; + end - local modules_enabled = set.new(config.get("*", "core", "modules_enabled")); - if not modules_enabled:contains("posix") then + local modules_enabled = set.new(config.get("*", "modules_disabled")); + if prosody.platform ~= "posix" or modules_enabled:contains("posix") then return false, "no-posix"; end @@ -269,3 +279,5 @@ function reload() signal.kill(pid, signal.SIGHUP); return true; end + +return _M;