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