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