Server IP : 103.119.228.120 / Your IP : 3.149.24.145 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /bin/ |
Upload File : |
#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # share an xterm with other users # See xkibitz(1) man page for complete info. # Compare with kibitz. # Author: Don Libes, NIST # Version: 1.2 proc help {} { puts "Commands Meaning" puts "-------- -------" puts "return return to program" puts "= list" puts "+ <display> add" puts "- <tag> drop" puts "where <display> is an X display name such as nist.gov or nist.gov:0.0" puts "and <tag> is a tag from the = command." puts "+ and - require whitespace before argument." puts {return command must be spelled out ("r", "e", "t", ...).} } proc prompt1 {} { return "xkibitz> " } proc h {} help proc ? {} help # disable history processing - there seems to be some incestuous relationship # between history and unknown in Tcl 8.0 proc history {args} {} proc unknown {args} { puts "$args: invalid command" help } set tag2pid(0) [pid] set pid2tty([pid]) "/dev/tty" if {[info exists env(DISPLAY)]} { set pid2display([pid]) $env(DISPLAY) } else { set pid2display([pid]) "" } # small int allowing user to more easily identify display # maxtag always points at highest in use set maxtag 0 proc + {display} { global ids pid2display pid2tag tag2pid maxtag pid2sid global pid2tty env if {![string match *:* $display]} { append display :0.0 } if {![info exists env(XKIBITZ_XTERM_ARGS)]} { set env(XKIBITZ_XTERM_ARGS) "" } set dummy1 [open /dev/null] set dummy2 [open /dev/null] spawn -pty -noecho close $dummy1 close $dummy2 stty raw -echo < $spawn_out(slave,name) # Linux needs additional stty, sounds like a bug in its stty to me. # raw should imply this stuff, no? stty -icrnl -icanon < $spawn_out(slave,name) regexp ".*(.)(.)" $spawn_out(slave,name) dummy c1 c2 if {[string compare $c1 "/"] == 0} { # On Pyramid and AIX, ttynames such as /dev/pts/1 # requre suffix to be padded with a 0 set c1 0 } set pid [eval exec xterm \ -display $display \ -geometry [stty columns]x[stty rows] \ -S$c1$c2$spawn_out(slave,fd) \ $env(XKIBITZ_XTERM_ARGS) &] close -slave # xterm first sends back window id, discard log_user 0 expect { eof {wait;return} \n } log_user 1 lappend ids $spawn_id set pid2display($pid) $display incr maxtag set tag2pid($maxtag) $pid set pid2tag($pid) $maxtag set pid2sid($pid) $spawn_id set pid2tty($pid) $spawn_out(slave,name) return } proc = {} { global pid2display tag2pid pid2tty puts "Tag Size Display" foreach tag [lsort -integer [array names tag2pid]] { set pid $tag2pid($tag) set tty $pid2tty($pid) puts [format "%3d [stty columns < $tty]x[stty rows < $tty] $pid2display($pid)" $tag] } } proc - {tag} { global tag2pid pid2tag pid2display maxtag ids pid2sid global pid2tty if {![info exists tag2pid($tag)]} { puts "no such tag" return } if {$tag == 0} { puts "cannot drop self" return } set pid $tag2pid($tag) # close and remove spawn_id from list set spawn_id $pid2sid($pid) set index [lsearch $ids $spawn_id] set ids [lreplace $ids $index $index] exec kill -9 $pid close wait unset tag2pid($tag) unset pid2tag($pid) unset pid2display($pid) unset pid2sid($pid) unset pid2tty($pid) # lower maxtag if possible while {![info exists tag2pid($maxtag)]} { incr maxtag -1 } } rename exit exitReal proc exit {} { global pid2display unset pid2display([pid]) ;# avoid killing self foreach pid [array names pid2display] { catch {exec kill -9 $pid} } exitReal } trap exit HUP trap { set r [stty rows] set c [stty columns] stty rows $r columns $c < $app_tty foreach pid [array names pid2tty] { if {$pid == [pid]} continue stty rows $r columns $c < $pid2tty($pid) } } WINCH set escape \035 ;# control-right-bracket set escape_printable "^\]" while {[llength $argv]>0} { set flag [lindex $argv 0] switch -- $flag \ "-escape" { set escape [lindex $argv 1] set escape_printable $escape set argv [lrange $argv 2 end] } "-display" { + [lindex $argv 1] set argv [lrange $argv 2 end] } default { break } } if {[llength $argv]>0} { eval spawn -noecho $argv } else { spawn -noecho $env(SHELL) } set prog $spawn_id set app_tty $spawn_out(slave,name) puts "Escape sequence is $escape_printable" interact { -input $user_spawn_id -reset $escape { puts "\nfor help enter: ? or h or help" interpreter -eof exit } -output $prog -input ids -output $prog -input $prog eof exit -output $user_spawn_id -output ids }