comparison mod_auth_external/mod_auth_external.lua @ 1086:50ee38e95e75

Don't store password in temporary file, pipe instead
author Mikael Nordfeldth <mmn@hethane.se>
date Mon, 24 Jun 2013 14:29:03 +0200
parents 490cb9161c81
children 61f95bf51b35
comparison
equal deleted inserted replaced
1085:56fc7a86eb20 1086:50ee38e95e75
2 -- NOTE: currently this uses lpc; when waqas fixes process, it can go back to that 2 -- NOTE: currently this uses lpc; when waqas fixes process, it can go back to that
3 -- 3 --
4 -- Prosody IM 4 -- Prosody IM
5 -- Copyright (C) 2010 Waqas Hussain 5 -- Copyright (C) 2010 Waqas Hussain
6 -- Copyright (C) 2010 Jeff Mitchell 6 -- Copyright (C) 2010 Jeff Mitchell
7 -- Copyright (C) 2013 Mikael Nordfeldth
7 -- 8 --
8 -- This project is MIT/X11 licensed. Please see the 9 -- This project is MIT/X11 licensed. Please see the
9 -- COPYING file in the source package for more information. 10 -- COPYING file in the source package for more information.
10 -- 11 --
11 12
25 local jid_bare = require "util.jid".bare; 26 local jid_bare = require "util.jid".bare;
26 local new_sasl = require "util.sasl".new; 27 local new_sasl = require "util.sasl".new;
27 28
28 local function send_query(text) 29 local function send_query(text)
29 local tmpname = os.tmpname(); 30 local tmpname = os.tmpname();
30 local tmpfile = io.open(tmpname, "wb"); 31 local p = io.popen(command.." > "..tmpname, "w"); -- dump result to file
31 tmpfile:write(text); 32 p:write(text); -- push colon-separated args through pipe to above command
32 tmpfile:close(); 33 p:close();
33 local p = io.popen(command.." < "..tmpname, "r"); 34 local tmpfile = io.open(tmpname, "r"); -- open file to read auth result
34 local result; 35 local result;
35 if script_type == "ejabberd" then 36 if script_type == "ejabberd" then
36 result = p:read(4); 37 result = tmpfile:read(4);
37 elseif script_type == "generic" then 38 elseif script_type == "generic" then
38 result = p:read(); 39 result = tmpfile:read();
39 end 40 end
40 os.remove(tmpname); 41 tmpfile:close();
41 p:close(); 42 os.remove(tmpname); -- clean up after us
42 return result; 43 return result;
43 end 44 end
44 45
45 if lpc then 46 if lpc then
46 --local proc; 47 --local proc;