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