This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new f2fb4a8ff1a Feature/client hide password (#16468)
f2fb4a8ff1a is described below

commit f2fb4a8ff1ac006738786c2ce9a503c1447c682b
Author: Hongzhi Gao <[email protected]>
AuthorDate: Wed Sep 24 09:58:30 2025 +0800

    Feature/client hide password (#16468)
    
    * session hide password
    
    * fix start-cli.sh
    
    * fix start-cli.bat
    
    * client hide password
    
    * fix client warning
    
    * echo cmd line
---
 .../java/org/apache/iotdb/cli/AbstractCli.java     |  10 +-
 .../src/main/java/org/apache/iotdb/cli/Cli.java    |   6 +-
 scripts/sbin/start-cli.sh                          |  10 +-
 scripts/sbin/windows/start-cli-table.bat           | 191 ++++++++---------
 scripts/sbin/windows/start-cli.bat                 | 228 ++++++++++-----------
 5 files changed, 227 insertions(+), 218 deletions(-)

diff --git 
a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java 
b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
index 50be4ea5d5a..7fa55a795cf 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
@@ -335,10 +335,12 @@ public abstract class AbstractCli {
         break;
       }
     }
-    if (index >= 0
-        && ((index + 1 >= args.length)
-            || (index + 1 < args.length && keywordSet.contains(args[index + 
1])))) {
-      return ArrayUtils.remove(args, index);
+    if (index >= 0) {
+      if (index + 1 >= args.length
+          || args[index + 1].startsWith("-")
+          || (keywordSet.contains(args[index + 1]))) {
+        return ArrayUtils.remove(args, index);
+      }
     }
     return args;
   }
diff --git a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java 
b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java
index 938df8f5de3..a6667a3bcff 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java
@@ -161,14 +161,14 @@ public class Cli extends AbstractCli {
       trustStore = commandLine.getOptionValue(TRUST_STORE_ARGS);
       trustStorePwd = commandLine.getOptionValue(TRUST_STORE_PWD_ARGS);
       password = commandLine.getOptionValue(PW_ARGS);
+      if (password == null) {
+        password = ctx.getLineReader().readLine("please input your password:", 
'\0');
+      }
       constructProperties();
       if (hasExecuteSQL && password != null) {
         ctx.getLineReader().getVariables().put(LineReader.DISABLE_HISTORY, 
Boolean.TRUE);
         executeSql(ctx);
       }
-      if (password == null) {
-        password = ctx.getLineReader().readLine("please input your password:", 
'\0');
-      }
       receiveCommands(ctx);
     } catch (Exception e) {
       ctx.getPrinter().println(IOTDB_ERROR_PREFIX + ": Exit cli with error: " 
+ e.getMessage());
diff --git a/scripts/sbin/start-cli.sh b/scripts/sbin/start-cli.sh
index b864669134f..b619d2ef7f8 100755
--- a/scripts/sbin/start-cli.sh
+++ b/scripts/sbin/start-cli.sh
@@ -73,8 +73,13 @@ while true; do
             shift 2
             ;;
         -pw)
-            passwd_param="-pw $2"
-            shift 2
+            if [ -n "$2" ] && [[ ! "$2" =~ ^- ]]; then
+                passwd_param="-pw $2"
+                shift 2
+            else
+                passwd_param="-pw"
+                shift
+            fi
         ;;
         -h)
             host_param="-h $2"
@@ -158,6 +163,7 @@ JVM_OPTS="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
 
 set -o noglob
 
iotdb_cli_params="-Dlogback.configurationFile=${IOTDB_CLI_CONF}/logback-cli.xml"
+echo $PARAMETERS
 exec "$JAVA" $JVM_OPTS $iotdb_cli_params $illegal_access_params -cp 
"$CLASSPATH" "$MAIN_CLASS" $PARAMETERS
 
 exit $?
diff --git a/scripts/sbin/windows/start-cli-table.bat 
b/scripts/sbin/windows/start-cli-table.bat
index 67b3c318cc9..8508d920b8c 100644
--- a/scripts/sbin/windows/start-cli-table.bat
+++ b/scripts/sbin/windows/start-cli-table.bat
@@ -1,3 +1,4 @@
+@echo off
 @REM
 @REM Licensed to the Apache Software Foundation (ASF) under one
 @REM or more contributor license agreements.  See the NOTICE file
@@ -17,110 +18,110 @@
 @REM under the License.
 @REM
 
-@echo off
-@REM set cmd format
-powershell -NoProfile -Command "$v=(Get-ItemProperty 
'HKLM:\SOFTWARE\Microsoft\Windows 
NT\CurrentVersion').CurrentMajorVersionNumber; if($v -gt 6) { cmd /c 'chcp 
65001' }"
-
-
-@REM DEFAULT_SQL_DIALECT is used to set the default SQL dialect for the CLI.
-@REM empty value means using "tree".
-@REM Optional values: "table" or "tree"
-set DEFAULT_SQL_DIALECT=table
-
-@REM You can put your env variable here
-@REM set JAVA_HOME=%JAVA_HOME%
-
-title IoTDB CLI
-
-set PATH="%JAVA_HOME%\bin\";%PATH%
-set "FULL_VERSION="
-set "MAJOR_VERSION="
-set "MINOR_VERSION="
 
-
-for /f tokens^=2-5^ delims^=.-_+^" %%j in ('java -fullversion 2^>^&1') do (
-       set "FULL_VERSION=%%j-%%k-%%l-%%m"
-       IF "%%j" == "1" (
-           set "MAJOR_VERSION=%%k"
-           set "MINOR_VERSION=%%l"
-       ) else (
-           set "MAJOR_VERSION=%%j"
-           set "MINOR_VERSION=%%k"
-       )
+REM -------------------------------
+REM Default SQL dialect
+if "%DEFAULT_SQL_DIALECT%"=="" set DEFAULT_SQL_DIALECT=table
+
+REM Default connection parameters
+set user_param=-u root
+set passwd_param=-pw root
+set host_param=-h 127.0.0.1
+set port_param=-p 6667
+set sql_dialect_param=-sql_dialect %DEFAULT_SQL_DIALECT%
+set PARAMETERS=
+
+REM -------------------------------
+REM Parse command-line arguments
+:parse_args
+if "%~1"=="" goto after_parse
+
+if /I "%~1"=="-u" (
+    set user_param=-u %~2
+    shift
+    shift
+    goto parse_args
+)
+if /I "%~1"=="-pw" (
+    if "%~2"=="" (
+        set passwd_param=-pw
+        shift
+    ) else (
+        set passwd_param=-pw %~2
+        shift
+        shift
+    )
+    goto parse_args
+)
+if /I "%~1"=="-h" (
+    set host_param=-h %~2
+    shift
+    shift
+    goto parse_args
+)
+if /I "%~1"=="-p" (
+    set port_param=-p %~2
+    shift
+    shift
+    goto parse_args
+)
+if /I "%~1"=="-sql_dialect" (
+    set sql_dialect_param=-sql_dialect %~2
+    shift
+    shift
+    goto parse_args
 )
 
-set JAVA_VERSION=%MAJOR_VERSION%
-
-if "%OS%" == "Windows_NT" setlocal
-
-pushd %~dp0..\..
-if NOT DEFINED IOTDB_HOME set IOTDB_HOME=%CD%
-popd
-
-if NOT DEFINED MAIN_CLASS set MAIN_CLASS=org.apache.iotdb.cli.Cli
-if NOT DEFINED JAVA_HOME goto :err
-
-@REM 
-----------------------------------------------------------------------------
-@REM JVM Opts we'll use in legacy run or installation
-set JAVA_OPTS=-ea^
- -DIOTDB_HOME="%IOTDB_HOME%"
-
-@REM ***** CLASSPATH library setting *****
-@REM Ensure that any user defined CLASSPATH variables are not used on startup
-if EXIST "%IOTDB_HOME%\lib" (set CLASSPATH="%IOTDB_HOME%\lib\*") else set 
CLASSPATH="%IOTDB_HOME%\..\lib\*"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-
-goto :eof
-
-REM 
-----------------------------------------------------------------------------
-:okClasspath
-set PARAMETERS=%*
-
-@REM if "%PARAMETERS%" == "" set PARAMETERS=-h 127.0.0.1 -p 6667 -u root -pw 
root
-
-@REM if DEFAULT_SQL_DIALECT is empty, set it to "tree"
-if "%DEFAULT_SQL_DIALECT%" == "" set DEFAULT_SQL_DIALECT=tree
-
-@REM set default parameters
-set pw_parameter=-pw root
-set u_parameter=-u root
-set p_parameter=-p 6667
-set h_parameter=-h 127.0.0.1
-set sql_dialect__parameter=-sql_dialect %DEFAULT_SQL_DIALECT%
+REM Any other arguments
+set PARAMETERS=%PARAMETERS% %~1
+shift
+goto parse_args
 
-@REM Added parameters when default parameters are missing
-echo %PARAMETERS% | findstr /c:"-sql_dialect ">nul && (set 
PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%sql_dialect__parameter% 
%PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-pw ">nul && (set PARAMETERS=%PARAMETERS%) || 
(set PARAMETERS=%pw_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-u ">nul && (set PARAMETERS=%PARAMETERS%) || 
(set PARAMETERS=%u_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-p ">nul && (set PARAMETERS=%PARAMETERS%) || 
(set PARAMETERS=%p_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-h ">nul && (set PARAMETERS=%PARAMETERS%) || 
(set PARAMETERS=%h_parameter% %PARAMETERS%)
+:after_parse
 
-echo %PARAMETERS%
+REM Combine all parameters
+set PARAMETERS=%host_param% %port_param% %user_param% %passwd_param% 
%sql_dialect_param% %PARAMETERS%
 
-@REM Add args for Java 11 and above, due to [JEP 396: Strongly Encapsulate JDK 
Internals by Default] (https://openjdk.java.net/jeps/396)
-IF "%JAVA_VERSION%" == "8" (
-    set ILLEGAL_ACCESS_PARAMS=
-) ELSE (
-    set ILLEGAL_ACCESS_PARAMS=--add-opens=java.base/java.lang=ALL-UNNAMED
+REM -------------------------------
+REM Set IOTDB_HOME
+if not defined IOTDB_HOME (
+    pushd %~dp0..\..
+    set IOTDB_HOME=%CD%
+    popd
 )
-set JAVA_OPTS=%JAVA_OPTS% -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
-java %ILLEGAL_ACCESS_PARAMS% %JAVA_OPTS% -cp %CLASSPATH% %MAIN_CLASS% 
%PARAMETERS%
-set ret_code=%ERRORLEVEL%
-goto finally
-
 
-:err
-echo JAVA_HOME environment variable must be set!
-set ret_code=1
-pause
+REM CLI configuration
+set IOTDB_CLI_CONF=%IOTDB_HOME%\conf
+set MAIN_CLASS=org.apache.iotdb.cli.Cli
 
+REM -------------------------------
+REM CLASSPATH setup
+if exist "%IOTDB_HOME%\lib" (
+    set CLASSPATH=%IOTDB_HOME%\lib\*
+) else (
+    set CLASSPATH=%IOTDB_HOME%\..\lib\*
+)
 
-@REM 
-----------------------------------------------------------------------------
-:finally
+REM -------------------------------
+REM JAVA executable
+if defined JAVA_HOME (
+    if exist "%JAVA_HOME%\bin\java.exe" (
+        set JAVA=%JAVA_HOME%\bin\java.exe
+    ) else (
+        set JAVA=java
+    )
+) else (
+    set JAVA=java
+)
 
-ENDLOCAL
+REM -------------------------------
+REM JVM options
+set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
+set 
IOTDB_CLI_PARAMS=-Dlogback.configurationFile=%IOTDB_CLI_CONF%\logback-cli.xml
+set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 
--add-opens=java.base/java.lang=ALL-UNNAMED
 
-EXIT /B %ret_code%
+REM -------------------------------
+REM Run CLI
+echo %PARAMETERS%
+"%JAVA%" %JVM_OPTS% %IOTDB_CLI_PARAMS% -cp "%CLASSPATH%" %MAIN_CLASS% 
%PARAMETERS%
+exit /b %ERRORLEVEL%
diff --git a/scripts/sbin/windows/start-cli.bat 
b/scripts/sbin/windows/start-cli.bat
index f79bfb8b962..823f3c2cbd7 100644
--- a/scripts/sbin/windows/start-cli.bat
+++ b/scripts/sbin/windows/start-cli.bat
@@ -1,126 +1,126 @@
-@REM
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM     http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM
-
 @echo off
-@REM set cmd format
-powershell -NoProfile -Command "$v=(Get-ItemProperty 
'HKLM:\SOFTWARE\Microsoft\Windows 
NT\CurrentVersion').CurrentMajorVersionNumber; if($v -gt 6) { cmd /c 'chcp 
65001' }"
-
-
-@REM DEFAULT_SQL_DIALECT is used to set the default SQL dialect for the CLI.
-@REM empty value means using "tree".
-@REM Optional values: "table" or "tree"
-set DEFAULT_SQL_DIALECT=tree
-
-@REM You can put your env variable here
-@REM set JAVA_HOME=%JAVA_HOME%
-
-title IoTDB CLI
-
-set PATH="%JAVA_HOME%\bin\";%PATH%
-set "FULL_VERSION="
-set "MAJOR_VERSION="
-set "MINOR_VERSION="
-
-
-for /f tokens^=2-5^ delims^=.-_+^" %%j in ('java -fullversion 2^>^&1') do (
-       set "FULL_VERSION=%%j-%%k-%%l-%%m"
-       IF "%%j" == "1" (
-           set "MAJOR_VERSION=%%k"
-           set "MINOR_VERSION=%%l"
-       ) else (
-           set "MAJOR_VERSION=%%j"
-           set "MINOR_VERSION=%%k"
-       )
+REM
+REM Licensed to the Apache Software Foundation (ASF) under one
+REM or more contributor license agreements.  See the NOTICE file
+REM distributed with this work for additional information
+REM regarding copyright ownership.  The ASF licenses this file
+REM to you under the Apache License, Version 2.0 (the
+REM "License"); you may not use this file except in compliance
+REM with the License.  You may obtain a copy of the License at
+REM
+REM     http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM Unless required by applicable law or agreed to in writing,
+REM software distributed under the License is distributed on an
+REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+REM KIND, either express or implied.  See the License for the
+REM specific language governing permissions and limitations
+REM under the License.
+REM
+
+REM -------------------------------
+REM Default SQL dialect
+if "%DEFAULT_SQL_DIALECT%"=="" set DEFAULT_SQL_DIALECT=tree
+
+REM Default connection parameters
+set user_param=-u root
+set passwd_param=-pw root
+set host_param=-h 127.0.0.1
+set port_param=-p 6667
+set sql_dialect_param=-sql_dialect %DEFAULT_SQL_DIALECT%
+set PARAMETERS=
+
+REM -------------------------------
+REM Parse command-line arguments
+:parse_args
+if "%~1"=="" goto after_parse
+
+if /I "%~1"=="-u" (
+    set user_param=-u %~2
+    shift
+    shift
+    goto parse_args
+)
+if /I "%~1"=="-pw" (
+    if "%~2"=="" (
+        set passwd_param=-pw
+        shift
+    ) else (
+        set passwd_param=-pw %~2
+        shift
+        shift
+    )
+    goto parse_args
+)
+if /I "%~1"=="-h" (
+    set host_param=-h %~2
+    shift
+    shift
+    goto parse_args
+)
+if /I "%~1"=="-p" (
+    set port_param=-p %~2
+    shift
+    shift
+    goto parse_args
+)
+if /I "%~1"=="-sql_dialect" (
+    set sql_dialect_param=-sql_dialect %~2
+    shift
+    shift
+    goto parse_args
 )
 
-set JAVA_VERSION=%MAJOR_VERSION%
-
-if "%OS%" == "Windows_NT" setlocal
-
-pushd %~dp0..\..
-if NOT DEFINED IOTDB_HOME set IOTDB_HOME=%CD%
-popd
-
-if NOT DEFINED MAIN_CLASS set MAIN_CLASS=org.apache.iotdb.cli.Cli
-if NOT DEFINED JAVA_HOME goto :err
-
-@REM 
-----------------------------------------------------------------------------
-@REM JVM Opts we'll use in legacy run or installation
-set JAVA_OPTS=-ea^
- -DIOTDB_HOME="%IOTDB_HOME%"
-
-@REM ***** CLASSPATH library setting *****
-@REM Ensure that any user defined CLASSPATH variables are not used on startup
-if EXIST "%IOTDB_HOME%\lib" (set CLASSPATH="%IOTDB_HOME%\lib\*") else set 
CLASSPATH="%IOTDB_HOME%\..\lib\*"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-
-goto :eof
-
-REM 
-----------------------------------------------------------------------------
-:okClasspath
-set PARAMETERS=%*
-
-@REM if "%PARAMETERS%" == "" set PARAMETERS=-h 127.0.0.1 -p 6667 -u root -pw 
root
-
-@REM if DEFAULT_SQL_DIALECT is empty, set it to "tree"
-if "%DEFAULT_SQL_DIALECT%" == "" set DEFAULT_SQL_DIALECT=tree
-
-@REM set default parameters
-set pw_parameter=-pw root
-set u_parameter=-u root
-set p_parameter=-p 6667
-set h_parameter=-h 127.0.0.1
-set sql_dialect__parameter=-sql_dialect %DEFAULT_SQL_DIALECT%
+REM Any other arguments
+set PARAMETERS=%PARAMETERS% %~1
+shift
+goto parse_args
 
-@REM Added parameters when default parameters are missing
-echo %PARAMETERS% | findstr /c:"-sql_dialect ">nul && (set 
PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%sql_dialect__parameter% 
%PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-pw ">nul && (set PARAMETERS=%PARAMETERS%) || 
(set PARAMETERS=%pw_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-u ">nul && (set PARAMETERS=%PARAMETERS%) || 
(set PARAMETERS=%u_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-p ">nul && (set PARAMETERS=%PARAMETERS%) || 
(set PARAMETERS=%p_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-h ">nul && (set PARAMETERS=%PARAMETERS%) || 
(set PARAMETERS=%h_parameter% %PARAMETERS%)
+:after_parse
 
-echo %PARAMETERS%
+REM Combine all parameters
+set PARAMETERS=%host_param% %port_param% %user_param% %passwd_param% 
%sql_dialect_param% %PARAMETERS%
 
-@REM Add args for Java 11 and above, due to [JEP 396: Strongly Encapsulate JDK 
Internals by Default] (https://openjdk.java.net/jeps/396)
-IF "%JAVA_VERSION%" == "8" (
-    set ILLEGAL_ACCESS_PARAMS=
-) ELSE (
-    set ILLEGAL_ACCESS_PARAMS=--add-opens=java.base/java.lang=ALL-UNNAMED
+REM -------------------------------
+REM Set IOTDB_HOME
+if not defined IOTDB_HOME (
+    pushd %~dp0..\..
+    set IOTDB_HOME=%CD%
+    popd
 )
-set JAVA_OPTS=%JAVA_OPTS% -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
-java %ILLEGAL_ACCESS_PARAMS% %JAVA_OPTS% -cp %CLASSPATH% %MAIN_CLASS% 
%PARAMETERS%
-set ret_code=%ERRORLEVEL%
-goto finally
-
 
-:err
-echo JAVA_HOME environment variable must be set!
-set ret_code=1
-pause
+REM CLI configuration
+set IOTDB_CLI_CONF=%IOTDB_HOME%\conf
+set MAIN_CLASS=org.apache.iotdb.cli.Cli
 
+REM -------------------------------
+REM CLASSPATH setup
+if exist "%IOTDB_HOME%\lib" (
+    set CLASSPATH=%IOTDB_HOME%\lib\*
+) else (
+    set CLASSPATH=%IOTDB_HOME%\..\lib\*
+)
 
-@REM 
-----------------------------------------------------------------------------
-:finally
+REM -------------------------------
+REM JAVA executable
+if defined JAVA_HOME (
+    if exist "%JAVA_HOME%\bin\java.exe" (
+        set JAVA=%JAVA_HOME%\bin\java.exe
+    ) else (
+        set JAVA=java
+    )
+) else (
+    set JAVA=java
+)
 
-ENDLOCAL
+REM -------------------------------
+REM JVM options
+set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
+set 
IOTDB_CLI_PARAMS=-Dlogback.configurationFile=%IOTDB_CLI_CONF%\logback-cli.xml
+set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 
--add-opens=java.base/java.lang=ALL-UNNAMED
 
-EXIT /B %ret_code%
+REM -------------------------------
+REM Run CLI
+echo %PARAMETERS%
+"%JAVA%" %JVM_OPTS% %IOTDB_CLI_PARAMS% -cp "%CLASSPATH%" %MAIN_CLASS% 
%PARAMETERS%
+exit /b %ERRORLEVEL%

Reply via email to