aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_auth_sql.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_auth_sql.erl')
-rw-r--r--src/ejabberd_auth_sql.erl49
1 files changed, 24 insertions, 25 deletions
diff --git a/src/ejabberd_auth_sql.erl b/src/ejabberd_auth_sql.erl
index 000b4a4f4..17e3e517b 100644
--- a/src/ejabberd_auth_sql.erl
+++ b/src/ejabberd_auth_sql.erl
@@ -25,6 +25,8 @@
-module(ejabberd_auth_sql).
+-compile([{parse_transform, ejabberd_sql_pt}]).
+
-behaviour(ejabberd_config).
-author('alexey@process-one.net').
@@ -43,6 +45,7 @@
-include("ejabberd.hrl").
-include("logger.hrl").
+-include("ejabberd_sql_pt.hrl").
-define(SALT_LENGTH, 16).
@@ -425,19 +428,15 @@ is_password_scram_valid(Password, Scram) ->
-define(BATCH_SIZE, 1000).
-set_password_scram_t(Username,
+set_password_scram_t(LUser,
StoredKey, ServerKey, Salt, IterationCount) ->
- sql_queries:update_t(<<"users">>,
- [<<"username">>,
- <<"password">>,
- <<"serverkey">>,
- <<"salt">>,
- <<"iterationcount">>],
- [Username, StoredKey,
- ServerKey, Salt,
- IterationCount],
- [<<"username='">>, Username,
- <<"'">>]).
+ ?SQL_UPSERT_T(
+ "users",
+ ["!username=%(LUser)s",
+ "password=%(StoredKey)s",
+ "serverkey=%(ServerKey)s",
+ "salt=%(Salt)s",
+ "iterationcount=%(IterationCount)d"]).
convert_to_scram(Server) ->
LServer = jid:nameprep(Server),
@@ -447,24 +446,24 @@ convert_to_scram(Server) ->
{error, {incorrect_server_name, Server}};
true ->
F = fun () ->
+ BatchSize = ?BATCH_SIZE,
case ejabberd_sql:sql_query_t(
- [<<"select username, password from users where "
- "iterationcount=0 limit ">>,
- integer_to_binary(?BATCH_SIZE),
- <<";">>]) of
- {selected, [<<"username">>, <<"password">>], []} ->
+ ?SQL("select @(username)s, @(password)s"
+ " from users"
+ " where iterationcount=0"
+ " limit %(BatchSize)d")) of
+ {selected, []} ->
ok;
- {selected, [<<"username">>, <<"password">>], Rs} ->
+ {selected, Rs} ->
lists:foreach(
- fun([LUser, Password]) ->
- Username = ejabberd_sql:escape(LUser),
+ fun({LUser, Password}) ->
Scram = password_to_scram(Password),
set_password_scram_t(
- Username,
- ejabberd_sql:escape(Scram#scram.storedkey),
- ejabberd_sql:escape(Scram#scram.serverkey),
- ejabberd_sql:escape(Scram#scram.salt),
- integer_to_binary(Scram#scram.iterationcount)
+ LUser,
+ Scram#scram.storedkey,
+ Scram#scram.serverkey,
+ Scram#scram.salt,
+ Scram#scram.iterationcount
)
end, Rs),
continue;