Viewing File server/web/node.edit.php of 0.03.00a
|
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); 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 "document.getElementById('iconDiv').innerHTML='<br><br>'+iconDivText+'<br><br>';\n"; 41: echo "}\n"; 42: echo "</script>\n\n"; 43: ?> 44: <br> 45: <?php 46: if (isset($_REQUEST['action'])) 47: { 48: if ($_REQUEST['action']=="save_edit") 49: { 50: if (isset($_REQUEST['nodeenabled'])) $nodeenabled=1; 51: else $nodeenabled=0; 52: if (isset($_REQUEST['pingtest'])) $pingtest=1; 53: else $pingtest=0; 54: if (isset($_REQUEST['pingfatal'])) $pingfatal=1; 55: else $pingfatal=0; 56: if (isset($_REQUEST['nodealert'])) $nodealert=1; 57: else $nodealert=0; 58: 59: $q="UPDATE fnnode SET "; 60: $q.="nodename=\"".ss($_REQUEST['nodename'])."\","; 61: $q.="nodedesc=\"".ss($_REQUEST['nodedesc'])."\","; 62: if (isset($_REQUEST['scheduleid'])) $q.="scheduleid=".ss($_REQUEST['scheduleid']).","; 63: $q.="nodeicon=\"".ss($_REQUEST['nodeicon'])."\","; 64: $q.="nodealert=".ss($nodealert).","; 65: $q.="nodeenabled=".ss($nodeenabled).",pingtest=".ss($pingtest).",pingfatal=".ss($pingfatal).","; 66: $q.="hostname=\"".ss($_REQUEST['hostname'])."\""; 67: 68: $q.=" WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\""; 69: //echo $q; 70: $NATS->DB->Query($q); 71: 72: if ($NATS->DB->Affected_Rows()<=0) 73: { 74: echo "<b style=\"color: red;\">Failed to Save Changes or Nothing Changed</b><br>"; 75: $poplist[]="Failed to Save or Nothing Changed"; 76: } 77: else 78: { 79: echo "<b style=\"color: green;\">Saved Changes</b><br>"; 80: $poplist[]="Saved Changes"; 81: } 82: } 83: else if ($_REQUEST['action']=="save_actions") 84: { 85: // build the two lists... 86: $cur=array(); 87: $cc=0; 88: $nl=array(); 89: $nc=0; 90: 91: if (isset($_REQUEST['links'])) 92: { 93: foreach($_REQUEST['links'] as $link) 94: { 95: $nl[$link]['proc']=false; // not processed or existing i.e. outstanding 96: $nl[$link]['aaid']=$link; 97: $nc++; 98: } 99: } 100: 101: $q="SELECT nalid,aaid FROM fnnalink WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\""; 102: $r=$NATS->DB->Query($q); 103: while ($row=$NATS->DB->Fetch_Array($r)) 104: { 105: //echo $row['aaid'].":"; 106: $cur[$row['aaid']]['proc']=false; 107: $cur[$row['aaid']]['nalid']=$row['nalid']; 108: $cur[$row['aaid']]['aaid']=$row['aaid']; 109: $cc++; 110: } 111: 112: // now we have the two lists lets process them 113: foreach($nl as $newone) 114: { 115: if (isset($cur[$newone['aaid']])) // exists - do nothing to both 116: { 117: //echo "<br>".$newone['aaid'].":"; 118: $cur[$newone['aaid']]['proc']=true; 119: $nl[$newone['aaid']]['proc']=true; 120: } 121: // otherwise news are left false to insert and curs false to delete 122: } 123: 124: // so lets do that 125: foreach($nl as $newone) 126: { 127: if ($newone['proc']==false) 128: { 129: //echo $q; 130: $q="INSERT INTO fnnalink(aaid,nodeid) VALUES(".ss($newone['aaid']).",\"".ss($_REQUEST['nodeid'])."\")"; 131: $NATS->DB->Query($q); 132: } 133: } 134: foreach($cur as $curone) 135: { 136: if ($curone['proc']==false) 137: { 138: $q="DELETE FROM fnnalink WHERE nalid=".$curone['nalid']; 139: $NATS->DB->Query($q); 140: //echo $q; 141: } 142: } 143: 144: echo "<b>Saved Alert List Preferences</b><br>"; 145: $poplist[]="Saved Alert List Preferences"; 146: 147: 148: } 149: 150: } 151: 152: 153: 154: echo "<b class=\"subtitle\">Editing Node: <a href=node.php?nodeid=".$_REQUEST['nodeid'].">".$_REQUEST['nodeid']."</a></b><br><br>"; 155: 156: $q="SELECT * FROM fnnode WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" LIMIT 0,1"; 157: $r=$NATS->DB->Query($q); 158: if (!$row=$NATS->DB->Fetch_Array($r)) 159: { 160: echo "No such node.<br><br>"; 161: Screen_Footer(); 162: exit(); 163: } 164: $NATS->DB->Free($r); 165: 166: echo "<table border=0>"; 167: echo "<form action=node.edit.php method=post>"; 168: echo "<input type=hidden name=action value=save_edit>"; 169: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">"; 170: echo "<tr><td colspan=2><b class=\"sectitle\">Node Settings</b><br><br></td>"; 171: 172: echo "<tr><td align=right> 173: NodeID 174: :</td><td align=left>"; 175: echo $row['nodeid']; 176: echo "</td></tr>"; 177: 178: echo "<tr><td align=right> 179: Node Name 180: :</td><td align=left>"; 181: echo "<input type=text name=nodename size=20 maxlength=128 value=\"".$row['nodename']."\">"; 182: echo "</td></tr>"; 183: 184: echo "<tr><td align=right> 185: Hostname 186: :</td><td align=left>"; 187: echo "<input type=text name=hostname size=20 maxlength=128 value=\"".$row['hostname']."\">"; 188: echo "</td></tr>"; 189: 190: echo "<tr><td align=right> 191: Description 192: :</td><td align=left>"; 193: echo "<input type=text name=nodedesc size=30 maxlength=200 value=\"".$row['nodedesc']."\">"; 194: echo "</td></tr>"; 195: 196: echo "<tr><td align=right> 197: Node Icon 198: :</td><td align=left>"; 199: echo "<select name=nodeicon>"; 200: if ($row['nodeicon']!="") echo "<option value=\"".$row['nodeicon']."\">".$row['nodeicon']."</option>"; 201: echo "<option value=\"\">Default</option>"; 202: foreach($fnIcons as $icon) 203: echo "<option value=\"".$icon."\">".$icon."</option>"; 204: //echo "</select> [ <a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&show_icons=1>Show Icons</a> ]"; 205: echo "</select> [ <a href=\"javascript:showIcons()\">Show Icons</a> ]"; 206: echo "</td></tr>"; 207: 208: echo "<tr><td align=right> 209: Test Schedule 210: :</td><td align=left>"; 211: echo "<select name=scheduleid>"; 212: echo "<option value=0>At All Times</option>"; 213: $sq="SELECT scheduleid,schedulename FROM fnschedule"; 214: $sr=$NATS->DB->Query($sq); 215: while ($sched=$NATS->DB->Fetch_Array($sr)) 216: { 217: if ($sched['scheduleid']==$row['scheduleid']) $s.=" selected"; 218: else $s=""; 219: echo "<option value=".$sched['scheduleid'].$s.">".$sched['schedulename']."</option>"; 220: } 221: echo "</select>"; 222: $NATS->DB->Free($sr); 223: echo " ".hlink("Schedule"); 224: echo "</td></tr>"; 225: 226: echo "<tr><td align=right> 227: Enabled 228: :</td><td align=left>"; 229: if ($row['nodeenabled']==1) $s=" checked"; 230: else $s=""; 231: echo "<input type=checkbox value=1 name=nodeenabled".$s.">"; 232: echo " ".hlink("Node:Enabled"); 233: echo "</td></tr>"; 234: 235: echo "<tr><td align=right> 236: Alerts Active 237: :</td><td align=left>"; 238: if ($row['nodealert']==1) $s=" checked"; 239: else $s=""; 240: echo "<input type=checkbox value=1 name=nodealert".$s.">"; 241: echo " ".hlink("Node:AlertActive"); 242: echo "</td></tr>"; 243: 244: echo "<tr><td align=right> 245: Ping Test 246: :</td><td align=left>"; 247: if ($row['pingtest']==1) $s=" checked"; 248: else $s=""; 249: echo "<input type=checkbox value=1 name=pingtest".$s.">"; 250: echo " ".hlink("Node:PingTest"); 251: echo "</td></tr>"; 252: 253: echo "<tr><td align=right> 254: Require Ping 255: :</td><td align=left>"; 256: if ($row['pingfatal']==1) $s=" checked"; 257: else $s=""; 258: echo "<input type=checkbox value=1 name=pingfatal".$s.">"; 259: echo " ".hlink("Node:RequirePing"); 260: echo "</td></tr>"; 261: 262: echo "<tr><td colspan=2>"; 263: echo "<input type=submit value=\"Save Node Settings\"> <a href=main.php>Cancel Changes</a>"; 264: echo "<br><br>"; 265: echo "</td></tr>"; 266: echo "</form>"; 267: 268: if (isset($_REQUEST['show_icons'])) 269: { 270: echo "<tr><td colspan=2 align=left valign=top><br><br>"; 271: ShowIcons(); 272: echo "<br><br></td></tr>"; 273: } 274: 275: echo "<tr><td colspan=2 align=left valign=top><div id=\"iconDiv\"></div></td></tr>"; 276: 277: 278: echo "<tr><td colspan=2><br><b class=\"sectitle\">Node Tests</b><br><br></td></tr>"; 279: 280: $q="SELECT * FROM fnlocaltest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testtype!=\"ICMP\""; 281: $r=$NATS->DB->Query($q); 282: while ($row=$NATS->DB->Fetch_Array($r)) 283: { 284: echo "<tr style=\"border-bottom: dotted 1px #e0e0e0;\"><td style=\"border-bottom: dotted 1px #e0e0e0;\">"; 285: 286: echo "<b class=\"al".$row['alertlevel']."\">"; 287: if (strlen($row['testparam'])>10) $tp=substr($row['testparam'],0,8).".."; 288: else $tp=$row['testparam']; 289: if ($row['testname']=="") echo lText($row['testtype'])." (".$tp.")"; 290: else echo $row['testname']; 291: echo "</b>"; 292: echo "</td>"; 293: 294: echo "<td style=\"border-bottom: dotted 1px #e0e0e0;\"><a href=localtest.edit.php?localtestid=".$row['localtestid'].">Edit</a> | "; 295: echo "<a href=localtest.action.php?action=delete&localtestid=".$row['localtestid'].">Delete</a>"; 296: 297: echo " <i>Last Tested: ".dtago($row['lastrunx'])."</i>"; 298: echo "</td></tr>"; 299: } 300: 301: echo "<form action=localtest.action.php method=post><input type=hidden name=action value=create>"; 302: echo "<input type=hidden name=nodeid value=\"".$_REQUEST['nodeid']."\">\n"; 303: echo "<tr><td colspan=2> <br></td></tr>"; 304: echo "<tr><td><b>Add Test :</b></td>"; 305: echo "<td><select name=testtype>"; 306: echo "<option value=wtime>Web Time</option><option value=tcp>TCP Port</option>"; 307: echo "<option value=wsize>Web Size</option><option value=ping>Remote Ping</option>"; 308: echo "<option value=testrand>Test Random</option><option value=testloop>Test Loop</option>"; 309: echo "</select> <input type=text name=testparam size=20 maxlength=128> "; 310: echo "<input type=submit value=\"Add\">"; 311: echo "</td></tr></form>"; 312: 313: 314: echo "</table>"; 315: 316: echo "<br><br><b class=\"sectitle\">Alert Actions</b><br><br>"; 317: echo "<table border=0><form action=node.edit.php>"; 318: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">"; 319: echo "<input type=hidden name=action value=save_actions>"; 320: $q="SELECT aaid,aname FROM fnalertaction"; 321: $r=$NATS->DB->Query($q); 322: $c=0; 323: while ($row=$NATS->DB->Fetch_Array($r)) 324: { 325: // has link? 326: $lq="SELECT nalid FROM fnnalink WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND aaid=".ss($row['aaid'])." LIMIT 0,1"; 327: $lr=$NATS->DB->Query($lq); 328: if ($NATS->DB->Num_Rows($lr)>0) $s=" checked"; 329: else $s=""; 330: $NATS->DB->Free($lr); 331: echo "<tr><td><input type=checkbox name=\"links[".$c++."]\" value=\"".$row['aaid']."\"".$s.">"; 332: echo "</td><td>".$row['aaid']." - ".$row['aname']."</td></tr>"; 333: } 334: $NATS->DB->Free($r); 335: echo "<tr><td colspan=\"2\"><input type=submit value=\"Update Alert Actions\"></td></tr>"; 336: echo "</form></table>"; 337: ?> 338: 339: 340: <?php 341: Screen_Footer(); 342: ?> 343: