mod_auth_any/mod_auth_any.lua
author Kim Alvefur <zash@zash.se>
Sun, 08 Jan 2017 11:27:01 +0100
changeset 2442 a528627e45ab
parent 2441 75be377b74ea
child 2443 1f7820f68868
permissions -rw-r--r--
mod_auth_any: Remove provider constructor, it's only called once anyways
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1294
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
-- Prosody IM
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     2
-- Copyright (C) 2008-2010 Matthew Wild
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     3
-- Copyright (C) 2008-2010 Waqas Hussain
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     4
--
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     5
-- This project is MIT/X11 licensed. Please see the
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     6
-- COPYING file in the source package for more information.
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     7
--
2441
75be377b74ea mod_auth_any: Ignore unused arguments, useful to show what arguments are given
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
     8
-- luacheck: ignore 212
1294
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     9
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    10
local datamanager = require "util.datamanager";
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    11
local log = require "util.logger".init("auth_any");
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    12
local type = type;
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    13
local error = error;
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    14
local ipairs = ipairs;
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    15
local hashes = require "util.hashes";
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    16
local jid_bare = require "util.jid".bare;
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    17
local config = require "core.configmanager";
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    18
local usermanager = require "core.usermanager";
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    19
local new_sasl = require "util.sasl".new;
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    20
local nodeprep = require "util.encodings".stringprep.nodeprep;
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    21
local hosts = hosts;
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    22
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    23
local prosody = _G.prosody;
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    24
2442
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    25
local host = module.host;
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    26
local provider = { name = "any" };
1294
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    27
2442
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    28
function provider.test_password(username, password)
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    29
	return true;
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    30
end
1294
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    31
2442
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    32
function provider.set_password(username, password)
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    33
	local account = datamanager.load(username, host, "accounts");
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    34
	if account then
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    35
		account.password = password;
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    36
		return datamanager.store(username, host, "accounts", account);
1294
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    37
	end
2442
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    38
	return nil, "Account not available.";
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    39
end
1294
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    40
2442
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    41
function provider.user_exists(username)
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    42
	return true;
1294
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    43
end
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    44
2442
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    45
function provider.create_user(username, password)
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    46
	return datamanager.store(username, host, "accounts", {password = password});
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    47
end
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    48
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    49
function provider.delete_user(username)
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    50
	return datamanager.store(username, host, "accounts", nil);
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    51
end
1294
bb1fb54360ab mod_auth_any: Allows any username/password to connect
Waqas Hussain <waqas20@gmail.com>, Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    52
2442
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    53
function provider.get_sasl_handler()
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    54
	local getpass_authentication_profile = {
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    55
		plain_test = function(sasl, username, password, realm)
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    56
			return true, true;
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    57
		end
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    58
	};
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    59
	return new_sasl(module.host, getpass_authentication_profile);
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    60
end
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    61
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    62
module:add_item("auth-provider", provider);
a528627e45ab mod_auth_any: Remove provider constructor, it's only called once anyways
Kim Alvefur <zash@zash.se>
parents: 2441
diff changeset
    63