tazpanel annotate lib/libtazpanel @ rev 165

libtazpanel: align status
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Apr 22 11:34:07 2011 +0200 (2011-04-22)
parents ebf9e3bf4313
children 8e629a5d4882
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@40 10 . /usr/bin/gettext.sh
pankso@40 11 TEXTDOMAIN='tazpanel'
pankso@40 12 export TEXTDOMAIN
pankso@40 13
pankso@15 14 # We need a config file first
pankso@15 15 get_config() {
pankso@15 16 CONFIG="/etc/slitaz/tazpanel.conf"
pankso@116 17 [ -f data/tazpanel.conf ] && CONFIG="data/tazpanel.conf"
pankso@110 18 [ -f "$CONFIG" ] && . $CONFIG
pankso@110 19 [ ! -f "$PANEL/lib/libtazpanel" ] && \
pankso@15 20 echo "No config file or libtazpanel found: $CONFIG" && \
pankso@15 21 exit 1
pankso@15 22 }
pankso@15 23
pankso@74 24 # Syntax highlighting for config file and SHell scripts
pankso@76 25 # HTML entities: -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g'
pankso@74 26 syntax_highlighter() {
pankso@74 27 case $1 in
pankso@74 28 conf)
pankso@74 29 sed -e s"#^\#\([^']*\)#<span class='conf-comment'>\0</span>#"g \
pankso@74 30 -e s"#^[A-Z]\([^']*\)=#<span class='conf-var'>\0</span>#"g \
pankso@74 31 -e s"#^[a-z]\([^']*\)#<span class='conf-var'>\0</span>#"g \
pankso@74 32 -e s"#\"\([^']*\)\"#<span class='conf-val'>\0</span>#"g ;;
pankso@75 33 sh)
pankso@75 34 sed -e s"#^\#\([^']*\)#<span class='sh-comment'>\0</span>#"g \
pascal@91 35 -e s"#\"\([^']*\)\"#<span class='sh-val'>\0</span>#"g ;;
pascal@91 36 diff)
pankso@94 37 sed -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g' \
pankso@120 38 -e s"#^-\([^']*\).#<span class='diff-rm'>\0</span>#"g \
pankso@120 39 -e s"#^+\([^']*\).#<span class='diff-add'>\0</span>#"g \
pankso@120 40 -e s"#@@\([^']*\)@@#<span class='diff-at'>@@\1@@</span>#"g ;;
pankso@120 41 activity)
pankso@120 42 sed s"#^\([^']*:\)#<span class='activity-log''>\0</span>#"g ;;
pankso@74 43 esac
pankso@53 44 }
pankso@53 45
pascal@99 46 # Remove status and ESC char from tazpkg/tazlito commands output
pascal@99 47 filter_taztools_msgs() {
pascal@165 48 grep ^[a-zA-Z0-9] | sed s'/\[^Gm]*.//g' | awk '{
pascal@165 49 if (/\[ OK \]/) {
pascal@165 50 n=index($0,"[ OK ]")
pascal@165 51 s=""; for (i = n; i < 70; i++) s = s " "
pascal@165 52 printf "%s%s[ <span class=\"diff-add\">OK</span> ]\n",substr($0,1,n-1),s
pascal@165 53 }
pascal@165 54 else if (/\[ Failed \]/) {
pascal@165 55 n=index($0,"[ Failed ]")
pascal@165 56 s=""; for (i = n; i < 70; i++) s = s " "
pascal@165 57 printf "%s%s[ <span class=\"diff-rm\">Failed</span> ]\n",substr($0,1,n-1),s
pascal@165 58 }
pascal@165 59 else print
pascal@165 60 }'
pascal@99 61 }
pascal@99 62
pankso@51 63 # LOG activities
pankso@51 64 log() {
pankso@96 65 date=$(date "+%Y-%m-%d %H:%M")
pascal@99 66 filter_taztools_msgs | \
pankso@94 67 sed s"#[^']*#$date : \0#" >> $LOG_FILE
pankso@51 68 }
pankso@51 69
pankso@161 70 ok_status() {
pankso@161 71 echo "[<span class='diff-add'> OK </span>]"
pankso@161 72 }
pankso@161 73
pankso@40 74 # Network interface status
pankso@40 75 interface_status() {
pankso@40 76 if ifconfig | grep -A 1 $i | grep -q inet; then
pankso@40 77 ip=`ifconfig | grep -A 1 $i | grep inet | \
pankso@40 78 awk '{ print $2 }' | cut -d ":" -f 2`
pankso@40 79 echo "<td>connected</td><td>$ip</td>"
pascal@136 80 echo "<td><a href='/network.cgi?scan=$ip'>"
pankso@148 81 echo "<img src='$IMAGES/recharge.png' /></a></td>"
pankso@40 82 else
pascal@136 83 echo "<td>----</td><td>----</td><td></td>"
pankso@40 84 fi
pankso@40 85 }
pankso@40 86
pankso@40 87 # Catch network interface (used in summary and network main page)
pankso@40 88 list_network_interfaces() {
pankso@40 89 table_start
pankso@40 90 cat << EOT
pankso@40 91 <tr id="thead">
pankso@40 92 <td>`gettext "Interface"`</td>
pankso@40 93 <td>`gettext "Name"`</td>
pankso@40 94 <td>`gettext "Status"`</td>
pankso@40 95 <td>`gettext "IP Address"`</td>
pankso@148 96 <td>`gettext "Scan ports"`</td>
pankso@40 97 </tr>
pankso@40 98 EOT
pankso@40 99 for i in `ls /sys/class/net`
pankso@40 100 do
pankso@40 101 case $i in
pankso@40 102 eth*)
pankso@41 103 echo "<tr><td><a href='/network.cgi?eth'>
pankso@41 104 <img src='$IMAGES/ethernet.png' />$i</a></td>
pankso@148 105 <td>Ethernet</td> $(interface_status)</tr>" ;;
pankso@40 106 wlan*|ath*|ra*)
pankso@41 107 echo "<tr><td><a href='/network.cgi?wifi'>
pankso@41 108 <img src='$IMAGES/wireless.png' />$i</a></td>
pankso@148 109 <td>Wireless</td> $(interface_status)</tr>" ;;
pankso@40 110 lo)
pankso@40 111 echo "<tr><td><img src='$IMAGES/loopback.png' />$i</td>
pankso@148 112 <td>Loopback</td> $(interface_status)</tr>" ;;
pankso@40 113 *)
pankso@40 114 continue ;;
pankso@40 115 esac
pankso@40 116 done
pankso@40 117 table_end
pankso@40 118 }
pankso@40 119
pankso@15 120 #
pankso@15 121 # xHTML 5 (header and footer skel are from the style)
pankso@15 122 #
pankso@15 123
pankso@44 124 loading_msg() {
pankso@44 125 cat << EOT
pankso@44 126 <script type="text/javascript">
pankso@44 127 document.write('<div id="loading"><img src="/styles/default/images/loader.gif" />$LOADING_MSG</div>');
pankso@44 128 </script>
pankso@44 129 EOT
pankso@44 130 }
pankso@44 131
pankso@15 132 xhtml_header() {
pankso@32 133 cat ${PANEL}$HEADER | sed s/'- %TITLE%'/"$TITLE"/
pankso@67 134 if [ $DEBUG == "1" ]; then
pascal@81 135 local i
pascal@81 136 local j
pascal@81 137 local x
pascal@81 138 args=""
pascal@81 139 for x in GET POST COOKIE ; do
pascal@81 140 for i in $($x) ; do
pascal@81 141 if [ $($x $i count) -gt 1 ]; then
pascal@81 142 for j in $(seq 1 $($x $i count)); do
pascal@81 143 args="$args $x($i,$j)='$($x $i $j)'"
pascal@81 144 done
pascal@81 145 else
pascal@81 146 args="$args $x($i)='$($x $i)'"
pascal@81 147 fi
pascal@81 148 done
pascal@81 149 done
pascal@81 150 for i in $(FILE); do
pascal@81 151 for j in name size type tmpname ; do
pascal@81 152 args="$args FILE($i,$j)=$(FILE $i $j)"
pascal@81 153 done
pascal@81 154 done
pankso@70 155 cat << EOT
pankso@70 156 <pre class='debug'>
pascal@81 157 QUERY_STRING="$QUERY_STRING"$args
pankso@70 158 </pre>
pankso@70 159 EOT
pankso@67 160 fi
pankso@15 161 }
pankso@15 162
pankso@15 163 xhtml_footer() {
pankso@32 164 cat ${PANEL}$FOOTER
pankso@15 165 }
pankso@15 166
pankso@15 167 table_start() {
pankso@15 168 cat << EOT
pankso@15 169 <table>
pankso@15 170 <tbody>
pankso@15 171 EOT
pankso@15 172 }
pankso@15 173
pankso@15 174 table_end () {
pankso@15 175 cat << EOT
pankso@15 176 </tbody>
pankso@15 177 </table>
pankso@15 178 EOT
pankso@45 179
pankso@15 180 }
pankso@153 181
pankso@153 182 df_thead() {
pankso@153 183 cat << EOT
pankso@153 184 <thead>
pankso@153 185 <tr>
pankso@153 186 <td>$(gettext "Filesystem")</td>
pankso@153 187 <td>$(gettext "Size")</td>
pankso@153 188 <td>$(gettext "Available")</td>
pankso@153 189 <td>$(gettext "Used")</td>
pankso@153 190 <td>$(gettext "Mount point")</td>
pankso@153 191 </tr>
pankso@153 192 </thead>
pankso@153 193 EOT
pankso@153 194 }