tazpanel view lib/libtazpanel @ rev 364

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