tazpanel view lib/libtazpanel @ rev 175

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