#!/mod/bin/jimsh package require cgi source /mod/webif/lib/setup require clipboard.class ts.class puts "Content-Type: text/html; no-cache" puts "Expires: Thu, 01 Jan 1970 00:00:00 GMT" puts "Pragma: nocache" puts "" cgi_input 1 #cgi_dump set cb [[clipboard new {path "/tmp/webif-browse.cb"}] load] set action [cgi_get act list] switch $action { list { if {![$cb size]} { puts "Clipboard is empty" break } puts "
" foreach file [$cb get items] { set img "page_white_copy" if {[$file get action] eq "cut"} { set img "cut" } set path [$file get path] set xpath [cgi_quote_html $path] puts "" puts "" set dfile [file tail $path] if {[string length $dfile] > 25} { set dfile "[string range $dfile 0 22]..." } if {[file isdirectory $path]} { puts "" } puts [cgi_quote_html $dfile] puts " " puts "" } puts "
" puts "" puts "" } add { if {[set path [cgi_get path]] eq "0"} { puts "No path." exit } set dir [cgi_unquote_input [cgi_get dir]] set mode [cgi_get mode copy] foreach p $path { set p [cgi_unquote_input $p] if {$dir ne "0" && ![string match "$dir/*" $p]} { puts "$p not in directory
" continue } if {![$cb present $p]} { $cb add $mode $p puts "Added $p for $mode
" } } $cb save } remove { $cb remove [cgi_unquote_input [cgi_get path]] $cb save } clear { $cb clear $cb save } paste { set dir [cgi_unquote_input [cgi_get dir]] foreach item [$cb get items] { set path [$item get path] set file [file tail $path] set mode [$item get action] puts "Pasting $file" if {[file isdirectory $path]} { # Directory if {$mode eq "cut"} { catch {file rename $path "$dir/$file"} } else { catch {puts [exec /mod/bin/busybox/cp -r \ $path $dir]} } } else { set root [file rootname $path] # Protect special characters in root. # In particular [] characters which are used a lot # for torrent names. regsub -all {([\\["$])} $root {\\\1} root foreach f [glob -nocomplain "${root}.*"] { if {$mode eq "cut"} { catch {file rename $f \ "$dir/[file tail $f]"} } else { catch {file copy $f \ "$dir/[file tail $f]"} } } } } $cb clear $cb save } }