File: 0.02.52a/server/web/node.edit.php (View as Code)

1: 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:
36: 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 "Failed to Save Changes or Nothing Changed
";
65: $poplist[]="Failed to Save or Nothing Changed"; 66: } 67: else 68: { 69: echo "Saved Changes
";
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 "
".$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 "Saved Alert List Preferences
";
135: $poplist[]="Saved Alert List Preferences"; 136: 137: 138: } 139: 140: } 141: 142: 143: 144: echo "Editing Node: ".$_REQUEST['nodeid']."

";
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.

";
151: Screen_Footer(); 152: exit(); 153: } 154: $NATS->DB->Free($r); 155: 156: echo ""; 157: echo "
";
158: echo ""; 159: echo ""; 160: echo ""; 161: 162: echo ""; 167: 168: echo ""; 173: 174: echo ""; 179: 180: echo ""; 185: 186: echo ""; 196: 197: echo ""; 205: 206: echo ""; 214: 215: echo ""; 223: 224: echo ""; 232: 233: echo ""; 237: echo ""; 238: 239: if (isset($_REQUEST['show_icons'])) 240: { 241: echo ""; 244: } 245: 246: 247: echo ""; 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 ""; 261: 262: echo ""; 267: } 268: 269: echo "
";
270: echo "\n"; 271: echo ""; 272: echo ""; 273: echo ""; 280: 281: 282: echo "
Node Settings

163: NodeID 164: :"; 165: echo $row['nodeid']; 166: echo "
169: Node Name 170: :"; 171: echo ""; 172: echo "
175: Hostname 176: :"; 177: echo ""; 178: echo "
181: Description 182: :"; 183: echo ""; 184: echo "
187: Node Icon 188: :"; 189: echo " [ Show Icons ]"; 195: echo "
198: Enabled 199: :"; 200: if ($row['nodeenabled']==1) $s=" checked"; 201: else $s=""; 202: echo ""; 203: echo " ".hlink("Node:Enabled"); 204: echo "
207: Alerts Active 208: :"; 209: if ($row['nodealert']==1) $s=" checked"; 210: else $s=""; 211: echo ""; 212: echo " ".hlink("Node:AlertActive"); 213: echo "
216: Ping Test 217: :"; 218: if ($row['pingtest']==1) $s=" checked"; 219: else $s=""; 220: echo ""; 221: echo " ".hlink("Node:PingTest"); 222: echo "
225: Require Ping 226: :"; 227: if ($row['pingfatal']==1) $s=" checked"; 228: else $s=""; 229: echo ""; 230: echo " ".hlink("Node:RequirePing"); 231: echo "
"; 234: echo " Cancel Changes"; 235: echo "

";
236: echo "


"; 242: ShowIcons(); 243: echo "


Node Tests

"; 254: 255: echo ""; 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 ""; 260: echo "Edit | "; 263: echo "Delete"; 264: 265: echo "  Last Tested: ".dtago($row['lastrunx']).""; 266: echo "
 
Add Test : "; 278: echo ""; 279: echo "
";
283: 284: echo "

Alert Actions

";
285: echo ""; 286: echo ""; 287: echo ""; 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 ""; 301: } 302: $NATS->DB->Free($r); 303: echo ""; 304: echo "
"; 300: echo "".$row['aaid']." - ".$row['aname']."
";
305: ?> 306: 307: 308: 309: Screen_Footer(); 310: ?> 311: