29 |
29 |
30 module "sasl_cyrus" |
30 module "sasl_cyrus" |
31 |
31 |
32 local method = {}; |
32 local method = {}; |
33 method.__index = method; |
33 method.__index = method; |
|
34 local initialized = false; |
34 |
35 |
35 pcall(cyrussasl.server_init, "prosody") |
36 local function init(service_name) |
|
37 if not initialized then |
|
38 if pcall(cyrussasl.server_init, service_name) then |
|
39 initialized = true; |
|
40 end |
|
41 end |
|
42 end |
36 |
43 |
37 -- create a new SASL object which can be used to authenticate clients |
44 -- create a new SASL object which can be used to authenticate clients |
38 function new(realm, service_name) |
45 function new(realm, service_name) |
39 local sasl_i = {}; |
46 local sasl_i = {}; |
|
47 |
|
48 init(service_name); |
|
49 |
40 sasl_i.realm = realm; |
50 sasl_i.realm = realm; |
41 sasl_i.service_name = service_name; |
51 sasl_i.service_name = service_name; |
42 sasl_i.cyrus = cyrussasl.server_new(service_name, nil, nil, nil, nil) |
52 sasl_i.cyrus = cyrussasl.server_new(service_name, nil, nil, nil, nil) |
43 if sasl_i.cyrus == 0 then |
53 if sasl_i.cyrus == 0 then |
44 log("error", "got NULL return value from server_new") |
54 log("error", "got NULL return value from server_new") |