Skip to content

Commit f2fb4a8

Browse files
authored
Feature/client hide password (apache#16468)
* session hide password * fix start-cli.sh * fix start-cli.bat * client hide password * fix client warning * echo cmd line
1 parent c9b441a commit f2fb4a8

File tree

5 files changed

+227
-218
lines changed

5 files changed

+227
-218
lines changed

iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,10 +335,12 @@ static String[] removePasswordArgs(String[] args) {
335335
break;
336336
}
337337
}
338-
if (index >= 0
339-
&& ((index + 1 >= args.length)
340-
|| (index + 1 < args.length && keywordSet.contains(args[index + 1])))) {
341-
return ArrayUtils.remove(args, index);
338+
if (index >= 0) {
339+
if (index + 1 >= args.length
340+
|| args[index + 1].startsWith("-")
341+
|| (keywordSet.contains(args[index + 1]))) {
342+
return ArrayUtils.remove(args, index);
343+
}
342344
}
343345
return args;
344346
}

iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,14 @@ private static void serve(CliContext ctx) {
161161
trustStore = commandLine.getOptionValue(TRUST_STORE_ARGS);
162162
trustStorePwd = commandLine.getOptionValue(TRUST_STORE_PWD_ARGS);
163163
password = commandLine.getOptionValue(PW_ARGS);
164+
if (password == null) {
165+
password = ctx.getLineReader().readLine("please input your password:", '\0');
166+
}
164167
constructProperties();
165168
if (hasExecuteSQL && password != null) {
166169
ctx.getLineReader().getVariables().put(LineReader.DISABLE_HISTORY, Boolean.TRUE);
167170
executeSql(ctx);
168171
}
169-
if (password == null) {
170-
password = ctx.getLineReader().readLine("please input your password:", '\0');
171-
}
172172
receiveCommands(ctx);
173173
} catch (Exception e) {
174174
ctx.getPrinter().println(IOTDB_ERROR_PREFIX + ": Exit cli with error: " + e.getMessage());

scripts/sbin/start-cli.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,13 @@ while true; do
7373
shift 2
7474
;;
7575
-pw)
76-
passwd_param="-pw $2"
77-
shift 2
76+
if [ -n "$2" ] && [[ ! "$2" =~ ^- ]]; then
77+
passwd_param="-pw $2"
78+
shift 2
79+
else
80+
passwd_param="-pw"
81+
shift
82+
fi
7883
;;
7984
-h)
8085
host_param="-h $2"
@@ -158,6 +163,7 @@ JVM_OPTS="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
158163

159164
set -o noglob
160165
iotdb_cli_params="-Dlogback.configurationFile=${IOTDB_CLI_CONF}/logback-cli.xml"
166+
echo $PARAMETERS
161167
exec "$JAVA" $JVM_OPTS $iotdb_cli_params $illegal_access_params -cp "$CLASSPATH" "$MAIN_CLASS" $PARAMETERS
162168

163169
exit $?
Lines changed: 96 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@echo off
12
@REM
23
@REM Licensed to the Apache Software Foundation (ASF) under one
34
@REM or more contributor license agreements. See the NOTICE file
@@ -17,110 +18,110 @@
1718
@REM under the License.
1819
@REM
1920

20-
@echo off
21-
@REM set cmd format
22-
powershell -NoProfile -Command "$v=(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').CurrentMajorVersionNumber; if($v -gt 6) { cmd /c 'chcp 65001' }"
23-
24-
25-
@REM DEFAULT_SQL_DIALECT is used to set the default SQL dialect for the CLI.
26-
@REM empty value means using "tree".
27-
@REM Optional values: "table" or "tree"
28-
set DEFAULT_SQL_DIALECT=table
29-
30-
@REM You can put your env variable here
31-
@REM set JAVA_HOME=%JAVA_HOME%
32-
33-
title IoTDB CLI
34-
35-
set PATH="%JAVA_HOME%\bin\";%PATH%
36-
set "FULL_VERSION="
37-
set "MAJOR_VERSION="
38-
set "MINOR_VERSION="
3921

40-
41-
for /f tokens^=2-5^ delims^=.-_+^" %%j in ('java -fullversion 2^>^&1') do (
42-
set "FULL_VERSION=%%j-%%k-%%l-%%m"
43-
IF "%%j" == "1" (
44-
set "MAJOR_VERSION=%%k"
45-
set "MINOR_VERSION=%%l"
46-
) else (
47-
set "MAJOR_VERSION=%%j"
48-
set "MINOR_VERSION=%%k"
49-
)
22+
REM -------------------------------
23+
REM Default SQL dialect
24+
if "%DEFAULT_SQL_DIALECT%"=="" set DEFAULT_SQL_DIALECT=table
25+
26+
REM Default connection parameters
27+
set user_param=-u root
28+
set passwd_param=-pw root
29+
set host_param=-h 127.0.0.1
30+
set port_param=-p 6667
31+
set sql_dialect_param=-sql_dialect %DEFAULT_SQL_DIALECT%
32+
set PARAMETERS=
33+
34+
REM -------------------------------
35+
REM Parse command-line arguments
36+
:parse_args
37+
if "%~1"=="" goto after_parse
38+
39+
if /I "%~1"=="-u" (
40+
set user_param=-u %~2
41+
shift
42+
shift
43+
goto parse_args
44+
)
45+
if /I "%~1"=="-pw" (
46+
if "%~2"=="" (
47+
set passwd_param=-pw
48+
shift
49+
) else (
50+
set passwd_param=-pw %~2
51+
shift
52+
shift
53+
)
54+
goto parse_args
55+
)
56+
if /I "%~1"=="-h" (
57+
set host_param=-h %~2
58+
shift
59+
shift
60+
goto parse_args
61+
)
62+
if /I "%~1"=="-p" (
63+
set port_param=-p %~2
64+
shift
65+
shift
66+
goto parse_args
67+
)
68+
if /I "%~1"=="-sql_dialect" (
69+
set sql_dialect_param=-sql_dialect %~2
70+
shift
71+
shift
72+
goto parse_args
5073
)
5174

52-
set JAVA_VERSION=%MAJOR_VERSION%
53-
54-
if "%OS%" == "Windows_NT" setlocal
55-
56-
pushd %~dp0..\..
57-
if NOT DEFINED IOTDB_HOME set IOTDB_HOME=%CD%
58-
popd
59-
60-
if NOT DEFINED MAIN_CLASS set MAIN_CLASS=org.apache.iotdb.cli.Cli
61-
if NOT DEFINED JAVA_HOME goto :err
62-
63-
@REM -----------------------------------------------------------------------------
64-
@REM JVM Opts we'll use in legacy run or installation
65-
set JAVA_OPTS=-ea^
66-
-DIOTDB_HOME="%IOTDB_HOME%"
67-
68-
@REM ***** CLASSPATH library setting *****
69-
@REM Ensure that any user defined CLASSPATH variables are not used on startup
70-
if EXIST "%IOTDB_HOME%\lib" (set CLASSPATH="%IOTDB_HOME%\lib\*") else set CLASSPATH="%IOTDB_HOME%\..\lib\*"
71-
goto okClasspath
72-
73-
:append
74-
set CLASSPATH=%CLASSPATH%;%1
75-
76-
goto :eof
77-
78-
REM -----------------------------------------------------------------------------
79-
:okClasspath
80-
set PARAMETERS=%*
81-
82-
@REM if "%PARAMETERS%" == "" set PARAMETERS=-h 127.0.0.1 -p 6667 -u root -pw root
83-
84-
@REM if DEFAULT_SQL_DIALECT is empty, set it to "tree"
85-
if "%DEFAULT_SQL_DIALECT%" == "" set DEFAULT_SQL_DIALECT=tree
86-
87-
@REM set default parameters
88-
set pw_parameter=-pw root
89-
set u_parameter=-u root
90-
set p_parameter=-p 6667
91-
set h_parameter=-h 127.0.0.1
92-
set sql_dialect__parameter=-sql_dialect %DEFAULT_SQL_DIALECT%
75+
REM Any other arguments
76+
set PARAMETERS=%PARAMETERS% %~1
77+
shift
78+
goto parse_args
9379

94-
@REM Added parameters when default parameters are missing
95-
echo %PARAMETERS% | findstr /c:"-sql_dialect ">nul && (set PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%sql_dialect__parameter% %PARAMETERS%)
96-
echo %PARAMETERS% | findstr /c:"-pw ">nul && (set PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%pw_parameter% %PARAMETERS%)
97-
echo %PARAMETERS% | findstr /c:"-u ">nul && (set PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%u_parameter% %PARAMETERS%)
98-
echo %PARAMETERS% | findstr /c:"-p ">nul && (set PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%p_parameter% %PARAMETERS%)
99-
echo %PARAMETERS% | findstr /c:"-h ">nul && (set PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%h_parameter% %PARAMETERS%)
80+
:after_parse
10081

101-
echo %PARAMETERS%
82+
REM Combine all parameters
83+
set PARAMETERS=%host_param% %port_param% %user_param% %passwd_param% %sql_dialect_param% %PARAMETERS%
10284

103-
@REM Add args for Java 11 and above, due to [JEP 396: Strongly Encapsulate JDK Internals by Default] (https://openjdk.java.net/jeps/396)
104-
IF "%JAVA_VERSION%" == "8" (
105-
set ILLEGAL_ACCESS_PARAMS=
106-
) ELSE (
107-
set ILLEGAL_ACCESS_PARAMS=--add-opens=java.base/java.lang=ALL-UNNAMED
85+
REM -------------------------------
86+
REM Set IOTDB_HOME
87+
if not defined IOTDB_HOME (
88+
pushd %~dp0..\..
89+
set IOTDB_HOME=%CD%
90+
popd
10891
)
109-
set JAVA_OPTS=%JAVA_OPTS% -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
110-
java %ILLEGAL_ACCESS_PARAMS% %JAVA_OPTS% -cp %CLASSPATH% %MAIN_CLASS% %PARAMETERS%
111-
set ret_code=%ERRORLEVEL%
112-
goto finally
113-
11492

115-
:err
116-
echo JAVA_HOME environment variable must be set!
117-
set ret_code=1
118-
pause
93+
REM CLI configuration
94+
set IOTDB_CLI_CONF=%IOTDB_HOME%\conf
95+
set MAIN_CLASS=org.apache.iotdb.cli.Cli
11996

97+
REM -------------------------------
98+
REM CLASSPATH setup
99+
if exist "%IOTDB_HOME%\lib" (
100+
set CLASSPATH=%IOTDB_HOME%\lib\*
101+
) else (
102+
set CLASSPATH=%IOTDB_HOME%\..\lib\*
103+
)
120104

121-
@REM -----------------------------------------------------------------------------
122-
:finally
105+
REM -------------------------------
106+
REM JAVA executable
107+
if defined JAVA_HOME (
108+
if exist "%JAVA_HOME%\bin\java.exe" (
109+
set JAVA=%JAVA_HOME%\bin\java.exe
110+
) else (
111+
set JAVA=java
112+
)
113+
) else (
114+
set JAVA=java
115+
)
123116

124-
ENDLOCAL
117+
REM -------------------------------
118+
REM JVM options
119+
set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
120+
set IOTDB_CLI_PARAMS=-Dlogback.configurationFile=%IOTDB_CLI_CONF%\logback-cli.xml
121+
set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 --add-opens=java.base/java.lang=ALL-UNNAMED
125122

126-
EXIT /B %ret_code%
123+
REM -------------------------------
124+
REM Run CLI
125+
echo %PARAMETERS%
126+
"%JAVA%" %JVM_OPTS% %IOTDB_CLI_PARAMS% -cp "%CLASSPATH%" %MAIN_CLASS% %PARAMETERS%
127+
exit /b %ERRORLEVEL%

0 commit comments

Comments
 (0)