tazpanel annotate lib/libtazpanel @ rev 411
boot.cgi: display log files in tabs
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Jan 18 18:59:01 2015 +0100 (2015-01-18) |
parents | aa22bfbb483c |
children | f3a7fb3d92ec |
rev | line source |
---|---|
pankso@15 | 1 #!/bin/sh |
pankso@15 | 2 # |
pankso@15 | 3 # Common functions for TazPanel CGI and cmdline interface |
pankso@15 | 4 # |
pankso@15 | 5 |
pascal@377 | 6 [ "$(id -un)" == "${REMOTE_USER:-root}" ] || exec su -c "$(realpath $0) $@" $REMOTE_USER |
pascal@376 | 7 |
pascal@81 | 8 # Get parameters with GET, POST and FILE functions |
mojo@310 | 9 . /usr/lib/slitaz/httphelper |
pascal@81 | 10 |
pankso@109 | 11 # I18n |
pankso@286 | 12 . /etc/locale.conf |
pankso@40 | 13 . /usr/bin/gettext.sh |
pankso@40 | 14 TEXTDOMAIN='tazpanel' |
pankso@286 | 15 export TEXTDOMAIN LANG LC_ALL |
pankso@40 | 16 |
pankso@15 | 17 # We need a config file first |
pankso@15 | 18 get_config() { |
pankso@15 | 19 CONFIG="/etc/slitaz/tazpanel.conf" |
pankso@116 | 20 [ -f data/tazpanel.conf ] && CONFIG="data/tazpanel.conf" |
pankso@110 | 21 [ -f "$CONFIG" ] && . $CONFIG |
pankso@110 | 22 [ ! -f "$PANEL/lib/libtazpanel" ] && \ |
pankso@15 | 23 echo "No config file or libtazpanel found: $CONFIG" && \ |
pankso@15 | 24 exit 1 |
pankso@15 | 25 } |
pankso@15 | 26 |
al@303 | 27 # Display < > & |
al@303 | 28 htmlize() { |
al@303 | 29 sed -e 's|\&|\&|g; s|<|\<|g; s|>|\>|g' |
al@303 | 30 } |
al@303 | 31 |
pankso@74 | 32 # Syntax highlighting for config file and SHell scripts |
pankso@74 | 33 syntax_highlighter() { |
pankso@74 | 34 case $1 in |
pankso@74 | 35 conf) |
al@303 | 36 htmlize | sed \ |
slaxemulator@177 | 37 -e s"#^\#\([^']*\)#<span class='conf-comment'>\0</span>#"g \ |
pankso@74 | 38 -e s"#^[A-Z]\([^']*\)=#<span class='conf-var'>\0</span>#"g \ |
pankso@74 | 39 -e s"#^[a-z]\([^']*\)#<span class='conf-var'>\0</span>#"g \ |
pankso@74 | 40 -e s"#\"\([^']*\)\"#<span class='conf-val'>\0</span>#"g ;; |
pankso@75 | 41 sh) |
al@303 | 42 htmlize | sed \ |
pascal@176 | 43 -e s"#^\#\([^']*\)#<span class='sh-comment'>\0</span>#"g \ |
pascal@91 | 44 -e s"#\"\([^']*\)\"#<span class='sh-val'>\0</span>#"g ;; |
pascal@91 | 45 diff) |
al@303 | 46 htmlize | sed \ |
pascal@171 | 47 -e s"#^-\(.*\).#<span class='diff-rm'>\0</span>#"g \ |
pascal@171 | 48 -e s"#^+\(.*\).#<span class='diff-add'>\0</span>#"g \ |
pascal@171 | 49 -e s"#@@\(.*\)@@#<span class='diff-at'>@@\1@@</span>#"g ;; |
pankso@120 | 50 activity) |
al@303 | 51 sed -e s"#^\([^']*:\)#<span class='activity-log'>\0</span>#"g ;; |
al@303 | 52 kernel) |
al@303 | 53 htmlize | sed \ |
al@303 | 54 -e "s|\([^0-9]\)\(0x[0-9a-f]\+\)|\1<span class='kernel-hex'>\2</span>|g" \ |
al@303 | 55 -e "s|^\([^(,\[]\+: \)|<span class='kernel-id'>\0</span>|g" \ |
al@303 | 56 -e "s|\(\[[^ ]\+\]\)|<span class='kernel-id2'>\0</span>|g" ;; |
al@363 | 57 lsusb) |
al@363 | 58 htmlize | sed \ |
al@363 | 59 -e 's|^[^:]*:[ x0-9a-f^:]*$|<span class="lsusb-t">\0</span>|g' \ |
al@363 | 60 -e 's|^Bus.*$|<span class="lsusb-h">\0</span>|g' ;; |
al@363 | 61 lspci) |
al@363 | 62 htmlize | sed \ |
al@363 | 63 -e 's|^[0-9a-f].*$|<span class="lspci-t">\0</span>|g' \ |
al@363 | 64 -e 's|^ \([^:]*:\)| <span class="lspci-h">\1</span>|g' ;; |
al@303 | 65 |
pankso@74 | 66 esac |
pankso@53 | 67 } |
pankso@53 | 68 |
pascal@99 | 69 # Remove status and ESC char from tazpkg/tazlito commands output |
pascal@99 | 70 filter_taztools_msgs() { |
pascal@411 | 71 sed -e s'|.\[1;32m|<span style="color: green">|g' \ |
pascal@411 | 72 -e s'|.\[1;31m|<span style="color: red">|g' \ |
pascal@411 | 73 -e s'|.\[1;33m|<span style="color: yellow">|g' \ |
pascal@411 | 74 -e s'|.\[1;34m|<span style="color: blue">|g' \ |
pascal@411 | 75 -e s'|.\[1;36m|<span style="color: lightblue">|g' \ |
pascal@411 | 76 -e s'|.\[0;39m|</span>|g' \ |
pascal@411 | 77 -e s'/\[^Gm]*.//g' \ |
pascal@411 | 78 -e ':a;s/^\(.\{1,68\}\)\(\[ *<span style="color\)/\1 \2/;ta' |
pascal@99 | 79 } |
pascal@99 | 80 |
pankso@51 | 81 # LOG activities |
pankso@51 | 82 log() { |
pankso@96 | 83 date=$(date "+%Y-%m-%d %H:%M") |
pascal@99 | 84 filter_taztools_msgs | \ |
pankso@94 | 85 sed s"#[^']*#$date : \0#" >> $LOG_FILE |
pankso@51 | 86 } |
pankso@51 | 87 |
pankso@161 | 88 ok_status() { |
pankso@161 | 89 echo "[<span class='diff-add'> OK </span>]" |
pankso@161 | 90 } |
pankso@161 | 91 |
pankso@40 | 92 # Network interface status |
pankso@40 | 93 interface_status() { |
pankso@40 | 94 if ifconfig | grep -A 1 $i | grep -q inet; then |
pankso@40 | 95 ip=`ifconfig | grep -A 1 $i | grep inet | \ |
pankso@40 | 96 awk '{ print $2 }' | cut -d ":" -f 2` |
al@303 | 97 echo "<td>$(gettext 'connected')</td><td>$ip</td>" |
pascal@136 | 98 echo "<td><a href='/network.cgi?scan=$ip'>" |
pankso@148 | 99 echo "<img src='$IMAGES/recharge.png' /></a></td>" |
pankso@40 | 100 else |
pascal@136 | 101 echo "<td>----</td><td>----</td><td></td>" |
pankso@40 | 102 fi |
pankso@40 | 103 } |
pankso@40 | 104 |
pankso@40 | 105 # Catch network interface (used in summary and network main page) |
pankso@40 | 106 list_network_interfaces() { |
pankso@40 | 107 cat << EOT |
al@311 | 108 <table class="zebra outbox"> |
al@303 | 109 <thead> |
al@303 | 110 <tr> |
al@303 | 111 <td>$(gettext 'Interface')</td> |
al@303 | 112 <td>$(gettext 'Name')</td> |
al@303 | 113 <td>$(gettext 'Status')</td> |
al@303 | 114 <td>$(gettext 'IP Address')</td> |
al@303 | 115 <td>$(gettext 'Scan ports')</td> |
al@303 | 116 </tr> |
al@303 | 117 </thead> |
al@303 | 118 <tbody> |
pankso@40 | 119 EOT |
pankso@40 | 120 for i in `ls /sys/class/net` |
pankso@40 | 121 do |
pankso@40 | 122 case $i in |
pankso@40 | 123 eth*) |
al@303 | 124 echo " <tr><td><a href='/network.cgi?eth'> |
pankso@41 | 125 <img src='$IMAGES/ethernet.png' />$i</a></td> |
pankso@148 | 126 <td>Ethernet</td> $(interface_status)</tr>" ;; |
pankso@40 | 127 wlan*|ath*|ra*) |
al@303 | 128 echo " <tr><td><a href='/network.cgi?wifi'> |
pankso@41 | 129 <img src='$IMAGES/wireless.png' />$i</a></td> |
pankso@148 | 130 <td>Wireless</td> $(interface_status)</tr>" ;; |
pankso@40 | 131 lo) |
al@303 | 132 echo " <tr><td><img src='$IMAGES/loopback.png' />$i</td> |
pankso@148 | 133 <td>Loopback</td> $(interface_status)</tr>" ;; |
pankso@40 | 134 *) |
pankso@40 | 135 continue ;; |
pankso@40 | 136 esac |
pankso@40 | 137 done |
al@303 | 138 cat << EOT |
al@303 | 139 </tbody> |
al@303 | 140 </table> |
al@303 | 141 EOT |
pankso@40 | 142 } |
pankso@40 | 143 |
slaxemulator@232 | 144 # Get the list of panel styles |
slaxemulator@232 | 145 list_styles() { |
slaxemulator@232 | 146 for style in $PANEL/styles/* |
slaxemulator@232 | 147 do |
slaxemulator@232 | 148 style=$(basename $style) |
slaxemulator@232 | 149 echo "<option value='$style'>$style</option>" |
slaxemulator@232 | 150 done |
slaxemulator@232 | 151 } |
slaxemulator@232 | 152 |
slaxemulator@232 | 153 # Get the list of system locales |
slaxemulator@232 | 154 list_locales() { |
slaxemulator@232 | 155 for locale in $(find /usr/share/i18n/locales -type f -name "[a-z][a-z]_[A-Z][A-Z]") |
slaxemulator@232 | 156 do |
slaxemulator@232 | 157 echo "<option value='$locale'>$locale</option>" |
slaxemulator@232 | 158 done |
slaxemulator@232 | 159 } |
slaxemulator@232 | 160 |
slaxemulator@232 | 161 # Get the list of console keymaps |
slaxemulator@232 | 162 list_keymaps() { |
slaxemulator@232 | 163 for keymap in /usr/share/kmap/*.kmap |
slaxemulator@232 | 164 do |
slaxemulator@232 | 165 basename $keymap .kmap | sed "s|.*|<option value='&'>&</option>|" |
slaxemulator@232 | 166 done |
slaxemulator@232 | 167 } |
slaxemulator@232 | 168 |
pankso@15 | 169 # |
pankso@15 | 170 # xHTML 5 (header and footer skel are from the style) |
pankso@15 | 171 # |
pankso@15 | 172 |
pankso@44 | 173 loading_msg() { |
pankso@44 | 174 cat << EOT |
pankso@44 | 175 <script type="text/javascript"> |
pankso@44 | 176 document.write('<div id="loading"><img src="/styles/default/images/loader.gif" />$LOADING_MSG</div>'); |
pankso@44 | 177 </script> |
pankso@44 | 178 EOT |
pankso@44 | 179 } |
pankso@44 | 180 |
pankso@15 | 181 xhtml_header() { |
al@292 | 182 . ${PANEL}$HEADER |
pankso@67 | 183 if [ $DEBUG == "1" ]; then |
pascal@81 | 184 local i |
pascal@81 | 185 local j |
pascal@81 | 186 local x |
pascal@81 | 187 args="" |
pascal@81 | 188 for x in GET POST COOKIE ; do |
pascal@81 | 189 for i in $($x) ; do |
pascal@81 | 190 if [ $($x $i count) -gt 1 ]; then |
pascal@81 | 191 for j in $(seq 1 $($x $i count)); do |
pascal@81 | 192 args="$args $x($i,$j)='$($x $i $j)'" |
pascal@81 | 193 done |
pascal@81 | 194 else |
pascal@81 | 195 args="$args $x($i)='$($x $i)'" |
pascal@81 | 196 fi |
pascal@81 | 197 done |
pascal@81 | 198 done |
pascal@81 | 199 for i in $(FILE); do |
pascal@81 | 200 for j in name size type tmpname ; do |
pascal@81 | 201 args="$args FILE($i,$j)=$(FILE $i $j)" |
pascal@81 | 202 done |
pascal@81 | 203 done |
pankso@70 | 204 cat << EOT |
pankso@70 | 205 <pre class='debug'> |
pascal@81 | 206 QUERY_STRING="$QUERY_STRING"$args |
pankso@70 | 207 </pre> |
pankso@70 | 208 EOT |
pankso@67 | 209 fi |
pankso@15 | 210 } |
pankso@15 | 211 |
pankso@15 | 212 xhtml_footer() { |
al@292 | 213 . ${PANEL}$FOOTER |
pankso@15 | 214 } |
pankso@15 | 215 |
pankso@15 | 216 table_start() { |
al@303 | 217 echo '<table>' |
pankso@15 | 218 } |
pankso@15 | 219 |
pankso@282 | 220 table_end() { |
al@303 | 221 echo '</table>' |
pankso@15 | 222 } |
pankso@153 | 223 |
pankso@153 | 224 df_thead() { |
pankso@153 | 225 cat << EOT |
pankso@153 | 226 <thead> |
pankso@153 | 227 <tr> |
al@303 | 228 <td>$(gettext 'Disk')</td> |
al@303 | 229 <td>$(gettext 'Label')</td> |
al@303 | 230 <td>$(gettext 'Type')</td> |
al@303 | 231 <td>$(gettext 'Size')</td> |
al@303 | 232 <td>$(gettext 'Available')</td> |
al@303 | 233 <td>$(gettext 'Used')</td> |
al@303 | 234 <td>$(gettext 'Mount point')</td> |
pascal@343 | 235 <td>UUID</td> |
pankso@153 | 236 </tr> |
pankso@153 | 237 </thead> |
pankso@153 | 238 EOT |
pankso@153 | 239 } |
al@318 | 240 |
al@318 | 241 msg() { |
al@318 | 242 msgtype="$1"; shift |
al@318 | 243 case "$msgtype" in |
al@318 | 244 tip) MSG_ICON="$IMAGES/msg-tip.png" ;; |
al@318 | 245 warn|warning) MSG_ICON="$IMAGES/msg-warn.png" ;; |
al@318 | 246 err|error) MSG_ICON="$IMAGES/msg-err.png" ;; |
al@318 | 247 up) MSG_ICON="$IMAGES/msg-up.png" ;; |
al@318 | 248 *) MSG_ICON="$IMAGES/msg.png" ;; |
al@318 | 249 esac |
al@318 | 250 cat << EOT |
al@318 | 251 <section class="box" style="width:50%;margin:0.5em auto;"> |
al@318 | 252 <image src="$MSG_ICON" alt="$msgtype" class="float-left" /> |
al@318 | 253 $@ |
al@318 | 254 </section> |
al@318 | 255 EOT |
al@318 | 256 } |
al@318 | 257 |
al@318 | 258 is_installed() { |
al@318 | 259 [ -d "$INSTALLED/$1" ] |
al@318 | 260 } |
pascal@364 | 261 |
pascal@364 | 262 blk2h() { |
pascal@364 | 263 echo $1 | awk '{ |
pascal@364 | 264 n = $0/2 |
pascal@364 | 265 for (i = 1; n > 1024; i++) |
pascal@364 | 266 n /= 1024 |
pascal@364 | 267 f = "%1.0f%c" |
pascal@373 | 268 if (n < 100) |
pascal@364 | 269 f = "%1.1f%c" |
pascal@364 | 270 printf f,n,substr("KMGT", i, 1) |
pascal@364 | 271 }' |
pascal@364 | 272 } |