Comparison

util/prosodyctl.lua @ 4485:abfd27b59fa8

util.prosodyctl: Add getline() and show_prompt()
author Kim Alvefur <zash@zash.se>
date Fri, 20 Jan 2012 21:58:04 +0100
parent 4335:3a2a01432b5c
child 4500:bfa387f268e2
comparison
equal deleted inserted replaced
4481:408c2f688e4e 4485:abfd27b59fa8
14 local usermanager = require "core.usermanager"; 14 local usermanager = require "core.usermanager";
15 local signal = require "util.signal"; 15 local signal = require "util.signal";
16 local set = require "util.set"; 16 local set = require "util.set";
17 local lfs = require "lfs"; 17 local lfs = require "lfs";
18 local pcall = pcall; 18 local pcall = pcall;
19 local type = type;
19 20
20 local nodeprep, nameprep = stringprep.nodeprep, stringprep.nameprep; 21 local nodeprep, nameprep = stringprep.nodeprep, stringprep.nameprep;
21 22
22 local io, os = io, os; 23 local io, os = io, os;
23 local print = print; 24 local print = print;
61 if ok then 62 if ok then
62 return char; 63 return char;
63 end 64 end
64 end 65 end
65 66
67 function getline()
68 local ok, line = pcall(io.read, "*l");
69 if ok then
70 return line;
71 end
72 end
73
66 function getpass() 74 function getpass()
67 local stty_ret = os.execute("stty -echo 2>/dev/null"); 75 local stty_ret = os.execute("stty -echo 2>/dev/null");
68 if stty_ret ~= 0 then 76 if stty_ret ~= 0 then
69 io.write("\027[08m"); -- ANSI 'hidden' text attribute 77 io.write("\027[08m"); -- ANSI 'hidden' text attribute
70 end 78 end
110 end 118 end
111 end 119 end
112 return password; 120 return password;
113 end 121 end
114 122
123 function show_prompt(prompt)
124 io.write(prompt, " ");
125 local line = getline();
126 line = line and line:gsub("\n$","");
127 return (line and #line > 0) and line or nil;
128 end
129
115 -- Server control 130 -- Server control
116 function adduser(params) 131 function adduser(params)
117 local user, host, password = nodeprep(params.user), nameprep(params.host), params.password; 132 local user, host, password = nodeprep(params.user), nameprep(params.host), params.password;
118 if not user then 133 if not user then
119 return false, "invalid-username"; 134 return false, "invalid-username";