tazpanel annotate boot.cgi @ rev 383

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