tazpanel annotate boot.cgi @ rev 581

libtazpanel: s/noboby/root/
"fixes" user-switch on any link clicked if panel launched from new tazpkg notifier or su -c tazpanel
env problems?
------------------
boot.cgi: do not find in /run/media/username/disks
author Xander Ziiryanoff <psychomaniak@xakep.ru>
date Fri Apr 08 18:09:43 2016 +0200 (2016-04-08)
parents 37371a0ba561
children b70dbd35b729
rev   line source
pankso@50 1 #!/bin/sh
pankso@50 2 #
paul@82 3 # Boot CGI script - All what happens before login (grub, rcS, slim)
pankso@50 4 #
al@419 5 # Copyright (C) 2011-2015 SliTaz GNU/Linux - BSD License
pankso@50 6 #
pankso@50 7
al@419 8
pankso@50 9 # Common functions from libtazpanel and source main boot config file.
al@419 10
pankso@50 11 . lib/libtazpanel
pankso@50 12 . /etc/rcS.conf
al@419 13 get_config
pascal@81 14 header
pankso@50 15
al@501 16 TITLE=$(_ 'Boot')
pankso@50 17
al@419 18
al@419 19 # Print last 40 lines of given file with "more" link
al@419 20
al@426 21 loghead() {
al@419 22 case $2 in
al@419 23 htmlize) tail -n40 $1 | htmlize;;
al@426 24 *) tail -n40;;
al@419 25 esac
pascal@411 26 [ $(wc -l < $1) -gt 40 ] && cat <<EOT
al@558 27 <hr/><a data-icon="@view@" href="index.cgi?file=$1">$(_ 'Show more...')</a>
pascal@411 28 EOT
pascal@411 29 }
pascal@411 30
al@419 31
pankso@50 32 #
pankso@50 33 # Commands
pankso@50 34 #
pankso@50 35
pascal@81 36 case " $(GET) " in
pascal@451 37 *\ syslog\ *)
pascal@451 38 logtype="$(GET syslog)"
al@501 39 [ "${logtype:-syslog}" == 'syslog' ] && logtype='messages'
al@501 40 xhtml_header "$(_ 'System logs')"
al@472 41
al@472 42 cat <<EOT
al@472 43 <section>
al@472 44 <header>
al@472 45 $(_ 'System logs')
al@472 46 EOT
al@472 47
pascal@523 48 edit_button /etc/syslog.conf syslog.conf
al@472 49
pascal@451 50 cat <<EOT
al@472 51 </header>
pascal@451 52
pascal@451 53 <ul id="tabs">
pascal@451 54 EOT
pascal@451 55 for i in $(sed '/var\/log/!d;s|.*/log/||' /etc/syslog.conf); do
pascal@451 56 unset act
pascal@451 57 [ "$i" == "$logtype" ] && act=' class="active"'
pascal@451 58 cat <<EOT
pascal@451 59 <li$act><a href="?syslog=$i" title="$(sed "/$i$/!d;s/[\t ].*//" /etc/syslog.conf)">$i</a></li>
pascal@451 60 EOT
pascal@451 61 done
pascal@451 62 cat <<EOT
pascal@451 63 </ul>
pascal@451 64
al@472 65 <pre style="overflow-x: auto">$(syntax_highlighter kernel < /var/log/$logtype | \
al@472 66 loghead /var/log/$logtype)</pre>
pascal@451 67 </section>
pascal@451 68 EOT
pascal@451 69 ;;
al@472 70
al@472 71
pascal@130 72 *\ log\ *)
al@419 73 unset actboot actslim actxlog actkernel colors
pascal@411 74 case "$(GET log)" in
al@419 75 boot)
al@419 76 actboot=' class="active"'
al@419 77 output="$(filter_taztools_msgs < /var/log/boot.log)"
al@419 78 colors=' class="term log"';;
al@419 79 slim)
al@419 80 actslim=' class="active"'
al@419 81 output="$(loghead /var/log/slim.log htmlize)" ;;
al@419 82 xlog)
al@419 83 actxlog=' class="active"'
al@419 84 output="$(syntax_highlighter xlog < /var/log/Xorg.0.log | loghead /var/log/Xorg.0.log)" ;;
al@419 85 *)
al@419 86 actkernel=' class="active"'
al@419 87 output="$(syntax_highlighter kernel < /var/log/dmesg.log | loghead /var/log/dmesg.log)" ;;
pascal@411 88 esac
al@501 89
al@501 90 xhtml_header "$(_ 'Boot log files')"
al@419 91 cat <<EOT
pascal@411 92 <ul id="tabs">
al@443 93 <li$actkernel><a href="?log=kernel">$(_ 'Kernel messages')</a></li>
al@443 94 <li$actboot ><a href="?log=boot" >$(_ 'Boot scripts' )</a></li>
al@443 95 <li$actxlog ><a href="?log=xlog" >$(_ 'X server' )</a></li>
al@443 96 <li$actslim ><a href="?log=slim" >$(_ 'X session' )</a></li>
pascal@411 97 </ul>
al@419 98
al@419 99 <section>
al@419 100 <div>
al@472 101 <pre$colors style="overflow-x: auto">$output</pre>
al@419 102 </div>
al@419 103 </section>
pascal@130 104 EOT
pascal@130 105 ;;
al@419 106
al@419 107
pascal@81 108 *\ daemons\ *)
pankso@51 109 #
pankso@51 110 # Everything until user login
pankso@51 111 #
al@419 112 # Start and stop a daemon.
al@419 113 # (I think we don't need a 'restart' since 2 clicks and you are done)
pankso@51 114 . /etc/rcS.conf
al@501 115 xhtml_header "$(_ 'Manage daemons')"
al@292 116
al@419 117 cat <<EOT
al@443 118 <p>$(_ 'Check, start and stop daemons on SliTaz')</p>
pankso@51 119 EOT
pascal@143 120 daemon=$(GET daemons)
pascal@143 121 case "$daemon" in
pascal@143 122 start=*)
pascal@143 123 sleep 1
pascal@143 124 /etc/init.d/${daemon#start=} start | log ;;
pascal@143 125 stop=*)
pascal@143 126 /etc/init.d/${daemon#stop=} stop | log ;;
pascal@143 127 pid=*)
pascal@143 128 echo "<pre>"
pascal@383 129 ps ww | sed 1q
pascal@383 130 for i in $(echo ${daemon#pid=} | sed 's/%20/ /g'); do
pascal@383 131 ps ww | sed "/^ $i /!d"
pascal@383 132 done
pascal@143 133 echo "</pre>" ;;
pascal@143 134 esac
al@419 135
paul@205 136 # Daemon list
al@419 137 cat <<EOT
al@419 138 <section>
al@419 139 <table class="zebra wide daemons">
al@419 140 <thead>
al@419 141 <tr>
al@443 142 <td>$(_ 'Name')</td>
al@443 143 <td>$(_ 'Description')</td>
al@443 144 <td>$(_ 'Configuration')</td>
al@443 145 <td>$(_ 'Status')</td>
al@443 146 <td>$(_ 'Action')</td>
al@443 147 <td>$(_ 'PID')</td>
al@419 148 </tr>
al@419 149 </thead>
al@419 150 <tbody>
pankso@51 151 EOT
pankso@51 152 cd /etc/init.d
al@419 153 list="$(ls | sed -e /.sh/d -e /rc./d -e /RE/d -e /daemon/d -e /firewall/d)"
al@419 154 for name in $list; do
al@419 155 unset pkg pid status SHORT_DESC boot cfg
pankso@51 156 echo '<tr>'
pankso@51 157 # Name
pankso@51 158 echo "<td>$name</td>"
al@419 159 # First check if daemon is started at boottime
pankso@51 160 [ echo "RUN_DAEMONS" | fgrep $name ] && boot="on boot"
paul@52 161 # Standard SliTaz busybox daemons and firewall
al@303 162 echo -n "<td>"
pascal@364 163 grep -qi "^${name}_OPTIONS=" /etc/daemons.conf && cfg="options|$cfg"
pascal@373 164 for i in /etc/slitaz /etc /etc/$name ; do
pascal@496 165 for j in $i/$name.conf $i/${name}d.conf ; do
pascal@496 166 [ -s $j ] && cfg="edit::$j|$cfg"
pascal@496 167 done
pascal@373 168 done
pascal@364 169 [ -n "$(which $name)" ] && cfg="man|help|$cfg"
pankso@51 170 case "$name" in
pankso@51 171 firewall)
al@443 172 _ 'SliTaz Firewall with iptable rules' ;;
pankso@51 173 httpd)
al@443 174 _ 'Small and fast web server with CGI support' ;;
pankso@51 175 ntpd)
pascal@475 176 cfg="man|help|edit::/etc/ntp.conf|options"
al@443 177 _ 'Network time protocol daemon' ;;
pankso@51 178 ftpd)
pascal@364 179 cfg="man|help|edit::/etc/inetd.conf"
al@443 180 _ 'Anonymous FTP server' ;;
pankso@51 181 udhcpd)
pascal@475 182 cfg="man|help|edit|options"
al@443 183 _ 'Busybox DHCP server' ;;
pankso@51 184 syslogd|klogd)
pascal@475 185 cfg="man|help|edit::/etc/syslog.conf|options"
al@443 186 _ 'Linux Kernel log daemon' ;;
pankso@76 187 crond)
pascal@364 188 # FIXME crontab
al@443 189 _ 'Execute scheduled commands' ;;
pankso@76 190 dnsd)
pascal@364 191 cfg="man|help|edit|options::-d"
al@443 192 _ 'Small static DNS server daemon' ;;
pankso@76 193 tftpd)
pascal@475 194 cfg="man|help|edit::/etc/inetd.conf|options"
al@443 195 _ 'Transfer a file on tftp request' ;;
pascal@475 196 lpd)
pascal@475 197 cfg="man|help|options"
pascal@475 198 _ 'Printer daemon' ;;
pankso@76 199 inetd)
al@443 200 _ 'Listen for network connections and launch programs' ;;
pankso@76 201 zcip)
pascal@364 202 cfg="man|help|edit:Script:/etc/zcip.script|options::eth0 /etc/zcip.script"
al@443 203 _ 'Manage a ZeroConf IPv4 link-local address' ;;
pankso@51 204 *)
paul@205 205 # Description from receipt
pankso@51 206 [ -d "$LOCALSTATE/installed/$name" ] && pkg=$name
pankso@51 207 [ -d "$LOCALSTATE/installed/${name%d}" ] && pkg=${name%d}
pankso@51 208 [ -d "$LOCALSTATE/installed/${name}-pam" ] && pkg=${name}-pam
pankso@51 209 if [ "$pkg" ]; then
pascal@364 210 unset SHORT_DESC TAZPANEL_DAEMON
al@419 211 #FIXME $PKGS_DB
pankso@51 212 . $LOCALSTATE/installed/$pkg/receipt
al@303 213 echo -n "$SHORT_DESC"
pascal@366 214 cfg="${TAZPANEL_DAEMON:-$cfg|web::$WEB_SITE}"
pankso@51 215 else
al@303 216 echo -n "----"
pankso@51 217 fi ;;
pankso@51 218 esac
al@303 219 echo "</td>"
paul@205 220 # Attempt to get daemon status
psychomaniak@581 221 pidfile=$(find /run /var/run -maxdepth 2 -name *$name*.pid)
al@303 222 [ "$pidfile" ] && pid=$(cat $pidfile)
al@419 223 # Dbus
al@303 224 [ -f /var/run/${name}/pid ] && pid=$(cat /var/run/${name}/pid)
al@419 225 # Apache
al@303 226 [ "$name" = "apache" ] && pid=$(cat /var/run/$name/httpd.pid)
paul@205 227 # Pidof works for many daemons
al@303 228 [ "$pid" ] || pid=$(pidof $name)
al@419 229
al@419 230 echo -n "<td style='white-space: nowrap'>"
al@419 231 if [ -n "$cfg" ]; then
pascal@364 232 IFS="|"
pascal@364 233 for i in $cfg ; do
pascal@364 234 IFS=":"
pascal@364 235 set -- $i
pascal@364 236 case "$1" in
al@419 237 edit)
al@419 238 cat <<EOT
al@558 239 <a href="index.cgi?file=${3:-/etc/$name.conf}&amp;action=edit" title="${2:-$name configuration} in ${3:-/etc/$name.conf}" data-img="@conf@"></a>
pascal@364 240 EOT
pascal@364 241 ;;
pascal@364 242 options)
al@419 243 key=$(echo -n $name | tr [a-z] [A-Z])_OPTIONS
pascal@364 244 cat <<EOT
al@558 245 <a href="index.cgi?file=/etc/daemons.conf&amp;action=setvar&amp;var=$key&amp;default=$3" title="${2:-$key}" data-img="@opt@"></a>
pascal@364 246 EOT
pascal@364 247 ;;
al@419 248 man)
al@419 249 cat <<EOT
al@558 250 <a href="index.cgi?exec=man ${3:-$name}&amp;back=boot.cgi%3Fdaemons" title="${2:-$name Manual}" data-img="@man@"></a>
pascal@364 251 EOT
pascal@364 252 ;;
al@419 253 help)
al@419 254 help='--help'
al@419 255 case $name in
al@419 256 cupsd|dropbear|gpm|slim|wpa_supplicant) help='-h'
al@419 257 esac
al@419 258 cat <<EOT
al@558 259 <a href="index.cgi?exec=$(which ${3:-$name}) $help&amp;back=boot.cgi%3Fdaemons" title="${2:-$name Help}" data-img="@help@"></a>
pascal@364 260 EOT
pascal@364 261 ;;
pascal@364 262 web) cat <<EOT
al@558 263 <a href="${i#$1:$2:}" title="${2:-$name website:} ${i#$1:$2:}" target="_blank" data-img="@web@"></a>
pascal@364 264 EOT
pascal@364 265 ;;
pascal@364 266 esac
pascal@364 267 done
pascal@364 268 fi
pascal@364 269 echo "</td>"
pankso@51 270 if [ "$pid" ]; then
al@419 271 cat <<EOT
al@558 272 <td><span title="$(_ 'Started')" data-img="@on@"></span></td>
al@558 273 <td><a href="?daemons=stop=$name" title="$(_ 'Stop')" data-img="@stop@"></a></td>
pascal@143 274 <td>
pascal@143 275 EOT
pascal@143 276 for i in $pid; do
al@419 277 cat <<EOT
al@406 278 <a href="?daemons=pid=$i">$i</a>
pascal@143 279 EOT
pascal@143 280 done
pankso@51 281 else
al@419 282 cat <<EOT
al@558 283 <td><span title="$(_ 'Stopped')" data-img="@off@"></span></td>
al@558 284 <td><a href="?daemons=start=$name" title="$(_ 'Start')" data-img="@start@"></a></td>
pascal@143 285 <td>-----
pascal@143 286 EOT
pankso@51 287 fi
pascal@143 288 echo '</td></tr>'
pankso@51 289 done
al@419 290 echo '</thead></table></section>' ;;
al@419 291
al@303 292
pankso@151 293 *\ grub\ *)
al@303 294 GRUBMENU="/boot/grub/menu.lst"
pankso@151 295 if [ "$(GET splash)" ]; then
pankso@151 296 default=$(GET default)
pankso@151 297 timeout=$(GET timeout)
pankso@151 298 splash=$(GET splash)
pankso@151 299 sed -i \
al@303 300 -e s"|default .*|default $default # new|" \
al@303 301 -e s"|timeout .*|timeout $timeout|" \
al@303 302 -e s"|splashimage=.*|splashimage=$splash|" \
al@303 303 $GRUBMENU
pankso@151 304 fi
pascal@504 305 default=$(grep ^default $GRUBMENU | cut -d' ' -f2)
pascal@504 306 timeout=$(grep ^timeout $GRUBMENU | cut -d' ' -f2)
pascal@504 307 splash=$(grep ^splashimage $GRUBMENU | cut -d' ' -f2)
al@501 308
al@501 309 xhtml_header "$(_ 'GRUB Boot loader')"
al@419 310 cat <<EOT
al@443 311 <p>$(_ 'The first application started when the computer powers on')</p>
pankso@151 312
al@419 313 <form class="wide">
al@419 314 <section>
al@419 315 <div>
al@419 316 <input type="hidden" name="grub"/>
al@419 317 <table>
al@443 318 <tr><td>$(_ 'Default entry:')</td>
al@419 319 <td><input type="text" name="default" value="${default##*=}"/></td></tr>
al@443 320 <tr><td>$(_ 'Timeout:')</td>
al@419 321 <td><input type="text" name="timeout" value="${timeout##*=}"/></td></tr>
al@443 322 <tr><td>$(_ 'Splash image:')</td>
al@419 323 <td><input type="text" name="splash" value="${splash##*=}" size="40"/></td></tr>
al@419 324 </table>
al@419 325 </div>
al@419 326 <footer>
al@558 327 <button type="submit" data-icon="@ok@">$(_ 'Change')</button>
al@419 328 </footer>
al@419 329 </section>
pankso@151 330 </form>
pankso@151 331
al@419 332 <form action="index.cgi">
al@419 333 <input type="hidden" name="file" value="$GRUBMENU"/>
al@558 334 <button data-icon="@text@">$(_ 'View or edit menu.lst')</button>
al@419 335 </form>
al@419 336
al@419 337
al@419 338 <section>
al@443 339 <header>$(_ 'Boot entries')</header>
al@419 340 <div>
pankso@151 341 EOT
al@303 342
al@303 343
al@419 344 menu=$(tail -q -n +$(grep -n ^title $GRUBMENU | head -n1 | cut -d: -f1) $GRUBMENU | \
al@419 345 sed -e "s|^$||g" | \
al@443 346 sed -e "s|^title|</pre></div>\n</section>\n\n<section>\n\t<header>$(_ 'Entry') #</header>\n<div><pre style=\"white-space:pre-wrap\">\0|g" | \
al@419 347 sed '/^[ \t]*$/d' | \
al@419 348 tail -q -n +2)"</pre>"
al@303 349
pankso@151 350 entry='-1'
al@303 351 echo "$menu" | while read line
pankso@151 352 do
al@419 353 if [ -n "$(echo $line | grep '#</header>')" ]; then
al@303 354 entry=$(($entry + 1))
al@303 355 fi
al@419 356 echo $line | sed "s|#</header>|$entry</header>|"
pankso@151 357 done
al@303 358
al@419 359 echo '</section>'
al@419 360
al@419 361
pankso@151 362 # Here we could check if an entry for gpxe is present if not
pankso@151 363 # display a form to add it.
al@419 364 [ -f "/boot/gpxe" ] && cat <<EOT
al@419 365 <section>
al@419 366 <header>gPXE</header>
al@443 367 <div>$(_ 'Web boot is available with gPXE')</div>
al@419 368 </section>
al@419 369 EOT
pankso@151 370 ;;
al@419 371
al@419 372
pascal@454 373 *\ iso\ *)
pascal@454 374 xhtml_header
al@456 375 iso=$(POST iso); [ -s "$iso" ] || unset iso
al@456 376 action=$(POST action); [ "$action" ] || action=$(GET action)
pascal@454 377 workdir=$(POST workdir)
pascal@454 378 [ -d $workdir ] || workdir=$(dirname $workdir)
pascal@454 379 [ -w $workdir -a "$workdir" ] || workdir=/tmp
al@456 380
pascal@454 381 echo "<h2>$(_ 'ISO mine')</h2>"
al@456 382
pascal@506 383 [ "$iso" ] || msg err "$(_ 'Invalid ISO image.')"
al@456 384
pascal@454 385 if [ "$iso" -a "$action" -a "$action" != "nop" ]; then
pascal@454 386 case "$action" in
al@456 387 install*) dev=$(POST instdev) ;;
al@456 388 *) dev=$(POST usbkeydev) ;;
pascal@454 389 esac
pascal@455 390 cd $workdir
pascal@454 391 cat <<EOT
pascal@454 392 <section>
pascal@454 393 <pre>
pascal@544 394 $(taziso $iso $action $dev 2>&1 | htmlize)
pascal@454 395 </pre>
pascal@454 396 </section>
pascal@454 397 EOT
pascal@454 398 fi
pascal@454 399 cat <<EOT
pascal@454 400 <section>
al@456 401 <form method="post" action="?iso" class="wide">
al@456 402 <table>
pascal@504 403 <tr><td>$(_ 'ISO image file full path')
al@558 404 <span data-img="@info@" title="$(_ 'set /dev/cdrom for a physical CD-ROM')"></span>
al@456 405 </td>
pascal@554 406 <td>$(file_chooser "iso" "$iso")</td></tr>
pascal@504 407 <tr><td>$(_ 'Working directory')</td>
pascal@554 408 <td>$(dir_chooser "workdir" "$workdir")</td></tr>
pascal@553 409 </td></tr>
pascal@504 410 <tr><td>$(_ 'Target partition')
al@558 411 <span data-img="@info@" title="$(_ 'For hard disk installation only. Will create /slitaz tree and keep other files. No partitioning and no formatting.')"></span>
pascal@458 412 </td>
al@456 413 <td><select name="instdev">
pascal@504 414 <option value="/dev/null">$(_ 'Choose a partition (optional)')</option>
pascal@454 415 EOT
pascal@458 416 blkid | grep -iE "(msdos|vfat|ntfs|ext[234]|xfs|btrfs)" | \
pascal@490 417 sed -e 's|[A-Z]*ID="[^"]*"||g;s| SEC[^ ]*||;s|LABEL=||;s|:||' \
pascal@490 418 -e 's|TYPE="\([^"]*\)"|\1|;s|/dev/||' | \
pascal@458 419 while read dev label type; do
pascal@490 420 echo -n "<option value=\"/dev/$dev\">/dev/$dev $label $type "
pascal@490 421 echo "$(blk2h < /sys/block/${dev:0:3}/$dev/size)</option>"
pascal@454 422 done
pascal@454 423 cat <<EOT
al@456 424 </select></td></tr>
pascal@504 425 <tr><td>$(_ 'USB key device')
al@558 426 <span data-img="@info@" title="$(_ 'For USB boot key only. Will erase the full device.')"></span>
pascal@458 427 </td>
al@456 428 <td><select name="usbkeydev">
pascal@504 429 <option value="/dev/null">$(_ 'Choose a USB key (optional)')</option>
pascal@454 430 EOT
pascal@454 431 grep -l 1 /sys/block/*/removable | \
pascal@454 432 sed 's|/sys/block/\(.*\)/removable|\1|' | while read dev; do
pascal@492 433 grep -qs 1 /sys/block/$dev/ro && continue
pascal@492 434 [ -d /sys/block/$dev/device/scsi_disk ] || continue
pascal@454 435 echo -n "<option value=\"/dev/$dev\">/dev/$dev "
pascal@508 436 echo -n "$(blk2h < /sys/block/$dev/size) "
pascal@508 437 echo -n "$(cat /sys/block/$dev/device/model 2>/dev/null) "
pascal@508 438 blkid | grep $dev | sed '/LABEL=/!d;s/.*LABEL="\([^"]*\).*/"\1"/;q'
pascal@508 439 echo "</option>"
pascal@454 440 done
pascal@454 441 cat <<EOT
al@456 442 </select></td></tr>
al@456 443 </table>
pascal@454 444 <footer>
pascal@454 445 EOT
al@456 446
pascal@454 447 if [ "$iso" ]; then
pascal@454 448 cat <<EOT
pascal@454 449 <select name="action">
pascal@504 450 <option value="nop">$(_ 'Choose an action')</option>
al@456 451 $(taziso $iso list | sed -e \
al@456 452 's/"\(.*\)"[\t ]*"\(.*\)"/<option value="\1\">\2<\/option>/' -e \
al@456 453 "s|value=\"$action\"|& selected|")
pascal@454 454 </select>
pascal@454 455 EOT
pascal@454 456 elif [ "$action" ]; then
pascal@454 457 cat <<EOT
pascal@454 458 <input type="hidden" name="action" value="$action" />
pascal@454 459 EOT
pascal@454 460 fi
al@456 461
pascal@454 462 cat <<EOT
al@558 463 <button data-icon="@cd@" name="mine">$(_ 'Mine')</button>
pascal@454 464 </footer>
pascal@454 465 </form>
pascal@454 466 </section>
pascal@454 467 EOT
pascal@454 468 ;;
al@456 469
al@456 470
pankso@50 471 *)
pankso@50 472 #
pankso@51 473 # Default content with summary
pankso@50 474 #
pankso@50 475 . /etc/rcS.conf
al@501 476 xhtml_header "$(_ 'Boot &amp; Start services')"
al@419 477 cat <<EOT
al@443 478 <p>$(_ 'Everything that happens before user login')</p>
pankso@57 479
al@419 480 <form>
al@558 481 <button name="log" data-icon="@logs@">$(_ 'Boot logs')</button>
al@558 482 <button name="syslog" data-icon="@logs@">$(_ 'System logs')</button>
al@558 483 <button name="daemons" data-icon="@daemons@" data-root>$(_ 'Manage daemons')</button>
pascal@434 484 EOT
pascal@454 485 [ "$REMOTE_USER" == "root" -a -x /usr/bin/taziso ] && cat <<EOT
al@558 486 <button name="iso" data-icon="@cd@">$(_ 'ISO mine')</button>
pascal@454 487 EOT
pascal@434 488 [ -w /boot/grub/menu.lst ] && cat <<EOT
al@558 489 <button name="grub" data-icon="@grub@">$(_ 'Boot loader')</button>
pascal@434 490 EOT
pascal@434 491 cat <<EOT
al@419 492 </form>
al@303 493
al@303 494
al@419 495 <section>
al@443 496 <header>$(_ 'Configuration files')</header>
al@419 497 <form action="index.cgi" class="wide">
al@419 498 <table>
al@443 499 <tr><td>$(_ 'Main configuration file:') <b>rcS.conf</b></td>
al@558 500 <td><button name="file" value="/etc/rcS.conf" data-icon="@view@">$(_ 'View')</button></td></tr>
al@443 501 <tr><td>$(_ 'Login manager settings:') <b>slim.conf</b></td>
al@558 502 <td><button name="file" value="/etc/slim.conf" data-icon="@view@">$(_ 'View')</button></td></tr>
al@419 503 </table>
al@419 504 </form>
al@419 505 </section>
al@303 506
al@303 507
pascal@430 508 <section style="overflow-x: auto">
al@443 509 <header>$(_ 'Kernel cmdline')</header>
al@426 510 <pre>$(cat /proc/cmdline)</pre>
al@419 511 </section>
al@419 512
al@419 513
al@419 514 <section>
al@426 515 <header>
al@443 516 $(_ 'Local startup commands')
pascal@523 517 $(edit_button /etc/init.d/local.sh)
al@426 518 </header>
pascal@504 519 <pre><code class="language-bash">$(htmlize < /etc/init.d/local.sh)</code></pre>
al@419 520 </section>
pankso@50 521 EOT
pankso@50 522 ;;
pankso@50 523 esac
pankso@50 524
pankso@50 525 xhtml_footer
pankso@50 526 exit 0