tazpanel view lib/libtazpanel @ rev 282

New icon for Tazpanel (add SVG format)
author Christophe Lincoln <pankso@slitaz.org>
date Sat Mar 24 14:47:21 2012 +0100 (2012-03-24)
parents b960d4f9bc04
children 4c35cd60c1d8
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|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g' \
30 -e s"#^\#\([^']*\)#<span class='conf-comment'>\0</span>#"g \
31 -e s"#^[A-Z]\([^']*\)=#<span class='conf-var'>\0</span>#"g \
32 -e s"#^[a-z]\([^']*\)#<span class='conf-var'>\0</span>#"g \
33 -e s"#\"\([^']*\)\"#<span class='conf-val'>\0</span>#"g ;;
34 sh)
35 sed -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g' \
36 -e s"#^\#\([^']*\)#<span class='sh-comment'>\0</span>#"g \
37 -e s"#\"\([^']*\)\"#<span class='sh-val'>\0</span>#"g ;;
38 diff)
39 sed -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g' \
40 -e s"#^-\(.*\).#<span class='diff-rm'>\0</span>#"g \
41 -e s"#^+\(.*\).#<span class='diff-add'>\0</span>#"g \
42 -e s"#@@\(.*\)@@#<span class='diff-at'>@@\1@@</span>#"g ;;
43 activity)
44 sed s"#^\([^']*:\)#<span class='activity-log''>\0</span>#"g ;;
45 esac
46 }
48 # Remove status and ESC char from tazpkg/tazlito commands output
49 filter_taztools_msgs() {
50 sed -e s'/\[^Gm]*.//g' \
51 -e ':a;s/^\(.\{1,68\}\)\(\[ [A-Za-z]* \]\)/\1 \2/;ta' \
52 -e 's#\[ OK \]#[ <span class="diff-add">OK</span> ]#' \
53 -e 's#\[ Failed \]#[ <span class="diff-rm">Failed</span> ]#'
54 }
56 # LOG activities
57 log() {
58 date=$(date "+%Y-%m-%d %H:%M")
59 filter_taztools_msgs | \
60 sed s"#[^']*#$date : \0#" >> $LOG_FILE
61 }
63 ok_status() {
64 echo "[<span class='diff-add'> OK </span>]"
65 }
67 # Network interface status
68 interface_status() {
69 if ifconfig | grep -A 1 $i | grep -q inet; then
70 ip=`ifconfig | grep -A 1 $i | grep inet | \
71 awk '{ print $2 }' | cut -d ":" -f 2`
72 echo "<td>connected</td><td>$ip</td>"
73 echo "<td><a href='/network.cgi?scan=$ip'>"
74 echo "<img src='$IMAGES/recharge.png' /></a></td>"
75 else
76 echo "<td>----</td><td>----</td><td></td>"
77 fi
78 }
80 # Catch network interface (used in summary and network main page)
81 list_network_interfaces() {
82 table_start
83 cat << EOT
84 <tr id="thead">
85 <td>`gettext "Interface"`</td>
86 <td>`gettext "Name"`</td>
87 <td>`gettext "Status"`</td>
88 <td>`gettext "IP Address"`</td>
89 <td>`gettext "Scan ports"`</td>
90 </tr>
91 EOT
92 for i in `ls /sys/class/net`
93 do
94 case $i in
95 eth*)
96 echo "<tr><td><a href='/network.cgi?eth'>
97 <img src='$IMAGES/ethernet.png' />$i</a></td>
98 <td>Ethernet</td> $(interface_status)</tr>" ;;
99 wlan*|ath*|ra*)
100 echo "<tr><td><a href='/network.cgi?wifi'>
101 <img src='$IMAGES/wireless.png' />$i</a></td>
102 <td>Wireless</td> $(interface_status)</tr>" ;;
103 lo)
104 echo "<tr><td><img src='$IMAGES/loopback.png' />$i</td>
105 <td>Loopback</td> $(interface_status)</tr>" ;;
106 *)
107 continue ;;
108 esac
109 done
110 table_end
111 }
113 # Get the list of panel styles
114 list_styles() {
115 for style in $PANEL/styles/*
116 do
117 style=$(basename $style)
118 echo "<option value='$style'>$style</option>"
119 done
120 }
122 # Get the list of system locales
123 list_locales() {
124 for locale in $(find /usr/share/i18n/locales -type f -name "[a-z][a-z]_[A-Z][A-Z]")
125 do
126 echo "<option value='$locale'>$locale</option>"
127 done
128 }
130 # Get the list of console keymaps
131 list_keymaps() {
132 for keymap in /usr/share/kmap/*.kmap
133 do
134 basename $keymap .kmap | sed "s|.*|<option value='&'>&</option>|"
135 done
136 }
138 #
139 # xHTML 5 (header and footer skel are from the style)
140 #
142 loading_msg() {
143 cat << EOT
144 <script type="text/javascript">
145 document.write('<div id="loading"><img src="/styles/default/images/loader.gif" />$LOADING_MSG</div>');
146 </script>
147 EOT
148 }
150 xhtml_header() {
151 cat ${PANEL}$HEADER | sed s/'- %TITLE%'/"$TITLE"/
152 if [ $DEBUG == "1" ]; then
153 local i
154 local j
155 local x
156 args=""
157 for x in GET POST COOKIE ; do
158 for i in $($x) ; do
159 if [ $($x $i count) -gt 1 ]; then
160 for j in $(seq 1 $($x $i count)); do
161 args="$args $x($i,$j)='$($x $i $j)'"
162 done
163 else
164 args="$args $x($i)='$($x $i)'"
165 fi
166 done
167 done
168 for i in $(FILE); do
169 for j in name size type tmpname ; do
170 args="$args FILE($i,$j)=$(FILE $i $j)"
171 done
172 done
173 cat << EOT
174 <pre class='debug'>
175 QUERY_STRING="$QUERY_STRING"$args
176 </pre>
177 EOT
178 fi
179 }
181 xhtml_footer() {
182 cat ${PANEL}$FOOTER
183 }
185 table_start() {
186 cat << EOT
187 <table>
188 <tbody>
189 EOT
190 }
192 table_end() {
193 cat << EOT
194 </tbody>
195 </table>
196 EOT
198 }
200 df_thead() {
201 cat << EOT
202 <thead>
203 <tr>
204 <td>$(gettext "Disk")</td>
205 <td>$(gettext "Size")</td>
206 <td>$(gettext "Available")</td>
207 <td>$(gettext "Used")</td>
208 <td>$(gettext "Mount point")</td>
209 </tr>
210 </thead>
211 EOT
212 }