tazpanel annotate index.cgi @ rev 292

translatable header, footer & titles; make pot
author Aleksej Bobylev <al.bobylev@gmail.com>
date Wed Apr 11 20:12:41 2012 +0300 (2012-04-11)
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