#!/bin/sh
##-----------------------------------------------------------------------------
## info_process.cgi                                                       0.2.3
##
## Creation:     11.05.2002  tc
## Last Update:  24.02.2003  tc
##
## Copyright (c) 2003 Thomas Creutz <thomas.creutz@epost.de>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##-----------------------------------------------------------------------------

# Zugangsschutz einrichten

SEC_REALM='info'
SEC_ACTION='pro'

. sec-lib.cgi

# HTML-Header
echo "Content-Type: text/html; charset=iso-8859-1"
echo "Cache-control: no-store" # HTTP/1.1 (or no-cache?)
echo "Pragma: no-cache"        # HTTP/1.0
echo "Expires: `date -Ru`"     # Expires now!
echo
echo "<html><head>"
echo "<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"main.css\">"
echo "<title>opt_info - process</title>"
echo "</head><body bgcolor=\"#FFFFFF\" link=\"#FFFFFF\" vlink=\"#C0C0C0\" alink=\"#FF0000\">"
echo

# Tabelle erstellen
echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" bgcolor=\"#f0f0f0\" bordercolor=\"#ffffff\">"
echo "<tr bgcolor=\"#000000\">"
echo "    <td>"
echo "       <center><b><font face=\"verdana\"><a href=\"info_process.cgi?page=text\">Text-Ansicht</a></font></b></center>"
echo "    </td>"
echo "    <td>"
echo "      <center><b><font face=\"verdana\"><a href=\"info_process.cgi?page=uebersicht\">&Uuml;bersicht</a></font></b></center>"
echo "    </td>"
echo "    <td>"
echo "      <center><b><font face=\"verdana\"><a href=\"info_process.cgi?page=baum\">Baum-Ansicht</a></font></b></center>"
echo "    </td>"
echo "</tr>"
echo "</table><br>"

#parse variables...
for var in `echo "$QUERY_STRING" | tr '&' ' '`
do
 if echo "$var" | grep -v "=" > /dev/null ; then var="$var=yes" ; fi
 eval "param_$var"
done


if [ "$param_page" = "" ]
then
	echo "<center><br><br>Bitte w&auml;hle eine der oberen Kategorien.<br><br></center>"
fi

if [ "$param_page" = "kill" ]
then
    if [ -n "$param_pid" ]
    then
	echo "<center><br><br>Ausgef&uuml;hrtes Kommando: kill $param_pid <br>
		`kill $param_pid`<br></center>"
    fi	
fi


if [ "$param_page" = "text" ]
then

echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"80%\" bgcolor=\"#f0f0f0\" bordercolor=\"#ffffff\" align=\"center\">"
echo "<tr bgcolor=\"#000000\">"
echo "    <td colspan=\"6\">"
echo "        <div align=\"center\"><font color=\"#ffffff\" face=\"verdana\"><b>Details der Prozesse</b></font></div>"
echo "    </td>"
echo "</tr>"
echo "<tr>"
echo "   <td>"
echo "        <center><b><font face=\"verdana\">Kill me!</font></b></center>"
echo "   </td>"
echo "   <td>"
echo "        <center><b><font face=\"verdana\">PID</font></b></center>"
echo "   </td>"
echo "   <td>"
echo "        <center><b><font face=\"verdana\">BenutzerID</font></b></center>"
echo "   </td>"
echo "   <td>"
echo "        <center><b><font face=\"verdana\">GruppenID</font></b></center>"
echo "   </td>"
echo "   <td>"
echo "        <center><b><font face=\"verdana\">Status</font></b></center>"
echo "   </td>"
echo "   <td>"
echo "        <center><b><font face=\"verdana\">Kommando</font></b></center>"
echo "   </td>"
echo "</tr>"

/bin/ps ax | grep -v "Uid" | while read PID Uid Gid State Command

do
	echo "<tr>"
	echo "   <td>"
	echo "        <p align=\"center\">"
	echo "        <a href=\"info_process.cgi?page=kill&pid=$PID\" style=\"color:red\">X</a>"
	echo "   </td>"
	echo "   <td>"
	echo "        <p align=\"center\">$PID"
	echo "   </td>"
	echo "   <td>"
	echo "        <p align=\"center\">$Uid"
	echo "   </td>"
	echo "   <td>"
	echo "        <p align=\"center\">$Gid"
	echo "   </td>"
	echo "   <td>"
	echo "        <p align=\"center\">$State"
	echo "   </td>"
	echo "   <td>"
	echo "        <p align=\"center\">$Command"
	echo "   </td>"
	echo "</tr>"
done
echo "</table>"
fi

if [ "$param_page" = "uebersicht" ]
then

loadavg=`cat /proc/loadavg`

echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"80%\" bgcolor=\"#f0f0f0\" bordercolor=\"#ffffff\" align=\"center\">"
echo "<tr bgcolor=\"#000000\">"
echo "    <td colspan=\"4\">"
echo "        <div align=\"center\"><font color=\"#ffffff\" face=\"verdana\"><b>Systemprozesse</b></font></div>"
echo "    </td>"
echo "</tr>"
echo "<tr>"
echo "    <td>"
echo "        <div align=\"center\">Prozessorlast<br>(letzte 1/5/15 Min.):<br>
			`echo $loadavg | cut -d ' ' -f1`
			`echo $loadavg | cut -d ' ' -f2`
			`echo $loadavg | cut -d ' ' -f3`</div>"
echo "    </td>"
echo "    <td>"
echo "<div align=\"center\">Laufende Prozesse:<br>
			`echo $loadavg | cut -d ' ' -f4 | cut -d '/' -f1`</div>"
echo "    </td>"
echo "    <td>"
echo "        <div align=\"center\">Prozesse gesamt:<br>
			`echo $loadavg | cut -d ' ' -f4 | cut -d '/' -f2`"
echo "</div>"
echo "    </td>"
echo "    <td>"
echo "        <div align=\"center\">Anzahl aller gestarteten Prozesse:<br>
			`echo $loadavg | cut -d ' ' -f5`</div>"
echo "    </td>"
echo "</tr>"
echo "</table><br>"
fi

if [ "$param_page" = "baum" ]
then
	echo "<pre>"
	/usr/bin/pstree
	echo "</pre>"
fi

# HTML Ende
echo ""
echo "<p align=\"right\">"
echo "    <font face=\"verdana\" size=\"-2\">OPT erstellt von <a href=\"mailto:thomas.creutz@epost.de\">"
echo "    <font color=\"#0000FF\">Thomas Creutz</font></a><br>"
echo "    v0.2.3 <a href=\"http://projekte.alientxc.de\" target=\"_blank\">"
echo "    <font color=\"#0000FF\">http://projekte.alientxc.de</font></a></p>"
echo "</body></html>"

exit 0
