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