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