tazpanel annotate index.cgi @ rev 293
user.js is translateable; translated to ru
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Thu Apr 12 01:42:49 2012 +0300 (2012-04-12) |
parents | ed7b79682eff |
children | fdfc6b494539 |
rev | line source |
---|---|
pankso@2 | 1 #!/bin/sh |
pankso@2 | 2 # |
paul@52 | 3 # Main CGI interface for TazPanel. In on word: KISS. Use the main css form |
paul@52 | 4 # command so we are faster and do not load unneeded functions. If necessary |
pankso@14 | 5 # you can use the lib/ dir to handle external resources. |
pankso@2 | 6 # |
al@292 | 7 # Copyright (C) 2011-2012 SliTaz GNU/Linux - BSD License |
pankso@42 | 8 # |
pankso@2 | 9 |
pankso@14 | 10 # Common functions from libtazpanel |
pankso@14 | 11 . lib/libtazpanel |
pankso@14 | 12 get_config |
pascal@81 | 13 header |
pankso@2 | 14 |
al@292 | 15 TITLE="TazPanel" |
al@292 | 16 |
paul@127 | 17 # Check whether a configuration file has been modified after installation |
pascal@91 | 18 file_is_modified() |
pascal@91 | 19 { |
pascal@91 | 20 grep -l " $1$" $INSTALLED/*/md5sum | while read file; do |
al@292 | 21 |
pascal@91 | 22 # Found, but can we do diff ? |
pascal@91 | 23 [ "$(grep -h " $1$" $file)" != "$(md5sum $1)" ] || break |
pascal@91 | 24 org=$(dirname $file)/volatile.cpio.gz |
pascal@91 | 25 zcat $org 2>/dev/null | cpio -t 2>/dev/null | \ |
pascal@91 | 26 grep -q "^${1#/}$" || break |
pascal@91 | 27 |
pascal@91 | 28 case "$2" in |
pascal@91 | 29 diff) |
pascal@91 | 30 tmp=/tmp/tazpanel$$ |
pascal@91 | 31 mkdir -p $tmp |
pascal@91 | 32 ( cd $tmp ; zcat $org | cpio -id ${1#/} ) |
pascal@207 | 33 diff -u $tmp$1 $1 | sed "s|$tmp||" |
pascal@91 | 34 rm -rf $tmp ;; |
pascal@91 | 35 button) |
pascal@91 | 36 cat <<EOT |
pascal@100 | 37 <a class="button" href='$SCRIPT_NAME?file=$1&action=diff'> |
pascal@97 | 38 <img src="$IMAGES/help.png" />`gettext "Differences"`</a> |
pascal@91 | 39 EOT |
pascal@91 | 40 esac |
pascal@93 | 41 break |
pascal@91 | 42 done |
pascal@91 | 43 } |
pascal@91 | 44 |
pankso@2 | 45 # |
pankso@49 | 46 # Things to do before displaying the page |
pankso@49 | 47 # |
pankso@49 | 48 |
pascal@81 | 49 [ -n "$(GET panel_pass)" ] && |
pascal@81 | 50 sed -i s@/:root:.*@/:root:$(GET panel_pass)@ $HTTPD_CONF |
pankso@49 | 51 |
pankso@49 | 52 # |
pankso@2 | 53 # Commands |
pankso@2 | 54 # |
pankso@2 | 55 |
pascal@81 | 56 case " $(GET) " in |
pascal@81 | 57 *\ file\ *) |
pankso@56 | 58 # |
pascal@91 | 59 # Handle files |
pankso@56 | 60 # |
pascal@81 | 61 file="$(GET file)" |
pankso@161 | 62 case $file in |
pankso@161 | 63 *.html) |
pankso@161 | 64 cat $file && exit 0 ;; |
pankso@161 | 65 *) |
al@292 | 66 TITLE=$(gettext 'TazPanel - File') |
pankso@161 | 67 xhtml_header |
pankso@161 | 68 echo "<h2>$file</h2>" ;; |
pankso@161 | 69 esac |
pascal@90 | 70 if [ "$(GET action)" == "edit" ]; then |
pascal@90 | 71 cat <<EOT |
pascal@100 | 72 <form method="post" action="$SCRIPT_NAME?file=$file"> |
pascal@97 | 73 <img src="$IMAGES/edit.png" /> |
pascal@90 | 74 <input type="submit" value="`gettext "Save"`"> |
pascal@206 | 75 <a class="button" href='$SCRIPT_NAME?file=$file&action=diff'> |
pascal@206 | 76 <img src="$IMAGES/help.png" />`gettext "Differences"`</a> |
pascal@90 | 77 <textarea name="content" rows="30" style="width: 100%;"> |
pascal@90 | 78 $(cat $file) |
naitsirhc@267 | 79 </textarea> |
pascal@90 | 80 </form> |
pascal@90 | 81 EOT |
naitsirhc@267 | 82 #The space before textarea gets muddled when the form is submitted. |
naitsirhc@267 | 83 #It prevents anything else from getting messed up |
pascal@91 | 84 elif [ "$(GET action)" == "diff" ]; then |
pascal@91 | 85 echo '<pre id="diff">' |
pascal@91 | 86 file_is_modified $file diff | syntax_highlighter diff |
pascal@91 | 87 echo '</pre>' |
pascal@90 | 88 else |
al@292 | 89 [ -n "$(POST content)" ] && |
pascal@90 | 90 sed "s/`echo -en '\r'` /\n/g" > $file <<EOT |
pascal@90 | 91 $(POST content) |
pascal@90 | 92 EOT |
pascal@90 | 93 cat <<EOT |
pascal@90 | 94 <div id="actions"> |
pascal@100 | 95 <a class="button" href='$SCRIPT_NAME?file=$file&action=edit'> |
pascal@97 | 96 <img src="$IMAGES/edit.png" />`gettext "Edit"`</a> |
pascal@90 | 97 EOT |
pascal@91 | 98 file_is_modified $file button |
pascal@91 | 99 echo -e "</div>\n<pre>" |
pascal@90 | 100 # Handle file type by extension as a Web Server does it. |
pascal@90 | 101 case "$file" in |
pascal@90 | 102 *.conf|*.lst) |
pascal@90 | 103 syntax_highlighter conf ;; |
pascal@90 | 104 *.sh|*.cgi) |
pascal@90 | 105 syntax_highlighter sh ;; |
pascal@90 | 106 *) |
pascal@90 | 107 cat ;; |
pascal@90 | 108 esac < $file |
pascal@90 | 109 echo '</pre>' |
pascal@90 | 110 fi ;; |
pankso@191 | 111 *\ terminal\ *|*\ cmd\ *) |
pankso@191 | 112 # Cmdline terminal. |
pankso@194 | 113 commands='cat du help ls ping pwd who wget' |
pankso@191 | 114 cmd=$(GET cmd) |
al@292 | 115 TITLE=$(gettext 'TazPanel - Terminal') |
pankso@191 | 116 xhtml_header |
pankso@191 | 117 cat << EOT |
pankso@191 | 118 <form method="get" action="$SCRIPT_NAME"> |
pankso@191 | 119 <div class="box"> |
pankso@191 | 120 root@$(hostname):~# <input type="text" name="cmd" style="width: 80%;" /> |
pankso@191 | 121 </div> |
pankso@191 | 122 </form> |
pankso@191 | 123 EOT |
pankso@191 | 124 echo '<pre id="terminal">' |
pankso@191 | 125 # Allow only a few commands for the moment. |
pankso@191 | 126 case "$cmd" in |
pankso@191 | 127 usage|help) |
pankso@195 | 128 gettext "Small terminal emulator, commands options are supported." |
pankso@195 | 129 echo "" |
pankso@191 | 130 gettext "Commands:"; echo " $commands" ;; |
pankso@191 | 131 wget*) |
pankso@191 | 132 dl=/var/cache/downloads |
pankso@191 | 133 [ ! -d "$dl" ] && mkdir -p $dl |
pankso@191 | 134 gettext "Downloading to:"; echo " $dl" |
pankso@191 | 135 cd $dl && $cmd ;; |
pankso@191 | 136 du*|ls*|ping*|pwd|who) |
pankso@191 | 137 $cmd ;; |
pankso@194 | 138 cat*) |
pankso@194 | 139 # Cmd must be used with an arg. |
pankso@194 | 140 arg=$(echo $cmd | awk '{print $2}') |
pankso@194 | 141 [ "$arg" == "" ] && echo -n "$cmd " && \ |
paul@199 | 142 gettext "needs an argument $arg" && exit 0 |
pankso@194 | 143 $cmd ;; |
pankso@191 | 144 *) |
pankso@191 | 145 [ "$cmd" == "" ] || \ |
paul@199 | 146 gettext "Unknown command: $cmd" |
pankso@191 | 147 gettext "Commands:"; echo " $commands" ;; |
pankso@191 | 148 esac |
pankso@191 | 149 echo '</pre>' ;; |
pascal@144 | 150 *\ top\ *) |
al@292 | 151 TITLE=$(gettext 'TazPanel - Process activity') |
pascal@144 | 152 xhtml_header |
naitsirhc@270 | 153 echo `gettext "Refresh: "` $(GET refresh) |
naitsirhc@268 | 154 echo '<br/> |
naitsirhc@268 | 155 <form method="get"> |
naitsirhc@268 | 156 <input type="hidden" name="top"/> |
naitsirhc@268 | 157 <input type="submit" name="refresh" value="1s"/> |
naitsirhc@268 | 158 <input type="submit" name="refresh" value="5s"/> |
naitsirhc@268 | 159 <input type="submit" name="refresh" value="10s"/> |
naitsirhc@268 | 160 <input type="submit" value="none"/> |
naitsirhc@268 | 161 </form> ' |
al@292 | 162 [ -n $(GET refresh) ] && |
naitsirhc@268 | 163 echo '<meta http-equiv="refresh" content="' $(GET refresh) '">' | sed "s/s //" |
naitsirhc@268 | 164 |
pascal@144 | 165 echo '<pre>' |
pankso@152 | 166 top -n1 -b | sed \ |
pankso@152 | 167 -e s"#^[A-Z].*:\([^']\)#<span class='sh-comment'>\0</span>#"g \ |
pankso@152 | 168 -e s"#PID.*\([^']\)#<span class='top'>\0</span>#"g |
pascal@144 | 169 echo '</pre>' ;; |
pascal@81 | 170 *\ debug\ *) |
al@292 | 171 TITLE=$(gettext 'TazPanel - Debug') |
pankso@53 | 172 xhtml_header |
pankso@55 | 173 echo '<h2>HTTP Environment</h2>' |
pankso@55 | 174 echo '<pre>' |
pascal@81 | 175 httpinfo |
pankso@55 | 176 echo '</pre>' ;; |
pankso@161 | 177 *\ report\ *) |
al@292 | 178 TITLE=$(gettext 'TazPanel - System report') |
pascal@163 | 179 [ -d /var/cache/slitaz ] || mkdir -p /var/cache/slitaz |
pankso@161 | 180 output=/var/cache/slitaz/sys-report.html |
pankso@161 | 181 xhtml_header |
pankso@161 | 182 echo "<h2>$(gettext "Reporting to:") $output</h2>" |
pankso@161 | 183 echo '<pre>' |
pankso@161 | 184 gettext "Creating report header... " |
pankso@161 | 185 cat > $output << EOT |
pankso@161 | 186 <!DOCTYPE html> |
pankso@161 | 187 <html xmlns="http://www.w3.org/1999/xhtml"> |
pankso@161 | 188 <head> |
pankso@161 | 189 <title>SliTaz system report</title> |
pankso@161 | 190 <style type="text/css"> |
pankso@161 | 191 body { padding: 20px 60px; font-size: 13px; } h1, h2 { color: #444; } |
pankso@161 | 192 pre { background: #f1f1f1; border: 1px solid #ddd; |
pankso@161 | 193 padding: 10px; border-radius: 4px; } |
pascal@166 | 194 span.diff-rm { color: red; } |
pascal@166 | 195 span.diff-add { color: green; } |
pankso@161 | 196 </style> |
pankso@161 | 197 </head> |
pankso@161 | 198 <body> |
pankso@161 | 199 EOT |
pankso@161 | 200 ok_status |
pankso@161 | 201 gettext "Creating system summary... " |
pankso@161 | 202 cat >> $output << EOT |
pankso@161 | 203 <h1>SliTaz system report</h1> |
pankso@161 | 204 Date: $(date) |
pankso@161 | 205 <pre> |
pascal@163 | 206 uptime : $(uptime) |
pankso@161 | 207 cmdline : $(cat /proc/cmdline) |
pankso@161 | 208 version : $(cat /etc/slitaz-release) |
pankso@161 | 209 packages : $(ls /var/lib/tazpkg/installed | wc -l) installed |
pankso@161 | 210 kernel : $(uname -r) |
pankso@161 | 211 </pre> |
pankso@161 | 212 EOT |
pankso@161 | 213 ok_status |
pankso@161 | 214 gettext "Getting hardware info... " |
pankso@161 | 215 cat >> $output << EOT |
pankso@161 | 216 <h2>free</h2> |
pankso@161 | 217 <pre> |
pankso@161 | 218 $(free) |
pankso@161 | 219 </pre> |
pankso@161 | 220 |
pankso@161 | 221 <h2>lspci -k</h2> |
pankso@161 | 222 <pre> |
pankso@161 | 223 $(lspci -k) |
pankso@161 | 224 </pre> |
pankso@161 | 225 |
pankso@161 | 226 <h2>lsusb</h2> |
pankso@161 | 227 <pre> |
pankso@161 | 228 $(lsusb) |
pankso@161 | 229 </pre> |
pankso@161 | 230 |
pankso@161 | 231 <h2>lsmod</h2> |
pankso@161 | 232 <pre> |
pankso@161 | 233 $(lsmod) |
pankso@161 | 234 </pre> |
pankso@161 | 235 |
pankso@161 | 236 EOT |
pankso@161 | 237 ok_status |
pankso@161 | 238 gettext "Getting networking info... " |
pankso@161 | 239 cat >> $output << EOT |
pankso@161 | 240 <h2>ifconfig -a</h2> |
pankso@161 | 241 <pre> |
pankso@161 | 242 $(ifconfig -a) |
pankso@161 | 243 </pre> |
pascal@163 | 244 <h2>route -n</h2> |
pascal@163 | 245 <pre> |
pascal@163 | 246 $(route -n) |
pascal@163 | 247 </pre> |
pascal@163 | 248 <h2>/etc/resolv.conf</h2> |
pascal@163 | 249 <pre> |
pascal@163 | 250 $(cat /etc/resolv.conf) |
pascal@163 | 251 </pre> |
pascal@163 | 252 EOT |
pascal@163 | 253 ok_status |
pascal@163 | 254 gettext "Getting filesystems info..." |
pascal@163 | 255 cat >> $output << EOT |
pascal@163 | 256 <h2>blkid</h2> |
pascal@163 | 257 <pre> |
pascal@163 | 258 $(blkid) |
pascal@163 | 259 </pre> |
pascal@163 | 260 <h2>fdisk -l</h2> |
pascal@163 | 261 <pre> |
pascal@163 | 262 $(fdisk -l) |
pascal@163 | 263 </pre> |
pascal@163 | 264 <h2>mount</h2> |
pascal@163 | 265 <pre> |
pascal@163 | 266 $(mount) |
pascal@163 | 267 </pre> |
pascal@163 | 268 <h2>df -h</h2> |
pascal@163 | 269 <pre> |
pascal@163 | 270 $(df -h) |
pascal@163 | 271 </pre> |
pascal@163 | 272 <h2>df -i</h2> |
pascal@163 | 273 <pre> |
pascal@163 | 274 $(df -i) |
pascal@163 | 275 </pre> |
pascal@163 | 276 EOT |
pascal@163 | 277 ok_status |
pascal@163 | 278 gettext "Getting boot logs... " |
pascal@163 | 279 cat >> $output << EOT |
pascal@163 | 280 <h2>$(gettext "Kernel messages")</h2> |
pascal@163 | 281 <pre> |
pascal@163 | 282 $(cat /var/log/dmesg.log) |
pascal@163 | 283 </pre> |
pascal@163 | 284 <h2>$(gettext "Boot scripts")</h2> |
pascal@163 | 285 <pre> |
pascal@163 | 286 $(cat /var/log/boot.log | filter_taztools_msgs) |
pascal@163 | 287 </pre> |
pankso@161 | 288 EOT |
pankso@161 | 289 ok_status |
pankso@161 | 290 gettext "Creating report footer... " |
pankso@161 | 291 cat cat >> $output << EOT |
pankso@161 | 292 </body> |
pankso@161 | 293 </html> |
pankso@161 | 294 EOT |
pankso@161 | 295 ok_status |
pankso@161 | 296 echo '</pre>' |
pankso@161 | 297 echo "<p><a class='button' href='$SCRIPT_NAME?file=$output'> |
pankso@161 | 298 $(gettext "View report")</a>" |
pankso@161 | 299 gettext "This report can be attached with a bug report on: " |
pankso@161 | 300 echo '<a href="http://bugs.slitaz.org/">bugs.slitaz.org</a></p>' ;; |
pankso@2 | 301 *) |
pankso@14 | 302 # |
pankso@2 | 303 # Default xHTML content |
pankso@14 | 304 # |
pankso@8 | 305 xhtml_header |
pascal@81 | 306 [ -n "$(GET gen_locale)" ] && new_locale=$(GET gen_locale) |
pascal@81 | 307 [ -n "$(GET rdate)" ] && echo "" |
pankso@2 | 308 cat << EOT |
pankso@13 | 309 <div id="wrapper"> |
pankso@154 | 310 <h2>$(gettext "Host:") $(hostname)</h2> |
pankso@154 | 311 <p>$(gettext "SliTaz administration and configuration Panel")<p> |
pankso@154 | 312 </div> |
pankso@154 | 313 <div id="actions"> |
pankso@191 | 314 <a class="button" href="$SCRIPT_NAME?terminal"> |
pankso@191 | 315 <img src="$IMAGES/terminal.png" />$(gettext "Terminal")</a> |
pankso@161 | 316 <a class="button" href="$SCRIPT_NAME?top"> |
pankso@161 | 317 <img src="$IMAGES/monitor.png" />$(gettext "Process activity")</a> |
pankso@161 | 318 <a class="button" href="$SCRIPT_NAME?report"> |
pankso@161 | 319 <img src="$IMAGES/text.png" />$(gettext "Create a report")</a> |
pankso@14 | 320 </div> |
pankso@14 | 321 |
pankso@154 | 322 <h3>$(gettext "Summary")</h3> |
pankso@14 | 323 <div id="summary"> |
pankso@161 | 324 <pre> |
pankso@161 | 325 $(gettext "Uptime :")$(uptime) |
pankso@161 | 326 $(gettext "Memory in Mb :") $(free -m | grep Mem: | awk \ |
pankso@161 | 327 '{print "Total:", $2, "Used:", $3, "Free:", $4}') |
pankso@161 | 328 $(gettext "Linux kernel :") $(uname -r) |
pankso@161 | 329 </pre> |
pankso@33 | 330 <!-- Close summary --> |
pankso@33 | 331 </div> |
pankso@14 | 332 |
pankso@154 | 333 <h4>$(gettext "Network status")</h4> |
pankso@154 | 334 $(list_network_interfaces) |
pankso@154 | 335 |
pankso@154 | 336 <h4>$(gettext "Filesystem usage statistics")</h4> |
pankso@153 | 337 EOT |
paul@157 | 338 # Disk stats (management is done as hardware.cgi) |
pankso@153 | 339 table_start |
pankso@153 | 340 df_thead |
pankso@153 | 341 df -h | grep ^/dev | while read fs size used av pct mp |
pankso@153 | 342 do |
pankso@153 | 343 cat << EOT |
pankso@153 | 344 <tr> |
pankso@153 | 345 <td><a href="hardware.cgi"> |
pankso@190 | 346 <img src="$IMAGES/harddisk.png" />${fs#/dev/}</a></td> |
pankso@153 | 347 <td>$size</td> |
pankso@153 | 348 <td>$av</td> |
pankso@153 | 349 <td class="pct"><div class="pct" |
pankso@153 | 350 style="width: $pct;">$used - $pct</div></td> |
pankso@153 | 351 <td>$mp</td> |
pankso@153 | 352 </tr> |
pankso@153 | 353 EOT |
pankso@153 | 354 done |
pankso@153 | 355 table_end |
pankso@153 | 356 cat << EOT |
pankso@153 | 357 <h3>$(gettext "Panel Activity")</h3> |
pankso@120 | 358 <pre id="panel-activity"> |
pankso@120 | 359 $(cat $LOG_FILE | tail -n 8 | sort -r | syntax_highlighter activity) |
pankso@76 | 360 </pre> |
pankso@76 | 361 |
pankso@2 | 362 EOT |
pankso@2 | 363 ;; |
pankso@2 | 364 esac |
pankso@2 | 365 |
pankso@14 | 366 xhtml_footer |
pankso@14 | 367 exit 0 |