File: 0.02.47a/server/web/history.test.php (View as Code)

1: 2: /* ------------------------------------------------------------- 3: This file is part of FreeNATS 4: 5: FreeNATS is (C) Copyright 2008 PurplePixie Systems 6: 7: FreeNATS is free software: you can redistribute it and/or modify 8: it under the terms of the GNU General Public License as published by 9: the Free Software Foundation, either version 3 of the License, or 10: (at your option) any later version. 11: 12: FreeNATS is distributed in the hope that it will be useful, 13: but WITHOUT ANY WARRANTY; without even the implied warranty of 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15: GNU General Public License for more details. 16: 17: You should have received a copy of the GNU General Public License 18: along with FreeNATS. If not, see www.gnu.org/licenses 19: 20: For more information see www.purplepixie.org/freenats 21: -------------------------------------------------------------- */ 22: 23: ob_start(); 24: require("include.php"); 25: $NATS->Start(); 26: if (!$NATS_Session->Check($NATS->DB)) 27: { 28: header("Location: ./?login_msg=Invalid+Or+Expired+Session"); 29: exit(); 30: } 31: if ($NATS_Session->userlevel<1) UL_Error("View Test History"); 32: 33: $tmode=""; 34: switch($_REQUEST['testid'][0]) 35: { 36: case "L": $tmode="local"; 37: break; 38: default: $tmode="unknown"; 39: } 40: $stid=substr($_REQUEST['testid'],1,128); 41: 42: // get test info 43: $tnode=""; 44: $tname=""; 45: $ttype=""; 46: $tparam=""; 47: $tlastrunx=""; 48: $trecord=1; 49: 50: $q=""; 51: if ($tmode=="local") $q="SELECT * FROM fnlocaltest WHERE localtestid=".ss($stid); 52: 53: $r=$NATS->DB->Query($q); 54: 55: if (!$row=$NATS->DB->Fetch_Array($r)) 56: { 57: header("main.php?message=Error+opening+test+history"); 58: exit(); 59: } 60: 61: $tnode=$row['nodeid']; 62: $ttype=$row['testtype']; 63: $tparam=$row['testparam']; 64: $tlastrunx=$row['lastrunx']; 65: $tname=lText($ttype); 66: if ($tparam!="") $tname.=" (".$tparam.")"; 67: $NATS->DB->Free($r); 68: Screen_Header("History for ".$tname." on ".$tnode,1); 69: ob_end_flush(); 70: 71: $td_day=date("d"); 72: $td_mon=date("m"); 73: $td_yr=date("Y"); 74: 75: $start=array(); 76: $finish=array(); 77: if (isset($_REQUEST['st_day'])) $start['day']=$_REQUEST['st_day']; 78: else $start['day']=$td_day; 79: if (isset($_REQUEST['st_mon'])) $start['mon']=$_REQUEST['st_mon']; 80: else $start['mon']=$td_mon; 81: if (isset($_REQUEST['st_yr'])) $start['yr']=$_REQUEST['st_yr']; 82: else $start['yr']=$td_yr; 83: if (isset($_REQUEST['st_hour'])) $start['hour']=$_REQUEST['st_hour']; 84: else $start['hour']=0; 85: if (isset($_REQUEST['st_min'])) $start['min']=$_REQUEST['st_min']; 86: else $start['min']=0; 87: if (isset($_REQUEST['st_sec'])) $start['sec']=$_REQUEST['st_sec']; 88: else $start['sec']=0; 89: 90: if (isset($_REQUEST['fi_day'])) $finish['day']=$_REQUEST['fi_day']; 91: else $finish['day']=$td_day; 92: if (isset($_REQUEST['fi_mon'])) $finish['mon']=$_REQUEST['fi_mon']; 93: else $finish['mon']=$td_mon; 94: if (isset($_REQUEST['fi_yr'])) $finish['yr']=$_REQUEST['fi_yr']; 95: else $finish['yr']=$td_yr; 96: if (isset($_REQUEST['fi_hour'])) $finish['hour']=$_REQUEST['fi_hour']; 97: else $finish['hour']=23; 98: if (isset($_REQUEST['fi_min'])) $finish['min']=$_REQUEST['fi_min']; 99: else $finish['min']=59; 100: if (isset($_REQUEST['fi_sec'])) $finish['sec']=$_REQUEST['fi_sec']; 101: else $finish['sec']=59; 102: 103: if (isset($_REQUEST['startx'])) 104: { 105: $start['day']=date("d",$_REQUEST['startx']); 106: $start['mon']=date("m",$_REQUEST['startx']); 107: $start['yr']=date("Y",$_REQUEST['startx']); 108: $start['hour']=date("H",$_REQUEST['startx']); 109: $start['min']=date("i",$_REQUEST['startx']); 110: $start['sec']=date("s",$_REQUEST['startx']); 111: $startx=$_REQUEST['startx']; 112: } 113: else 114: $startx=mktime($start['hour'],$start['min'],$start['sec'],$start['mon'],$start['day'],$start['yr']); 115: 116: if (isset($_REQUEST['finishx'])) 117: { 118: $finish['day']=date("d",$_REQUEST['finishx']); 119: $finish['mon']=date("m",$_REQUEST['finishx']); 120: $finish['yr']=date("Y",$_REQUEST['finishx']); 121: $finish['hour']=date("H",$_REQUEST['finishx']); 122: $finish['min']=date("i",$_REQUEST['finishx']); 123: $finish['sec']=date("s",$_REQUEST['finishx']); 124: $finishx=$_REQUEST['finishx']; 125: } 126: else 127: $finishx=mktime($finish['hour'],$finish['min'],$finish['sec'],$finish['mon'],$finish['day'],$finish['yr']); 128: //echo $startx." ".nicedt($startx)."
";
129: //echo $finishx." ".nicedt($finishx)."
";
130: 131: $diffx=$finishx-$startx; 132: $periods=8; 133: $periodx=$diffx/$periods; 134: $hperiodx=round($periodx/2,0); 135: $periodx=round($periodx,0); 136: $iwid=700; 137: $ihei=150; 138: $istart=50; 139: $iend=$iwid-5; 140: $idwid=$iend-$istart; 141: $iscale=$idwid/$periods; 142: 143: $zoom=array(); 144: for ($a=0; $a<$periods; $a++) 145: { 146: $x=($a*$periodx)+$hperiodx+$startx; 147: $zoom[$a]['startx']=$x-$periodx; 148: $zoom[$a]['finishx']=$x+$periodx; 149: $zoom[$a]['istart']=round($istart+($a*$iscale),0); 150: $zoom[$a]['ifinish']=round($istart+($a*$iscale)+$iscale,0); 151: } 152: 153: echo "
"; 154: echo "
"; 155: 156: echo "\n"; 157: for ($a=0; $a<$periods; $a++) 158: { 159: //echo $a." s ".nicedt($zoom[$a]['startx'])." f ".nicedt($zoom[$a]['finishx'])." x ".$zoom[$a]['istart']." - ".$zoom[$a]['ifinish']."
";
160: $s="history.test.php?nodeid=".$tnode."&testid=".$_REQUEST['testid']."&startx=".$zoom[$a]['startx']."&finishx=".$zoom[$a]['finishx']; 161: 162: echo "\n"; 163: 164: 165: } 166: echo "\n\n"; 167: 168: echo "".$tname."
";
169: 170: echo ""; 171: echo ""; 172: echo ""; 174: echo ""; 175: echo ""; 183: echo ""; 184: echo "
Node :".$tnode.""; 173: echo "
Last Run :"; 176: if ($tlastrunx>0) 177: { 178: echo nicedt($tlastrunx)."
";
179: echo dtago($tlastrunx); 180: } 181: else echo "Never"; 182: echo "
";
185: 186: echo "
 "; 187: 188: echo "Reporting Period
";
189: 190: echo ""; 191: echo ""; 192: echo "
";
193: echo ""; 194: 195: function slist($var,$min,$max,$val) 196: { 197: echo "\n\n"; 202: } 203: 204: 205: echo ""; 206: echo ""; 210: 211: echo ""; 215: 216: echo ""; 220: 221: echo ""; 225: 226: echo ""; 230: 231: echo ""; 237: 238: echo ""; 239: 240: // ----- finish 241: 242: echo ""; 243: echo ""; 247: 248: echo ""; 252: 253: echo ""; 257: 258: echo ""; 262: 263: echo ""; 267: 268: echo ""; 274: 275: echo ""; 276: 277: // 7 278: echo ""; 279: echo ""; 292: 293: echo ""; 294: echo "
 HourMinSecDayMonYear
Start:"; 207: slist("st_hour",0,23,$start['hour']); 208: echo ":"; 209: echo ""; 212: slist("st_min",0,59,$start['min']); 213: echo ":"; 214: echo ""; 217: slist("st_sec",0,59,$start['sec']); 218: echo "  "; 219: echo ""; 222: slist("st_day",1,31,$start['day']); 223: echo "/"; 224: echo ""; 227: slist("st_mon",1,12,$start['mon']); 228: echo "/"; 229: echo ""; 232: echo ""; 233: 234: echo " Today"; 235: 236: echo "
Finish:"; 244: slist("fi_hour",0,23,$finish['hour']); 245: echo ":"; 246: echo ""; 249: slist("fi_min",0,59,$finish['min']); 250: echo ":"; 251: echo ""; 254: slist("fi_sec",0,59,$finish['sec']); 255: echo "  "; 256: echo ""; 259: slist("fi_day",1,31,$finish['day']); 260: echo "/"; 261: echo ""; 264: slist("fi_mon",1,12,$finish['mon']); 265: echo "/"; 266: echo ""; 269: echo ""; 270: 271: echo " "; 272: 273: echo "
Opts:"; 280: function cbd($var,$name) 281: { 282: if (isset($_REQUEST[$var])) $s=" checked"; 283: else $s=""; 284: echo " ".$name; 285: } 286: cbd("disp_hdata","Hide Data"); 287: echo " "; 288: cbd("disp_pass","Show Passed"); 289: echo " "; 290: cbd("hide_graph","Hide Graph"); 291: echo "
";
295: 296: echo "
";
297: 298: echo "

";
299: 300: echo "Report from ".nicedt($startx)." to ".nicedt($finishx); 301: // echo " (".nicediff($finishx-$startx).")"; 302: echo "

";
303: 304: // graph data 305: if (!isset($_REQUEST['hide_graph'])) 306: { 307: mt_srand(microtime()*1000000); 308: $i=mt_rand(1000,1000000); 309: echo "

";
310: } 311: 312: // table data 313: 314: if (!isset($_REQUEST['disp_hdata'])) 315: { 316: $q="SELECT alertlevel,testvalue,recordx FROM fnrecord WHERE "; 317: $q.="testid=\"".ss($_REQUEST['testid'])."\" AND recordx>=".$startx." AND recordx<=".$finishx; 318: //if (!isset($_REQUEST['disp_pass'])) $q.=" AND alertlevel!=0"; 319: $q.=" ORDER BY recordx DESC"; 320: //echo $q; 321: $r=$NATS->DB->Query($q); 322: 323: $testc=0; 324: $tested=0; 325: $untested=0; 326: $passc=0; 327: $warnc=0; 328: $failc=0; 329: $levelt=0; 330: 331: echo ""; 332: while ($row=$NATS->DB->Fetch_Array($r)) 333: { 334: if (isset($_REQUEST['disp_pass']) || ($row['alertlevel']!=0) ) 335: { 336: echo ""; 337: echo ""; 338: echo ""; 339: echo ""; 340: } 341: $testc++; 342: switch ($row['alertlevel']) 343: { 344: case 0: 345: $passc++; 346: $tested++; 347: $levelt+=$row['testvalue']; 348: break; 349: case 1: 350: $warnc++; 351: $tested++; 352: $levelt+=$row['testvalue']; 353: break; 354: case 2: 355: $failc++; 356: $tested++; 357: $levelt+=$row['testvalue']; 358: break; 359: case -1: 360: $untested++; 361: break; 362: } 363: } 364: 365: echo ""; 366: echo "
".nicedt($row['recordx'])."".oText($row['alertlevel'])."".$row['testvalue']."
";
367: } 368: echo "

";
369: echo ""; 370: 371: function np($big,$part) 372: { 373: if ($big==0) return "n/a"; 374: if ($part==0) return "0%"; 375: 376: $p=($part/$big)*100; 377: $p=round($p,2); 378: return $p."%"; 379: } 380: 381: 382: echo ""; 386: 387: $notpass=$tested-$passc; 388: 389: echo ""; 393: 394: echo ""; 395: 396: echo ""; 400: 401: echo ""; 405: 406: echo ""; 410: 411: echo ""; 415: 416: echo ""; 417: 418: echo ""; 419: echo ""; 424: 425: echo ""; 426: 427: $utt=$untested+$tested; 428: echo ""; 429: echo ""; 432: 433: $npt=$untested+$notpass; 434: echo ""; 435: echo ""; 438: 439: echo ""; 440: echo ""; 443: 444: echo ""; 445: 446: echo ""; 450: 451: $nowx=time(); 452: if ($finishx>$nowx) $fx=$nowx; 453: else $fx=$finishx; 454: $p=$fx-$startx; 455: $five_min=60*5; 456: $shouldhave=floor($p/$five_min); 457: 458: 459: echo ""; 463: 464: echo "
".$passc." passed out of ".$tested." valid tests"; 383: echo " "; 384: echo np($tested,$passc); 385: echo "
".$notpass." did not pass out of ".$tested." valid tests"; 390: echo " "; 391: echo np($tested,$notpass); 392: echo "
 
".$warnc." generated warnings out of ".$tested." valid tests"; 397: echo " "; 398: echo np($tested,$warnc); 399: echo "
".$failc." generated failures out of ".$tested." valid tests"; 402: echo " "; 403: echo np($tested,$failc); 404: echo "
".$warnc." generated warnings out of ".$notpass." unpassed tests"; 407: echo " "; 408: echo np($notpass,$warnc); 409: echo "
".$failc." generated failures out of ".$notpass." unpassed tests"; 412: echo " "; 413: echo np($notpass,$failc); 414: echo "
 
the average test value returned by valid tests was "; 420: if ($tested<=0) echo "n/a"; 421: else if ($levelt==0) echo "0"; 422: else echo round($levelt/$tested,4); 423: echo "
 
".$untested." tests were untested (of ".$utt.") "; 430: echo np($utt,$untested); 431: echo "
of these (".$utt.") ".$npt." did not pass "; 436: echo np($utt,$npt); 437: echo "
of these (".$utt.") ".$passc." did pass "; 441: echo np($utt,$passc); 442: echo "
 
".$testc." records of which ".$tested." returned a valid alert level"; 447: echo " "; 448: echo np($testc,$tested); 449: echo "
".$testc." records and you should have ".hlink("History:Should",12)." ".$shouldhave; 460: echo " "; 461: echo np($shouldhave,$testc); 462: echo "

";
465: 466: /* - zoom period debugging 467: echo "Period: $p s (".($p/$five_min).")
";
468: echo "sx: ".$startx." fx: ".$finishx."
";
469: echo "diffx: ".($finishx-$startx)."
";
470: echo "fx2: ".$fx." p: ".$p."
";
471: */ 472: Screen_Footer(); 473: ?> 474: