144 storagemanager.initialize_host(host); |
144 storagemanager.initialize_host(host); |
145 local provider = host_session.users; |
145 local provider = host_session.users; |
146 if not(provider) or provider.name == "null" then |
146 if not(provider) or provider.name == "null" then |
147 usermanager.initialize_host(host); |
147 usermanager.initialize_host(host); |
148 end |
148 end |
149 |
149 |
150 local ok, errmsg = usermanager.create_user(user, password, host); |
150 local ok, errmsg = usermanager.create_user(user, password, host); |
151 if not ok then |
151 if not ok then |
152 return false, errmsg; |
152 return false, errmsg; |
153 end |
153 end |
154 return true; |
154 return true; |
160 storagemanager.initialize_host(host); |
160 storagemanager.initialize_host(host); |
161 local provider = prosody.hosts[host].users; |
161 local provider = prosody.hosts[host].users; |
162 if not(provider) or provider.name == "null" then |
162 if not(provider) or provider.name == "null" then |
163 usermanager.initialize_host(host); |
163 usermanager.initialize_host(host); |
164 end |
164 end |
165 |
165 |
166 return usermanager.user_exists(user, host); |
166 return usermanager.user_exists(user, host); |
167 end |
167 end |
168 |
168 |
169 function passwd(params) |
169 function passwd(params) |
170 if not _M.user_exists(params) then |
170 if not _M.user_exists(params) then |
171 return false, "no-such-user"; |
171 return false, "no-such-user"; |
172 end |
172 end |
173 |
173 |
174 return _M.adduser(params); |
174 return _M.adduser(params); |
175 end |
175 end |
176 |
176 |
177 function deluser(params) |
177 function deluser(params) |
178 if not _M.user_exists(params) then |
178 if not _M.user_exists(params) then |
179 return false, "no-such-user"; |
179 return false, "no-such-user"; |
180 end |
180 end |
181 local user, host = nodeprep(params.user), nameprep(params.host); |
181 local user, host = nodeprep(params.user), nameprep(params.host); |
182 |
182 |
183 return usermanager.delete_user(user, host); |
183 return usermanager.delete_user(user, host); |
184 end |
184 end |
185 |
185 |
186 function getpid() |
186 function getpid() |
187 local pidfile = config.get("*", "pidfile"); |
187 local pidfile = config.get("*", "pidfile"); |
188 if not pidfile then |
188 if not pidfile then |
189 return false, "no-pidfile"; |
189 return false, "no-pidfile"; |
190 end |
190 end |
191 |
191 |
192 local modules_enabled = set.new(config.get("*", "modules_enabled")); |
192 local modules_enabled = set.new(config.get("*", "modules_enabled")); |
193 if not modules_enabled:contains("posix") then |
193 if not modules_enabled:contains("posix") then |
194 return false, "no-posix"; |
194 return false, "no-posix"; |
195 end |
195 end |
196 |
196 |
197 local file, err = io.open(pidfile, "r+"); |
197 local file, err = io.open(pidfile, "r+"); |
198 if not file then |
198 if not file then |
199 return false, "pidfile-read-failed", err; |
199 return false, "pidfile-read-failed", err; |
200 end |
200 end |
201 |
201 |
202 local locked, err = lfs.lock(file, "w"); |
202 local locked, err = lfs.lock(file, "w"); |
203 if locked then |
203 if locked then |
204 file:close(); |
204 file:close(); |
205 return false, "pidfile-not-locked"; |
205 return false, "pidfile-not-locked"; |
206 end |
206 end |
207 |
207 |
208 local pid = tonumber(file:read("*a")); |
208 local pid = tonumber(file:read("*a")); |
209 file:close(); |
209 file:close(); |
210 |
210 |
211 if not pid then |
211 if not pid then |
212 return false, "invalid-pid"; |
212 return false, "invalid-pid"; |
213 end |
213 end |
214 |
214 |
215 return true, pid; |
215 return true, pid; |
216 end |
216 end |
217 |
217 |
218 function isrunning() |
218 function isrunning() |
219 local ok, pid, err = _M.getpid(); |
219 local ok, pid, err = _M.getpid(); |