-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfile_manager.tcl
executable file
·46 lines (37 loc) · 1.13 KB
/
file_manager.tcl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env tclsh
source "lib/wapp/wapp.tcl"
source "lib/wapp/wapp-routes.tcl"
# Load the fileutil package
package require fileutil
# Render the file manager UI
proc render_file_manager {path} {
set files [glob -nocomplain -directory $path *]
set content "<h1>File Manager</h1>"
append content "<ul>"
foreach file $files {
set filename [file tail $file]
set url "file=[string map { % %25 / %2F } $file]"
if {[file isdirectory $file]} {
append content "<li><a href=\"/?$url\">$filename/</a></li>"
} else {
append content "<li><a href=\"/file?$url\">$filename</a></li>"
}
}
append content "</ul>"
return $content
}
# Update the wapp-default procedure
proc wapp-default {} {
set path [wapp-param file .]
if {[file isfile $path]} {
set content [fileutil::cat $path]
wapp-subst "<pre>$content</pre>"
} elseif {[file isdirectory $path]} {
set content [render_file_manager $path]
wapp-subst $content
} else {
set content "<h1>File Not Found</h1>"
wapp-subst $content
}
}
wapp-start $argv