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