From b8a7ab9ad380e6f00a3ca7eeaf71f5ead50cbd2d Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Wed, 17 Aug 2022 13:49:59 +0200 Subject: [PATCH] fix(connector_psql): Wrap password in a fun --- apps/emqx/src/emqx_secret.erl | 37 +++++++++++++++++++ .../src/emqx_connector_pgsql.erl | 4 +- 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 apps/emqx/src/emqx_secret.erl diff --git a/apps/emqx/src/emqx_secret.erl b/apps/emqx/src/emqx_secret.erl new file mode 100644 index 000000000..e0abf1e4c --- /dev/null +++ b/apps/emqx/src/emqx_secret.erl @@ -0,0 +1,37 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2022 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +%% Note: this module CAN'T be hot-patched to avoid invalidating the +%% closures, so it must not be changed. +-module(emqx_secret). + +%% API: +-export([wrap/1, unwrap/1]). + +%%================================================================================ +%% API funcions +%%================================================================================ + +wrap(Term) -> + fun() -> + Term + end. + +unwrap(Term) when is_function(Term, 0) -> + %% Handle potentially nested funs + unwrap(Term()); +unwrap(Term) -> + Term. diff --git a/apps/emqx_connector/src/emqx_connector_pgsql.erl b/apps/emqx_connector/src/emqx_connector_pgsql.erl index 6f89e7ff1..43ec6be8b 100644 --- a/apps/emqx_connector/src/emqx_connector_pgsql.erl +++ b/apps/emqx_connector/src/emqx_connector_pgsql.erl @@ -97,7 +97,7 @@ on_start( {host, Host}, {port, Port}, {username, User}, - {password, Password}, + {password, emqx_secret:wrap(Password)}, {database, DB}, {auto_reconnect, reconn_interval(AutoReconn)}, {pool_size, PoolSize}, @@ -158,7 +158,7 @@ reconn_interval(false) -> false. connect(Opts) -> Host = proplists:get_value(host, Opts), Username = proplists:get_value(username, Opts), - Password = proplists:get_value(password, Opts), + Password = emqx_secret:unwrap(proplists:get_value(password, Opts)), PrepareStatement = proplists:get_value(prepare_statement, Opts), case epgsql:connect(Host, Username, Password, conn_opts(Opts)) of {ok, Conn} ->