wok-tiny annotate wiki/stuff/var/www/wiki/plugins/wkp_Admin.sh @ rev 142
Remove ashism ==
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed Feb 27 17:43:23 2019 +0100 (2019-02-27) |
parents | 48d2c4c7a227 |
children |
rev | line source |
---|---|
pascal@100 | 1 plugin="<a href=\"?action=admin\" title=\"Wiki administration\">Administration</a>" |
pascal@100 | 2 description_fr="Administration du Wiki" |
pascal@100 | 3 description="Wiki administration" |
pascal@100 | 4 |
pascal@100 | 5 admin_enable() |
pascal@100 | 6 { |
pascal@100 | 7 [ -n "$(POST $1)" ] || return |
pascal@100 | 8 chmod 444 $4/$2* |
pascal@100 | 9 for i in $(POST); do |
pascal@100 | 10 case "$i" in $3*) chmod 755 $4/${i/$3/$2}.* ;; esac |
pascal@100 | 11 done |
pascal@100 | 12 } |
pascal@100 | 13 |
pascal@100 | 14 admin_download() |
pascal@100 | 15 { |
pascal@100 | 16 cat - $1 <<EOT |
pascal@100 | 17 Content-Type: application/octet-stream |
pascal@100 | 18 Content-Length: $(stat -c %s $1) |
pascal@100 | 19 Content-Disposition: attachment; filename=${2:-$1} |
pascal@100 | 20 |
pascal@100 | 21 EOT |
pascal@100 | 22 } |
pascal@100 | 23 |
pascal@100 | 24 action() |
pascal@100 | 25 { |
pascal@100 | 26 case "$1" in |
pascal@100 | 27 list|config|admin);; |
pascal@100 | 28 backup) file=$(FILE file tmpname) |
pascal@100 | 29 if [ -z "$file" ]; then |
pascal@100 | 30 file=$(mktemp -p /tmp) |
pascal@100 | 31 find */ | cpio -o -H newc | gzip -9 > $file |
pascal@100 | 32 admin_download $file wiki-$(date '+%Y%m%d%H%M').cpio.gz |
pascal@100 | 33 rm -f $file |
pascal@100 | 34 exit 0 |
pascal@100 | 35 else |
pascal@100 | 36 zcat $file | cpio -idmu $(echo */ | sed 's|/||g') |
pascal@100 | 37 rm -rf $(dirname $file) |
pascal@100 | 38 return 1 |
pascal@100 | 39 fi ;; |
pascal@100 | 40 *) return 1 ;; |
pascal@100 | 41 esac |
pascal@100 | 42 PAGE_TITLE_link=false |
pascal@100 | 43 editable=false |
pascal@100 | 44 lang="${HTTP_ACCEPT_LANGUAGE%%[,;_-]*}" |
pascal@100 | 45 PAGE_TITLE="Administration" |
pascal@100 | 46 curpass="$(POST curpass)" |
pascal@100 | 47 secret="admin.secret" |
pascal@100 | 48 if [ -n "$(POST setpass)" ]; then |
pascal@100 | 49 if [ -z "$curpass" ]; then # unauthorized |
pascal@142 | 50 if [ ! -s $secret -o "$(cat $secret 2> /dev/null)" = \ |
pascal@100 | 51 "$(echo $(POST password) | md5sum)" ]; then |
pascal@100 | 52 curpass="$(POST password)" |
pascal@100 | 53 fi |
pascal@100 | 54 fi |
pascal@100 | 55 [ -n "$curpass" ] && echo $curpass | md5sum > $secret && |
pascal@100 | 56 chmod 400 $secret |
pascal@100 | 57 fi |
pascal@100 | 58 if [ -n "$(POST save)" ]; then |
pascal@100 | 59 admin_download $(POST file) |
pascal@100 | 60 exit 0 |
pascal@100 | 61 fi |
pascal@100 | 62 [ -n "$(POST restore)" ] && mv -f $(FILE data tmpname) $(POST file) |
pascal@100 | 63 admin_enable Locales config- config_ . |
pascal@100 | 64 admin_enable Plugins wkp_ wkp_ plugins |
pascal@100 | 65 admin_enable Pages '' page pages |
pascal@100 | 66 disabled="disabled=disabled" |
pascal@100 | 67 [ -n "$curpass" ] && disabled="" && |
pascal@100 | 68 curpass="<input type=\"hidden\" name=\"curpass\" value=\"$curpass\" /> |
pascal@100 | 69 " |
pascal@100 | 70 hr="$curpass<tr><td colspan=2><hr /></td><tr />" |
pascal@100 | 71 CONTENT=" |
pascal@100 | 72 <table width=\"100%\"> |
pascal@100 | 73 <form method=\"post\" action=\"?action=admin\"> |
pascal@100 | 74 <tr><td><h2>$MDP</h2></td> |
pascal@100 | 75 <td><input type=\"text\" name=\"password\" />$curpass |
pascal@100 | 76 <input type=\"submit\" value=\"$DONE_BUTTON\" name=\"setpass\" /></td></tr> |
pascal@100 | 77 </form> |
pascal@100 | 78 " |
pascal@100 | 79 mform="form method=\"post\" enctype=\"multipart/form-data\" action=\"?action" |
pascal@100 | 80 while read section files test; do |
pascal@100 | 81 CONTENT="$CONTENT |
pascal@100 | 82 <$mform=admin\"> |
pascal@100 | 83 $hr |
pascal@100 | 84 <tr><td><h2>$section</h2></td> |
pascal@100 | 85 <td><input type=\"submit\" $disabled value=\"$DONE_BUTTON\" name=\"$section\" /></td></tr> |
pascal@100 | 86 " |
pascal@100 | 87 for i in $files ; do |
pascal@100 | 88 case "$section" in |
pascal@100 | 89 Plugins) |
pascal@100 | 90 plugin= |
pascal@100 | 91 eval $(grep ^plugin= $i) |
pascal@100 | 92 [ -n "$plugin" ] || continue |
pascal@100 | 93 eval $(grep ^description= $i) |
pascal@100 | 94 alt="$(grep ^description_$lang= $i)" |
pascal@100 | 95 [ -n "$alt" ] && eval $(echo "$alt" | sed 's/_..=/=/') |
pascal@100 | 96 help= |
pascal@100 | 97 eval $(grep ^help= $i) |
pascal@100 | 98 alt="$(grep ^help_$lang= $i)" |
pascal@100 | 99 [ -n "$alt" ] && eval $(echo "$alt" | sed 's/_..=/=/') |
pascal@100 | 100 name="$(basename $i .sh)" |
pascal@100 | 101 [ -n "$help" ] && description=" <a href='?page=$help' title='$plugin help page'>$description</a>" |
pascal@100 | 102 ;; |
pascal@100 | 103 Locales) |
pascal@100 | 104 j=${i#config-} |
pascal@100 | 105 j=${j%.sh} |
pascal@100 | 106 [ -n "$j" ] || continue |
pascal@100 | 107 name="config_$j" |
pascal@100 | 108 plugin="$j" |
pascal@100 | 109 description="$(. ./$i ; echo $WIKI_TITLE)" |
pascal@100 | 110 ;; |
pascal@100 | 111 Pages) |
pascal@100 | 112 j="$(basename $i .txt)" |
pascal@100 | 113 plugin="<a href=\"?page=$j\">$j</a>" |
pascal@100 | 114 name="page$j" |
pascal@100 | 115 description="$([ -w $i ] || echo -n $PROTECTED_BUTTON)" |
pascal@100 | 116 ;; |
pascal@100 | 117 esac |
pascal@100 | 118 CONTENT="$CONTENT |
pascal@100 | 119 <tr><td><b> |
pascal@100 | 120 <input type=checkbox $disabled $([ $test $i ] && echo 'checked=checked ') name=\"$name\" /> |
pascal@100 | 121 $plugin</b></td><td><i>$description</i></td></tr>" |
pascal@100 | 122 done |
pascal@100 | 123 CONTENT="$CONTENT</form>" |
pascal@100 | 124 done <<EOT |
pascal@100 | 125 Plugins $plugins_dir/*.sh -x |
pascal@100 | 126 Locales config-*.sh -x |
pascal@100 | 127 Pages pages/*.txt -w |
pascal@100 | 128 EOT |
pascal@100 | 129 CONTENT="$CONTENT |
pascal@100 | 130 <$mform=admin\"> |
pascal@100 | 131 $hr |
pascal@100 | 132 <tr><td><h2>Configuration</h2></td> |
pascal@100 | 133 <td><select name="file" $disabled> |
pascal@100 | 134 $(for i in template.html style.css config*.sh; do |
pascal@100 | 135 [ -x $i ] && echo "<option>$i</option>"; done) |
pascal@100 | 136 </select> |
pascal@100 | 137 <input type=\"submit\" $disabled value=\"$DONE_BUTTON\" name=\"save\" /> |
pascal@100 | 138 <input type=\"file\" $disabled name=\"data\" /> |
pascal@100 | 139 <input type=\"submit\" $disabled value=\"$RESTORE\" name=\"restore\" /></td></tr> |
pascal@100 | 140 </form> |
pascal@100 | 141 <$mform=backup\"> |
pascal@100 | 142 $hr |
pascal@100 | 143 <tr><td><h2>Data</h2></td> |
pascal@100 | 144 <td><input type=\"submit\" $disabled name=\"save\" value=\"$DONE_BUTTON\" /> |
pascal@100 | 145 <input type=\"file\" $disabled name=\"file\" value=\"file\" /> |
pascal@100 | 146 <input type=\"submit\" $disabled name=\"restore\" value=\"$RESTORE\" /> |
pascal@100 | 147 </td></tr> |
pascal@100 | 148 $(du -hs */ | sed 's|\(.*\)\t\(.*\)|<tr><td><b>\1</b></td><td><i>\2</i></td></tr>|') |
pascal@100 | 149 </form> |
pascal@100 | 150 </table> |
pascal@100 | 151 " |
pascal@100 | 152 } |