@@ -796,7 +796,7 @@ generate_slipnet_url() {
796796 local name=" ${subdomain} .${DOMAIN} "
797797 local ns_domain=" ${subdomain} .${DOMAIN} "
798798 local resolver=" 8.8.8.8:53:0"
799- local ssh_enabled=" " ssh_port=" 22" ssh_host=" 127.0.0.1"
799+ local ssh_enabled=" 0 " ssh_port=" 22" ssh_host=" 127.0.0.1"
800800 local auth_mode=" 0"
801801
802802 if [[ -n " $ssh_user " && -n " $ssh_pass " ]]; then
@@ -1055,18 +1055,22 @@ do_remove_tunnel() {
10551055 exit 1
10561056 fi
10571057
1058+ # Cache tunnel list output (reused throughout)
1059+ local tunnel_output
1060+ tunnel_output=$( dnstm tunnel list 2> /dev/null || true)
1061+
10581062 # Show current tunnels
10591063 print_header " Remove Tunnel"
10601064 echo " "
10611065 print_info " Current tunnels:"
10621066 echo " "
1063- dnstm tunnel list 2> /dev/null || true
1067+ echo " $tunnel_output "
10641068 echo " "
10651069
10661070 # If no tag given, ask interactively
10671071 if [[ -z " $target_tag " ]]; then
10681072 local tags
1069- tags=$( dnstm tunnel list 2> /dev/null | grep -o ' tag=[^ ]*' | sed ' s/tag=//' || true)
1073+ tags=$( echo " $tunnel_output " | grep -o ' tag=[^ ]*' | sed ' s/tag=//' || true)
10701074 if [[ -z " $tags " ]]; then
10711075 print_warn " No tunnels found."
10721076 exit 0
@@ -1077,7 +1081,7 @@ do_remove_tunnel() {
10771081 local tag_arr=()
10781082 for tag in $tags ; do
10791083 local domain_info
1080- domain_info=$( dnstm tunnel list 2> /dev/null | awk -v t=" tag=${tag} " ' {for(i=1;i<=NF;i++) if($i==t){print;next}}' | grep -o ' domain=[^ ]*' | sed ' s/domain=//' || true)
1084+ domain_info=$( echo " $tunnel_output " | awk -v t=" tag=${tag} " ' {for(i=1;i<=NF;i++) if($i==t){print;next}}' | grep -o ' domain=[^ ]*' | sed ' s/domain=//' || true)
10811085 echo -e " ${BOLD}${i} )${NC} ${tag} ${DIM} (${domain_info} )${NC} "
10821086 tag_arr+=(" $tag " )
10831087 i=$(( i + 1 ))
@@ -1100,16 +1104,16 @@ do_remove_tunnel() {
11001104 fi
11011105
11021106 # Verify tunnel exists
1103- if ! dnstm tunnel list 2> /dev/null | grep -o ' tag=[^ ]*' | grep -qxF " tag=${target_tag} " ; then
1107+ if ! echo " $tunnel_output " | grep -o ' tag=[^ ]*' | grep -qxF " tag=${target_tag} " ; then
11041108 print_fail " Tunnel '${target_tag} ' not found."
11051109 echo " "
11061110 print_info " Available tunnels:"
1107- dnstm tunnel list 2> /dev/null | grep -o ' tag=[^ ]*' | sed ' s/tag=/ /' || true
1111+ echo " $tunnel_output " | grep -o ' tag=[^ ]*' | sed ' s/tag=/ /' || true
11081112 exit 1
11091113 fi
11101114
11111115 local domain_info
1112- domain_info=$( dnstm tunnel list 2> /dev/null | awk -v t=" tag=${target_tag} " ' {for(i=1;i<=NF;i++) if($i==t){print;next}}' | grep -o ' domain=[^ ]*' | sed ' s/domain=//' || true)
1116+ domain_info=$( echo " $tunnel_output " | awk -v t=" tag=${target_tag} " ' {for(i=1;i<=NF;i++) if($i==t){print;next}}' | grep -o ' domain=[^ ]*' | sed ' s/domain=//' || true)
11131117
11141118 echo " "
11151119 if ! prompt_yn " Remove tunnel '${target_tag} ' (${domain_info} )?" " n" ; then
@@ -1588,6 +1592,7 @@ do_manage_users() {
15881592 echo " "
15891593 local new_user new_pass
15901594 new_user=$( prompt_input " Enter username for new tunnel user" )
1595+ new_user=$( echo " $new_user " | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
15911596 if [[ -z " $new_user " ]]; then
15921597 print_fail " Username cannot be empty"
15931598 continue
@@ -1597,6 +1602,11 @@ do_manage_users() {
15971602 continue
15981603 fi
15991604 new_pass=$( prompt_input " Enter password (leave blank to auto-generate)" )
1605+ new_pass=$( echo " $new_pass " | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
1606+ if [[ " $new_pass " == * " |" * ]]; then
1607+ print_fail " Password cannot contain the | character"
1608+ continue
1609+ fi
16001610 echo " "
16011611 if [[ -n " $new_pass " ]]; then
16021612 if sshtun-user create " $new_user " --insecure-password " $new_pass " 2>&1 ; then
@@ -1616,15 +1626,25 @@ do_manage_users() {
16161626 echo " "
16171627 local upd_user upd_pass
16181628 upd_user=$( prompt_input " Enter username to update" )
1629+ upd_user=$( echo " $upd_user " | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
16191630 if [[ -z " $upd_user " ]]; then
16201631 print_fail " Username cannot be empty"
16211632 continue
16221633 fi
1634+ if [[ " $upd_user " == * " |" * ]]; then
1635+ print_fail " Username cannot contain the | character"
1636+ continue
1637+ fi
16231638 upd_pass=$( prompt_input " Enter new password" )
1639+ upd_pass=$( echo " $upd_pass " | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
16241640 if [[ -z " $upd_pass " ]]; then
16251641 print_fail " Password cannot be empty"
16261642 continue
16271643 fi
1644+ if [[ " $upd_pass " == * " |" * ]]; then
1645+ print_fail " Password cannot contain the | character"
1646+ continue
1647+ fi
16281648 echo " "
16291649 if sshtun-user update " $upd_user " --insecure-password " $upd_pass " 2>&1 ; then
16301650 print_ok " Password updated for '${upd_user} '"
@@ -2428,6 +2448,7 @@ step_verify_microsocks() {
24282448 if prompt_yn " Enable SOCKS5 authentication for the proxy?" " y" ; then
24292449 echo " "
24302450 SOCKS_USER=$( prompt_input " Enter SOCKS proxy username" " proxy" )
2451+ SOCKS_USER=$( echo " $SOCKS_USER " | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
24312452 if [[ -z " $SOCKS_USER " ]]; then
24322453 print_fail " Username cannot be empty"
24332454 SOCKS_USER=" proxy"
@@ -2438,6 +2459,7 @@ step_verify_microsocks() {
24382459 SOCKS_USER=" proxy"
24392460 fi
24402461 SOCKS_PASS=$( prompt_input " Enter SOCKS proxy password" )
2462+ SOCKS_PASS=$( echo " $SOCKS_PASS " | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
24412463 if [[ -z " $SOCKS_PASS " ]]; then
24422464 print_fail " Password cannot be empty — disabling SOCKS auth"
24432465 SOCKS_USER=" "
@@ -2574,6 +2596,7 @@ step_ssh_user() {
25742596
25752597 # Get username
25762598 SSH_USER=$( prompt_input " Enter username for SSH tunnel user" " tunnel" )
2599+ SSH_USER=$( echo " $SSH_USER " | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
25772600 if [[ -z " $SSH_USER " ]]; then
25782601 print_fail " Username cannot be empty"
25792602 return
@@ -2585,6 +2608,7 @@ step_ssh_user() {
25852608
25862609 # Get password
25872610 SSH_PASS=$( prompt_input " Enter password for SSH tunnel user" )
2611+ SSH_PASS=$( echo " $SSH_PASS " | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
25882612 if [[ -z " $SSH_PASS " ]]; then
25892613 print_fail " Password cannot be empty"
25902614 return
0 commit comments