diff options
author | runge <runge> | 2007-05-07 02:30:24 +0000 |
---|---|---|
committer | runge <runge> | 2007-05-07 02:30:24 +0000 |
commit | d1a86ee79f7cf2eb72fc947767add04c813bd73f (patch) | |
tree | 788422db41afbb9b798a3dcc7fc547bc47f13e34 /x11vnc/misc/enhanced_tightvnc_viewer/bin | |
parent | 15d04d46b0fc0fd8cbbf10aafabc641304cdc3f9 (diff) | |
download | libtdevnc-d1a86ee79f7cf2eb72fc947767add04c813bd73f.tar.gz libtdevnc-d1a86ee79f7cf2eb72fc947767add04c813bd73f.zip |
ssvnc: Home dir changing, skip enc warning, memory stick doc.
Diffstat (limited to 'x11vnc/misc/enhanced_tightvnc_viewer/bin')
-rwxr-xr-x | x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ss_vncviewer | 39 | ||||
-rwxr-xr-x | x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ssvnc.tcl | 163 |
2 files changed, 173 insertions, 29 deletions
diff --git a/x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ss_vncviewer b/x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ss_vncviewer index 857cfce..25854cd 100755 --- a/x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ss_vncviewer +++ b/x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ss_vncviewer @@ -218,6 +218,11 @@ do shift done +targ="-t" +if [ "X$SS_VNCVIEWER_NO_T" != "X" ]; then + targ="" +fi + if [ "X$gotalpha" = "X1" ]; then VNCVIEWER_ALPHABLEND=1 export VNCVIEWER_ALPHABLEND @@ -255,6 +260,12 @@ if [ "X$use_ssh" = "X1" -a "X$use_sshssl" = "X" ]; then fi fi +if echo "$orig" | grep '^V[Nn][Cc]://' > /dev/null; then + SSVNC_NO_ENC_WARN=1 + export SSVNC_NO_ENC_WARN + orig=`echo "$orig" | sed -e 's/^...:/vnc:/'` +fi + if echo "$orig" | grep '^vnc://' > /dev/null; then orig=`echo "$orig" | sed -e 's,vnc://,,'` verify="" @@ -266,9 +277,14 @@ elif echo "$orig" | grep '^vncs://' > /dev/null; then orig=`echo "$orig" | sed -e 's,vncs://,,'` elif echo "$orig" | grep '^vncssl://' > /dev/null; then orig=`echo "$orig" | sed -e 's,vncssl://,,'` +elif echo "$orig" | grep '^vnc+ssl://' > /dev/null; then + orig=`echo "$orig" | sed -e 's,vnc.ssl://,,'` elif echo "$orig" | grep '^vncssh://' > /dev/null; then orig=`echo "$orig" | sed -e 's,vncssh://,,'` use_ssh=1 +elif echo "$orig" | grep '^vnc+ssh://' > /dev/null; then + orig=`echo "$orig" | sed -e 's,vnc.ssh://,,'` + use_ssh=1 fi if [ "X$reverse" != "X" -a "X$direct_connect" = "X" ]; then VNCVIEWER_LISTEN_LOCALHOST=1 @@ -438,8 +454,8 @@ if [ "X$use_ssh" = "X1" ]; then proxport=`findfree 3500` echo echo "Running 1st ssh proxy:" - echo "$ssh -f -x -p $ssh_port1 -t -e none -L $proxport:$ssh_host2:$ssh_port2 $ssh_host1 \"sleep 30\"" - $ssh -f -x -p $ssh_port1 -t -e none -L $proxport:$ssh_host2:$ssh_port2 $ssh_host1 "sleep 30" + echo "$ssh -f -x -p $ssh_port1 $targ -e none -L $proxport:$ssh_host2:$ssh_port2 $ssh_host1 \"sleep 30\"" + $ssh -f -x -p $ssh_port1 $targ -e none -L $proxport:$ssh_host2:$ssh_port2 $ssh_host1 "sleep 30" ssh_args="$ssh_args -o NoHostAuthenticationForLocalhost=yes" sleep 1 stty sane @@ -475,18 +491,18 @@ if [ "X$use_ssh" = "X1" ]; then pmark=`sh -c 'echo $$'` # the -t option actually speeds up typing response via VNC!! if [ "X$SS_VNCVIEWER_SSH_ONLY" != "X" ]; then - echo "$ssh -x -p $ssh_port -t $C $ssh_args $ssh_host \"$info\"" + echo "$ssh -x -p $ssh_port $targ $C $ssh_args $ssh_host \"$info\"" echo "" - $ssh -x -p $ssh_port -t $C $ssh_args $ssh_host "$ssh_cmd" + $ssh -x -p $ssh_port $targ $C $ssh_args $ssh_host "$ssh_cmd" exit $? elif [ "X$SS_VNCVIEWER_NO_F" != "X" ]; then - echo "$ssh -x -p $ssh_port -t $C $ssh_redir $ssh_args $ssh_host \"$info\"" + echo "$ssh -x -p $ssh_port $targ $C $ssh_redir $ssh_args $ssh_host \"$info\"" echo "" - $ssh -x -p $ssh_port -t $C $ssh_redir $ssh_args $ssh_host "$ssh_cmd" + $ssh -x -p $ssh_port $targ $C $ssh_redir $ssh_args $ssh_host "$ssh_cmd" else - echo "$ssh -x -f -p $ssh_port -t $C $ssh_redir $ssh_args $ssh_host \"$info\"" + echo "$ssh -x -f -p $ssh_port $targ $C $ssh_redir $ssh_args $ssh_host \"$info\"" echo "" - $ssh -x -f -p $ssh_port -t $C $ssh_redir $ssh_args $ssh_host "$ssh_cmd" + $ssh -x -f -p $ssh_port $targ $C $ssh_redir $ssh_args $ssh_host "$ssh_cmd" fi if [ "$?" != "0" ]; then echo "" @@ -774,12 +790,15 @@ if [ "X$direct_connect" != "X" ]; then echo "" echo "** NOTE: THERE WILL BE NO SSL OR SSH ENCRYPTION **" echo "" - if type printf > /dev/null 2>&1; then + if [ "X$SSVNC_NO_ENC_WARN" != "X" ]; then + sleep 1 + elif type printf > /dev/null 2>&1; then printf "Are you sure you want to continue? [y]/n " + read x else echo -n "Are you sure you want to continue? [y]/n " + read x fi - read x if [ "X$x" = "Xn" ]; then exit 1 fi diff --git a/x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ssvnc.tcl b/x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ssvnc.tcl index adf6e14..4ba945a 100755 --- a/x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ssvnc.tcl +++ b/x11vnc/misc/enhanced_tightvnc_viewer/bin/util/ssvnc.tcl @@ -276,7 +276,8 @@ proc help {} { Sorry we do not make this easy to figure out how to do (e.g. a button on the main panel), but the goal of SSVNC is secure - connections! + connections! Set the env var SSVNC_NO_ENC_WARN=1 (or use Vnc://) + to skip the warning prompts. 6) Reverse VNC connections are possible as well. Go to Options and select "Reverse VNC connection". In the 'VNC Host:Display' entry @@ -294,6 +295,30 @@ proc help {} { On Windows set it to "NOTEPAD" or similar; you can't control the port though. It is usually 5930. + + 8) On Unix if you are going to an older SSH server (e.g. Solaris 10), + you will probably need to set the env. var. SS_VNCVIEWER_NO_T=1 + to disable the ssh "-t" option being used (that can prevent the + command from being run). + + 9) In the VNC Host:Display entry you can also use these "URL-like" + prefixes: vncs://host:0, vncssl://host:0, and vnc+ssl://host:0 + (for SSL) and vncssh://host:0 and vnc+ssh://host:0 for SSH. There + is no need to toggle the SSL/SSH else. These also work from the + command line, e.g.: ssvnc vnc+ssh://mymachine:10 + + 10) Mobile USB memory stick / flash drive usage: You can unpack ssvnc + to a flash drive for impromptu usage (e.g. from a friends computer) + If you create a directory "Home" in the toplevel ssvnc directory, + then that will be the default location for your VNC profiles and + certs. So they follow the drive this way. If you run like this: + "ssvnc ." or "ssvnc.exe ." the "Home" directory will be created for + you. WARNING: if you use ssvnc from an "Internet Cafe", i.e. an + untrusted computer, an intruder may be capturing keystrokes, etc. + + You can also set the SSVNC_HOME env. var. to point to any + directory you want. It can be set after starting ssvnc by putting + HOME=/path/to/dir in the Host:Display box and clicking "Connect". } .h.f.t insert end $msg @@ -2065,7 +2090,7 @@ proc do_unix_pre {tag proxy hp pk_hp} { set tee "" if {$use_smbmnt} { - set tee $env(HOME) + set tee $env(SSVNC_HOME) append tee "/.tee-etv$tag" set fh "" catch {set fh [open $tee "w"]} @@ -2182,6 +2207,7 @@ proc port_knock_only {hp {mode KNOCK}} { proc direct_connect_msg {} { set msg "" + global env globalize if {$use_sshssl} { append msg " - SSH + SSL tunnelling\n" @@ -2190,6 +2216,9 @@ proc direct_connect_msg {} { } else { append msg " - SSL tunnelling\n" } + if [info exists env(SSVNC_NO_ENC_WARN)] { + set msg "" + } if {$use_smbmnt} { append msg " - SMB Mount Port Redirection\n" } @@ -2512,6 +2541,7 @@ proc launch_unix {hp} { set pk_hp "" set skip_ssh 0 + if [regexp {vnc://} $hp] { set skip_ssh 1 direct_connect_msg @@ -2753,7 +2783,7 @@ proc launch_unix {hp} { set passwdfile "" if {$vncauth_passwd != ""} { global use_listen - set passwdfile "$env(HOME)/.vncauth_tmp.[pid]" + set passwdfile "$env(SSVNC_HOME)/.vncauth_tmp.[pid]" catch {exec vncstorepw $vncauth_passwd $passwdfile} catch {exec chmod 600 $passwdfile} if {$use_listen} { @@ -3041,6 +3071,14 @@ proc launch {{hp ""}} { set hp [get_vncdisplay] } + if {[regexp {^HOME=} $hp] || [regexp {^SSVNC_HOME=} $hp]} { + set t $hp + regsub {^.*HOME=} $t "" t + set env(SSVNC_HOME) $t + mesg "set SSVNC_HOME to $t" + return 0 + } + regsub {[ ]*cmd=.*$} $hp "" tt if {[regexp {^[ ]*$} $tt]} { @@ -3078,12 +3116,17 @@ proc launch {{hp ""}} { mesg "\"$tcl_platform(os)\" | \"$tcl_platform(osVersion)\"" after 1000 } + + if [regexp {V[Nn][Cc]://} $hp] { + set env(SSVNC_NO_ENC_WARN) 1 + regsub {V[Nn][Cc]://} $hp "vnc://" hp + } + if {! $is_windows} { launch_unix $hp return } ############################################################## - if [regexp {vnc://} $hp] { direct_connect_msg regsub {vnc://} $hp "" hp @@ -3095,9 +3138,15 @@ proc launch {{hp ""}} { } elseif [regexp {vncssl://} $hp] { set use_ssl 1 regsub {vncssl://} $hp "" hp + } elseif [regexp {vnc\+ssl://} $hp] { + set use_ssl 1 + regsub {vnc\+ssl://} $hp "" hp } elseif [regexp {vncssh://} $hp] { set use_ssh 1 regsub {vncssh://} $hp "" hp + } elseif [regexp {vnc\+ssh://} $hp] { + set use_ssh 1 + regsub {vnc\+ssh://} $hp "" hp } check_ssh_needed @@ -3548,14 +3597,14 @@ proc get_idir_certs {str} { } if {$idir == ""} { if {$is_windows} { - if [info exists env(HOME)] { - set t "$env(HOME)/ss_vnc" + if [info exists env(SSVNC_HOME)] { + set t "$env(SSVNC_HOME)/ss_vnc" regsub -all {\\} $t "/" t regsub -all {//*} $t "/" t if {! [file isdirectory $t]} { catch {file mkdir $t} } - set t "$env(HOME)/ss_vnc/certs" + set t "$env(SSVNC_HOME)/ss_vnc/certs" regsub -all {\\} $t "/" t regsub -all {//*} $t "/" t if {! [file isdirectory $t]} { @@ -3574,8 +3623,8 @@ proc get_idir_certs {str} { } } if {$idir == ""} { - if [info exists env(HOME)] { - set t "$env(HOME)/.vnc/certs" + if [info exists env(SSVNC_HOME)] { + set t "$env(SSVNC_HOME)/.vnc/certs" if [file isdirectory $t] { set idir $t } @@ -4653,8 +4702,8 @@ proc get_profiles_dir {} { set dir "" if {$is_windows} { - if [info exists env(HOME)] { - set t "$env(HOME)/ss_vnc" + if [info exists env(SSVNC_HOME)] { + set t "$env(SSVNC_HOME)/ss_vnc" regsub -all {\\} $t "/" t regsub -all {//*} $t "/" t if {! [file isdirectory $t]} { @@ -4675,8 +4724,8 @@ proc get_profiles_dir {} { set dir $t } } - } elseif [info exists env(HOME)] { - set t "$env(HOME)/.vnc" + } elseif [info exists env(SSVNC_HOME)] { + set t "$env(SSVNC_HOME)/.vnc" if [file isdirectory $t] { set dir $t set s "$t/profiles" @@ -7215,7 +7264,7 @@ proc do_port_knock {hp mode} { global env set pfile "payload$pi.txt" if {! $is_windows} { - set pfile "$env(HOME)/.$pfile" + set pfile "$env(SSVNC_HOME)/.$pfile" } set pfiles($pi) $pfile incr pi @@ -7663,7 +7712,7 @@ proc ssh_agent_restart {} { mesg "could not find ssh-add in PATH" return } - set tmp $env(HOME)/.vnc-sa[pid] + set tmp $env(SSVNC_HOME)/.vnc-sa[pid] set fh "" catch {set fh [open $tmp "w"]} if {$fh == ""} { @@ -7938,8 +7987,8 @@ proc check_writable {} { if ![file exists $test] { global env - if [info exists env(HOME)] { - set dir "$env(HOME)/ss_vnc/cache" + if [info exists env(SSVNC_HOME)] { + set dir "$env(SSVNC_HOME)/ss_vnc/cache" catch {file mkdir $dir} if ![file exists $dir] { return @@ -7973,6 +8022,75 @@ if {[regexp -nocase {Windows.9} $tcl_platform(os)]} { set is_win9x 0 } +# set SSVNC_HOME to HOME in case we modify it for mobile use: +if [info exists env(HOME)] { + if {! [info exists env(SSVNC_HOME)]} { + set env(SSVNC_HOME) $env(HOME) + } +} + +# For mobile use, e.g. from a USB flash drive, we look for a "home" or "Home" +# directory relative to this script where the profiles and certs will be kept +# by default. +if [file exists $buck_zero] { + #puts "$buck_zero" + set up [file dirname $buck_zero] + + if {$up == "."} { + # this is actually bad news on windows because we cd'd to util. + set up ".." + } else { + set up [file dirname $up] + } + set dirs [list $up] + + if {! $is_windows && $up != ".."} { + # get rid of bin + set up [file dirname $up] + lappend dirs $up + } + + if {$argc > 0} { + set i [lindex $argv 0] + if {$i == "."} { + if {![file isdirectory "$up/home"] && ![file isdirectory "$up/Home"]} { + catch {file mkdir "$up/Home"} + } + } + } + + set gotone 0 + + foreach d $dirs { + set try "$d/home" + #puts "$try" + if [file isdirectory $try] { + set env(SSVNC_HOME) $try + set gotone 1 + break + } + set try "$d/Home" + #puts "$try" + if [file isdirectory $try] { + set env(SSVNC_HOME) $try + set gotone 1 + break + } + } + if {$gotone} { + set b "" + if {$is_windows} { + set b "$env(SSVNC_HOME)/ss_vnc" + } else { + set b "$env(SSVNC_HOME)/.vnc" + } + catch {file mkdir $b} + catch {file mkdir "$b/certs"} + catch {file mkdir "$b/profiles"} + } + #puts "HOME: $env(SSVNC_HOME)" +} + if {$is_windows} { check_writable } @@ -7987,8 +8105,8 @@ if {$uname == "Darwin"} { if {! [info exists env(DISPLAY)]} { set darwin_cotvnc 1 } - if [info exists env(HOME)] { - set t "$env(HOME)/.vnc" + if [info exists env(SSVNC_HOME)] { + set t "$env(SSVNC_HOME)/.vnc" if {! [file exists $t]} { catch {file mkdir $t} } @@ -8123,6 +8241,12 @@ update if {$argc > 0} { set item [lindex $argv 0] + if {$item == "."} { + set item "" + if {$argc > 1} { + set item [lindex $argv 1] + } + } if {$item != ""} { if [file exists $item] { load_profile . $item @@ -8148,3 +8272,4 @@ if {$argc > 0} { } } +#mesg "$buck_zero" |