tazpanel annotate lib/libtazpanel @ rev 94

libtazpanel: improve log function for better activity overview
author Christophe Lincoln <pankso@slitaz.org>
date Thu Apr 14 19:46:48 2011 +0200 (2011-04-14)
parents 783e2405d384
children 2392cabdcc3d
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@40 9 # Include gettext helper script.
pankso@40 10 . /usr/bin/gettext.sh
pankso@40 11
pankso@40 12 # Export package name for gettext.
pankso@40 13 TEXTDOMAIN='tazpanel'
pankso@40 14 export TEXTDOMAIN
pankso@40 15
pankso@15 16 # We need a config file first
pankso@15 17 get_config() {
pankso@15 18 CONFIG="/etc/slitaz/tazpanel.conf"
pankso@15 19 [ -f $CONFIG ] && . $CONFIG
pankso@15 20 [ -f tazpanel.conf ] && . tazpanel.conf
pankso@15 21 [ ! -f $PANEL/lib/libtazpanel ] && \
pankso@15 22 echo "No config file or libtazpanel found: $CONFIG" && \
pankso@15 23 exit 1
pankso@15 24 }
pankso@15 25
pankso@74 26 # Syntax highlighting for config file and SHell scripts
pankso@76 27 # HTML entities: -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g'
pankso@74 28 syntax_highlighter() {
pankso@74 29 case $1 in
pankso@74 30 conf)
pankso@74 31 sed -e s"#^\#\([^']*\)#<span class='conf-comment'>\0</span>#"g \
pankso@74 32 -e s"#^[A-Z]\([^']*\)=#<span class='conf-var'>\0</span>#"g \
pankso@74 33 -e s"#^[a-z]\([^']*\)#<span class='conf-var'>\0</span>#"g \
pankso@74 34 -e s"#\"\([^']*\)\"#<span class='conf-val'>\0</span>#"g ;;
pankso@75 35 sh)
pankso@75 36 sed -e s"#^\#\([^']*\)#<span class='sh-comment'>\0</span>#"g \
pascal@91 37 -e s"#\"\([^']*\)\"#<span class='sh-val'>\0</span>#"g ;;
pascal@91 38 diff)
pankso@94 39 sed -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g' \
pascal@91 40 -e s"#^-\([^']*\).#<span style='color: red;'>\0</span>#"g \
pascal@91 41 -e s"#^+\([^']*\).#<span style='color: green;'>\0</span>#"g \
pascal@91 42 -e s"#@@\([^']*\)@@#<span style='color: blue;'>@@\1@@</span>#"g ;;
pankso@74 43 esac
pankso@53 44 }
pankso@53 45
pankso@51 46 # LOG activities
pankso@51 47 log() {
pankso@94 48 grep ^[a-zA-Z0-9] | sed s'/\.*\]//' | \
pankso@94 49 sed s"#[^']*#$date : \0#" >> $LOG_FILE
pankso@51 50 }
pankso@51 51
pankso@40 52 # Network interface status
pankso@40 53 interface_status() {
pankso@40 54 if ifconfig | grep -A 1 $i | grep -q inet; then
pankso@40 55 ip=`ifconfig | grep -A 1 $i | grep inet | \
pankso@40 56 awk '{ print $2 }' | cut -d ":" -f 2`
pankso@40 57 echo "<td>connected</td><td>$ip</td>"
pankso@40 58 else
pankso@40 59 echo "<td>----</td><td>----</td>"
pankso@40 60 fi
pankso@40 61 }
pankso@40 62
pankso@40 63 # Catch network interface (used in summary and network main page)
pankso@40 64 list_network_interfaces() {
pankso@40 65 table_start
pankso@40 66 cat << EOT
pankso@40 67 <tr id="thead">
pankso@40 68 <td>`gettext "Interface"`</td>
pankso@40 69 <td>`gettext "Name"`</td>
pankso@40 70 <td>`gettext "Status"`</td>
pankso@40 71 <td>`gettext "IP Address"`</td>
pankso@40 72 </tr>
pankso@40 73 EOT
pankso@40 74 for i in `ls /sys/class/net`
pankso@40 75 do
pankso@40 76 case $i in
pankso@40 77 eth*)
pankso@41 78 echo "<tr><td><a href='/network.cgi?eth'>
pankso@41 79 <img src='$IMAGES/ethernet.png' />$i</a></td>
pankso@40 80 <td>Ethernet</td> `interface_status`</tr>" ;;
pankso@40 81 wlan*|ath*|ra*)
pankso@41 82 echo "<tr><td><a href='/network.cgi?wifi'>
pankso@41 83 <img src='$IMAGES/wireless.png' />$i</a></td>
pankso@40 84 <td>Wireless</td> `interface_status`</tr>" ;;
pankso@40 85 lo)
pankso@40 86 echo "<tr><td><img src='$IMAGES/loopback.png' />$i</td>
pankso@40 87 <td>Loopback</td> `interface_status`</tr>" ;;
pankso@40 88 *)
pankso@40 89 continue ;;
pankso@40 90 esac
pankso@40 91 done
pankso@40 92 table_end
pankso@40 93 }
pankso@40 94
pankso@15 95 #
pankso@15 96 # xHTML 5 (header and footer skel are from the style)
pankso@15 97 #
pankso@15 98
pankso@44 99 loading_msg() {
pankso@44 100 cat << EOT
pankso@44 101 <script type="text/javascript">
pankso@44 102 document.write('<div id="loading"><img src="/styles/default/images/loader.gif" />$LOADING_MSG</div>');
pankso@44 103 </script>
pankso@44 104 EOT
pankso@44 105 }
pankso@44 106
pankso@15 107 xhtml_header() {
pankso@32 108 cat ${PANEL}$HEADER | sed s/'- %TITLE%'/"$TITLE"/
pankso@67 109 if [ $DEBUG == "1" ]; then
pascal@81 110 local i
pascal@81 111 local j
pascal@81 112 local x
pascal@81 113 args=""
pascal@81 114 for x in GET POST COOKIE ; do
pascal@81 115 for i in $($x) ; do
pascal@81 116 if [ $($x $i count) -gt 1 ]; then
pascal@81 117 for j in $(seq 1 $($x $i count)); do
pascal@81 118 args="$args $x($i,$j)='$($x $i $j)'"
pascal@81 119 done
pascal@81 120 else
pascal@81 121 args="$args $x($i)='$($x $i)'"
pascal@81 122 fi
pascal@81 123 done
pascal@81 124 done
pascal@81 125 for i in $(FILE); do
pascal@81 126 for j in name size type tmpname ; do
pascal@81 127 args="$args FILE($i,$j)=$(FILE $i $j)"
pascal@81 128 done
pascal@81 129 done
pankso@70 130 cat << EOT
pankso@70 131 <pre class='debug'>
pascal@81 132 QUERY_STRING="$QUERY_STRING"$args
pankso@70 133 </pre>
pankso@70 134 EOT
pankso@67 135 fi
pankso@15 136 }
pankso@15 137
pankso@15 138 xhtml_footer() {
pankso@32 139 cat ${PANEL}$FOOTER
pankso@15 140 }
pankso@15 141
pankso@15 142 table_start() {
pankso@15 143 cat << EOT
pankso@15 144 <table>
pankso@15 145 <tbody>
pankso@15 146 EOT
pankso@15 147 }
pankso@15 148
pankso@15 149 table_end () {
pankso@15 150 cat << EOT
pankso@15 151 </tbody>
pankso@15 152 </table>
pankso@15 153 EOT
pankso@45 154
pankso@15 155 }