File: 0.02.32a/server/web/node.edit.php (View as HTML)

  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 "&nbsp;&nbsp;<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>&nbsp;<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: