tazpanel view lib/libtazpanel @ rev 372

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