Viewing File server/web/node.edit.php of 1.17.4a
|
1: <?php 2: /* ------------------------------------------------------------- 3: This file is part of FreeNATS 4: 5: FreeNATS is (C) Copyright 2008-2011 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($NATS->Lang->Item("node.editor")); 32: ob_end_flush(); 33: Screen_Header($NATS->Lang->Item("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($NATS->StripGPC($_REQUEST['nodename']))."\","; 79: $q.="nodedesc=\"".ss($NATS->StripGPC($_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($NATS->StripGPC($_REQUEST['nsurl']))."\","; 91: if (isset($_REQUEST['nskey'])) $q.="nskey=\"".ss($NATS->StripGPC($_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;\">".$NATS->Lang->Item("save.failed")."</b><br>"; 132: $poplist[]=$NATS->Lang->Item("save.failed"); 133: } 134: else 135: { 136: echo "<b style=\"color: green;\">".$NATS->Lang->Item("save.ok")."</b><br>"; 137: $poplist[]=$NATS->Lang->Item("save.ok"); 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[]=$NATS->Lang->Item("nodeside.fetch.error"); 181: echo "<b style=\"color: red;\">".$NATS->Lang->Item("nodeside.fetch.error")."</b><br><br>"; 182: } 183: else 184: { 185: $poplist[]=$NATS->Lang->Item("nodeside.refreshed"); 186: echo "<b style=\"color: green;\">".$NATS->Lang->Item("nodeside.refreshed")."</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 $NATS->Lang->Item("save.ok")."<br><br>"; 251: $poplist[]=$NATS->Lang->Item("save.ok"); 252: 253: 254: } 255: 256: } 257: 258: 259: 260: echo "<b class=\"subtitle\">".$NATS->Lang->Item("editing")." <a href=main.php?mode=nodes>".$NATS->Lang->Item("node")."</a>: "; 261: echo "<a href=node.php?nodeid=".$_REQUEST['nodeid'].">".$_REQUEST['nodeid']."</a></b><br><br>"; 262: 263: 264: $q="SELECT * FROM fnnode WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" LIMIT 0,1"; 265: $r=$NATS->DB->Query($q); 266: if (!$row=$NATS->DB->Fetch_Array($r)) 267: { 268: echo $NATS->Lang->Item("no.such.node")."<br><br>"; 269: Screen_Footer(); 270: exit(); 271: } 272: $NATS->DB->Free($r); 273: 274: $title="<b class=\"sectitle\">".$NATS->Lang->Item("node.settings")."</b>"; 275: Start_Round($title,600); 276: echo "<form action=node.edit.php method=post>"; 277: echo "<div id=\"nodeoptions\">"; 278: echo "<table border=0 width=100%>"; 279: 280: echo "<input type=hidden name=action value=save_edit>"; 281: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">"; 282: 283: echo "<tr><td align=right>"; 284: echo $NATS->Lang->Item("node.id"); 285: echo " :</td><td align=left><b>"; 286: echo $row['nodeid']; 287: echo "</b></td></tr>"; 288: 289: echo "<tr><td align=right>"; 290: echo $NATS->Lang->Item("node.name"); 291: echo " :</td><td align=left>"; 292: echo "<input type=text name=nodename size=20 maxlength=128 value=\"".$row['nodename']."\">"; 293: echo "</td></tr>"; 294: 295: echo "<tr><td align=right>"; 296: echo $NATS->Lang->Item("hostname"); 297: echo " :</td><td align=left>"; 298: echo "<input type=text name=hostname size=20 maxlength=128 value=\"".$row['hostname']."\">"; 299: echo "</td></tr>"; 300: 301: echo "<tr><td align=right>"; 302: echo $NATS->Lang->Item("description"); 303: echo " :</td><td align=left>"; 304: echo "<input type=text name=nodedesc size=30 maxlength=200 value=\"".$row['nodedesc']."\">"; 305: echo "</td></tr>"; 306: 307: echo "<tr><td align=right>"; 308: echo $NATS->Lang->Item("node.icon"); 309: echo " :</td><td align=left>"; 310: echo "<select name=nodeicon>"; 311: if ($row['nodeicon']!="") echo "<option value=\"".$row['nodeicon']."\">".$row['nodeicon']."</option>"; 312: echo "<option value=\"\">".$NATS->Lang->Item("default")."</option>"; 313: $iconList=GetIcons(); 314: foreach($iconList as $icon) 315: echo "<option value=\"".$icon."\">".$icon."</option>"; 316: //echo "</select> [ <a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&show_icons=1>Show Icons</a> ]"; 317: echo "</select> [ <a href=\"javascript:showIcons()\">".$NATS->Lang->Item("show.hide.icons")."</a> ]"; 318: echo "</td></tr>"; 319: 320: echo "<tr><td colspan=2>"; 321: echo "<div id=\"iconDiv\"></div>"; 322: echo "</td></tr>"; 323: 324: echo "<tr><td align=right>"; 325: echo $NATS->Lang->Item("master.node"); 326: echo " :</td><td align=left>"; 327: echo "<select name=masterid>\n"; 328: if ($row['masterid']=="") $s=" selected"; 329: else $s=""; 330: echo "<option value=\"\"".$s.">".$NATS->Lang->Item("no.master")."</option>\n"; 331: 332: $nlq="SELECT nodeid,nodename FROM fnnode ORDER BY weight ASC"; 333: $nlr=$NATS->DB->Query($nlq); 334: while ($noderow=$NATS->DB->Fetch_Array($nlr)) 335: { 336: if ($noderow['nodeid'] != $row['nodeid']) // not this node 337: { 338: if ($noderow['nodeid'] == $row['masterid']) // this is the master 339: $s=" selected"; 340: else 341: $s=""; 342: echo "<option value=\"".$noderow['nodeid']."\"".$s.">"; 343: if ($noderow['nodename']!="") echo $noderow['nodename']." (".$noderow['nodeid'].")"; 344: else echo $noderow['nodeid']; 345: echo "</option>\n"; 346: } 347: } 348: $NATS->DB->Free($nlr); 349: 350: 351: echo "</select> ".hlink("Node:Master")."\n"; 352: echo "</td></tr>"; 353: 354: echo "<tr><td align=right>"; 355: echo $NATS->Lang->Item("master.skip"); 356: echo " :</td><td align=left>"; 357: echo "<select name=masterjustping>\n"; 358: 359: if ($row['masterjustping']==1) $s=" selected"; 360: else $s=""; 361: 362: echo "<option value=1".$s.">".$NATS->Lang->Item("fails.ping")."</option>\n"; 363: if ($s=="") $s=" selected"; 364: else $s=""; 365: echo "<option value=0".$s.">".$NATS->Lang->Item("fails.any.test")."</option>\n"; 366: 367: echo "</select> ".hlink("MasterNode:Ping")."\n"; 368: echo "</td></tr>"; 369: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 370: 371: echo "<tr><td align=right>"; 372: echo $NATS->Lang->Item("node.enabled"); 373: echo " :</td><td align=left>"; 374: if ($row['nodeenabled']==1) $s=" checked"; 375: else $s=""; 376: echo "<input type=checkbox value=1 name=nodeenabled".$s.">"; 377: echo " ".hlink("Node:Enabled"); 378: echo "</td></tr>"; 379: 380: echo "<tr><td align=right>"; 381: echo $NATS->Lang->Item("test.schedule"); 382: echo " :</td><td align=left>"; 383: echo "<select name=scheduleid>"; 384: echo "<option value=0>At All Times</option>"; 385: $sq="SELECT scheduleid,schedulename FROM fnschedule"; 386: $sr=$NATS->DB->Query($sq); 387: while ($sched=$NATS->DB->Fetch_Array($sr)) 388: { 389: if ($sched['scheduleid']==$row['scheduleid']) $s.=" selected"; 390: else $s=""; 391: echo "<option value=".$sched['scheduleid'].$s.">".$sched['schedulename']."</option>"; 392: } 393: echo "</select>"; 394: $NATS->DB->Free($sr); 395: echo " ".hlink("Schedule"); 396: echo "</td></tr>"; 397: 398: echo "<tr><td align=right>"; 399: echo $NATS->Lang->Item("test.interval"); 400: echo " :</td><td align=left>"; 401: echo "<input type=text name=testinterval size=2 maxlength=8 value=\"".$row['testinterval']."\"> "; 402: echo $NATS->Lang->Item("minutes")." ".hlink("Node:TestInterval"); 403: echo "</td></tr>"; 404: echo "<input type=hidden name=original_testinterval value=\"".$row['testinterval']."\""; 405: 406: echo "<tr><td align=right valign=top>"; 407: echo $NATS->Lang->Item("test.due"); 408: echo " :</td><td align=left>"; 409: if ($row['nextrunx']>0) echo nicedt($row['nextrunx']); 410: else echo $NATS->Lang->Item("now"); 411: echo "<br>"; 412: echo nicenextx($row['nextrunx']); 413: echo " <a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&action=invalidate>".$NATS->Lang->Item("check.asap")."</a> "; 414: echo hlink("Node:CheckASAP",12); 415: echo "</td></tr>"; 416: 417: echo "<tr><td align=right>"; 418: echo $NATS->Lang->Item("alerts.active"); 419: echo " :</td><td align=left>"; 420: if ($row['nodealert']==1) $s=" checked"; 421: else $s=""; 422: echo "<input type=checkbox value=1 name=nodealert".$s.">"; 423: echo " ".hlink("Node:AlertActive"); 424: echo "</td></tr>"; 425: 426: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 427: 428: echo "<tr><td align=right>"; 429: echo $NATS->Lang->Item("ping.test"); 430: echo " :</td><td align=left>"; 431: if ($row['pingtest']==1) $s=" checked"; 432: else $s=""; 433: echo "<input type=checkbox value=1 name=pingtest".$s.">"; 434: echo " ".hlink("Node:PingTest"); 435: echo "</td></tr>"; 436: 437: echo "<tr><td align=right>"; 438: echo $NATS->Lang->Item("require.ping"); 439: echo " :</td><td align=left>"; 440: if ($row['pingfatal']==1) $s=" checked"; 441: else $s=""; 442: echo "<input type=checkbox value=1 name=pingfatal".$s.">"; 443: echo " ".hlink("Node:RequirePing"); 444: echo "</td></tr>"; 445: 446: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 447: 448: echo "<tr><td align=right>"; 449: echo $NATS->Lang->Item("nodeside.testing"); 450: echo " :</td><td align=left>"; 451: if ($row['nsenabled']==1) $nodeside=true; 452: else $nodeside=false; 453: if ($nodeside) $s=" checked"; 454: else $s=""; 455: echo "<input type=checkbox value=1 name=nsenabled".$s.">"; 456: echo " ".hlink("Nodeside"); 457: echo "</td></tr>"; 458: echo "<input type=hidden name=original_nsenabled value=".$row['nsenabled'].">"; 459: 460: if ($nodeside) 461: { 462: echo "<tr><td align=right>".$NATS->Lang->Item("node.key")." :</td><td align=left>"; 463: echo "<input type=text name=nskey value=\"".$row['nskey']."\" size=30 maxlength=120>"; 464: echo " ".hlink("Nodeside:Key"); 465: echo "</td></tr>"; 466: 467: echo "<tr><td align=right>".$NATS->Lang->Item("pull.enabled")." :</td>"; 468: if ($row['nspullenabled']==1) $s=" checked"; 469: else $s=""; 470: echo "<td align=left><input type=checkbox name=nspullenabled value=1".$s."> "; 471: echo hlink("Nodeside:PullEnabled"); 472: echo "</td></tr>"; 473: 474: echo "<tr><td align=right>".$NATS->Lang->Item("pull.url")." :</td><td align=left>"; 475: echo "<input type=text name=nsurl value=\"".$row['nsurl']."\" size=30 maxlength=250>"; 476: if ($row['nsurl']!="") 477: { 478: $uri=$row['nsurl']."?nodekey=".$row['nskey']."&noupdates=1"; 479: echo " <a href=\"".$uri."\" target=top><i>".$NATS->Lang->Item("debug.raw")."</i></a>"; 480: } 481: echo " ".hlink("Nodeside:URL"); 482: echo "</td></tr>"; 483: 484: echo "<tr><td align=right>".$NATS->Lang->Item("pull.interval")." :</td><td align=left>"; 485: echo "<input type=text name=nsinterval value=\"".$row['nsinterval']."\" size=2 maxlength=10>"; 486: echo " ".$NATS->Lang->Item("minutes")." ".hlink("Nodeside:Interval"); 487: echo "</td></tr>"; 488: 489: echo "<tr><td align=right>".$NATS->Lang->Item("push.enabled")." :</td>"; 490: if ($row['nspushenabled']==1) $s=" checked"; 491: else $s=""; 492: echo "<td align=left><input type=checkbox name=nspushenabled value=1".$s."> "; 493: echo hlink("Nodeside:PushEnabled"); 494: echo "</td></tr>"; 495: 496: echo "<tr><td align=right>".$NATS->Lang->Item("push.ip")." :</td><td align=left>"; 497: echo "<input type=text name=nspuship value=\"".$row['nspuship']."\" size=20 maxlength=120>"; 498: echo " ".hlink("Nodeside:PushIP"); 499: echo "</td></tr>"; 500: 501: echo "<tr><td align=right>".$NATS->Lang->Item("last.data")." :</td><td align=left>"; 502: echo nicedt($row['nslastx'])." - ".dtago($row['nslastx'])."</td></tr>"; 503: 504: if ($row['nspullenabled']==1) 505: { 506: echo "<tr><td align=right>".$NATS->Lang->Item("next.pull.due")." :</td><td align=left>"; 507: if ($row['nsnextx']>0) echo nicedt($row['nsnextx'])." - ".nicenextx($row['nsnextx']); 508: else echo $NATS->Lang->Item("now"); 509: echo "</td></tr>"; 510: } 511: 512: echo "<tr><td align=right>".$NATS->Lang->Item("catalogue")." :</td><td align=left>"; 513: $nsq="SELECT COUNT(nstestid) FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\""; 514: $nsr=$NATS->DB->Query($nsq); 515: if ($nsrow=$NATS->DB->Fetch_Array($nsr)) 516: { 517: echo $nsrow['COUNT(nstestid)']." ".$NATS->Lang->Item("nodeside.monitors"); 518: } 519: $NATS->DB->Free($nsr); 520: echo "</td></tr>"; 521: 522: echo "<tr><td align=right>".$NATS->Lang->Item("refresh.now").":</td><td align=left>"; 523: if ($row['nspullenabled']==1) echo "<a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&action=nodesiderefresh>".$NATS->Lang->Item("nodeside.pull.now")."</a>"; 524: else echo "<i>".$NATS->Lang->Item("nodeside.pull.disabled")."</i>"; 525: echo "</td></tr>"; 526: 527: } 528: 529: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 530: 531: // New Utility Links 532: //if ($NATS->Cfg->Get("dev.links",0)==1) // ABOVE AS WELL!! 533: //{ 534: echo "<tr><td align=right valign=top>".$NATS->Lang->Item("utility.links")." ".hlink("UtilLinks",12)." :</td><td align=left>"; 535: echo "<table width=100% border=0 cellspacing=0 cellpadding=0>"; 536: echo "<tr><td> </td><td>".$NATS->Lang->Item("title")."</td><td>".$NATS->Lang->Item("url")." </td></tr>"; 537: for ($a=0; $a<3; $a++) // auto loop through them 538: { 539: $ulink="ulink".$a; 540: $utitle=$ulink."_title"; 541: $uurl=$ulink."_url"; 542: echo "<tr><td>"; 543: if ($row[$ulink]) $s=" checked"; 544: else $s=""; 545: echo "<input type=checkbox name=".$ulink." value=1".$s.">"; 546: echo "</td><td>"; 547: echo "<input type=text name=".$utitle." value=\"".$row[$utitle]."\" size=10>"; 548: echo "</td><td>"; 549: echo "<input type=text name=".$uurl." value=\"".$row[$uurl]."\" size=25>"; 550: echo "</td></tr>\n"; 551: } 552: echo "</table>"; 553: echo "</td></tr>"; 554: 555: 556: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 557: //} 558: 559: 560: echo "<tr><td colspan=2>"; 561: echo "<input type=submit value=\"".$NATS->Lang->Item("save.settings")."\"> <a href=main.php>".$NATS->Lang->Item("cancel")."</a>"; 562: echo "<br><br>"; 563: echo "</td></tr>"; 564: echo "</table>"; 565: echo "</div></form>"; 566: echo "<i><a href=\"javascript:showOptions()\">".$NATS->Lang->Item("show.hide.options")."</a></i>"; 567: echo "<script type=\"text/javascript\">\n"; 568: if (!isset($_REQUEST['showoptions'])) echo "showOptions();\n"; 569: echo "</script>\n"; 570: End_Round(); 571: 572: if (isset($_REQUEST['show_icons'])) 573: { 574: echo "<br><br>"; 575: ShowIcons(); 576: echo "<br><br>"; 577: } 578: 579: //echo "<div id=\"iconDiv\"></div>"; 580: 581: echo "<br><br>"; 582: $title="<b class=\"sectitle\">".$NATS->Lang->Item("node.tests")."</b>"; 583: Start_Round($title,600); 584: echo "<table class=\"nicetable\" width=100%>"; 585: $q="SELECT * FROM fnlocaltest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testtype!=\"ICMP\" ORDER BY localtestid ASC"; 586: $r=$NATS->DB->Query($q); 587: while ($row=$NATS->DB->Fetch_Array($r)) 588: { 589: echo "<tr><td>"; 590: 591: echo "<b class=\"al".$row['alertlevel']."\">"; 592: if (strlen($row['testparam'])>10) $tp=substr($row['testparam'],0,8).".."; 593: else $tp=$row['testparam']; 594: if ($row['testname']=="") echo lText($row['testtype'])." (".$tp.")"; 595: else echo $row['testname']; 596: echo "</b>"; 597: echo "</td>"; 598: 599: echo "<td> <a href=localtest.edit.php?localtestid=".$row['localtestid'].">"; 600: echo "<img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit.options")."\"></a> "; 601: echo "<a href=localtest.action.php?action=delete&localtestid=".$row['localtestid'].">"; 602: echo "<img src=images/options/action_delete.png border=0 title=\"".$NATS->Lang->Item("delete")."\"></a>"; 603: 604: echo " <i>".$NATS->Lang->Item("last.tested").": ".dtago($row['lastrunx'])."</i>"; 605: echo "</td></tr>"; 606: } 607: 608: if ($nodeside) 609: { 610: $q="SELECT * FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testenabled=1 ORDER BY testtype"; 611: $r=$NATS->DB->Query($q); 612: while ($row=$NATS->DB->Fetch_Array($r)) 613: { 614: echo "<tr><td>"; 615: 616: echo "<b class=\"al".$row['alertlevel']."\">"; 617: if ($row['testname']=="") echo $row['testdesc']; 618: else echo $row['testname']; 619: echo "</b>"; 620: echo "</td>"; 621: 622: echo "<td> <a href=nodeside.edit.php?nstestid=".$row['nstestid'].">"; 623: echo "<img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit.options")."\"></a> "; 624: echo "<a href=nodeside.edit.php?action=disable&nstestid=".$row['nstestid']."&nodeid=".$_REQUEST['nodeid'].">"; 625: echo "<img src=images/options/action_delete.png border=0 title=\"".$NATS->Lang->Item("delete")."\"></a>"; 626: 627: echo " <i>".$NATS->Lang->Item("last.tested").": ".dtago($row['lastrunx'])."</i>"; 628: echo "</td></tr>"; 629: } 630: $NATS->DB->Free($r); 631: } 632: 633: echo "<form action=localtest.action.php method=post><input type=hidden name=action value=create>"; 634: echo "<input type=hidden name=nodeid value=\"".$_REQUEST['nodeid']."\">\n"; 635: echo "<tr><td colspan=2> <br></td></tr>"; 636: echo "<tr><td><b>".$NATS->Lang->Item("add.test")." :</b></td>"; 637: echo "<td><select name=testtype>"; 638: echo "<option value=wtime>".$NATS->Lang->Item("web.time")."</option>"; 639: 640: echo "<option value=wsize>".$NATS->Lang->Item("web.size")."</option><option value=ping>".$NATS->Lang->Item("remote.ping")."</option>"; 641: 642: echo "<option value=host>".$NATS->Lang->Item("dns.host")."</option>"; 643: 644: // New Test Manager List 645: foreach($NATS->Tests->QuickList as $key => $val) 646: { 647: echo "<option value=".$key.">".$val."</option>"; 648: } 649: echo "<option value=testrand>".$NATS->Lang->Item("test.random")."</option><option value=testloop>".$NATS->Lang->Item("test.loop")."</option>"; 650: echo "</select> "; 651: 652: // one day will do fancy JS option here but for now moved to the edit 653: //echo "<input type=text name=testparam size=20 maxlength=128> "; 654: echo "<input type=hidden name=testparam value=\"\">"; 655: echo "<input type=hidden name=testcreatedisabled value=1>"; 656: 657: echo "<input type=submit value=\"".$NATS->Lang->Item("create.test")."\">"; 658: echo "</td></tr></form>"; 659: 660: if ($nodeside) 661: { 662: echo "<form action=nodeside.edit.php method=post><input type=hidden name=action value=enable>"; 663: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">"; 664: echo "<tr><td><b>".$NATS->Lang->Item("add.nodeside")." :</b></td>"; 665: echo "<td><select name=nstestid>"; 666: $nsq="SELECT nstestid,testtype,testdesc FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testenabled=0 ORDER BY testtype"; 667: $nsr=$NATS->DB->Query($nsq); 668: while ($nsrow=$NATS->DB->Fetch_Array($nsr)) 669: { 670: echo "<option value=".$nsrow['nstestid'].">"; 671: if ($nsrow['testdesc']=="") echo $nsrow['testtype']; 672: else echo $nsrow['testdesc']."</option>"; 673: } 674: echo "</select>"; 675: echo " <input type=submit value=\"".$NATS->Lang->Item("add")."\">"; 676: echo "</td></tr></form>"; 677: } 678: 679: echo "</table>"; 680: End_Round(); 681: echo "<br><br>"; 682: 683: $title="<b class=\"sectitle\">".$NATS->Lang->Item("alert.actions")."</b> ".hlink("AlertAction",12); 684: Start_Round($title,600); 685: echo "<table border=0><form action=node.edit.php>"; 686: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">"; 687: echo "<input type=hidden name=action value=save_actions>"; 688: $q="SELECT aaid,aname FROM fnalertaction"; 689: $r=$NATS->DB->Query($q); 690: $c=0; 691: while ($row=$NATS->DB->Fetch_Array($r)) 692: { 693: // has link? 694: $lq="SELECT nalid FROM fnnalink WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND aaid=".ss($row['aaid'])." LIMIT 0,1"; 695: $lr=$NATS->DB->Query($lq); 696: if ($NATS->DB->Num_Rows($lr)>0) $s=" checked"; 697: else $s=""; 698: $NATS->DB->Free($lr); 699: echo "<tr><td><input type=checkbox name=\"links[".$c++."]\" value=\"".$row['aaid']."\"".$s.">"; 700: echo "</td><td>".$row['aaid']." - ".$row['aname']."</td></tr>"; 701: } 702: $NATS->DB->Free($r); 703: echo "<tr><td colspan=\"2\"><input type=submit value=\"".$NATS->Lang->Item("update.alert.actions")."\"></td></tr>"; 704: echo "</form></table>"; 705: End_Round(); 706: ?> 707: <br><br> 708: 709: <?php 710: Screen_Footer(); 711: ?> 712: