peertube-plugin-livechat/prosody-modules/mod_auth_peertubelivechat_bot/mod_auth_peertubelivechat_b...

99 lines
2.6 KiB
Lua

-- SPDX-FileCopyrightText: 2008-2013 Matthew Wild
-- SPDX-FileCopyrightText: 2008-2013 Waqas Hussain
-- SPDX-FileCopyrightText: 2014 Kim Alvefur
-- SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
--
-- SPDX-License-Identifier: MIT
-- SPDX-License-Identifier: AGPL-3.0-only
local new_sasl = require "util.sasl".new;
local path = require "util.paths";
local json = require "util.json";
local host = module.host;
local provider = {};
local bot_conf_folder = module:get_option_string('livechat_bot_conf_folder', '');
function read_global_conf(filename)
full_path = path.join(bot_conf_folder, filename);
module:log("debug", "Reading bot global conf file", full_path);
local file = io.open(full_path, "r");
if file == nil then
module:log("debug", "Cant read bot global conf file", filename);
return nil;
end
local content = file:read("*all");
io.close(file);
local o = json.decode(content);
if (not o) then
module:log("error", "Cant json-decode bot global conf file", filename);
return nil;
end
if (not o["connection"]) then
module:log("debug", "No connection info in bot global conf file", filename);
return nil;
end
if (not o["connection"]["username"]) then
module:log("debug", "No connection.username info in bot global conf file", filename);
return nil;
end
if (not o["connection"]["password"]) then
module:log("debug", "No connection.password info in bot global conf file", filename);
return nil;
end
result = {
username= o["connection"]["username"];
password= o["connection"]["password"];
};
return result;
end
function provider.test_password(username, password)
-- FIXME: adapt the code for multiple bots
credentials = read_global_conf("moderation.json")
if (credentials and credentials["username"] == username and credentials["password"] == password) then
return true;
end
return false;
end
function provider.users()
return function()
return nil;
end
end
function provider.set_password(username, password)
return false;
end
function provider.user_exists(username)
-- FIXME: adapt the code for multiple bots
credentials = read_global_conf("moderation.json")
if (credentials and credentials["username"] == username) then
return true;
end
return false;
end
function provider.create_user(username, password)
return false;
end
function provider.delete_user(username)
return false;
end
function provider.get_sasl_handler()
return new_sasl(host, {
--luacheck: ignore 212/sasl 212/realm
plain_test = function(sasl, username, password, realm)
return provider.test_password(username, password), true;
end;
});
end
module:provides("auth", provider);