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