[Phpida-cvs] ida index.php, NONE, 1.1 .project, NONE, 1.1 CHANGELOG, NONE, 1.1 munin.php, NONE, 1.1
Status: Alpha
Brought to you by:
xqus
Update of /cvsroot/phpida/ida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22197 Added Files: index.php .project CHANGELOG munin.php functions.php favicon.ico stil.css config.php login.php Log Message: Initail revsiosion of the "new" Ida --- NEW FILE: login.php --- <?php /* * Created by Audun Larsen (aud...@lk...) * * Copyright 2006 Larsen Konsult * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ if($_GET['logout'] == 'true') { session_start(); session_destroy(); $_GET['msg']=2; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>munin - Login</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- .loginform { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; background-color: #FFFFFF; width: 500px; border: 10px solid #CCCCCC; margin: 10px; padding: 10px; margin: 60px auto 20px auto; } body { background-color: #9DA5AB; } dt { float: left; width: 95px; font-size: 12px; line-height: 24px; } dd { margin: 0 0 5px 90px; font-size: 12px; line-height: 24px; color: #666; margin-left: 80px; } input { font-size: 12px; } .msgGood { background-color: #E2F9E3; border: 2px solid #99CC99; margin: 5px; padding: 5px; width: 400px; } .msgBad { background-color: #CC9999; border: 2px solid #993333; margin: 5px; padding: 5px; width: 400px; } --> </style> </head> <body> <div class="loginform"> <p> <?php switch($_GET['msg']) { default: $class="msgGood"; $msg = "Please tell me who you are, and I'll send you right on."; break; case 1: $class="msgBad"; $msg = "I'm sorry, that's the wrong username or password."; break; case 2: $class="msgGood"; $msg = "Good bye! Keep up the good work, boss!"; break; } echo '<div class="'.$class.'"><img src="gfx/error.gif" alt="Error!" align="absmiddle"> '.$msg.'</div>'; ?> </p> <form action="index.php" method="post" name="login" id="login"> <dl> <dt>Username:</dt> <dd><input name="username" type="text" id="username" /></dd> <dt>Password:</dt> <dd><input name="password" type="password" id="password" /></dd> <dd><input type="submit" value="Login" /></dd> </dl> </form> <div align="center"><br> This is Munin<br> Copyright � <a href="http://www.munio.no">Munio IT, Audun Larsen</a> 2006 - <?php echo date('Y')?><br> Icons are created by <a href="http://www.famfamfam.com/">Mark James</a> </div> </div> </body> </html> --- NEW FILE: functions.php --- <?php /* * Created by Audun Larsen (aud...@lk...) * * Copyright 2006 Larsen Konsult * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ function quotesplit( $splitter=' ', $s, $limit=0) { //First step is to split it up into the bits that are surrounded by quotes //and the bits that aren't. Adding the delimiter to the ends simplifies //the logic further down $result =array(); $getstrings = explode('"', $splitter.$s.$splitter); //$instring toggles so we know if we are in a quoted string or not $delimlen = strlen($splitter); $instring = 0; while (list($arg, $val) = each($getstrings)) { if ($instring==1) { //Add the whole string, untouched to the previous value in the array $result[count($result)-1] = $result[count($result)-1].$val; $instring = 0; } else { //Break up the string according to the delimiter character //Each string has extraneous delimiters around it (inc the ones we added //above), so they need to be stripped off $temparray = split($splitter, substr($val, $delimlen, strlen($val)-$delimlen-$delimlen+1 ) ); while(list($iarg, $ival) = each($temparray)) { $result[] = trim($ival); } $instring = 1; } } if($limit>0) { if(sizeof($result)>$limit) { $firstPart=array_slice ($result, 0 , $limit-1); $lastPart=implode(' ',array_slice ($result, $limit-1)); $firstPart[] = $lastPart; $result = $firstPart; } } return $result; } function parseRules() { unlink('./data/HTTP_HEADERS'); unlink('./data/HTTP_GET'); unlink('./data/HTTP_POST'); unlink('./data/HTTP_COOKIE'); if ($handle = opendir('./rules')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && $file != ".htaccess") { parseRuleSet('./rules/'.$file); } } closedir($handle); } muninAddLog("Rebuilt rules", "system", "info"); } function parseRuleSet($ruleFile) { $dataSets=array('HTTP_HEADERS','HTTP_GET','HTTP_POST','HTTP_COOKIE'); $fp['HTTP_HEADERS']=fopen('./data/HTTP_HEADERS', 'a'); $fp['HTTP_GET']=fopen('./data/HTTP_GET', 'a'); $fp['HTTP_POST']=fopen('./data/HTTP_POST', 'a'); $fp['HTTP_COOKIE']=fopen('./data/HTTP_COOKIE', 'a'); if(file_exists($ruleFile)) { $bufferLines = file($ruleFile); foreach($bufferLines as $buffer) { $buffer = str_replace("\t"," ", $buffer); $buffer = preg_replace("/\s+/i", ' ', $buffer); if(substr($buffer,0,1) != ' ' && substr($buffer,0,1) != '#' && substr($buffer,0,1) != '$') { $ruleData = quotesplit(' ', $buffer, 5); //echo "<pre>"; //print_r($ruleData); //echo "</pre>"; $title = ''; $alert = 1; $where = $ruleData[0]; $what = str_replace('"','',$ruleData[1]); $string = str_replace('"','',$ruleData[2]); $action = $ruleData[3]; $msg = $ruleData[4]; $ruleArray=array( 'what' => $what, 'string' => $string, 'action' => $action, 'msg' => $msg ); fwrite($fp[$where], serialize($ruleArray)."\n"); } } } fclose($fp['HTTP_HEADERS']); fclose($fp['HTTP_GET']); fclose($fp['HTTP_POST']); fclose($fp['HTTP_COOKIE']); } function resize_bytes($size) { $count = 0; $format = array("B","KB","MB","GB","TB","PB","EB","ZB","YB"); while(($size/1024)>1 && $count<8) { $size=$size/1024; $count++; } $return = number_format($size,0,'','.')." ".$format[$count]; return $return; } /* * $risk = info, medium, high */ function muninAddEvent($msg) { global $CFG; $keyLength=20; $fileName = 'event_'.time(); $eventLog = "-------------------------------------------------------------\n"; $eventLog .= "Munin ".$CFG['version']." running on ".$CFG['hostname']."\n"; $eventLog .= "-------------------------------------------------------------\n"; $eventLog .= "\n"; $eventLog .= $msg."\n"; $eventLog .= "\n"; $eventLog .= "Server Data:\n"; while(list($key, $val)=each($_SERVER)) { $spaces = " "; for($i=strlen($key); $i< $keyLength; $i++) { $spaces .=" "; } $eventLog .= $key.$spaces.$val."\n"; } $fp = fopen(dirname(__FILE__)."/data/".$fileName, 'w'); fwrite($fp, $eventLog); fclose($fp); } function muninAddLog($msg = "", $type = "system", $risk = "info") { } function muninMatchRule($rule, $data) { if(preg_match('/'.$rule.'/i', rawurldecode($data))) { return true; } else { return false; } } function muninMatchField($what, $field) { if(trim($what)!='') { if(preg_match('/'.$what.'/i', rawurldecode($field))) { return true; } else { return false; } } else { return true; } } // TODO: Custom messeage? function muninShowError() { header("HTTP/1.1 400 Bad Request"); echo "<html>\n"; echo "<head>\n"; echo "<title>Error 400: Bad Request</title>\n"; echo "</head>\n"; echo "<body>\n"; echo "<h1>Error 400: Bad Request</h1>\n"; echo "We are sorry, but the server was unable to handle your request.\n"; echo "</body>\n"; echo "</html>\n"; die(); } function muninShowSelect($name, $values, $selected) { $html = "<select name='".$name."'>"; while(list($key, $val) = each($values)) { $html .= "<option value='".$key."'"; if($key == $selected) { $html .= " selected"; } $html .= ">".$val."</option>"; } $html .= "</select>"; return $html; } // TODO: Make this function return WHAT and WHERE that triggered the event function muninCheckArray($dataArr, $what, $rule) { while(list($key, $val)=each($dataArr)) { if(is_array($val)) { if(muninCheckArray($val, $what, $rule)) { return true; } } else { if(muninMatchField($what, $key)) { if(muninMatchRule($rule, $val)) { return true; } } } } } function goMunin($dataArr, $ruleSet, $path) { global $CFG; $fp = fopen($path.'/data/'.$ruleSet, 'r'); while (!feof($fp)) { $buffer = fgets($fp); $row = unserialize($buffer); if(sizeof($row) == 4) { if(muninCheckArray($dataArr, $row['what'], $row['string'])) { muninAddEvent($ruleSet.': '.$row['msg']); if($row['alert'] == 1 && isset($CFG['alert_email']) && !empty($CFG['alert_email'])) { $mailSubject = 'Munin alert: '.$row['msg']; $mailBody = 'Msg: '.$row['msg']."\n". 'IP: '.$_SERVER['REMOTE_ADDR']."\n". 'Date: '.date('d. M y H:i'); mail($CFG['alert_email'], $mailSubject, $mailBody, 'From: Munin <'.$CFG['alert_from'].'>'); } if($row['action'] == 'block' && $CFG['debug'] != 1) { muninShowError(); } } } } } ?> --- NEW FILE: munin.php --- <?php /* * Created by Audun Larsen (aud...@lk...) * * Copyright 2006 Larsen Konsult * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ function munin($path) { $times['MUNIN_TOTAL']['start'] = microtime(true); // just some benchmarking global $dbh, $CFG; if(file_exists($path."/config.php")) { // 'connection' successfull, continue require_once($path."/functions.php"); // include the common function, we need this require_once($path."/config.php"); /** * Remove data from the $_SERVER array that we don't need */ $serverArr['HTTP_ACCEPT'] = $_SERVER['HTTP_ACCEPT']; $serverArr['HTTP_ACCEPT_CHARSET'] = $_SERVER['HTTP_ACCEPT_CHARSET']; $serverArr['HTTP_ACCEPT_LANGUAGE'] = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $serverArr['HTTP_ACCEPT_ENCODING'] = $_SERVER['HTTP_ACCEPT_ENCODING']; $serverArr['HTTP_USER_AGENT'] = $_SERVER['HTTP_USER_AGENT']; $serverArr['HTTP_REFERER'] = $_SERVER['HTTP_REFERER']; $serverArr['HTTP_VIA'] = $_SERVER['HTTP_VIA']; $serverArr['HTTP_X_FORWARDED_FOR'] = $_SERVER['HTTP_X_FORWARDED_FOR']; $serverArr['REQUEST_URI'] = $_SERVER['HTTP_USER_AGENT']; $serverArr['QUERY_STRING'] = $_SERVER['QUERY_STRING']; $serverArr['SCRIPT_FILENAME'] = $_SERVER['SCRIPT_FILENAME']; $serverArr['REQUEST_METHOD'] = $_SERVER['REQUEST_METHOD']; $serverArr['SERVER_PROTOCOL'] = $_SERVER['SERVER_PROTOCOL']; /** * Setup the array with data to check. and the ruleset to check it up against */ $mununChecks=array( 'HTTP_HEADERS' => $serverArr, 'HTTP_POST' => $_POST, 'HTTP_GET' => $_GET, 'HTTP_COOKIE' => $_COOKIE ); /** * Loop trough the array with checks, and check the data. */ while(list($ruleSet, $dataArr)=each($mununChecks)) { $times[$ruleSet]['start'] = microtime(true); // just some benchmarking goMunin($dataArr, $ruleSet, $path); // this is the important part ;) $times[$ruleSet]['stop'] = microtime(true); // just some benchmarking } } else { // failed to open the database echo '<!-- Munin NOT loaded, check path -->'; // print a hidden error message } $times['MUNIN_TOTAL']['stop'] = microtime(true); // again, this is just some benchmarking!! Dude! I told ya! /** * If debuging is enabled, save the benchmark to a file */ if(is_writeable($path.'/data')) { $timestamp = date('r'); $fileData = ''; foreach($times as $title => $time) { $time = $time['stop']-$time['start']; $fileData .= $title.":\t".$time."\n"; } $fp=fopen($path.'/data/benchmarks','a'); if (flock($fp, LOCK_EX)) { // do an exclusive lock, if not, just skip it.. it's not that important fwrite($fp, $timestamp."\n".$fileData."\n"); flock($fp, LOCK_UN); // release the lock } fclose($fp); } /** * Your mom don't work here! Cleanup after yourself! */ $dbh=NULL; unset($serverArr, $timestamp, $fileData, $times, $title, $time, $mununChecks, $CFG, $path, $ruleSet, $dataArr); return true; } ?> --- NEW FILE: index.php --- <?php /* * Created by Audun Larsen (aud...@lk...) * * Copyright 2006 Larsen Konsult * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ session_start(); // What? You don't know what this is? Then I suggest you stop messing with this file!! require_once('functions.php'); require_once('config.php'); set_magic_quotes_runtime(0); /** * Do the boring login dance! */ if(isset($_POST['username'])) { if($_POST['username'] == $CFG['username'] && sha1($_POST['password']) == $CFG['password']) { $_SESSION['auth']=1; muninAddLog("User logged in", 'system', 'info'); } else { /** * If the login fails, go to login! AGAIN??? */ muninAddLog("Login failed", 'system', 'medium'); header("Location: login.php?msg=1"); die(); } } if(!isset($_SESSION['auth'])) { /** * If the user isn't loged in, go to login! */ header("Location: login.php"); die(); } /** * Let's do what we came here to do! Show the incrediblae cool Munin CP!! w000t w000t! */ ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title> Munin </title> <link rel="stylesheet" href="stil.css" type="text/css"> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> <script type="text/javascript"> function change(id, newClass) { document.getElementById(id).className=newClass; } </script> </head> <body> <div id="container"> <div id="sidebar"> <h1>Munin</h1> <dl id="munin-info"> <dt>Version:</dt> <dd><?php echo $CFG['version']; ?></dd> <dt>Date:</dt> <dd><?php echo date('d. M y H:i'); ?></dd> </dl> <ul id="menu"> <li><a href="index.php" id="m2_overview">Overview</a></li> <li><a href="index.php?p=logs" id="m2_manage-logs">Event log</a></li> <li><a href="index.php?p=rules" id="m2_manage-rules">Manage rules</a></li> <?php if($_GET['p'] == 'rules' || $_GET['p'] == 'edit') { echo '<li>'; echo '<ul id="submenu">'; if ($handle = opendir('./rules')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && $file != ".htaccess") { echo '<li><a href="index.php?p=edit&file='.$file.'" id="m2_file">'.$file.'</a></li>'; } } closedir($handle); } echo '</ul>'; echo '</li>'; } ?> <li><a href="index.php?p=about" id="m2_about">About</a></li> </ul> <?php if($CFG['debug'] == 1) { ?> <p><strong>Note:</strong> Munin is running in debug mode. No requests will be blocked.</p> <?php } ?> </div> <div id="content"> <?php switch($_GET['p']) { default: include("pages/main.php"); break; case 'rules': include("pages/rules.php"); break; case 'logs': include("pages/logs.php"); break; case 'edit': include("pages/edit.php"); break; case 'about': include("pages/about.php"); break; } ?> </div> </div> </body> </html> <?php /** * "Disconnect" from database. It really isn't! */ $dbh = null; ?> --- NEW FILE: .project --- <?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>Ida - Application Intrusion Detection</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>net.sourceforge.phpeclipse.parserbuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>net.sourceforge.phpeclipse.phpnature</nature> </natures> </projectDescription> --- NEW FILE: CHANGELOG --- ---------------------------------- Munin Changelog ---------------------------------- 2007-02-13, Audun Larsen <au...@mu...> ### 0.7b released 2007-02-11, Audun Larsen <au...@mu...> * Changed password hash method back to sha1, for PHP 4 compability * Filter out events maked as reviewed ok from the event list as default * Fixed bug in the rule file editor when bogus filename was supplied * Added option to delte events * Updated the copyright notice on the login screen * Added a notice below the menu when Munin is in debug mode 2007-02-10, Audun Larsen <au...@mu...> * Added a listing af new events to the Overview page * Reimplemented the listing, and viewing of events after changing the way events are stored (still needs some work) * Samll design changes on the Overview page 2007-02-08, Audun Larsen <au...@mu...> * Munin now uses only regular files for storage. PDO is no longer required * Remove the listing of rules in the database. Kinda redundant. * Events are now stored in plain files * Updated the about page, again 2007-02-06, Audun Larsen <au...@mu...> * Events page now remembers what filter you applied * Events is now filtered by severity, not type * You can now mark events as Reviewed OK or Needs attention * Only allow marking of events triggered by rules * Added a message on the welcome page that tells you how many events that needs attention * Removed the Delete link in the event details page * I have chaneged e-mail address, and URL to my company site: Updated in the license * Added some coments in the config.php file 2006-12-17, Audun Larsen <aud...@lk...> * Changed the hash function used for the admin password from sha1 to sha256 2006-11-8, Audun Larsen <aud...@lk...> * Removed the settings page and moved the configuration to the config.php file * Changed the text on the "Rebuild rules" link * Changed some of the text on the frontpage * Done some code cleanup in index.php * Added some instructions on the rules page * Fixed the e-mail alert to say something usefull * Added option to change from address in the alert email 2006-11-4, Audun Larsen <aud...@lk...> * Added some comments to the top of every file 2006-10-29, Audun Larsen <aud...@lk...> * Fixed typo in the license 2006-10-13, Audun Larsen <aud...@lk...> ### 0.6b released * Fixed typo in log message when someone logs in 2006-10-01, Audun Larsen <aud...@lk...> * Added "About" page * Added log message when settings is saved * Added log message when the password is changed * Added log message when rebuilding rules * Added log message when saving ruleset * Added type filter to the event browser * Added e-mail alert * Added pointer cursor when hovering over a event in the event list * Added next / previous links to the event browser * Added back link when viewing event * Fixed some more letter-spacing on h3 and h2 * Major code cleanup in munin.php * Added where the event happend in the event log msg (HTTP_HEADERS, HTTP_POST, HTTP_GET...) * Moved the database to the data/ dir * Added a favicon * When in debug mode, save benchmarks to data/benchmarks * Unset all variables when Munin is done to reduce memory usage trough the real script execution * Changed the log events icons to something more logic * Changed the background colors on the log events * Changed the icon on the ruleset links 2006-09-30, Audun Larsen <aud...@lk...> ### 0.5a released * Initial version, 0.5a released. --- NEW FILE: favicon.ico --- (This appears to be a binary file; contents omitted.) --- NEW FILE: config.php --- <?php /* * Created on 8. nov. 2006 * Created by Audun Larsen (aud...@lk...) * * Copyright 2006 Larsen Konsult * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $CFG['version'] = "0.7b"; $CFG['username'] = 'munin'; // Username to log in with $CFG['password'] = '4be30d9814c6d4e9800e0d2ea9ec9fb00efa887b'; // sha1 hash of password, see: http://munin.lkonsult.no/passgen $CFG['debug'] = 0; // Debug mode, 1=On, 0=Off $CFG['hostname'] = "anette.xqus.com"; $CFG['alert_email'] = 'no-...@mu...'; // E-mail address to send alerts to $CFG['alert_from'] = 'no-...@mu...'; // From address in the amail alerts ?> --- NEW FILE: stil.css --- /* GENERELT ------------------------------------------------------------------------------*/ * { margin: 0; padding: 0; } body { padding: 20px 20px 20px 20px; font-family: arial, sans-serif; font-size: 62.5%; color: #000; background: #fff; } pre { font-family: courier, "lucida console"; } /* LAYOUT ------------------------------------------------------------------------------*/ div#container { position: relative; margin: 0 -2px 0 0; border: 1px solid #292929; background: #f8f9f8; } div#sidebar { position: absolute; top: 15px; left: 15px; width: 153px; padding: 10px 10px 10px 10px; border: 1px solid #807f7f; background: #fff url("gfx/munin.gif") no-repeat; } div#content { margin: 15px 15px 15px 205px; padding: 15px; border: 1px solid #807f7f; background: #fff; } /* MENY ------------------------------------------------------------------------------*/ div#menu-top { width: 100%; overflow: auto; margin: 0 -2px 15px 0; border: 1px solid #292929; font-size: 1.1em; text-transform: lowercase; list-style: none; background: #f8f8f8 url("gfx/menu-top.gif") repeat-x 100% 100%; } div#menu-top p { margin: 0; display: block; padding: 0px 0px 0px 10px; text-decoration: none; color: #000; } ul#menu { margin: 15px 0; font-size: 1.2em; list-style: none; line-height: 1.5; } ul#submenu { margin: 15px 10px 0; font-size: 1em; list-style: none; line-height: 1.5; } ul#menu li { } ul#menu a { display: block; margin: 0 0 1em 0; padding: 0 0 0 20px; text-decoration: none; color: #000; background-repeat: no-repeat; } /* TEKSTFORMATERING ------------------------------------------------------------------------------*/ h1 { height: 20px; font-size: 0.5em; text-indent: -1000px; } h2 { margin: 0 0 0.5em 0; font-size: 2.4em; } h3 { margin: 0 0 0.5em 0; font-size: 1.8em; font-weight: normal; } p { margin: 0 0 1em 0; font-size: 1.2em; line-height: 1.7; } #content ul { margin: 0 0 1em 2em; font-size: 1.2em; list-style: square; } #content li { margin: 0 0 0.5em 0; padding: 0 0 0 0; line-height: 1.7; } dl#munin-info { margin: 2px 0 0 35px; font-size: 1.1em; } dl#munin-info dt { float: left; margin: 0 5px 2px 0; } dl#munin-info dd { margin: 0 0 3px 0; font-weight: bold; } /* Individuelle listeikoner ------------------------------------------------------------------------------*/ #m2_overview {background-image: url("gfx/m2_overview.gif");} #m2_manage-rules {background-image: url("gfx/m2_manage-rules.gif");} #m2_manage-logs {background-image: url("gfx/m2_manage-logs.gif");} #m2_settings {background-image: url("gfx/m2_settings.gif");} #m2_file {background-image: url("gfx/m2_file.png");} #m2_about {background-image: url("gfx/m2_about.png");} table { border: 1px solid #292929; background-color: #f8f9f8; } th { font-size: 12px; background-color: #f8f9f8; text-align: left; margin: 5px; padding: 3px; } td { font-size: 12px; text-align: left; background-color: #ffffff; margin: 5px; padding: 3px; } .tableBorders { border-top-width: 1px; border-top-style: solid; border-top-color: #292929; } .hideTable { display: none; } .showTable { display: table-row; } |