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}&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&action=setvar&var=$key&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 & 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&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 |