Viewing File server/web/node.edit.php of 1.08.2a
|
1: <?php 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<5) UL_Error("Edit Node"); 32: ob_end_flush(); 33: Screen_Header("Node Editor",1,1,"","main","nodes"); 34: echo "\n<script type=\"text/javascript\">\n"; 35: echo "var iconDivText='"; 36: ShowIcons(); 37: echo "';\n\n"; 38: echo "function showIcons()\n"; 39: echo "{\n"; 40: echo "if (document.getElementById('iconDiv').innerHTML=='') document.getElementById('iconDiv').innerHTML='<br><br>'+iconDivText+'<br><br>';\n"; 41: echo "else document.getElementById('iconDiv').innerHTML='';\n"; 42: echo "}\n\n"; 43: echo "var optionContent='';\n"; 44: echo "function showOptions()\n"; 45: echo "{\n"; 46: echo "if (document.getElementById('nodeoptions').innerHTML=='') document.getElementById('nodeoptions').innerHTML=optionContent;\n"; 47: echo "else\n"; 48: echo " {\n"; 49: echo " if (optionContent=='') optionContent=document.getElementById('nodeoptions').innerHTML;\n"; 50: echo " document.getElementById('nodeoptions').innerHTML='';\n"; 51: echo " }\n"; 52: echo "}\n"; 53: echo "</script>\n\n"; 54: ?> 55: <br> 56: <?php 57: if (isset($_REQUEST['action'])) 58: { 59: if ($_REQUEST['action']=="save_edit") 60: { 61: $_REQUEST['showoptions']=1; 62: if (isset($_REQUEST['nodeenabled'])) $nodeenabled=1; 63: else $nodeenabled=0; 64: if (isset($_REQUEST['pingtest'])) $pingtest=1; 65: else $pingtest=0; 66: if (isset($_REQUEST['pingfatal'])) $pingfatal=1; 67: else $pingfatal=0; 68: if (isset($_REQUEST['nodealert'])) $nodealert=1; 69: else $nodealert=0; 70: if (isset($_REQUEST['testinterval'])) $interval=$_REQUEST['testinterval']; 71: else $interval=0; 72: if (!is_numeric($interval)) $interval=0; 73: 74: if (isset($_REQUEST['nsenabled'])) $nsenabled=1; 75: else $nsenabled=0; 76: 77: $q="UPDATE fnnode SET "; 78: $q.="nodename=\"".ss($_REQUEST['nodename'])."\","; 79: $q.="nodedesc=\"".ss($_REQUEST['nodedesc'])."\","; 80: $q.="testinterval=".ss($interval).","; 81: if (isset($_REQUEST['scheduleid'])) $q.="scheduleid=".ss($_REQUEST['scheduleid']).","; 82: $q.="nodeicon=\"".ss($_REQUEST['nodeicon'])."\","; 83: $q.="nodealert=".ss($nodealert).","; 84: $q.="nodeenabled=".ss($nodeenabled).",pingtest=".ss($pingtest).",pingfatal=".ss($pingfatal).","; 85: $q.="nsenabled=".ss($nsenabled).","; 86: 87: $q.="masterid=\"".ss($_REQUEST['masterid'])."\","; 88: $q.="masterjustping=".ss($_REQUEST['masterjustping']).","; 89: 90: if (isset($_REQUEST['nsurl'])) $q.="nsurl=\"".ss($_REQUEST['nsurl'])."\","; 91: if (isset($_REQUEST['nskey'])) $q.="nskey=\"".ss($_REQUEST['nskey'])."\","; 92: if (isset($_REQUEST['nspuship'])) $q.="nspuship=\"".ss($_REQUEST['nspuship'])."\","; 93: if (isset($_REQUEST['nsinterval'])) 94: { 95: $q.="nsinterval=".ss($_REQUEST['nsinterval']).","; 96: // Also use this text field as the indication that ns data is provided at all 97: if (isset($_REQUEST['nspullenabled'])) $set=1; 98: else $set=0; 99: $q.="nspullenabled=".$set.","; 100: if (isset($_REQUEST['nspushenabled'])) $set=1; 101: else $set=0; 102: $q.="nspushenabled=".$set.","; 103: } 104: 105: $q.="hostname=\"".ss($_REQUEST['hostname'])."\""; 106: 107: //if ($NATS->Cfg->Get("dev.links",0)==1) 108: //{ 109: // Utility Links 110: for ($a=0; $a<3; $a++) 111: { 112: $ulink="ulink".$a; 113: $utitle=$ulink."_title"; 114: $uurl=$ulink."_url"; 115: if (isset($_REQUEST[$ulink])) $ulinkv=1; 116: else $ulinkv=0; 117: $q.=",".$ulink."=".$ulinkv.","; 118: $q.=$utitle."=\"".ss($_REQUEST[$utitle])."\","; 119: $q.=$uurl."=\"".ss($_REQUEST[$uurl])."\""; 120: } 121: //} 122: 123: 124: 125: $q.=" WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\""; 126: //echo $q; 127: $NATS->DB->Query($q); 128: 129: if ($NATS->DB->Affected_Rows()<=0) 130: { 131: echo "<b style=\"color: red;\">Failed to Save Changes or Nothing Changed</b><br>"; 132: $poplist[]="Failed to Save or Nothing Changed"; 133: } 134: else 135: { 136: echo "<b style=\"color: green;\">Saved Changes</b><br>"; 137: $poplist[]="Saved Changes"; 138: } 139: 140: // Update Interval If Changed 141: if ( isset($_REQUEST['testinterval']) && isset($_REQUEST['original_testinterval']) && 142: ( $_REQUEST['testinterval'] != $_REQUEST['original_testinterval'] ) ) 143: $NATS->InvalidateNode($_REQUEST['nodeid']); 144: 145: // Update Nodeside if Newly Enabled and empty... 146: if ( isset($_REQUEST['original_nsenabled']) && ($_REQUEST['original_nsenabled']==0) && ($nsenabled==1) ) 147: { 148: $q="SELECT nskey FROM fnnode WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\""; 149: $r=$NATS->DB->Query($q); 150: if ($row=$NATS->DB->Fetch_Array($r)) 151: { 152: if ($row['nskey']=="") // generate one 153: { 154: $allow="abcdef0123456789"; 155: $len=64; 156: $alen=strlen($allow); 157: mt_srand(microtime()*1000000); 158: $key=""; 159: for ($a=0; $a<$len; $a++) 160: $key.=$allow[mt_rand(0,$alen-1)]; 161: $uq="UPDATE fnnode SET nskey=\"".$key."\" WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\""; 162: $NATS->DB->Query($uq); 163: } 164: $NATS->DB->Free($r); 165: } 166: } 167: 168: } 169: else if ($_REQUEST['action']=="invalidate") 170: { 171: $_REQUEST['showoptions']=1; 172: $NATS->InvalidateNode($_REQUEST['nodeid'],true); 173: } 174: else if ($_REQUEST['action']=="nodesiderefresh") 175: { 176: $_REQUEST['showoptions']=1; 177: $res=$NATS->NodeSide_Pull($_REQUEST['nodeid']); 178: if ($res===false) 179: { 180: $poplist[]="Error Fetching Nodeside Data"; 181: echo "<b style=\"color: red;\">Error Fetching Nodeside Data</b><br><br>"; 182: } 183: else 184: { 185: $poplist[]="Nodeside Data Refreshed"; 186: echo "<b style=\"color: green;\">Refreshed Nodeside Data</b><br><br>"; 187: } 188: } 189: else if ($_REQUEST['action']=="save_actions") 190: { 191: // build the two lists... 192: $cur=array(); 193: $cc=0; 194: $nl=array(); 195: $nc=0; 196: 197: if (isset($_REQUEST['links'])) 198: { 199: foreach($_REQUEST['links'] as $link) 200: { 201: $nl[$link]['proc']=false; // not processed or existing i.e. outstanding 202: $nl[$link]['aaid']=$link; 203: $nc++; 204: } 205: } 206: 207: $q="SELECT nalid,aaid FROM fnnalink WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\""; 208: $r=$NATS->DB->Query($q); 209: while ($row=$NATS->DB->Fetch_Array($r)) 210: { 211: //echo $row['aaid'].":"; 212: $cur[$row['aaid']]['proc']=false; 213: $cur[$row['aaid']]['nalid']=$row['nalid']; 214: $cur[$row['aaid']]['aaid']=$row['aaid']; 215: $cc++; 216: } 217: 218: // now we have the two lists lets process them 219: foreach($nl as $newone) 220: { 221: if (isset($cur[$newone['aaid']])) // exists - do nothing to both 222: { 223: //echo "<br>".$newone['aaid'].":"; 224: $cur[$newone['aaid']]['proc']=true; 225: $nl[$newone['aaid']]['proc']=true; 226: } 227: // otherwise news are left false to insert and curs false to delete 228: } 229: 230: // so lets do that 231: foreach($nl as $newone) 232: { 233: if ($newone['proc']==false) 234: { 235: //echo $q; 236: $q="INSERT INTO fnnalink(aaid,nodeid) VALUES(".ss($newone['aaid']).",\"".ss($_REQUEST['nodeid'])."\")"; 237: $NATS->DB->Query($q); 238: } 239: } 240: foreach($cur as $curone) 241: { 242: if ($curone['proc']==false) 243: { 244: $q="DELETE FROM fnnalink WHERE nalid=".$curone['nalid']; 245: $NATS->DB->Query($q); 246: //echo $q; 247: } 248: } 249: 250: echo "<b>Saved Alert List Preferences</b><br>"; 251: $poplist[]="Saved Alert List Preferences"; 252: 253: 254: } 255: 256: } 257: 258: 259: 260: echo "<b class=\"subtitle\">Editing <a href=main.php?mode=nodes>Node</a>: <a href=node.php?nodeid=".$_REQUEST['nodeid'].">".$_REQUEST['nodeid']."</a></b><br><br>"; 261: 262: 263: $q="SELECT * FROM fnnode WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" LIMIT 0,1"; 264: $r=$NATS->DB->Query($q); 265: if (!$row=$NATS->DB->Fetch_Array($r)) 266: { 267: echo "No such node.<br><br>"; 268: Screen_Footer(); 269: exit(); 270: } 271: $NATS->DB->Free($r); 272: 273: $title="<b class=\"sectitle\">Node Settings</b>"; 274: Start_Round($title,600); 275: echo "<form action=node.edit.php method=post>"; 276: echo "<div id=\"nodeoptions\">"; 277: echo "<table border=0 width=100%>"; 278: 279: echo "<input type=hidden name=action value=save_edit>"; 280: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">"; 281: 282: echo "<tr><td align=right> 283: NodeID 284: :</td><td align=left><b>"; 285: echo $row['nodeid']; 286: echo "</b></td></tr>"; 287: 288: echo "<tr><td align=right> 289: Node Name 290: :</td><td align=left>"; 291: echo "<input type=text name=nodename size=20 maxlength=128 value=\"".$row['nodename']."\">"; 292: echo "</td></tr>"; 293: 294: echo "<tr><td align=right> 295: Hostname 296: :</td><td align=left>"; 297: echo "<input type=text name=hostname size=20 maxlength=128 value=\"".$row['hostname']."\">"; 298: echo "</td></tr>"; 299: 300: echo "<tr><td align=right> 301: Description 302: :</td><td align=left>"; 303: echo "<input type=text name=nodedesc size=30 maxlength=200 value=\"".$row['nodedesc']."\">"; 304: echo "</td></tr>"; 305: 306: echo "<tr><td align=right> 307: Node Icon 308: :</td><td align=left>"; 309: echo "<select name=nodeicon>"; 310: if ($row['nodeicon']!="") echo "<option value=\"".$row['nodeicon']."\">".$row['nodeicon']."</option>"; 311: echo "<option value=\"\">Default</option>"; 312: $iconList=GetIcons(); 313: foreach($iconList as $icon) 314: echo "<option value=\"".$icon."\">".$icon."</option>"; 315: //echo "</select> [ <a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&show_icons=1>Show Icons</a> ]"; 316: echo "</select> [ <a href=\"javascript:showIcons()\">Show/Hide Icons</a> ]"; 317: echo "</td></tr>"; 318: 319: echo "<tr><td colspan=2>"; 320: echo "<div id=\"iconDiv\"></div>"; 321: echo "</td></tr>"; 322: 323: echo "<tr><td align=right> 324: Master Node :</td><td align=left>"; 325: echo "<select name=masterid>\n"; 326: if ($row['masterid']=="") $s=" selected"; 327: else $s=""; 328: echo "<option value=\"\"".$s.">No Master</option>\n"; 329: 330: $nlq="SELECT nodeid,nodename FROM fnnode ORDER BY weight ASC"; 331: $nlr=$NATS->DB->Query($nlq); 332: while ($noderow=$NATS->DB->Fetch_Array($nlr)) 333: { 334: if ($noderow['nodeid'] != $row['nodeid']) // not this node 335: { 336: if ($noderow['nodeid'] == $row['masterid']) // this is the master 337: $s=" selected"; 338: else 339: $s=""; 340: echo "<option value=\"".$noderow['nodeid']."\"".$s.">"; 341: if ($noderow['nodename']!="") echo $noderow['nodename']." (".$noderow['nodeid'].")"; 342: else echo $noderow['nodeid']; 343: echo "</option>\n"; 344: } 345: } 346: $NATS->DB->Free($nlr); 347: 348: 349: echo "</select> ".hlink("Node:Master")."\n"; 350: echo "</td></tr>"; 351: 352: echo "<tr><td align=right> 353: Skip if Master :</td><td align=left>"; 354: echo "<select name=masterjustping>\n"; 355: 356: if ($row['masterjustping']==1) $s=" selected"; 357: else $s=""; 358: 359: echo "<option value=1".$s.">Fails Ping</option>\n"; 360: if ($s=="") $s=" selected"; 361: else $s=""; 362: echo "<option value=0".$s.">Fails Any Test</option>\n"; 363: 364: echo "</select> ".hlink("MasterNode:Ping")."\n"; 365: echo "</td></tr>"; 366: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 367: 368: echo "<tr><td align=right> 369: Node Enabled 370: :</td><td align=left>"; 371: if ($row['nodeenabled']==1) $s=" checked"; 372: else $s=""; 373: echo "<input type=checkbox value=1 name=nodeenabled".$s.">"; 374: echo " ".hlink("Node:Enabled"); 375: echo "</td></tr>"; 376: 377: echo "<tr><td align=right> 378: Test Schedule 379: :</td><td align=left>"; 380: echo "<select name=scheduleid>"; 381: echo "<option value=0>At All Times</option>"; 382: $sq="SELECT scheduleid,schedulename FROM fnschedule"; 383: $sr=$NATS->DB->Query($sq); 384: while ($sched=$NATS->DB->Fetch_Array($sr)) 385: { 386: if ($sched['scheduleid']==$row['scheduleid']) $s.=" selected"; 387: else $s=""; 388: echo "<option value=".$sched['scheduleid'].$s.">".$sched['schedulename']."</option>"; 389: } 390: echo "</select>"; 391: $NATS->DB->Free($sr); 392: echo " ".hlink("Schedule"); 393: echo "</td></tr>"; 394: 395: echo "<tr><td align=right> 396: Test Interval 397: :</td><td align=left>"; 398: echo "<input type=text name=testinterval size=2 maxlength=8 value=\"".$row['testinterval']."\"> "; 399: echo "Minutes ".hlink("Node:TestInterval"); 400: echo "</td></tr>"; 401: echo "<input type=hidden name=original_testinterval value=\"".$row['testinterval']."\""; 402: 403: echo "<tr><td align=right valign=top> 404: Test Due 405: :</td><td align=left>"; 406: if ($row['nextrunx']>0) echo nicedt($row['nextrunx']); 407: else echo "Now"; 408: echo "<br>"; 409: echo nicenextx($row['nextrunx']); 410: echo " <a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&action=invalidate>Check ASAP</a> "; 411: echo hlink("Node:CheckASAP",12); 412: echo "</td></tr>"; 413: 414: echo "<tr><td align=right> 415: Alerts Active 416: :</td><td align=left>"; 417: if ($row['nodealert']==1) $s=" checked"; 418: else $s=""; 419: echo "<input type=checkbox value=1 name=nodealert".$s.">"; 420: echo " ".hlink("Node:AlertActive"); 421: echo "</td></tr>"; 422: 423: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 424: 425: echo "<tr><td align=right> 426: Ping Test 427: :</td><td align=left>"; 428: if ($row['pingtest']==1) $s=" checked"; 429: else $s=""; 430: echo "<input type=checkbox value=1 name=pingtest".$s.">"; 431: echo " ".hlink("Node:PingTest"); 432: echo "</td></tr>"; 433: 434: echo "<tr><td align=right> 435: Require Ping 436: :</td><td align=left>"; 437: if ($row['pingfatal']==1) $s=" checked"; 438: else $s=""; 439: echo "<input type=checkbox value=1 name=pingfatal".$s.">"; 440: echo " ".hlink("Node:RequirePing"); 441: echo "</td></tr>"; 442: 443: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 444: 445: echo "<tr><td align=right> 446: Node-Side Testing 447: :</td><td align=left>"; 448: if ($row['nsenabled']==1) $nodeside=true; 449: else $nodeside=false; 450: if ($nodeside) $s=" checked"; 451: else $s=""; 452: echo "<input type=checkbox value=1 name=nsenabled".$s.">"; 453: echo " ".hlink("Nodeside"); 454: echo "</td></tr>"; 455: echo "<input type=hidden name=original_nsenabled value=".$row['nsenabled'].">"; 456: 457: if ($nodeside) 458: { 459: echo "<tr><td align=right>Node Key :</td><td align=left>"; 460: echo "<input type=text name=nskey value=\"".$row['nskey']."\" size=30 maxlength=120>"; 461: echo " ".hlink("Nodeside:Key"); 462: echo "</td></tr>"; 463: 464: echo "<tr><td align=right>Pull Enabled :</td>"; 465: if ($row['nspullenabled']==1) $s=" checked"; 466: else $s=""; 467: echo "<td align=left><input type=checkbox name=nspullenabled value=1".$s."> "; 468: echo hlink("Nodeside:PullEnabled"); 469: echo "</td></tr>"; 470: 471: echo "<tr><td align=right>Pull URL :</td><td align=left>"; 472: echo "<input type=text name=nsurl value=\"".$row['nsurl']."\" size=30 maxlength=250>"; 473: if ($row['nsurl']!="") 474: { 475: $uri=$row['nsurl']."?nodekey=".$row['nskey']."&noupdates=1"; 476: echo " <a href=\"".$uri."\" target=top><i>Debug Raw Output</i></a>"; 477: } 478: echo " ".hlink("Nodeside:URL"); 479: echo "</td></tr>"; 480: 481: echo "<tr><td align=right>Pull Interval :</td><td align=left>"; 482: echo "<input type=text name=nsinterval value=\"".$row['nsinterval']."\" size=2 maxlength=10>"; 483: echo " Minutes ".hlink("Nodeside:Interval"); 484: echo "</td></tr>"; 485: 486: echo "<tr><td align=right>Push Enabled :</td>"; 487: if ($row['nspushenabled']==1) $s=" checked"; 488: else $s=""; 489: echo "<td align=left><input type=checkbox name=nspushenabled value=1".$s."> "; 490: echo hlink("Nodeside:PushEnabled"); 491: echo "</td></tr>"; 492: 493: echo "<tr><td align=right>Push IP :</td><td align=left>"; 494: echo "<input type=text name=nspuship value=\"".$row['nspuship']."\" size=20 maxlength=120>"; 495: echo " ".hlink("Nodeside:PushIP"); 496: echo "</td></tr>"; 497: 498: echo "<tr><td align=right>Last Data :</td><td align=left>"; 499: echo nicedt($row['nslastx'])." - ".dtago($row['nslastx'])."</td></tr>"; 500: 501: if ($row['nspullenabled']==1) 502: { 503: echo "<tr><td align=right>Next Pull Due :</td><td align=left>"; 504: if ($row['nsnextx']>0) echo nicedt($row['nsnextx'])." - ".nicenextx($row['nsnextx']); 505: else echo "Now"; 506: echo "</td></tr>"; 507: } 508: 509: echo "<tr><td align=right>Catalogue :</td><td align=left>"; 510: $nsq="SELECT COUNT(nstestid) FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\""; 511: $nsr=$NATS->DB->Query($nsq); 512: if ($nsrow=$NATS->DB->Fetch_Array($nsr)) 513: { 514: echo $nsrow['COUNT(nstestid)']." Node-Side Monitors"; 515: } 516: $NATS->DB->Free($nsr); 517: echo "</td></tr>"; 518: 519: echo "<tr><td align=right>Refresh Now :</td><td align=left>"; 520: if ($row['nspullenabled']==1) echo "<a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&action=nodesiderefresh>Refresh (Pull) Now</a>"; 521: else echo "<i>Pull Method Disabled</i>"; 522: echo "</td></tr>"; 523: 524: } 525: 526: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 527: 528: // New Utility Links 529: //if ($NATS->Cfg->Get("dev.links",0)==1) // ABOVE AS WELL!! 530: //{ 531: echo "<tr><td align=right valign=top>Utility Links ".hlink("UtilLinks",12)." :</td><td align=left>"; 532: echo "<table width=100% border=0 cellspacing=0 cellpadding=0>"; 533: echo "<tr><td> </td><td>Title</td><td>URL </td></tr>"; 534: for ($a=0; $a<3; $a++) // auto loop through them 535: { 536: $ulink="ulink".$a; 537: $utitle=$ulink."_title"; 538: $uurl=$ulink."_url"; 539: echo "<tr><td>"; 540: if ($row[$ulink]) $s=" checked"; 541: else $s=""; 542: echo "<input type=checkbox name=".$ulink." value=1".$s.">"; 543: echo "</td><td>"; 544: echo "<input type=text name=".$utitle." value=\"".$row[$utitle]."\" size=10>"; 545: echo "</td><td>"; 546: echo "<input type=text name=".$uurl." value=\"".$row[$uurl]."\" size=25>"; 547: echo "</td></tr>\n"; 548: } 549: echo "</table>"; 550: echo "</td></tr>"; 551: 552: 553: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 554: //} 555: 556: 557: echo "<tr><td colspan=2>"; 558: echo "<input type=submit value=\"Save Node Settings\"> <a href=main.php>Cancel Changes</a>"; 559: echo "<br><br>"; 560: echo "</td></tr>"; 561: echo "</table>"; 562: echo "</div></form>"; 563: echo "<i><a href=\"javascript:showOptions()\">Show / Hide Node Options</a></i>"; 564: echo "<script type=\"text/javascript\">\n"; 565: if (!isset($_REQUEST['showoptions'])) echo "showOptions();\n"; 566: echo "</script>\n"; 567: End_Round(); 568: 569: if (isset($_REQUEST['show_icons'])) 570: { 571: echo "<br><br>"; 572: ShowIcons(); 573: echo "<br><br>"; 574: } 575: 576: //echo "<div id=\"iconDiv\"></div>"; 577: 578: echo "<br><br>"; 579: $title="<b class=\"sectitle\">Node Tests</b>"; 580: Start_Round($title,600); 581: echo "<table class=\"nicetable\" width=100%>"; 582: $q="SELECT * FROM fnlocaltest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testtype!=\"ICMP\" ORDER BY localtestid ASC"; 583: $r=$NATS->DB->Query($q); 584: while ($row=$NATS->DB->Fetch_Array($r)) 585: { 586: echo "<tr><td>"; 587: 588: echo "<b class=\"al".$row['alertlevel']."\">"; 589: if (strlen($row['testparam'])>10) $tp=substr($row['testparam'],0,8).".."; 590: else $tp=$row['testparam']; 591: if ($row['testname']=="") echo lText($row['testtype'])." (".$tp.")"; 592: else echo $row['testname']; 593: echo "</b>"; 594: echo "</td>"; 595: 596: echo "<td> <a href=localtest.edit.php?localtestid=".$row['localtestid'].">"; 597: echo "<img src=images/options/application.png border=0 title=\"Edit Test Options\"></a> "; 598: echo "<a href=localtest.action.php?action=delete&localtestid=".$row['localtestid'].">"; 599: echo "<img src=images/options/action_delete.png border=0 title=\"Delete Test\"></a>"; 600: 601: echo " <i>Last Tested: ".dtago($row['lastrunx'])."</i>"; 602: echo "</td></tr>"; 603: } 604: 605: if ($nodeside) 606: { 607: $q="SELECT * FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testenabled=1 ORDER BY testtype"; 608: $r=$NATS->DB->Query($q); 609: while ($row=$NATS->DB->Fetch_Array($r)) 610: { 611: echo "<tr><td>"; 612: 613: echo "<b class=\"al".$row['alertlevel']."\">"; 614: if ($row['testname']=="") echo $row['testdesc']; 615: else echo $row['testname']; 616: echo "</b>"; 617: echo "</td>"; 618: 619: echo "<td> <a href=nodeside.edit.php?nstestid=".$row['nstestid'].">"; 620: echo "<img src=images/options/application.png border=0 title=\"Edit Test Options\"></a> "; 621: echo "<a href=nodeside.edit.php?action=disable&nstestid=".$row['nstestid']."&nodeid=".$_REQUEST['nodeid'].">"; 622: echo "<img src=images/options/action_delete.png border=0 title=\"Delete Test\"></a>"; 623: 624: echo " <i>Last Tested: ".dtago($row['lastrunx'])."</i>"; 625: echo "</td></tr>"; 626: } 627: $NATS->DB->Free($r); 628: } 629: 630: echo "<form action=localtest.action.php method=post><input type=hidden name=action value=create>"; 631: echo "<input type=hidden name=nodeid value=\"".$_REQUEST['nodeid']."\">\n"; 632: echo "<tr><td colspan=2> <br></td></tr>"; 633: echo "<tr><td><b>Add Test :</b></td>"; 634: echo "<td><select name=testtype>"; 635: echo "<option value=wtime>Web Time</option>"; 636: //echo "<option value=tcp>TCP Port</option>"; 637: echo "<option value=wsize>Web Size</option><option value=ping>Remote Ping</option>"; 638: //echo "<option value=imap>IMAP Connection</option><option value=smtp>SMTP Connection</option>"; 639: //echo "<option value=mysql>MySQL Connect Time</option><option value=mysqlrows>MySQL Row Count</option>"; 640: echo "<option value=host>Simple DNS Host</option>"; 641: //echo "<option value=dns>DNS Query</option>"; 642: // New Test Manager List 643: foreach($NATS->Tests->QuickList as $key => $val) 644: { 645: echo "<option value=".$key.">".$val."</option>"; 646: } 647: echo "<option value=testrand>Test Random</option><option value=testloop>Test Loop</option>"; 648: echo "</select> "; 649: 650: // one day will do fancy JS option here but for now moved to the edit 651: //echo "<input type=text name=testparam size=20 maxlength=128> "; 652: echo "<input type=hidden name=testparam value=\"\">"; 653: echo "<input type=hidden name=testcreatedisabled value=1>"; 654: 655: echo "<input type=submit value=\"Create Test\">"; 656: echo "</td></tr></form>"; 657: 658: if ($nodeside) 659: { 660: echo "<form action=nodeside.edit.php method=post><input type=hidden name=action value=enable>"; 661: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">"; 662: echo "<tr><td><b>Add Node-side Monitor :</b></td>"; 663: echo "<td><select name=nstestid>"; 664: $nsq="SELECT nstestid,testtype,testdesc FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testenabled=0 ORDER BY testtype"; 665: $nsr=$NATS->DB->Query($nsq); 666: while ($nsrow=$NATS->DB->Fetch_Array($nsr)) 667: { 668: echo "<option value=".$nsrow['nstestid'].">"; 669: if ($nsrow['testdesc']=="") echo $nsrow['testtype']; 670: else echo $nsrow['testdesc']."</option>"; 671: } 672: echo "</select>"; 673: echo " <input type=submit value=\"Add\">"; 674: echo "</td></tr></form>"; 675: } 676: 677: echo "</table>"; 678: End_Round(); 679: echo "<br><br>"; 680: 681: $title="<b class=\"sectitle\">Alert Actions</b> ".hlink("AlertAction",12); 682: Start_Round($title,600); 683: echo "<table border=0><form action=node.edit.php>"; 684: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">"; 685: echo "<input type=hidden name=action value=save_actions>"; 686: $q="SELECT aaid,aname FROM fnalertaction"; 687: $r=$NATS->DB->Query($q); 688: $c=0; 689: while ($row=$NATS->DB->Fetch_Array($r)) 690: { 691: // has link? 692: $lq="SELECT nalid FROM fnnalink WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND aaid=".ss($row['aaid'])." LIMIT 0,1"; 693: $lr=$NATS->DB->Query($lq); 694: if ($NATS->DB->Num_Rows($lr)>0) $s=" checked"; 695: else $s=""; 696: $NATS->DB->Free($lr); 697: echo "<tr><td><input type=checkbox name=\"links[".$c++."]\" value=\"".$row['aaid']."\"".$s.">"; 698: echo "</td><td>".$row['aaid']." - ".$row['aname']."</td></tr>"; 699: } 700: $NATS->DB->Free($r); 701: echo "<tr><td colspan=\"2\"><input type=submit value=\"Update Alert Actions\"></td></tr>"; 702: echo "</form></table>"; 703: End_Round(); 704: ?> 705: <br><br> 706: 707: <?php 708: Screen_Footer(); 709: ?> 710: