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