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