diff --git a/apps/wman/app.rc b/apps/wman/app.rc new file mode 100644 index 0000000..50a3e53 --- /dev/null +++ b/apps/wman/app.rc @@ -0,0 +1,49 @@ +fn conf_enable_wman { + wman_base_uri=$conf_wd + wman_man_path=$* + if(~ $#wman_man_path 0) + wman_man_path=$wman_base_uri + conf_enable_app wman +} + +fn wman_init { + ifs='/' { p=`{echo $req_path | sed 's!^'^$wman_base_uri^'!!'} } + m=$args($#args) + + if(~ $req_path $wman_base_uri) + handler_body_main=wman_list_secs_handler + if not if(~ $req_path $wman_base_uri^*) { + if(~ $req_path $wman_base_uri^*/[a-z0-9]*) + handler_body_main=(wman_page_handler $wman_man_path $p(1) $m) + if not if(~ $req_path $wman_base_uri^*/) + handler_body_main=(wman_sec_list_handler $wman_man_path/$m) + if not if(~ $m [A-Z]*) # Correct badly capitalized links + perm_redirect $wman_base_uri$p/^`{echo $m |tr 'A-Z' 'a-z'} + } +} + +fn wman_sec_list_handler { + ls -F $* | sed $dirfilter^' /\.html$/d' | awk -F/ ' +BEGIN { print "
" } /^$/ {if(n != 1) print; n=1; next} /./ {n=0; print} END { print "" }'
+}
diff --git a/bin/werc.rc b/bin/werc.rc
index 82ba813..e8bba9f 100755
--- a/bin/werc.rc
+++ b/bin/werc.rc
@@ -57,7 +57,8 @@ fn werc_exec_request {
if(~ $local_path */) {
if(test -d $local_path)
local_path=$local_path^'index'
- if not # XXX: This redir might step on apps with synthetic dirs.
+ # XXX: This redir might step on apps with synthetic dirs.
+ if not if(ls `{basename -d $local_path}^* >/dev/null >[2]/dev/null)
perm_redirect `{echo $req_path|sed 's,/+$,,'}
}
if not if(~ $req_path *'.' *',' *';' *':')