File: 0.02.68a/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: 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 "&nbsp;&nbsp;<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>&nbsp;<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: