File: 0.02.64a/server/web/admin.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<9) UL_Error("Admin Interface");
 32: 
 33: if (isset($_REQUEST['action']))
 34: 	{
 35: 	switch($_REQUEST['action'])
 36: 		{
 37: 		case "save_user":
 38: 		$q="UPDATE fnuser SET realname=\"".ss($_REQUEST['realname'])."\",userlevel=".ss($_REQUEST['userlevel']);
 39: 		if ((isset($_REQUEST['pword']))&&($_REQUEST['pword']!="_NOTTHIS_")) $q.=",password=MD5(\"".ss($_REQUEST['pword'])."\")";
 40: 		$q.=" WHERE username=\"".ss($_REQUEST['username'])."\"";
 41: 		$NATS->DB->Query($q);
 42: 		if ($NATS->DB->Affected_Rows()<=0) $amsg="Save User Failed or Nothing Changed";
 43: 		else $amsg="Save User ".$_REQUEST['username']." Succeeded";
 44: 		break;
 45: 		
 46: 		case "create_user":
 47: 		$q="INSERT INTO fnuser(username,password,realname,userlevel) VALUES(\"".ss($_REQUEST['username'])."\",";
 48: 		$q.="MD5(\"".ss($_REQUEST['pword'])."\"),\"".ss($_REQUEST['realname'])."\",".ss($_REQUEST['userlevel']).")";
 49: 		$NATS->DB->Query($q);
 50: 		//echo $q;
 51: 		if ($NATS->DB->Affected_Rows()<=0) $amsg="Create User Failed";
 52: 		else $amsg="User ".$_REQUEST['username']." Created";
 53: 		break;
 54: 		
 55: 		case "delete_user": 
 56: 		/* - disabled for 0.02.44 to allow duplicate deletion
 57: 		if ($_REQUEST['username']=="admin")
 58: 			{
 59: 			$amsg="Can't delete the admin user";
 60: 			break;
 61: 			}
 62: 		*/
 63: 		if (!isset($_REQUEST['confirmed']))
 64: 			{
 65: 			$back=urlencode("admin.php?action=delete_user&mode=users&username=".$_REQUEST['username']."&confirmed=1");
 66: 			$url="confirm.php?action=Delete+User+".$_REQUEST['username']."&back=".$back;
 67: 			header("Location: ".$url);
 68: 			exit();
 69: 			}
 70: 		$q="DELETE FROM fnuser WHERE username=\"".ss($_REQUEST['username'])."\"";
 71: 		$NATS->DB->Query($q);
 72: 		$amsg="User ".$_REQUEST['username']." Deleted";
 73: 		break;
 74: 		
 75: 		case "var_save":
 76: 		if ($_REQUEST['new_var']=="") // delete
 77: 			{
 78: 			$q="DELETE FROM fnconfig WHERE fnc_var=\"".ss($_REQUEST['orig_var'])."\"";
 79: 			}
 80: 		else // update
 81: 			{
 82: 			$q="UPDATE fnconfig SET fnc_var=\"".ss($_REQUEST['new_var'])."\",fnc_val=\"".ss($_REQUEST['new_val'])."\" ";
 83: 			$q.="WHERE fnc_var=\"".ss($_REQUEST['orig_var'])."\"";
 84: 			}
 85: 		$NATS->DB->Query($q);
 86: 		if ($NATS->DB->Affected_Rows()<=0) $amsg="Update/Delete Variable Failed";
 87: 		else $amsg="Updated/Deleted Variable";
 88: 		break;
 89: 		case "var_new":
 90: 		$q="INSERT INTO fnconfig(fnc_var,fnc_val) VALUES(\"".ss($_REQUEST['new_var'])."\",\"".ss($_REQUEST['new_val'])."\")";
 91: 		//echo $q;
 92: 		$NATS->DB->Query($q);
 93: 		if ($NATS->DB->Affected_Rows()<=0) $amsg="Create Variable Failed";
 94: 		else $amsg="Created Variable";
 95: 		break;
 96: 		
 97: 		case "save_aa":
 98: 		$q="UPDATE fnalertaction SET ";
 99: 		$q.="atype=\"".ss($_REQUEST['atype'])."\",";
100: 		$q.="ctrlimit=".ss($_REQUEST['ctrlimit']).",";
101: 		$q.="ctrtoday=".ss($_REQUEST['ctrtoday']).",";
102: 		$q.="aname=\"".ss($_REQUEST['aname'])."\",";
103: 		if (isset($_REQUEST['efrom'])) $q.="efrom=\"".ss($_REQUEST['efrom'])."\",";
104: 		$q.="etolist=\"".ss($_REQUEST['etolist'])."\",";
105: 		if (isset($_REQUEST['esubject'])) $q.="esubject=".ss($_REQUEST['esubject']).",";
106: 		$q.="etype=".ss($_REQUEST['etype']);
107: 		if (isset($_REQUEST['awarnings'])) $q.=",awarnings=".ss($_REQUEST['awarnings']);
108: 		else $q.=",awarnings=0";
109: 		if (isset($_REQUEST['adecrease'])) $q.=",adecrease=".ss($_REQUEST['adecrease']);
110: 		else $q.=",adecrease=0";
111: 		$q.=" WHERE aaid=".ss($_REQUEST['aaid']);
112: 		//echo $q;
113: 		$NATS->DB->Query($q);
114: 		if ($NATS->DB->Affected_Rows()<=0) $amsg="Action Update Failed or Nothing Changed";
115: 		else $amsg="Action Updated";
116: 		break;
117: 		
118: 		case "action_test":
119: 		$q="SELECT mdata FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid'])." LIMIT 0,1";
120: 		$r=$NATS->DB->Query($q);
121: 		$row=$NATS->DB->Fetch_Array($r);
122: 		$oldm=$row['mdata'];
123: 		$q="UPDATE fnalertaction SET mdata=\"** ACTION TEST **\" WHERE aaid=".ss($_REQUEST['aaid']);
124: 		$NATS->DB->Query($q);
125: 		$NATS->ActionFlush();
126: 		$q="UPDATE fnalertaction SET mdata=\"".ss($oldm)."\" WHERE aaid=".ss($_REQUEST['aaid']);
127: 		$NATS->DB->Query($q);
128: 		$amsg="Alert Action Tested &amp; Flushed";
129: 		break;
130: 		
131: 		case "action_create":
132: 		$q="INSERT INTO fnalertaction(atype) VALUES(\"\")";
133: 		$NATS->DB->Query($q);
134: 		$amsg="Created New Alert Action";
135: 		break;
136: 		
137: 		case "action_delete":
138: 		if (!isset($_REQUEST['confirmed']))
139: 			{
140: 			$back=urlencode("admin.php?mode=alertactions&aaid_del=".$_REQUEST['aaid_del']."&action=action_delete&confirmed=1");
141: 			$url="confirm.php?action=Delete+alert+action&back=".$back;
142: 			header("Location: ".$url);
143: 			exit();
144: 			}
145: 		// otherwise confirmed
146: 		$q="DELETE FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid_del']);
147: 		$NATS->DB->Query($q);
148: 		if ($NATS->DB->Affected_Rows()>0) $amsg="Alert Action Deleted";
149: 		else $amsg="Alert Action Delete Failed";
150: 		$q="DELETE FROM fnnalink WHERE aaid=".ss($_REQUEST['aaid_del']);
151: 		$NATS->DB->Query($q);
152: 		break;
153: 		
154: 		case "optimize":
155: 		$q="OPTIMIZE TABLE ".ss($_REQUEST['table']);
156: 		$NATS->DB->Query($q);
157: 		$msg="Optimised Table ".$_REQUEST['table'];
158: 		break;
159: 		
160: 		}
161: 	}
162: 
163: ob_end_flush();
164: Screen_Header("Administration Interface",1);
165: 
166: if (isset($_REQUEST['mode'])) $mode=$_REQUEST['mode'];
167: else $mode="";
168: 
169: if (isset($_REQUEST['message'])) echo "<br><b>".$_REQUEST['message']."</b><br>";
170: if (isset($amsg)) echo "<br><b>".$amsg."</b><br>";
171: 
172: echo "<br>";
173: if (isset($_REQUEST['updatecheck']))
174: 	{
175: 	// check for updates
176: 	$dq="?CheckVersion=".$NATS->Version."&JSMode=1";
177: 	$dl="http://www.purplepixie.org/freenats/download.php";
178: 	$du=$dl.$dq;
179: 	/* old method
180: 	$cp=@fopen($du,"r");
181: 	if ($cp>0)
182: 		{
183: 		$cs=@fgets($cp,128);
184: 		@fclose($cp);
185: 		if ($cs=="0") echo "System Up to Date<br>";
186: 		else echo "Update Available: <a href=http://www.purplepixie.org/freenats>".$cs."</a><br>";
187: 		}
188: 	else echo "Error Checking for Updates<br>";
189: 	*/
190: 	echo "Checking Version: ";
191: 	echo "<script type=\"text/javascript\" src=\"".$du."\"></script>\n";
192: 	echo "<br><br>";
193: 	}
194: else if ($mode=="")
195: 	{
196: 	echo "<a href=admin.php?updatecheck=1><b>Check for FreeNATS Updates</b></a><br><br>";
197: 	}
198: 	
199: function tul($l)
200: {
201: if ($l>9) return "Administrator";
202: if ($l>4) return "Power User";
203: if ($l>0) return "Normal User";
204: return "Disabled";
205: }
206: 
207: function aat_etype($type)
208: {
209: switch ($type)
210: 	{
211: 	case 0: return "Short";
212: 	case 1: return "Long";
213: 	default: return "Unknown";
214: 	}
215: }
216: 
217: function aat_esub($type)
218: {
219: switch ($type)
220: 	{
221: 	case 0: return "Blank";
222: 	case 1: return "Short";
223: 	case 2: return "Long";
224: 	default: return "Unknown";
225: 	}
226: }
227: 
228: function aat_atype($type)
229: {
230: switch($type)
231: 	{
232: 	case "": case "Disabled": return "Disabled";
233: 	case "email": return "EMail";
234: 	case "url": return "URL";
235: 	default: return "Unknown";
236: 	}
237: }
238: 
239: if ($mode=="users")
240: {
241: echo "<b class=\"minortitle\">Users</b><br><br>";
242: 
243: 
244: 
245: 
246: $q="SELECT username,realname,userlevel FROM fnuser";
247: $r=$NATS->DB->Query($q);
248: echo "<table border=0>";
249: echo "<tr><td><b>Username&nbsp;</b></td>";
250: echo "<td><b>Real Name</b></td><td><b>User Level</b></td><td><b>Password</b></td><td><b>Options</b></td></tr>";
251: while ($row=$NATS->DB->Fetch_Array($r))
252: 	{
253: 	echo "<form action=admin.php method=post>";
254: 	echo "<input type=hidden name=action value=save_user>";
255: 	echo "<input type=hidden name=mode value=users>";
256: 	echo "<input type=hidden name=username value=\"".$row['username']."\">";
257: 	echo "<tr><td>".$row['username']."</td>";
258: 	echo "<td><input type=text name=realname value=\"".$row['realname']."\" size=20 maxlength=120></td>";
259: 	echo "<td><select name=userlevel>";
260: 	echo "<option value=".$row['userlevel'].">".tul($row['userlevel'])."</option>";
261: 	echo "<option value=0>".tul(0)."</option>";
262: 	echo "<option value=1>".tul(1)."</option>";
263: 	echo "<option value=5>".tul(5)."</option>";
264: 	echo "<option value=10>".tul(10)."</option>";
265: 	echo "</select>";
266: 	echo "</td>";
267: 	echo "<td><input type=password name=pword value=\"_NOTTHIS_\" size=10 maxlength=128></td>";
268: 	echo "<td><input type=submit value=\"Save\"> <a href=admin.php?action=delete_user&username=".$row['username'].">Delete</a></td>";
269: 	echo "</tr>";
270: 	echo "</form>";
271: 	}
272: echo "<form action=admin.php method=post>";
273: echo "<input type=hidden name=action value=create_user>";
274: echo "<input type=hidden name=mode value=users>";
275: echo "<tr><td><input type=text name=username size=20 maxlength=60></td>";
276: echo "<td><input type=text name=realname size=20 maxlength=120></td>";
277: echo "<td><select name=userlevel>";
278: echo "<option value=1>".tul(1)."</option>";
279: echo "<option value=0>".tul(0)."</option>";
280: echo "<option value=5>".tul(5)."</option>";
281: echo "<option value=10>".tul(10)."</option>";
282: echo "</select></td>";
283: echo "<td><input type=password name=pword size=10 maxlength=60></td>";
284: echo "<td><input type=submit value=\"Create User\"></td>";
285: echo "</tr></form>";
286: echo "</table><br>";
287: echo "<br>";
288: $NATS->DB->Free($r);
289: }
290: else if ($mode=="testsessions")
291: {
292: echo "<b class=\"minortitle\">Test Sessions</b><br><br>";
293: $q="SELECT * FROM fntestrun ORDER BY trid DESC";
294: if (!isset($_REQUEST['ShowAllSessions'])) $q.=" LIMIT 0,5";
295: $r=$NATS->DB->Query($q);
296: echo "<table border=0>";
297: while ($row=$NATS->DB->Fetch_Array($r))
298: 	{
299: 	echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>";
300: 	echo "<td>".nicedt($row['startx'])." - ";
301: 	if ($row['finishx']>0) echo nicedt($row['finishx']);
302: 	else echo "Still Running";
303: 	echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">System Logs</a>)";
304: 	echo "</td></tr>";
305: 	}
306: echo "</table>";
307: $NATS->DB->Free($r);
308: echo "<br>";
309: if (!isset($_REQUEST['ShowAllSessions'])) echo "<a href=admin.php?mode=testsessions&ShowAllSessions=1>Show All Testing Sessions</a><br><br>";
310: echo "<br>";
311: }
312: else if ($mode=="alertactions")
313: {
314: echo "<b class=\"minortitle\">Alert Actions</b><br><br>";
315: 
316: if (isset($_REQUEST['aaid']))
317: 	{ // view/edit aaid
318: 	$q="SELECT * FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid']);
319: 	$r=$NATS->DB->Query($q);
320: 	if (!$row=$NATS->DB->Fetch_Array($r))
321: 		{
322: 		echo "<b>Error Fetching AAID</b><br><br>";
323: 		Screen_Footer();
324: 		exit();
325: 		}
326: 	echo "<table border=0>";
327: 	echo "<form action=admin.php method=post>";
328: 	echo "<input type=hidden name=action value=save_aa>";
329: 	echo "<input type=hidden name=mode value=alertactions>";
330: 	echo "<input type=hidden name=aaid value=".$_REQUEST['aaid'].">";
331: 	echo "<tr><td>ID : </td><td>action/".$_REQUEST['aaid']."</td></tr>";
332: 	
333: 	echo "<tr><td>Action Name : </td>";
334: 	echo "<td>";
335: 	echo "<input type=text name=aname size=30 maxlength=120 value=\"".$row['aname']."\">";
336: 	echo "</td></tr>";
337: 	
338: 	echo "<tr><td>Type : </td><td>";
339: 	echo "<select name=atype>";
340: 	echo "<option value=".$row['atype'].">".aat_atype($row['atype'])."</option>";
341: 	echo "<option value=Disabled>Disabled</option>";
342: 	echo "<option value=email>EMail</option>";
343: 	echo "<option value=url>URL</option>";
344: 	echo "</select>";
345: 	echo "</td></tr>";
346: 	
347: 	echo "<tr><td>Warnings : </td>";
348: 	if ($row['awarnings']==1) $s=" checked";
349: 	else $s="";
350: 	echo "<td><input type=checkbox name=awarnings value=1".$s."> ".hlink("AAction:Warnings")."</td></tr>";
351: 	
352: 	echo "<tr><td>Decreases : </td>";
353: 	if ($row['adecrease']==1) $s=" checked";
354: 	else $s="";
355: 	echo "<td><input type=checkbox name=adecrease value=1".$s."> ".hlink("AAction:Decreases")."</td></tr>";
356: 	
357: 	echo "<tr><td>Action Limit : </td>";
358: 	echo "<td>";
359: 	echo "<input type=text name=ctrlimit size=3 maxlength=6 value=\"".$row['ctrlimit']."\"> ";
360: 	echo hlink("AAction:Limit");
361: 	echo "</td></tr>";
362: 	
363: 	echo "<tr><td>Action Counter : </td>";
364: 	echo "<td>";
365: 	echo "<input type=text name=ctrtoday size=3 maxlength=6 value=\"".$row['ctrtoday']."\"> ";
366: 	echo hlink("AAction:Counter");
367: 	echo " (for ";
368: 	if ($row['ctrdate']=="") echo "<i>unknown</i>";
369: 	else echo substr($row['ctrdate'],6,2)."/".substr($row['ctrdate'],4,2)."/".substr($row['ctrdate'],0,4);
370: 	echo ")";
371: 	echo "</td></tr>";
372: 	
373: if ($row['atype']!="url")
374: 	{
375: 	
376: 	echo "<tr><td>Email From : </td>";
377: 	echo "<td>";
378: 	echo "<input type=text name=efrom size=30 maxlength=120 value=\"".$row['efrom']."\">";
379: 	echo "</td></tr>";
380: 	
381: 	echo "<tr><td>Email Subject : </td><td>";
382: 	echo "<select name=esubject>";
383: 	echo "<option value=".$row['esubject'].">".aat_esub($row['esubject'])."</option>";
384: 	echo "<option value=0>Blank</option>";
385: 	echo "<option value=1>Short</option>";
386: 	echo "<option value=2>Long</option>";
387: 	echo "</select>";
388: 	echo "</td></tr>";
389: 	
390: 	}
391: 	
392: 	echo "<tr><td>Msg Type : </td><td>";
393: 	echo "<select name=etype>";
394: 	echo "<option value=".$row['etype'].">".aat_etype($row['etype'])."</option>";
395: 	echo "<option value=0>Short</option>";
396: 	echo "<option value=1>Long</option>";
397: 	echo "</select>";
398: 	echo "</td></tr>";
399: 	
400: 	echo "<tr><td valign=top>Email To<br>or URL : </td><td>";
401: 	echo "<textarea name=etolist cols=40 rows=6>".$row['etolist']."</textarea>";
402: 	echo "</td></tr>";
403: 	
404: 	echo "<tr><td colspan=2><input type=submit value=\"Update Action\"> &nbsp; <a href=admin.php>Cancel Update</a> | ";
405: 	echo "<a href=admin.php?aaid=".$_REQUEST['aaid']."&action=action_test>Test Action</a> | ";
406: 	echo "<a href=admin.php?aaid_del=".$_REQUEST['aaid']."&action=action_delete>Delete Action</a>";
407: 	echo "</td></tr>";
408: 	
409: 	echo "</form></table><br><br>";
410: 	$NATS->DB->Free($r);
411: 	}
412: 
413: $q="SELECT aaid,atype,aname FROM fnalertaction";
414: $r=$NATS->DB->Query($q);
415: while ($row=$NATS->DB->Fetch_Array($r))
416: 	{
417: 	echo "<a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">action/".$row['aaid']." : ".$row['aname']."</a> - ";
418: 	echo aat_atype($row['atype']);
419: 	echo "<br>";
420: 	}
421: 
422: echo "<br><a href=admin.php?mode=alertactions&action=action_create><b>Create New Alert Action</b></a><br>";
423: echo "<br><br>";
424: }
425: else if ($mode=="logs")
426: {
427: echo "<b class=\"minortitle\">System Logs</b><br><br>";
428: echo "<a href=log.php>System Event Log</a><br><br>";
429: 
430: echo "<br><br>";
431: }
432: else if ($mode=="status")
433: {
434: // system healthcheck
435: 
436: // usage data
437: //$q="SELECT COUNT(fnnode.nodeid),COUNT(fngroup.groupid),COUNT( FROM fnnode,fngroup";
438: $q="SHOW TABLE STATUS LIKE \"fn%\"";
439: $r=$NATS->DB->Query($q);
440: 
441: echo "<b class=\"maintitle\">FreeNATS System Status</b><br><br>";
442: 
443: $tinfo=array();
444: 
445: echo "<b class=\"subtitle\">Table Sizes</b><br><br>";
446: 
447: echo "<table class=\"nicetable\">";
448: echo "<tr><td><b>Table Name</b></td><td><b>Size (Rows)</b></td><td><b>Size (kb)</b></td><td><b>Other Information</b></td></tr>";
449: while ($row=$NATS->DB->Fetch_Array($r))
450: 	{
451: 	echo "<tr><td>".$row['Name']."</td><td>".$row['Rows']."</td>";
452: 	echo "<td>".round($row['Data_length']/1024,0)."</td><td>";
453: 	if (isset($tinfo[$row['Name']])) echo $tinfo[$row['Name']];
454: 	else echo "&nbsp;";
455: 	if ($row['Data_free']>0)
456: 		{
457: 		echo " [".round($row['Data_free']/1024,0)."kb Free - <a href=admin.php?mode=status&action=optimize&table=".$row['Name'].">Optimise</a>]";
458: 		}
459: 	echo "</td></tr>";
460: 	}
461: echo "</table>";
462: $NATS->DB->Free($r);
463: echo "<br><br>";
464: 
465: echo "<b class=\"subtitle\">Test Sessions</b><br><br>";
466: $q="SELECT * FROM fntestrun WHERE finishx=0";
467: $r=$NATS->DB->Query($q);
468: echo "<b>".$NATS->DB->Num_Rows($r)." Open/Running Test Sessions</b><br><br>";
469: if ($NATS->DB->Num_Rows($r)>0)
470: 	{
471: 	echo "<table class=\"nicetable\">";
472: 	echo "<tr><td><b>ID</b></td><td><b>Node</b></td><td><b>Started</b></td><td><b>Notes</b></td></tr>";
473: 	$nowx=time();
474: 	$fifteenx=$nowx-(15*60);
475: 	$hourx=$nowx-(60*60);
476: 	while ($row=$NATS->DB->Fetch_Array($r))
477: 		{
478: 		echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">";
479: 		echo $row['trid']."</a></td>";
480: 		echo "<td><a href=node.php?nodeid=".$row['fnode']."</a></td>";
481: 		echo "<td>".nicedt($row['startx'])." - ".dtago($row['startx'])."</td>";
482: 		echo "<td>";
483: 		if ($row['startx']<$hourx) echo "Error: Over an hour old";
484: 		else if($row['startx']<$fifteenx) echo "Warning: Over fifteen minutes old";
485: 		else echo "&nbsp;";
486: 		echo "</td></tr>";
487: 		}
488: 	echo "</table>";
489: 	}
490: $NATS->DB->Free($r);
491: echo "<br><br>";
492: 
493: 
494: echo "Please note this merely displays FreeNATS software status - not<br>the status of ";
495: echo "the underlying Virtual Machine (if applicable).<br><br> You should monitor disk space and ";
496: echo "performance for the VM via<br>the relevant system (such as the rPath interface).<br><br>";
497: 	
498: }
499: else if ($mode=="variables")
500: {
501: echo "<b class=\"minortitle\">Variables</b> ".hlink("Variable")."<br><br>";
502: $q="SELECT * FROM fnconfig ORDER BY fnc_var ASC";
503: $r=$NATS->DB->Query($q);
504: echo "<table border=0>";
505: while ($row=$NATS->DB->Fetch_Array($r))
506: 	{
507: 	echo "<form action=admin.php method=post>";
508: 	echo "<input type=hidden name=action value=var_save>";
509: 	echo "<input type=hidden name=mode value=variables>";
510: 	echo "<input type=hidden name=orig_var value=\"".$row['fnc_var']."\">";
511: 	echo "<input type=hidden name=orig_val value=\"".$row['fnc_val']."\">";
512: 	echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"".$row['fnc_var']."\"> ";
513: 	echo "</td>";
514: 	echo "<td>=</td>";
515: 	echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"".$row['fnc_val']."\"></td>";
516: 	echo "<td><input type=submit value=\"Save\"> ";
517: 	echo hlink("Var:".$row['fnc_var']);
518: 	echo "</td>";
519: 	echo "</tr>";
520: 	echo "</form>";
521: 	}
522: echo "<form action=admin.php method=post>";
523: echo "<input type=hidden name=action value=var_new>";
524: echo "<input type=hidden name=mode value=variables>";
525: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"\"></td>";
526: echo "<td>=</td>";
527: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"\"></td>";
528: echo "<td><input type=submit value=\"Create\"></td>";
529: echo "</tr>";
530: echo "</form>";
531: echo "</table>";
532: }
533: else // catch-all
534: {
535: echo "<a href=admin.php?mode=users>User Administration</a><br><br>";
536: echo "<a href=log.php>System Event Log</a><br><br>";
537: echo "<a href=admin.php?mode=alertactions>Alert Actions</a><br><br>";
538: echo "<a href=admin.php?mode=variables>System Variables</a><br><br>";
539: echo "<a href=admin.php?mode=testsessions>Test Sessions</a><br><br>";
540: if ($NATS->Cfg->Get("site.enable.adminsql",0)==1)
541: 	echo "<a href=admin.sql.php>SQL Console</a><br><br>";
542: echo "<a href=admin.php?mode=status>System Status Report</a><br><br>";
543: }
544: 
545: if ($mode!="") echo "<a href=admin.php>Back to Main Admin Menu</a><br><br>";
546: ?>
547: 
548: 
549: <?php
550: Screen_Footer();
551: ?>
552: