tazpanel annotate lib/libtazpanel @ rev 303

3 weeks forging ;) Some bugs fixed, maybe all i18n improved (please, recheck 'po's!), couple of new features added... Enjoy!
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri May 04 13:00:43 2012 +0300 (2012-05-04)
parents 72e9955ebdff
children b3c93e4a8acc
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@81 6 # Get parameters with GET, POST and FILE functions
pascal@81 7 . /usr/bin/httpd_helper.sh
pascal@81 8
pankso@109 9 # I18n
pankso@286 10 . /etc/locale.conf
pankso@40 11 . /usr/bin/gettext.sh
pankso@40 12 TEXTDOMAIN='tazpanel'
pankso@286 13 export TEXTDOMAIN LANG LC_ALL
pankso@40 14
pankso@15 15 # We need a config file first
pankso@15 16 get_config() {
pankso@15 17 CONFIG="/etc/slitaz/tazpanel.conf"
pankso@116 18 [ -f data/tazpanel.conf ] && CONFIG="data/tazpanel.conf"
pankso@110 19 [ -f "$CONFIG" ] && . $CONFIG
pankso@110 20 [ ! -f "$PANEL/lib/libtazpanel" ] && \
pankso@15 21 echo "No config file or libtazpanel found: $CONFIG" && \
pankso@15 22 exit 1
pankso@15 23 }
pankso@15 24
al@303 25 # Display < > &
al@303 26 htmlize() {
al@303 27 sed -e 's|\&|\&amp;|g; s|<|\&lt;|g; s|>|\&gt;|g'
al@303 28 }
al@303 29
pankso@74 30 # Syntax highlighting for config file and SHell scripts
pankso@74 31 syntax_highlighter() {
pankso@74 32 case $1 in
pankso@74 33 conf)
al@303 34 htmlize | sed \
slaxemulator@177 35 -e s"#^\#\([^']*\)#<span class='conf-comment'>\0</span>#"g \
pankso@74 36 -e s"#^[A-Z]\([^']*\)=#<span class='conf-var'>\0</span>#"g \
pankso@74 37 -e s"#^[a-z]\([^']*\)#<span class='conf-var'>\0</span>#"g \
pankso@74 38 -e s"#\"\([^']*\)\"#<span class='conf-val'>\0</span>#"g ;;
pankso@75 39 sh)
al@303 40 htmlize | sed \
pascal@176 41 -e s"#^\#\([^']*\)#<span class='sh-comment'>\0</span>#"g \
pascal@91 42 -e s"#\"\([^']*\)\"#<span class='sh-val'>\0</span>#"g ;;
pascal@91 43 diff)
al@303 44 htmlize | sed \
pascal@171 45 -e s"#^-\(.*\).#<span class='diff-rm'>\0</span>#"g \
pascal@171 46 -e s"#^+\(.*\).#<span class='diff-add'>\0</span>#"g \
pascal@171 47 -e s"#@@\(.*\)@@#<span class='diff-at'>@@\1@@</span>#"g ;;
pankso@120 48 activity)
al@303 49 sed -e s"#^\([^']*:\)#<span class='activity-log'>\0</span>#"g ;;
al@303 50 kernel)
al@303 51 htmlize | sed \
al@303 52 -e "s|\([^0-9]\)\(0x[0-9a-f]\+\)|\1<span class='kernel-hex'>\2</span>|g" \
al@303 53 -e "s|^\([^(,\[]\+: \)|<span class='kernel-id'>\0</span>|g" \
al@303 54 -e "s|\(\[[^ ]\+\]\)|<span class='kernel-id2'>\0</span>|g" ;;
al@303 55
pankso@74 56 esac
pankso@53 57 }
pankso@53 58
pascal@99 59 # Remove status and ESC char from tazpkg/tazlito commands output
pascal@99 60 filter_taztools_msgs() {
pascal@168 61 sed -e s'/\[^Gm]*.//g' \
pascal@167 62 -e ':a;s/^\(.\{1,68\}\)\(\[ [A-Za-z]* \]\)/\1 \2/;ta' \
pascal@167 63 -e 's#\[ OK \]#[ <span class="diff-add">OK</span> ]#' \
pascal@167 64 -e 's#\[ Failed \]#[ <span class="diff-rm">Failed</span> ]#'
pascal@99 65 }
pascal@99 66
pankso@51 67 # LOG activities
pankso@51 68 log() {
pankso@96 69 date=$(date "+%Y-%m-%d %H:%M")
pascal@99 70 filter_taztools_msgs | \
pankso@94 71 sed s"#[^']*#$date : \0#" >> $LOG_FILE
pankso@51 72 }
pankso@51 73
pankso@161 74 ok_status() {
pankso@161 75 echo "[<span class='diff-add'> OK </span>]"
pankso@161 76 }
pankso@161 77
pankso@40 78 # Network interface status
pankso@40 79 interface_status() {
pankso@40 80 if ifconfig | grep -A 1 $i | grep -q inet; then
pankso@40 81 ip=`ifconfig | grep -A 1 $i | grep inet | \
pankso@40 82 awk '{ print $2 }' | cut -d ":" -f 2`
al@303 83 echo "<td>$(gettext 'connected')</td><td>$ip</td>"
pascal@136 84 echo "<td><a href='/network.cgi?scan=$ip'>"
pankso@148 85 echo "<img src='$IMAGES/recharge.png' /></a></td>"
pankso@40 86 else
pascal@136 87 echo "<td>----</td><td>----</td><td></td>"
pankso@40 88 fi
pankso@40 89 }
pankso@40 90
pankso@40 91 # Catch network interface (used in summary and network main page)
pankso@40 92 list_network_interfaces() {
pankso@40 93 cat << EOT
al@303 94 <table class="zebra">
al@303 95 <thead>
al@303 96 <tr>
al@303 97 <td>$(gettext 'Interface')</td>
al@303 98 <td>$(gettext 'Name')</td>
al@303 99 <td>$(gettext 'Status')</td>
al@303 100 <td>$(gettext 'IP Address')</td>
al@303 101 <td>$(gettext 'Scan ports')</td>
al@303 102 </tr>
al@303 103 </thead>
al@303 104 <tbody>
pankso@40 105 EOT
pankso@40 106 for i in `ls /sys/class/net`
pankso@40 107 do
pankso@40 108 case $i in
pankso@40 109 eth*)
al@303 110 echo " <tr><td><a href='/network.cgi?eth'>
pankso@41 111 <img src='$IMAGES/ethernet.png' />$i</a></td>
pankso@148 112 <td>Ethernet</td> $(interface_status)</tr>" ;;
pankso@40 113 wlan*|ath*|ra*)
al@303 114 echo " <tr><td><a href='/network.cgi?wifi'>
pankso@41 115 <img src='$IMAGES/wireless.png' />$i</a></td>
pankso@148 116 <td>Wireless</td> $(interface_status)</tr>" ;;
pankso@40 117 lo)
al@303 118 echo " <tr><td><img src='$IMAGES/loopback.png' />$i</td>
pankso@148 119 <td>Loopback</td> $(interface_status)</tr>" ;;
pankso@40 120 *)
pankso@40 121 continue ;;
pankso@40 122 esac
pankso@40 123 done
al@303 124 cat << EOT
al@303 125 </tbody>
al@303 126 </table>
al@303 127 EOT
pankso@40 128 }
pankso@40 129
slaxemulator@232 130 # Get the list of panel styles
slaxemulator@232 131 list_styles() {
slaxemulator@232 132 for style in $PANEL/styles/*
slaxemulator@232 133 do
slaxemulator@232 134 style=$(basename $style)
slaxemulator@232 135 echo "<option value='$style'>$style</option>"
slaxemulator@232 136 done
slaxemulator@232 137 }
slaxemulator@232 138
slaxemulator@232 139 # Get the list of system locales
slaxemulator@232 140 list_locales() {
slaxemulator@232 141 for locale in $(find /usr/share/i18n/locales -type f -name "[a-z][a-z]_[A-Z][A-Z]")
slaxemulator@232 142 do
slaxemulator@232 143 echo "<option value='$locale'>$locale</option>"
slaxemulator@232 144 done
slaxemulator@232 145 }
slaxemulator@232 146
slaxemulator@232 147 # Get the list of console keymaps
slaxemulator@232 148 list_keymaps() {
slaxemulator@232 149 for keymap in /usr/share/kmap/*.kmap
slaxemulator@232 150 do
slaxemulator@232 151 basename $keymap .kmap | sed "s|.*|<option value='&'>&</option>|"
slaxemulator@232 152 done
slaxemulator@232 153 }
slaxemulator@232 154
pankso@15 155 #
pankso@15 156 # xHTML 5 (header and footer skel are from the style)
pankso@15 157 #
pankso@15 158
pankso@44 159 loading_msg() {
pankso@44 160 cat << EOT
pankso@44 161 <script type="text/javascript">
pankso@44 162 document.write('<div id="loading"><img src="/styles/default/images/loader.gif" />$LOADING_MSG</div>');
pankso@44 163 </script>
pankso@44 164 EOT
pankso@44 165 }
pankso@44 166
pankso@15 167 xhtml_header() {
al@292 168 . ${PANEL}$HEADER
pankso@67 169 if [ $DEBUG == "1" ]; then
pascal@81 170 local i
pascal@81 171 local j
pascal@81 172 local x
pascal@81 173 args=""
pascal@81 174 for x in GET POST COOKIE ; do
pascal@81 175 for i in $($x) ; do
pascal@81 176 if [ $($x $i count) -gt 1 ]; then
pascal@81 177 for j in $(seq 1 $($x $i count)); do
pascal@81 178 args="$args $x($i,$j)='$($x $i $j)'"
pascal@81 179 done
pascal@81 180 else
pascal@81 181 args="$args $x($i)='$($x $i)'"
pascal@81 182 fi
pascal@81 183 done
pascal@81 184 done
pascal@81 185 for i in $(FILE); do
pascal@81 186 for j in name size type tmpname ; do
pascal@81 187 args="$args FILE($i,$j)=$(FILE $i $j)"
pascal@81 188 done
pascal@81 189 done
pankso@70 190 cat << EOT
pankso@70 191 <pre class='debug'>
pascal@81 192 QUERY_STRING="$QUERY_STRING"$args
pankso@70 193 </pre>
pankso@70 194 EOT
pankso@67 195 fi
pankso@15 196 }
pankso@15 197
pankso@15 198 xhtml_footer() {
al@292 199 . ${PANEL}$FOOTER
pankso@15 200 }
pankso@15 201
pankso@15 202 table_start() {
al@303 203 echo '<table>'
pankso@15 204 }
pankso@15 205
pankso@282 206 table_end() {
al@303 207 echo '</table>'
pankso@15 208 }
pankso@153 209
pankso@153 210 df_thead() {
pankso@153 211 cat << EOT
pankso@153 212 <thead>
pankso@153 213 <tr>
al@303 214 <td>$(gettext 'Disk')</td>
al@303 215 <td>$(gettext 'Label')</td>
al@303 216 <td>$(gettext 'Type')</td>
al@303 217 <td>$(gettext 'Size')</td>
al@303 218 <td>$(gettext 'Available')</td>
al@303 219 <td>$(gettext 'Used')</td>
al@303 220 <td>$(gettext 'Mount point')</td>
pankso@153 221 </tr>
pankso@153 222 </thead>
pankso@153 223 EOT
pankso@153 224 }