tazpanel view lib/libtazpanel @ rev 286

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