tazpanel annotate boot.cgi @ rev 411

boot.cgi: display log files in tabs
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Jan 18 18:59:01 2015 +0100 (2015-01-18)
parents 106b85c1951c
children 299f204b8f1f
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 #
pankso@379 5 # Copyright (C) 2011-2014 SliTaz GNU/Linux - BSD License
pankso@50 6 #
pankso@50 7
pankso@50 8 # Common functions from libtazpanel and source main boot config file.
pankso@50 9 . lib/libtazpanel
pankso@50 10 . /etc/rcS.conf
pascal@81 11 header
pankso@50 12 get_config
pankso@50 13
al@292 14 TITLE=$(gettext 'TazPanel - Boot')
pankso@50 15
pascal@411 16 loghead()
pascal@411 17 {
pascal@411 18 tail -n 40 $1 | htmlize
pascal@411 19 [ $(wc -l < $1) -gt 40 ] && cat <<EOT
pascal@411 20 <hr /><a href="/index.cgi?file=$1">$(gettext 'Show more...')</a>
pascal@411 21 EOT
pascal@411 22 }
pascal@411 23
pankso@50 24 #
pankso@50 25 # Commands
pankso@50 26 #
pankso@50 27
pascal@81 28 case " $(GET) " in
pascal@130 29 *\ log\ *)
pascal@411 30 unset actboot actslim actxlog actkernel
pascal@411 31 case "$(GET log)" in
pascal@411 32 boot) actboot=' class="active"'
pascal@411 33 output="$(filter_taztools_msgs < /var/log/boot.log)"
pascal@411 34 ;;
pascal@411 35 slim) actslim=' class="active"'
pascal@411 36 output="$(loghead /var/log/slim.log)" ;;
pascal@411 37 xlog) actxlog=' class="active"'
pascal@411 38 output="$(loghead /var/log/Xorg.0.log)" ;;
pascal@411 39 *) actkernel=' class="active"'
pascal@411 40 output="$(syntax_highlighter kernel < /var/log/dmesg.log)"
pascal@411 41 esac
pascal@130 42 xhtml_header
pascal@130 43 cat << EOT
pascal@130 44 <div id="wrapper">
al@303 45 <h2>$(gettext 'Boot log files')</h2>
pascal@130 46 </div>
pascal@411 47 <ul id="tabs">
pascal@411 48 <li$actkernel><a href="?log=kernel">$(gettext 'Kernel messages')</a></li>
pascal@411 49 <li$actboot><a href="?log=boot">$(gettext 'Boot scripts')</a></li>
pascal@411 50 <li$actxlog><a href="?log=xlog">$(gettext 'X server')</a></li>
pascal@411 51 <li$actslim><a href="?log=slim">$(gettext 'X session')</a></li>
pascal@411 52 </ul>
pascal@411 53 <pre>
pascal@411 54 $output
al@303 55 </pre>
pascal@130 56 EOT
pascal@130 57 ;;
pascal@81 58 *\ daemons\ *)
pankso@51 59 #
pankso@51 60 # Everything until user login
pankso@51 61 #
al@292 62 # Start and stop a daemon. I think we don't need a restart since 2
paul@52 63 # clicks and you are done
pankso@51 64 . /etc/rcS.conf
pankso@51 65 xhtml_header
al@292 66
pankso@51 67 cat << EOT
pankso@51 68 <div id="wrapper">
al@303 69 <h2>$(gettext 'Manage daemons')</h2>
al@303 70 <p>$(gettext 'Check, start and stop daemons on SliTaz')</p>
pankso@51 71 </div>
pankso@51 72 EOT
pascal@143 73 daemon=$(GET daemons)
pascal@143 74 case "$daemon" in
pascal@143 75 start=*)
pascal@143 76 sleep 1
pascal@143 77 /etc/init.d/${daemon#start=} start | log ;;
pascal@143 78 stop=*)
pascal@143 79 /etc/init.d/${daemon#stop=} stop | log ;;
pascal@143 80 pid=*)
pascal@143 81 echo "<pre>"
pascal@383 82 ps ww | sed 1q
pascal@383 83 for i in $(echo ${daemon#pid=} | sed 's/%20/ /g'); do
pascal@383 84 ps ww | sed "/^ $i /!d"
pascal@383 85 done
pascal@143 86 echo "</pre>" ;;
pascal@143 87 esac
paul@205 88 # Daemon list
pankso@51 89 table_start
pankso@51 90 cat << EOT
pankso@51 91 <thead>
pankso@51 92 <tr>
al@303 93 <td>$(gettext 'Name')</td>
al@303 94 <td>$(gettext 'Description')</td>
pascal@366 95 <td>$(gettext 'Configuration')</td>
al@303 96 <td>$(gettext 'Status')</td>
al@303 97 <td>$(gettext 'Action')</td>
al@303 98 <td>$(gettext 'PID')</td>
pankso@51 99 </tr>
pankso@51 100 </thead>
pankso@51 101 EOT
pankso@51 102 cd /etc/init.d
pankso@51 103 list="`ls | sed -e /.sh/d -e /rc./d -e /RE/d -e /daemon/d \
pankso@51 104 -e /firewall/d`"
pankso@51 105 for name in $list
pankso@51 106 do
pankso@51 107 pkg=""
pankso@51 108 pid=""
pankso@51 109 status=""
pankso@51 110 SHORT_DESC=""
pankso@51 111 echo '<tr>'
pankso@51 112 # Name
pankso@51 113 echo "<td>$name</td>"
paul@52 114 # First check if daemon is started at bootime
pankso@51 115 [ echo "RUN_DAEMONS" | fgrep $name ] && boot="on boot"
paul@52 116 # Standard SliTaz busybox daemons and firewall
al@303 117 echo -n "<td>"
pascal@364 118 cfg=""
pascal@364 119 grep -qi "^${name}_OPTIONS=" /etc/daemons.conf && cfg="options|$cfg"
pascal@373 120 for i in /etc/slitaz /etc /etc/$name ; do
pascal@373 121 [ -s $i/$name.conf ] && cfg="edit::$i/$name.conf|$cfg"
pascal@373 122 done
pascal@364 123 [ -n "$(which $name)" ] && cfg="man|help|$cfg"
pankso@51 124 case "$name" in
pankso@51 125 firewall)
al@303 126 gettext 'SliTaz Firewall with iptable rules' ;;
pankso@51 127 httpd)
al@303 128 gettext 'Small and fast web server with CGI support' ;;
pankso@51 129 ntpd)
al@303 130 gettext 'Network time protocol daemon' ;;
pankso@51 131 ftpd)
pascal@364 132 cfg="man|help|edit::/etc/inetd.conf"
al@303 133 gettext 'Anonymous FTP server' ;;
pankso@51 134 udhcpd)
al@303 135 gettext 'Busybox DHCP server' ;;
pankso@51 136 syslogd|klogd)
al@303 137 gettext 'Linux Kernel log daemon' ;;
pankso@76 138 crond)
pascal@364 139 # FIXME crontab
al@303 140 gettext 'Execute scheduled commands' ;;
pankso@76 141 dnsd)
pascal@364 142 cfg="man|help|edit|options::-d"
al@303 143 gettext 'Small static DNS server daemon' ;;
pankso@76 144 tftpd)
pascal@364 145 cfg="man|help|edit::/etc/inetd.conf"
al@303 146 gettext 'Transfer a file on tftp request' ;;
pankso@76 147 inetd)
al@303 148 gettext 'Listen for network connections and launch programs' ;;
pankso@76 149 zcip)
pascal@364 150 cfg="man|help|edit:Script:/etc/zcip.script|options::eth0 /etc/zcip.script"
al@303 151 gettext 'Manage a ZeroConf IPv4 link-local address' ;;
pankso@51 152 *)
paul@205 153 # Description from receipt
pankso@51 154 [ -d "$LOCALSTATE/installed/$name" ] && pkg=$name
pankso@51 155 [ -d "$LOCALSTATE/installed/${name%d}" ] && pkg=${name%d}
pankso@51 156 [ -d "$LOCALSTATE/installed/${name}-pam" ] && pkg=${name}-pam
pankso@51 157 if [ "$pkg" ]; then
pascal@364 158 unset SHORT_DESC TAZPANEL_DAEMON
pankso@51 159 . $LOCALSTATE/installed/$pkg/receipt
al@303 160 echo -n "$SHORT_DESC"
pascal@366 161 cfg="${TAZPANEL_DAEMON:-$cfg|web::$WEB_SITE}"
pankso@51 162 else
al@303 163 echo -n "----"
pankso@51 164 fi ;;
pankso@51 165 esac
al@303 166 echo "</td>"
paul@205 167 # Attempt to get daemon status
al@303 168 pidfile=$(find /var/run -name *$name*.pid)
al@303 169 [ "$pidfile" ] && pid=$(cat $pidfile)
pankso@51 170 # dbus
al@303 171 [ -f /var/run/${name}/pid ] && pid=$(cat /var/run/${name}/pid)
pankso@51 172 # apache
al@303 173 [ "$name" = "apache" ] && pid=$(cat /var/run/$name/httpd.pid)
paul@205 174 # Pidof works for many daemons
al@303 175 [ "$pid" ] || pid=$(pidof $name)
pascal@364 176 echo -n "<td>"
pascal@364 177 if [ "$cfg" ]; then
pascal@364 178 IFS="|"
pascal@364 179 for i in $cfg ; do
pascal@364 180 IFS=":"
pascal@364 181 set -- $i
pascal@364 182 case "$1" in
pascal@364 183 edit) cat <<EOT
al@406 184 <a href="index.cgi?file=${3:-/etc/$name.conf}&amp;action=edit">
pascal@364 185 <img title="${2:-$name Configuration}" src="$IMAGES/edit.png" /></a>
pascal@364 186 EOT
pascal@364 187 ;;
pascal@364 188 options)
pascal@364 189 key=$(echo $name | tr [a-z] [A-Z])_OPTIONS
pascal@364 190 cat <<EOT
al@406 191 <a href="index.cgi?file=/etc/daemons.conf&amp;action=setvar&amp;var=$key&amp;default=$3">
pascal@364 192 <img title="${2:-$key}" src="$IMAGES/tux.png" /></a>
pascal@364 193 EOT
pascal@364 194 ;;
pascal@364 195 man) cat <<EOT
pascal@364 196 <a href="index.cgi?exec=man ${3:-$name}">
pascal@364 197 <img title="${2:-$name Manual}" src="$IMAGES/text.png" /></a>
pascal@364 198 EOT
pascal@364 199 ;;
pascal@364 200 help) cat <<EOT
pascal@364 201 <a href="index.cgi?exec=$(which ${3:-$name}) --help">
pascal@364 202 <img title="${2:-$name Help}" src="$IMAGES/help.png" /></a>
pascal@364 203 EOT
pascal@364 204 ;;
pascal@364 205 web) cat <<EOT
pascal@364 206 <a href="${i#$1:$2:}">
pascal@366 207 <img title="${2:-$name website:} ${i#$1:$2:}" src="$IMAGES/browser.png" /></a>
pascal@364 208 EOT
pascal@364 209 ;;
pascal@364 210 esac
pascal@364 211 done
pascal@364 212 fi
pascal@364 213 echo "</td>"
pankso@51 214 if [ "$pid" ]; then
pascal@143 215 cat << EOT
al@303 216 <td><img src="$IMAGES/started.png" alt="Started" title="$(gettext 'Started')" /></td>
al@406 217 <td><a href="?daemons=stop=$name">
al@303 218 <img src="$IMAGES/stop.png" alt="Stop" title="$(gettext 'Stop')" /></a></td>
pascal@143 219 <td>
pascal@143 220 EOT
pascal@143 221 for i in $pid; do
pascal@143 222 cat << EOT
al@406 223 <a href="?daemons=pid=$i">$i</a>
pascal@143 224 EOT
pascal@143 225 done
pankso@51 226 else
pascal@143 227 cat << EOT
al@303 228 <td><img src="$IMAGES/stopped.png" alt="Stopped" title="$(gettext 'Stopped')" /></td>
al@406 229 <td><a href="?daemons=start=$name">
al@303 230 <img src="$IMAGES/start.png" alt="Start" title="$(gettext 'Start')" /></a></td>
pascal@143 231 <td>-----
pascal@143 232 EOT
pankso@51 233 fi
pascal@143 234 echo '</td></tr>'
pankso@51 235 done
pankso@51 236 table_end ;;
al@303 237
pankso@151 238 *\ grub\ *)
al@303 239 GRUBMENU="/boot/grub/menu.lst"
pankso@151 240 if [ "$(GET splash)" ]; then
pankso@151 241 default=$(GET default)
pankso@151 242 timeout=$(GET timeout)
pankso@151 243 splash=$(GET splash)
pankso@151 244 sed -i \
al@303 245 -e s"|default .*|default $default # new|" \
al@303 246 -e s"|timeout .*|timeout $timeout|" \
al@303 247 -e s"|splashimage=.*|splashimage=$splash|" \
al@303 248 $GRUBMENU
pankso@151 249 fi
al@303 250 default=$(cat $GRUBMENU | grep ^default | cut -d " " -f 2)
al@303 251 timeout=$(cat $GRUBMENU | grep ^timeout | cut -d " " -f 2)
al@303 252 splash=$(cat $GRUBMENU | grep ^splashimage | cut -d "=" -f 2)
pankso@151 253 xhtml_header
pankso@151 254 cat << EOT
pankso@151 255 <div id="wrapper">
al@303 256 <h2>$(gettext 'GRUB Boot loader')</h2>
al@303 257
al@303 258 <p>$(gettext 'The first application started when the computer powers on')</p>
pankso@151 259 </div>
pankso@151 260
al@406 261 <form method="get" action="">
pankso@151 262 <input type="hidden" name="grub" />
al@303 263 <table>
al@303 264 <tr><td>$(gettext 'Default entry:')</td>
al@303 265 <td><input type="text" name="default" value="$default" /></td></tr>
al@303 266 <tr><td>$(gettext 'Timeout:')</td>
al@303 267 <td><input type="text" name="timeout" value="$timeout" /></td></tr>
al@303 268 <tr><td>$(gettext 'Splash image:')</td>
al@303 269 <td><input type="text" name="splash" value="$splash" size="40" /></td></tr>
al@303 270 </table>
al@303 271 <input type="submit" value="$(gettext 'Change')" />
al@303 272 <a class="button" href="index.cgi?file=$GRUBMENU">
al@303 273 <img src="$IMAGES/text.png" />$(gettext 'View or edit menu.lst')</a>
pankso@151 274 </form>
pankso@151 275
al@303 276 <h3>$(gettext 'Boot entries')</h3>
pankso@151 277 EOT
al@303 278
al@303 279
al@303 280 menu=$(tail -q -n +$(grep -n ^title $GRUBMENU | head -n1 | cut -d: -f1) $GRUBMENU \
al@303 281 | sed -e "s|^$||g" \
al@303 282 | sed -e "s|^title|</pre></li>\n<p><strong>$(gettext 'Entry') #</strong></p>\n<pre>\0|g" \
al@303 283 | sed '/^[ \t]*$/d' \
al@303 284 | tail -q -n +2)"</pre>"
al@303 285
pankso@151 286 entry='-1'
al@303 287 echo "$menu" | while read line
pankso@151 288 do
al@303 289 if [ -n "$(echo $line | grep '#</strong>')" ]; then
al@303 290 entry=$(($entry + 1))
al@303 291 fi
al@303 292 echo $line | sed "s|#</strong>|$entry</strong>|"
pankso@151 293 done
al@303 294
pankso@151 295 # Here we could check if an entry for gpxe is present if not
pankso@151 296 # display a form to add it.
pankso@151 297 [ -f "/boot/gpxe" ] && echo "<h3>gPXE</h3>" && \
al@303 298 gettext 'Web boot is available with gPXE'
pankso@151 299 ;;
pankso@50 300 *)
pankso@50 301 #
pankso@51 302 # Default content with summary
pankso@50 303 #
pankso@50 304 . /etc/rcS.conf
pankso@50 305 xhtml_header
pankso@50 306 cat << EOT
pankso@50 307 <div id="wrapper">
al@303 308 <h2>$(gettext 'Boot &amp; Start services')</h2>
al@303 309 <p>$(gettext 'Everything that happens before user login')</p>
pankso@50 310 </div>
pankso@51 311 <div>
al@406 312 <a class="button" href="?log">
al@303 313 <img src="$IMAGES/text.png" />$(gettext 'Boot logs')</a>
al@406 314 <a class="button" href="?daemons">
al@303 315 <img src="$IMAGES/recharge.png" />$(gettext 'Manage daemons')</a>
al@406 316 <a class="button" href="?grub">$(gettext 'Boot loader')</a>
pankso@51 317 </div>
pankso@51 318
al@303 319 <h3>$(gettext 'Configuration files')</h3>
pankso@57 320 <ul>
al@303 321 <li>$(gettext 'Main configuration file:')
pankso@57 322 <a href="index.cgi?file=/etc/rcS.conf">rcS.conf</a></li>
al@303 323 <li>$(gettext 'Login manager settings:')
pankso@57 324 <a href="index.cgi?file=/etc/slim.conf">slim.conf</a></li>
pankso@73 325 </ul>
pankso@57 326
al@303 327 <h3>$(gettext 'Kernel cmdline')</h3>
al@303 328
al@303 329 <pre>$(cat /proc/cmdline)</pre>
al@303 330
al@303 331 <h3>$(gettext 'Local startup commands')</h3>
al@303 332
al@303 333 <pre>$(cat /etc/init.d/local.sh | syntax_highlighter sh)</pre>
al@303 334
pankso@105 335 <a class="button" href="index.cgi?file=/etc/init.d/local.sh&amp;action=edit">
al@303 336 <img src="$IMAGES/edit.png" />$(gettext 'Edit script')</a>
pankso@50 337 EOT
pankso@50 338 ;;
pankso@50 339 esac
pankso@50 340
pankso@50 341 xhtml_footer
pankso@50 342 exit 0