projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge 0.9->trunk
[prosody.git]
/
util
/
prosodyctl.lua
diff --git
a/util/prosodyctl.lua
b/util/prosodyctl.lua
index 2da39cb2fa2c14df4fd63a2602cc0d8c0f378896..fe862114535bcc44c21906b3514249bbc90cf861 100644
(file)
--- a/
util/prosodyctl.lua
+++ b/
util/prosodyctl.lua
@@
-1,7
+1,7
@@
-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
---
+--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
@@
-16,6
+16,7
@@
local signal = require "util.signal";
local set = require "util.set";
local lfs = require "lfs";
local pcall = pcall;
local set = require "util.set";
local lfs = require "lfs";
local pcall = pcall;
+local type = type;
local nodeprep, nameprep = stringprep.nodeprep, stringprep.nameprep;
local nodeprep, nameprep = stringprep.nodeprep, stringprep.nameprep;
@@
-63,6
+64,13
@@
function getchar(n)
end
end
end
end
+function getline()
+ local ok, line = pcall(io.read, "*l");
+ if ok then
+ return line;
+ end
+end
+
function getpass()
local stty_ret = os.execute("stty -echo 2>/dev/null");
if stty_ret ~= 0 then
function getpass()
local stty_ret = os.execute("stty -echo 2>/dev/null");
if stty_ret ~= 0 then
@@
-112,6
+120,13
@@
function read_password()
return password;
end
return password;
end
+function show_prompt(prompt)
+ io.write(prompt, " ");
+ local line = getline();
+ line = line and line:gsub("\n$","");
+ return (line and #line > 0) and line or nil;
+end
+
-- Server control
function adduser(params)
local user, host, password = nodeprep(params.user), nameprep(params.host), params.password;
-- Server control
function adduser(params)
local user, host, password = nodeprep(params.user), nameprep(params.host), params.password;
@@
-125,12
+140,13
@@
function adduser(params)
if not host_session then
return false, "no-such-host";
end
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
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
return false, errmsg;
local ok, errmsg = usermanager.create_user(user, password, host);
if not ok then
return false, errmsg;
@@
-140,12
+156,13
@@
end
function user_exists(params)
local user, host, password = nodeprep(params.user), nameprep(params.host), params.password;
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
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
return usermanager.user_exists(user, host);
end
@@
-153,7
+170,7
@@
function passwd(params)
if not _M.user_exists(params) then
return false, "no-such-user";
end
if not _M.user_exists(params) then
return false, "no-such-user";
end
-
+
return _M.adduser(params);
end
return _M.adduser(params);
end
@@
-161,40
+178,40
@@
function deluser(params)
if not _M.user_exists(params) then
return false, "no-such-user";
end
if not _M.user_exists(params) then
return false, "no-such-user";
end
-
params.password = nil
;
-
- return
_M.adduser(params
);
+
local user, host = nodeprep(params.user), nameprep(params.host)
;
+
+ return
usermanager.delete_user(user, host
);
end
function getpid()
end
function getpid()
- local pidfile = config.get("*", "
core", "
pidfile");
+ local pidfile = config.get("*", "pidfile");
if not pidfile then
return false, "no-pidfile";
end
if not pidfile then
return false, "no-pidfile";
end
-
- local modules_enabled = set.new(config.get("*", "
core", "
modules_enabled"));
+
+ local modules_enabled = set.new(config.get("*", "modules_enabled"));
if not modules_enabled:contains("posix") then
return false, "no-posix";
end
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;
end
local file, err = io.open(pidfile, "r+");
if not file then
return false, "pidfile-read-failed", err;
end
-
+
local locked, err = lfs.lock(file, "w");
if locked then
file:close();
return false, "pidfile-not-locked";
end
local locked, err = lfs.lock(file, "w");
if locked then
file:close();
return false, "pidfile-not-locked";
end
-
+
local pid = tonumber(file:read("*a"));
file:close();
local pid = tonumber(file:read("*a"));
file:close();
-
+
if not pid then
return false, "invalid-pid";
end
if not pid then
return false, "invalid-pid";
end
-
+
return true, pid;
end
return true, pid;
end
@@
-235,10
+252,10
@@
function stop()
if not ret then
return false, "not-running";
end
if not ret then
return false, "not-running";
end
-
+
local ok, pid = _M.getpid()
if not ok then return false, pid; end
local ok, pid = _M.getpid()
if not ok then return false, pid; end
-
+
signal.kill(pid, signal.SIGTERM);
return true;
end
signal.kill(pid, signal.SIGTERM);
return true;
end
@@
-251,10
+268,12
@@
function reload()
if not ret then
return false, "not-running";
end
if not ret then
return false, "not-running";
end
-
+
local ok, pid = _M.getpid()
if not ok then return false, pid; end
local ok, pid = _M.getpid()
if not ok then return false, pid; end
-
+
signal.kill(pid, signal.SIGHUP);
return true;
end
signal.kill(pid, signal.SIGHUP);
return true;
end
+
+return _M;