File: 1.02.2a/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,1,"","main","nodes");
 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 "if (document.getElementById('iconDiv').innerHTML=='') document.getElementById('iconDiv').innerHTML='<br><br>'+iconDivText+'<br><br>';\n";
 41: echo "else document.getElementById('iconDiv').innerHTML='';\n";
 42: echo "}\n\n";
 43: echo "var optionContent='';\n";
 44: echo "function showOptions()\n";
 45: echo "{\n";
 46: echo "if (document.getElementById('nodeoptions').innerHTML=='') document.getElementById('nodeoptions').innerHTML=optionContent;\n";
 47: echo "else\n";
 48: echo " {\n";
 49: echo " if (optionContent=='') optionContent=document.getElementById('nodeoptions').innerHTML;\n";
 50: echo " document.getElementById('nodeoptions').innerHTML='';\n";
 51: echo " }\n";
 52: echo "}\n";
 53: echo "</script>\n\n";
 54: ?>
 55: <br>
 56: <?php
 57: if (isset($_REQUEST['action']))
 58: 	{
 59: 	if ($_REQUEST['action']=="save_edit")
 60: 		{
 61: 		$_REQUEST['showoptions']=1;
 62: 		if (isset($_REQUEST['nodeenabled'])) $nodeenabled=1;
 63: 		else $nodeenabled=0;
 64: 		if (isset($_REQUEST['pingtest'])) $pingtest=1;
 65: 		else $pingtest=0;
 66: 		if (isset($_REQUEST['pingfatal'])) $pingfatal=1;
 67: 		else $pingfatal=0;
 68: 		if (isset($_REQUEST['nodealert'])) $nodealert=1;
 69: 		else $nodealert=0;
 70: 		if (isset($_REQUEST['testinterval'])) $interval=$_REQUEST['testinterval'];
 71: 		else $interval=0;
 72: 		if (!is_numeric($interval)) $interval=0;
 73: 		
 74: 		if (isset($_REQUEST['nsenabled'])) $nsenabled=1;
 75: 		else $nsenabled=0;
 76: 		
 77: 		$q="UPDATE fnnode SET ";
 78: 		$q.="nodename=\"".ss($_REQUEST['nodename'])."\",";
 79: 		$q.="nodedesc=\"".ss($_REQUEST['nodedesc'])."\",";
 80: 		$q.="testinterval=".ss($interval).",";
 81: 		if (isset($_REQUEST['scheduleid'])) $q.="scheduleid=".ss($_REQUEST['scheduleid']).",";
 82: 		$q.="nodeicon=\"".ss($_REQUEST['nodeicon'])."\",";
 83: 		$q.="nodealert=".ss($nodealert).",";
 84: 		$q.="nodeenabled=".ss($nodeenabled).",pingtest=".ss($pingtest).",pingfatal=".ss($pingfatal).",";
 85: 		$q.="nsenabled=".ss($nsenabled).",";
 86: 		
 87: 		if (isset($_REQUEST['nsurl'])) $q.="nsurl=\"".ss($_REQUEST['nsurl'])."\",";
 88: 		if (isset($_REQUEST['nskey'])) $q.="nskey=\"".ss($_REQUEST['nskey'])."\",";
 89: 		if (isset($_REQUEST['nspuship'])) $q.="nspuship=\"".ss($_REQUEST['nspuship'])."\",";
 90: 		if (isset($_REQUEST['nsinterval']))
 91: 			{
 92: 			$q.="nsinterval=".ss($_REQUEST['nsinterval']).",";
 93: 			// Also use this text field as the indication that ns data is provided at all
 94: 			if (isset($_REQUEST['nspullenabled'])) $set=1;
 95: 			else $set=0;
 96: 			$q.="nspullenabled=".$set.",";
 97: 			if (isset($_REQUEST['nspushenabled'])) $set=1;
 98: 			else $set=0;
 99: 			$q.="nspushenabled=".$set.",";
100: 			}
101: 		
102: 		$q.="hostname=\"".ss($_REQUEST['hostname'])."\"";
103: 		
104: 		$q.=" WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\"";
105: 		//echo $q;
106: 		$NATS->DB->Query($q);
107: 		
108: 		if ($NATS->DB->Affected_Rows()<=0) 
109: 			{
110: 			echo "<b style=\"color: red;\">Failed to Save Changes or Nothing Changed</b><br>";
111: 			$poplist[]="Failed to Save or Nothing Changed";
112: 			}
113: 		else 
114: 			{
115: 			echo "<b style=\"color: green;\">Saved Changes</b><br>";
116: 			$poplist[]="Saved Changes";
117: 			}
118: 			
119: 		// Update Interval If Changed
120: 		if ( isset($_REQUEST['testinterval']) && isset($_REQUEST['original_testinterval']) &&
121: 			( $_REQUEST['testinterval'] != $_REQUEST['original_testinterval'] ) )
122: 				$NATS->InvalidateNode($_REQUEST['nodeid']);
123: 				
124: 		// Update Nodeside if Newly Enabled and empty...
125: 		if ( isset($_REQUEST['original_nsenabled']) && ($_REQUEST['original_nsenabled']==0) && ($nsenabled==1) )
126: 			{
127: 			$q="SELECT nskey FROM fnnode WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\"";
128: 			$r=$NATS->DB->Query($q);
129: 			if ($row=$NATS->DB->Fetch_Array($r))
130: 				{
131: 				if ($row['nskey']=="") // generate one
132: 					{
133: 					$allow="abcdef0123456789";
134: 					$len=64;
135: 					$alen=strlen($allow);
136: 					mt_srand(microtime()*1000000);
137: 					$key="";
138: 					for ($a=0; $a<$len; $a++)
139: 						$key.=$allow[mt_rand(0,$alen-1)];
140: 					$uq="UPDATE fnnode SET nskey=\"".$key."\" WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\"";
141: 					$NATS->DB->Query($uq);
142: 					}
143: 				$NATS->DB->Free($r);
144: 				}
145: 			}
146: 				
147: 		}
148: 	else if ($_REQUEST['action']=="invalidate")
149: 		{
150: 		$_REQUEST['showoptions']=1;
151: 		$NATS->InvalidateNode($_REQUEST['nodeid'],true);
152: 		}
153: 	else if ($_REQUEST['action']=="nodesiderefresh")
154: 		{
155: 		$_REQUEST['showoptions']=1;
156: 		$res=$NATS->NodeSide_Pull($_REQUEST['nodeid']);
157: 		if ($res===false) 
158: 			{
159: 			$poplist[]="Error Fetching Nodeside Data";
160: 			echo "<b style=\"color: red;\">Error Fetching Nodeside Data</b><br><br>";
161: 			}
162: 		else 
163: 			{
164: 			$poplist[]="Nodeside Data Refreshed";
165: 			echo "<b style=\"color: green;\">Refreshed Nodeside Data</b><br><br>";
166: 			}
167: 		}
168: 	else if ($_REQUEST['action']=="save_actions")
169: 		{
170: 		// build the two lists...
171: 		$cur=array();
172: 		$cc=0;
173: 		$nl=array();
174: 		$nc=0;
175: 		
176: 		if (isset($_REQUEST['links']))
177: 			{
178: 			foreach($_REQUEST['links'] as $link)
179: 				{
180: 				$nl[$link]['proc']=false; // not processed or existing i.e. outstanding
181: 				$nl[$link]['aaid']=$link;
182: 				$nc++;
183: 				}
184: 			}
185: 			
186: 		$q="SELECT nalid,aaid FROM fnnalink WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\"";
187: 		$r=$NATS->DB->Query($q);
188: 		while ($row=$NATS->DB->Fetch_Array($r))
189: 			{
190: 			//echo $row['aaid'].":";
191: 			$cur[$row['aaid']]['proc']=false;
192: 			$cur[$row['aaid']]['nalid']=$row['nalid'];
193: 			$cur[$row['aaid']]['aaid']=$row['aaid'];
194: 			$cc++;
195: 			}
196: 		
197: 		// now we have the two lists lets process them
198: 		foreach($nl as $newone)
199: 			{
200: 			if (isset($cur[$newone['aaid']])) // exists - do nothing to both
201: 				{
202: 				//echo "<br>".$newone['aaid'].":";
203: 				$cur[$newone['aaid']]['proc']=true;
204: 				$nl[$newone['aaid']]['proc']=true;
205: 				}
206: 			// otherwise news are left false to insert and curs false to delete
207: 			}
208: 			
209: 		// so lets do that
210: 		foreach($nl as $newone)
211: 			{
212: 			if ($newone['proc']==false)
213: 				{
214: 				//echo $q;
215: 				$q="INSERT INTO fnnalink(aaid,nodeid) VALUES(".ss($newone['aaid']).",\"".ss($_REQUEST['nodeid'])."\")";
216: 				$NATS->DB->Query($q);
217: 				}
218: 			}
219: 		foreach($cur as $curone)
220: 			{
221: 			if ($curone['proc']==false)
222: 				{
223: 				$q="DELETE FROM fnnalink WHERE nalid=".$curone['nalid'];
224: 				$NATS->DB->Query($q);
225: 				//echo $q;
226: 				}
227: 			}
228: 			
229: 		echo "<b>Saved Alert List Preferences</b><br>";
230: 		$poplist[]="Saved Alert List Preferences";
231: 		
232: 			
233: 		}
234: 		
235: 	}
236: 		
237: 
238: 
239: echo "<b class=\"subtitle\">Editing <a href=main.php?mode=nodes>Node</a>: <a href=node.php?nodeid=".$_REQUEST['nodeid'].">".$_REQUEST['nodeid']."</a></b><br><br>";
240: 
241: 
242: $q="SELECT * FROM fnnode WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" LIMIT 0,1";
243: $r=$NATS->DB->Query($q);
244: if (!$row=$NATS->DB->Fetch_Array($r))
245: 	{
246: 	echo "No such node.<br><br>";
247: 	Screen_Footer();
248: 	exit();
249: 	}
250: $NATS->DB->Free($r);
251: 
252: $title="<b class=\"sectitle\">Node Settings</b>";
253: Start_Round($title,600);
254: echo "<form action=node.edit.php method=post>";
255: echo "<div id=\"nodeoptions\">";
256: echo "<table border=0 width=100%>";
257: 
258: echo "<input type=hidden name=action value=save_edit>";
259: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">";
260: 
261: echo "<tr><td align=right>
262: NodeID
263: :</td><td align=left><b>";
264: echo $row['nodeid'];
265: echo "</b></td></tr>";
266: 
267: echo "<tr><td align=right>
268: Node Name
269: :</td><td align=left>";
270: echo "<input type=text name=nodename size=20 maxlength=128 value=\"".$row['nodename']."\">";
271: echo "</td></tr>";
272: 
273: echo "<tr><td align=right>
274: Hostname
275: :</td><td align=left>";
276: echo "<input type=text name=hostname size=20 maxlength=128 value=\"".$row['hostname']."\">";
277: echo "</td></tr>";
278: 
279: echo "<tr><td align=right>
280: Description
281: :</td><td align=left>";
282: echo "<input type=text name=nodedesc size=30 maxlength=200 value=\"".$row['nodedesc']."\">";
283: echo "</td></tr>";
284: 
285: echo "<tr><td align=right>
286: Node Icon
287: :</td><td align=left>";
288: echo "<select name=nodeicon>";
289: if ($row['nodeicon']!="") echo "<option value=\"".$row['nodeicon']."\">".$row['nodeicon']."</option>";
290: echo "<option value=\"\">Default</option>";
291: $iconList=GetIcons();
292: foreach($iconList as $icon)
293: 	echo "<option value=\"".$icon."\">".$icon."</option>";
294: //echo "</select> [ <a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&show_icons=1>Show Icons</a> ]";
295: echo "</select> [ <a href=\"javascript:showIcons()\">Show/Hide Icons</a> ]";
296: echo "</td></tr>";
297: 
298: echo "<tr><td colspan=2>";
299: echo "<div id=\"iconDiv\"></div>";
300: echo "</td></tr>";
301: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>";
302: 
303: echo "<tr><td align=right>
304: Node Enabled
305: :</td><td align=left>";
306: if ($row['nodeenabled']==1) $s=" checked";
307: else $s="";
308: echo "<input type=checkbox value=1 name=nodeenabled".$s.">";
309: echo " ".hlink("Node:Enabled");
310: echo "</td></tr>";
311: 
312: echo "<tr><td align=right>
313: Test Schedule
314: :</td><td align=left>";
315: echo "<select name=scheduleid>";
316: echo "<option value=0>At All Times</option>";
317: $sq="SELECT scheduleid,schedulename FROM fnschedule";
318: $sr=$NATS->DB->Query($sq);
319: while ($sched=$NATS->DB->Fetch_Array($sr))
320: 	{
321: 	if ($sched['scheduleid']==$row['scheduleid']) $s.=" selected";
322: 	else $s="";
323: 	echo "<option value=".$sched['scheduleid'].$s.">".$sched['schedulename']."</option>";
324: 	}
325: echo "</select>";
326: $NATS->DB->Free($sr);
327: echo " ".hlink("Schedule");
328: echo "</td></tr>";
329: 
330: echo "<tr><td align=right>
331: Test Interval
332: :</td><td align=left>";
333: echo "<input type=text name=testinterval size=2 maxlength=8 value=\"".$row['testinterval']."\"> ";
334: echo "Minutes ".hlink("Node:TestInterval");
335: echo "</td></tr>";
336: echo "<input type=hidden name=original_testinterval value=\"".$row['testinterval']."\"";
337: 
338: echo "<tr><td align=right valign=top>
339: Test Due
340: :</td><td align=left>";
341: if ($row['nextrunx']>0) echo nicedt($row['nextrunx']);
342: else echo "Now";
343: echo "<br>";
344: echo nicenextx($row['nextrunx']);
345: echo " <a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&action=invalidate>Check ASAP</a> ";
346: echo hlink("Node:CheckASAP",12);
347: echo "</td></tr>";
348: 
349: echo "<tr><td align=right>
350: Alerts Active
351: :</td><td align=left>";
352: if ($row['nodealert']==1) $s=" checked";
353: else $s="";
354: echo "<input type=checkbox value=1 name=nodealert".$s.">";
355: echo " ".hlink("Node:AlertActive");
356: echo "</td></tr>";
357: 
358: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>";
359: 
360: echo "<tr><td align=right>
361: Ping Test
362: :</td><td align=left>";
363: if ($row['pingtest']==1) $s=" checked";
364: else $s="";
365: echo "<input type=checkbox value=1 name=pingtest".$s.">";
366: echo " ".hlink("Node:PingTest");
367: echo "</td></tr>";
368: 
369: echo "<tr><td align=right>
370: Require Ping
371: :</td><td align=left>";
372: if ($row['pingfatal']==1) $s=" checked";
373: else $s="";
374: echo "<input type=checkbox value=1 name=pingfatal".$s.">";
375: echo " ".hlink("Node:RequirePing");
376: echo "</td></tr>";
377: 
378: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>";
379: 
380: echo "<tr><td align=right>
381: Node-Side Testing 
382: :</td><td align=left>";
383: if ($row['nsenabled']==1) $nodeside=true;
384: else $nodeside=false;
385: if ($nodeside) $s=" checked";
386: else $s="";
387: echo "<input type=checkbox value=1 name=nsenabled".$s.">";
388: echo " ".hlink("Nodeside");
389: echo "</td></tr>";
390: echo "<input type=hidden name=original_nsenabled value=".$row['nsenabled'].">";
391: 
392: if ($nodeside)
393: 	{
394: 	echo "<tr><td align=right>Node Key :</td><td align=left>";
395: 	echo "<input type=text name=nskey value=\"".$row['nskey']."\" size=30 maxlength=120>";
396: 	echo " ".hlink("Nodeside:Key");
397: 	echo "</td></tr>";
398: 	
399: 	echo "<tr><td align=right>Pull Enabled :</td>";
400: 	if ($row['nspullenabled']==1) $s=" checked";
401: 	else $s="";
402: 	echo "<td align=left><input type=checkbox name=nspullenabled value=1".$s."> ";
403: 	echo hlink("Nodeside:PullEnabled");
404: 	echo "</td></tr>";
405: 	
406: 	echo "<tr><td align=right>Pull URL :</td><td align=left>";
407: 	echo "<input type=text name=nsurl value=\"".$row['nsurl']."\" size=30 maxlength=250>";
408: 	if ($row['nsurl']!="")
409: 		{
410: 		$uri=$row['nsurl']."?nodekey=".$row['nskey']."&noupdates=1";
411: 		echo " <a href=\"".$uri."\" target=top><i>Debug Raw Output</i></a>";
412: 		}
413: 	echo " ".hlink("Nodeside:URL");
414: 	echo "</td></tr>";
415: 	
416: 	echo "<tr><td align=right>Pull Interval :</td><td align=left>";
417: 	echo "<input type=text name=nsinterval value=\"".$row['nsinterval']."\" size=2 maxlength=10>";
418: 	echo " Minutes ".hlink("Nodeside:Interval");
419: 	echo "</td></tr>";
420: 	
421: 	echo "<tr><td align=right>Push Enabled :</td>";
422: 	if ($row['nspushenabled']==1) $s=" checked";
423: 	else $s="";
424: 	echo "<td align=left><input type=checkbox name=nspushenabled value=1".$s."> ";
425: 	echo hlink("Nodeside:PushEnabled");
426: 	echo "</td></tr>";
427: 	
428: 	echo "<tr><td align=right>Push IP :</td><td align=left>";
429: 	echo "<input type=text name=nspuship value=\"".$row['nspuship']."\" size=20 maxlength=120>";
430: 	echo " ".hlink("Nodeside:URL");
431: 	echo "</td></tr>";
432: 	
433: 	echo "<tr><td align=right>Last Data :</td><td align=left>";
434: 	echo nicedt($row['nslastx'])." - ".dtago($row['nslastx'])."</td></tr>";
435: 	
436: 	if ($row['nspullenabled']==1)
437: 		{
438: 		echo "<tr><td align=right>Next Pull Due :</td><td align=left>";
439: 		if ($row['nsnextx']>0) echo nicedt($row['nsnextx'])." - ".nicenextx($row['nsnextx']);
440: 		else echo "Now";
441: 		echo "</td></tr>";
442: 		}
443: 	
444: 	echo "<tr><td align=right>Catalogue :</td><td align=left>";
445: 	$nsq="SELECT COUNT(nstestid) FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\"";
446: 	$nsr=$NATS->DB->Query($nsq);
447: 	if ($nsrow=$NATS->DB->Fetch_Array($nsr))
448: 		{
449: 		echo $nsrow['COUNT(nstestid)']." Node-Side Monitors";
450: 		}
451: 	$NATS->DB->Free($nsr);
452: 	echo "</td></tr>";
453: 	
454: 	echo "<tr><td align=right>Refresh Now :</td><td align=left>";
455: 	if ($row['nspullenabled']==1) echo "<a href=node.edit.php?nodeid=".$_REQUEST['nodeid']."&action=nodesiderefresh>Refresh (Pull) Now</a>";
456: 	else echo "<i>Pull Method Disabled</i>";
457: 	echo "</td></tr>";
458: 
459: 	}
460: 
461: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>";
462: 
463: echo "<tr><td colspan=2>";
464: echo "<input type=submit value=\"Save Node Settings\"> <a href=main.php>Cancel Changes</a>";
465: echo "<br><br>";
466: echo "</td></tr>";
467: echo "</table>";
468: echo "</div></form>";
469: echo "<i><a href=\"javascript:showOptions()\">Show / Hide Node Options</a></i>";
470: echo "<script type=\"text/javascript\">\n";
471: if (!isset($_REQUEST['showoptions'])) echo "showOptions();\n";
472: echo "</script>\n";
473: End_Round();
474: 
475: if (isset($_REQUEST['show_icons']))
476: 	{
477: 	echo "<br><br>";
478: 	ShowIcons();
479: 	echo "<br><br>";
480: 	}
481: 	
482: //echo "<div id=\"iconDiv\"></div>";
483: 
484: echo "<br><br>";
485: $title="<b class=\"sectitle\">Node Tests</b>";
486: Start_Round($title,600);
487: echo "<table class=\"nicetable\" width=100%>";
488: $q="SELECT * FROM fnlocaltest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testtype!=\"ICMP\" ORDER BY localtestid ASC";
489: $r=$NATS->DB->Query($q);
490: while ($row=$NATS->DB->Fetch_Array($r))
491: 	{
492: 	echo "<tr><td>";
493: 	
494: 	echo "<b class=\"al".$row['alertlevel']."\">";
495: 	if (strlen($row['testparam'])>10) $tp=substr($row['testparam'],0,8)."..";
496: 	else $tp=$row['testparam'];
497: 	if ($row['testname']=="") echo lText($row['testtype'])." (".$tp.")";
498: 	else echo $row['testname'];
499: 	echo "</b>";
500: 	echo "</td>";
501: 
502: 	echo "<td>&nbsp;<a href=localtest.edit.php?localtestid=".$row['localtestid'].">";
503: 	echo "<img src=images/options/application.png border=0 title=\"Edit Test Options\"></a>&nbsp;";
504: 	echo "<a href=localtest.action.php?action=delete&localtestid=".$row['localtestid'].">";
505: 	echo "<img src=images/options/action_delete.png border=0 title=\"Delete Test\"></a>";
506: 
507: 	echo "&nbsp;&nbsp;<i>Last Tested: ".dtago($row['lastrunx'])."</i>";	
508: 	echo "</td></tr>";
509: 	}
510: 	
511: if ($nodeside)
512: 	{
513: 	$q="SELECT * FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testenabled=1";
514: 	$r=$NATS->DB->Query($q);
515: 	while ($row=$NATS->DB->Fetch_Array($r))
516: 		{
517: 		echo "<tr><td>";
518: 		
519: 		echo "<b class=\"al".$row['alertlevel']."\">";
520: 		if ($row['testname']=="") echo $row['testdesc'];
521: 		else echo $row['testname'];
522: 		echo "</b>";
523: 		echo "</td>";
524: 	
525: 		echo "<td>&nbsp;<a href=nodeside.edit.php?nstestid=".$row['nstestid'].">";
526: 		echo "<img src=images/options/application.png border=0 title=\"Edit Test Options\"></a>&nbsp;";
527: 		echo "<a href=nodeside.edit.php?action=disable&nstestid=".$row['nstestid']."&nodeid=".$_REQUEST['nodeid'].">";
528: 		echo "<img src=images/options/action_delete.png border=0 title=\"Delete Test\"></a>";
529: 	
530: 		echo "&nbsp;&nbsp;<i>Last Tested: ".dtago($row['lastrunx'])."</i>";	
531: 		echo "</td></tr>";	
532: 		}
533: 	$NATS->DB->Free($r);
534: 	}	
535: 
536: echo "<form action=localtest.action.php method=post><input type=hidden name=action value=create>";
537: echo "<input type=hidden name=nodeid value=\"".$_REQUEST['nodeid']."\">\n";
538: echo "<tr><td colspan=2>&nbsp;<br></td></tr>";
539: echo "<tr><td><b>Add Test :</b></td>";
540: echo "<td><select name=testtype>";
541: echo "<option value=wtime>Web Time</option>";
542: //echo "<option value=tcp>TCP Port</option>";
543: echo "<option value=wsize>Web Size</option><option value=ping>Remote Ping</option>";
544: //echo "<option value=imap>IMAP Connection</option><option value=smtp>SMTP Connection</option>";
545: //echo "<option value=mysql>MySQL Connect Time</option><option value=mysqlrows>MySQL Row Count</option>";
546: echo "<option value=host>Simple DNS Host</option>";
547: //echo "<option value=dns>DNS Query</option>";
548: // New Test Manager List
549: foreach($NATS->Tests->QuickList as $key => $val)
550: 	{
551: 	echo "<option value=".$key.">".$val."</option>";
552: 	}
553: echo "<option value=testrand>Test Random</option><option value=testloop>Test Loop</option>";
554: echo "</select> ";
555: 
556: // one day will do fancy JS option here but for now moved to the edit
557: //echo "<input type=text name=testparam size=20 maxlength=128> ";
558: echo "<input type=hidden name=testparam value=\"\">";
559: echo "<input type=hidden name=testcreatedisabled value=1>";
560: 
561: echo "<input type=submit value=\"Create Test\">";
562: echo "</td></tr></form>";
563: 
564: if ($nodeside)
565: 	{
566: 	echo "<form action=nodeside.edit.php method=post><input type=hidden name=action value=enable>";
567: 	echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">";
568: 	echo "<tr><td><b>Add Node-side Monitor :</b></td>";
569: 	echo "<td><select name=nstestid>";
570: 	$nsq="SELECT nstestid,testtype,testdesc FROM fnnstest WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND testenabled=0";
571: 	$nsr=$NATS->DB->Query($nsq);
572: 	while ($nsrow=$NATS->DB->Fetch_Array($nsr))
573: 		{
574: 		echo "<option value=".$nsrow['nstestid'].">";
575: 		if ($nsrow['testdesc']=="") echo $nsrow['testtype'];
576: 		else echo $nsrow['testdesc']."</option>";
577: 		}
578: 	echo "</select>";
579: 	echo " <input type=submit value=\"Add\">";
580: 	echo "</td></tr></form>";
581: 	}
582: 
583: echo "</table>";
584: End_Round();
585: echo "<br><br>";
586: 
587: $title="<b class=\"sectitle\">Alert Actions</b> ".hlink("AlertAction",12);
588: Start_Round($title,600);
589: echo "<table border=0><form action=node.edit.php>";
590: echo "<input type=hidden name=nodeid value=".$_REQUEST['nodeid'].">";
591: echo "<input type=hidden name=action value=save_actions>";
592: $q="SELECT aaid,aname FROM fnalertaction";
593: $r=$NATS->DB->Query($q);
594: $c=0;
595: while ($row=$NATS->DB->Fetch_Array($r))
596: 	{
597: 	// has link?
598: 	$lq="SELECT nalid FROM fnnalink WHERE nodeid=\"".ss($_REQUEST['nodeid'])."\" AND aaid=".ss($row['aaid'])." LIMIT 0,1";
599: 	$lr=$NATS->DB->Query($lq);
600: 	if ($NATS->DB->Num_Rows($lr)>0) $s=" checked";
601: 	else $s="";
602: 	$NATS->DB->Free($lr);
603: 	echo "<tr><td><input type=checkbox name=\"links[".$c++."]\" value=\"".$row['aaid']."\"".$s.">";
604: 	echo "</td><td>".$row['aaid']." - ".$row['aname']."</td></tr>";
605: 	}
606: $NATS->DB->Free($r);
607: echo "<tr><td colspan=\"2\"><input type=submit value=\"Update Alert Actions\"></td></tr>";
608: echo "</form></table>";
609: End_Round();
610: ?>
611: <br><br>
612: 
613: <?php
614: Screen_Footer();
615: ?>
616: