File: 0.02.36a/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("Action Node");
 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: 		if ($_REQUEST['username']=="admin")
 57: 			{
 58: 			$amsg="Can't delete the admin user";
 59: 			break;
 60: 			}
 61: 		if (!isset($_REQUEST['confirmed']))
 62: 			{
 63: 			$back=urlencode("admin.php?action=delete_user&username=".$_REQUEST['username']."&confirmed=1");
 64: 			$url="confirm.php?action=Delete+User+".$_REQUEST['username']."&back=".$back;
 65: 			header("Location: ".$url);
 66: 			exit();
 67: 			}
 68: 		$q="DELETE FROM fnuser WHERE username=\"".ss($_REQUEST['username'])."\"";
 69: 		$NATS->DB->Query($q);
 70: 		$amsg="User ".$_REQUEST['username']." Deleted";
 71: 		break;
 72: 		
 73: 		case "var_save":
 74: 		if ($_REQUEST['new_var']=="") // delete
 75: 			{
 76: 			$q="DELETE FROM fnconfig WHERE fnc_var=\"".ss($_REQUEST['orig_var'])."\"";
 77: 			}
 78: 		else // update
 79: 			{
 80: 			$q="UPDATE fnconfig SET fnc_var=\"".ss($_REQUEST['new_var'])."\",fnc_val=\"".ss($_REQUEST['new_val'])."\" ";
 81: 			$q.="WHERE fnc_var=\"".ss($_REQUEST['orig_var'])."\"";
 82: 			}
 83: 		$NATS->DB->Query($q);
 84: 		if ($NATS->DB->Affected_Rows()<=0) $amsg="Update/Delete Variable Failed";
 85: 		else $amsg="Updated/Deleted Variable";
 86: 		break;
 87: 		case "var_new":
 88: 		$q="INSERT INTO fnconfig(fnc_var,fnc_val) VALUES(\"".ss($_REQUEST['new_var'])."\",\"".ss($_REQUEST['new_val'])."\")";
 89: 		//echo $q;
 90: 		$NATS->DB->Query($q);
 91: 		if ($NATS->DB->Affected_Rows()<=0) $amsg="Create Variable Failed";
 92: 		else $amsg="Created Variable";
 93: 		break;
 94: 		
 95: 		case "save_aa":
 96: 		$q="UPDATE fnalertaction SET ";
 97: 		$q.="atype=\"".ss($_REQUEST['atype'])."\",";
 98: 		$q.="ctrlimit=".ss($_REQUEST['ctrlimit']).",";
 99: 		$q.="ctrtoday=".ss($_REQUEST['ctrtoday']).",";
100: 		$q.="aname=\"".ss($_REQUEST['aname'])."\",";
101: 		$q.="efrom=\"".ss($_REQUEST['efrom'])."\",";
102: 		$q.="etolist=\"".ss($_REQUEST['etolist'])."\",";
103: 		$q.="esubject=".ss($_REQUEST['esubject']).",";
104: 		$q.="etype=".ss($_REQUEST['etype']);
105: 		if (isset($_REQUEST['awarnings'])) $q.=",awarnings=".ss($_REQUEST['awarnings']);
106: 		else $q.=",awarnings=0";
107: 		if (isset($_REQUEST['adecrease'])) $q.=",adecrease=".ss($_REQUEST['adecrease']);
108: 		else $q.=",adecrease=0";
109: 		$q.=" WHERE aaid=".ss($_REQUEST['aaid']);
110: 		//echo $q;
111: 		$NATS->DB->Query($q);
112: 		if ($NATS->DB->Affected_Rows()<=0) $amsg="Action Update Failed or Nothing Changed";
113: 		else $amsg="Action Updated";
114: 		break;
115: 		
116: 		case "action_test":
117: 		$q="SELECT mdata FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid'])." LIMIT 0,1";
118: 		$r=$NATS->DB->Query($q);
119: 		$row=$NATS->DB->Fetch_Array($r);
120: 		$oldm=$row['mdata'];
121: 		$q="UPDATE fnalertaction SET mdata=\"** ACTION TEST **\" WHERE aaid=".ss($_REQUEST['aaid']);
122: 		$NATS->DB->Query($q);
123: 		$NATS->ActionFlush();
124: 		$q="UPDATE fnalertaction SET mdata=\"".ss($oldm)."\" WHERE aaid=".ss($_REQUEST['aaid']);
125: 		$NATS->DB->Query($q);
126: 		$amsg="Alert Action Tested &amp; Flushed";
127: 		break;
128: 		
129: 		case "action_create":
130: 		$q="INSERT INTO fnalertaction(atype) VALUES(\"\")";
131: 		$NATS->DB->Query($q);
132: 		$amsg="Created New Alert Action";
133: 		break;
134: 		
135: 		case "action_delete":
136: 		if (!isset($_REQUEST['confirmed']))
137: 			{
138: 			$back=urlencode("admin.php?aaid_del=".$_REQUEST['aaid_del']."&action=action_delete&confirmed=1");
139: 			$url="confirm.php?action=Delete+alert+action&back=".$back;
140: 			header("Location: ".$url);
141: 			exit();
142: 			}
143: 		// otherwise confirmed
144: 		$q="DELETE FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid_del']);
145: 		$NATS->DB->Query($q);
146: 		if ($NATS->DB->Affected_Rows()>0) $amsg="Alert Action Deleted";
147: 		else $amsg="Alert Action Delete Failed";
148: 		$q="DELETE FROM fnnalink WHERE aaid=".ss($_REQUEST['aaid_del']);
149: 		$NATS->DB->Query($q);
150: 		break;
151: 		
152: 		}
153: 	}
154: 
155: ob_end_flush();
156: Screen_Header("Administration Interface",1);
157: 
158: if (isset($_REQUEST['message'])) echo "<br><b>".$_REQUEST['message']."</b><br>";
159: if (isset($amsg)) echo "<br><b>".$amsg."</b><br>";
160: 
161: echo "<br>";
162: if (isset($_REQUEST['updatecheck']))
163: 	{
164: 	// check for updates
165: 	$dq="?CheckVersion=".$NATS->Version;
166: 	$dl="http://www.purplepixie.org/freenats/download.php";
167: 	$du=$dl.$dq;
168: 	$cp=@fopen($du,"r");
169: 	if ($cp>0)
170: 		{
171: 		$cs=@fgets($cp,128);
172: 		@fclose($cp);
173: 		if ($cs=="0") echo "System Up to Date<br>";
174: 		else echo "Update Available: <a href=http://www.purplepixie.org/freenats>".$cs."</a><br>";
175: 		}
176: 	else echo "Error Checking for Updates<br>";
177: 	}
178: else
179: 	{
180: 	echo "<a href=admin.php?updatecheck=1>Check for FreeNATS Updates</a>";
181: 	}
182: echo "<br>";
183: 
184: ?>
185: <br>
186: <b class="minortitle">Users</b><br><br>
187: 
188: <?php
189: function tul($l)
190: {
191: if ($l>9) return "Administrator";
192: if ($l>4) return "Power User";
193: if ($l>0) return "Normal User";
194: return "Disabled";
195: }
196: 
197: $q="SELECT username,realname,userlevel FROM fnuser";
198: $r=$NATS->DB->Query($q);
199: echo "<table border=0>";
200: echo "<tr><td><b>Username&nbsp;</b></td>";
201: echo "<td><b>Real Name</b></td><td><b>User Level</b></td><td><b>Password</b></td><td><b>Options</b></td></tr>";
202: while ($row=$NATS->DB->Fetch_Array($r))
203: 	{
204: 	echo "<form action=admin.php method=post>";
205: 	echo "<input type=hidden name=action value=save_user>";
206: 	echo "<input type=hidden name=username value=\"".$row['username']."\">";
207: 	echo "<tr><td>".$row['username']."</td>";
208: 	echo "<td><input type=text name=realname value=\"".$row['realname']."\" size=20 maxlength=120></td>";
209: 	echo "<td><select name=userlevel>";
210: 	echo "<option value=".$row['userlevel'].">".tul($row['userlevel'])."</option>";
211: 	echo "<option value=0>".tul(0)."</option>";
212: 	echo "<option value=1>".tul(1)."</option>";
213: 	echo "<option value=5>".tul(5)."</option>";
214: 	echo "<option value=10>".tul(10)."</option>";
215: 	echo "</select>";
216: 	echo "</td>";
217: 	echo "<td><input type=password name=pword value=\"_NOTTHIS_\" size=10 maxlength=128></td>";
218: 	echo "<td><input type=submit value=\"Save\"> <a href=admin.php?action=delete_user&username=".$row['username'].">Delete</a></td>";
219: 	echo "</tr>";
220: 	echo "</form>";
221: 	}
222: echo "<form action=admin.php method=post>";
223: echo "<input type=hidden name=action value=create_user>";
224: echo "<tr><td><input type=text name=username size=20 maxlength=60></td>";
225: echo "<td><input type=text name=realname size=20 maxlength=120></td>";
226: echo "<td><select name=userlevel>";
227: echo "<option value=1>".tul(1)."</option>";
228: echo "<option value=0>".tul(0)."</option>";
229: echo "<option value=5>".tul(5)."</option>";
230: echo "<option value=10>".tul(10)."</option>";
231: echo "</select></td>";
232: echo "<td><input type=password name=pword size=10 maxlength=60></td>";
233: echo "<td><input type=submit value=\"Create User\"></td>";
234: echo "</tr></form>";
235: echo "</table><br>";
236: echo "<br>";
237: $NATS->DB->Free($r);
238: 
239: echo "<b class=\"minortitle\">Test Sessions</b><br><br>";
240: $q="SELECT * FROM fntestrun ORDER BY trid DESC";
241: if (!isset($_REQUEST['ShowAllSessions'])) $q.=" LIMIT 0,5";
242: $r=$NATS->DB->Query($q);
243: echo "<table border=0>";
244: while ($row=$NATS->DB->Fetch_Array($r))
245: 	{
246: 	echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>";
247: 	echo "<td>".nicedt($row['startx'])." - ";
248: 	if ($row['finishx']>0) echo nicedt($row['finishx']);
249: 	else echo "Still Running";
250: 	echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">System Logs</a>)";
251: 	echo "</td></tr>";
252: 	}
253: echo "</table>";
254: $NATS->DB->Free($r);
255: echo "<br>";
256: if (!isset($_REQUEST['ShowAllSessions'])) echo "<a href=admin.php?ShowAllSessions=1>Show All Testing Sessions</a><br><br>";
257: echo "<br>";
258: 
259: echo "<b class=\"minortitle\">Alert Actions</b><br><br>";
260: 
261: function aat_etype($type)
262: {
263: switch ($type)
264: 	{
265: 	case 0: return "Short";
266: 	case 1: return "Long";
267: 	default: return "Unknown";
268: 	}
269: }
270: 
271: function aat_esub($type)
272: {
273: switch ($type)
274: 	{
275: 	case 0: return "Blank";
276: 	case 1: return "Short";
277: 	case 2: return "Long";
278: 	default: return "Unknown";
279: 	}
280: }
281: 
282: function aat_atype($type)
283: {
284: switch($type)
285: 	{
286: 	case "": case "Disabled": return "Disabled";
287: 	case "email": return "EMail";
288: 	default: return "Unknown";
289: 	}
290: }
291: 
292: 
293: 
294: if (isset($_REQUEST['aaid']))
295: 	{ // view/edit aaid
296: 	$q="SELECT * FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid']);
297: 	$r=$NATS->DB->Query($q);
298: 	if (!$row=$NATS->DB->Fetch_Array($r))
299: 		{
300: 		echo "<b>Error Fetching AAID</b><br><br>";
301: 		Screen_Footer();
302: 		exit();
303: 		}
304: 	echo "<table border=0>";
305: 	echo "<form action=admin.php method=post>";
306: 	echo "<input type=hidden name=action value=save_aa>";
307: 	echo "<input type=hidden name=aaid value=".$_REQUEST['aaid'].">";
308: 	echo "<tr><td>ID : </td><td>action/".$_REQUEST['aaid']."</td></tr>";
309: 	
310: 	echo "<tr><td>Action Name : </td>";
311: 	echo "<td>";
312: 	echo "<input type=text name=aname size=30 maxlength=120 value=\"".$row['aname']."\">";
313: 	echo "</td></tr>";
314: 	
315: 	echo "<tr><td>Type : </td><td>";
316: 	echo "<select name=atype>";
317: 	echo "<option value=".$row['atype'].">".aat_atype($row['atype'])."</option>";
318: 	echo "<option value=Disabled>Disabled</option>";
319: 	echo "<option value=email>EMail</option>";
320: 	echo "</select>";
321: 	echo "</td></tr>";
322: 	
323: 	echo "<tr><td>Warnings : </td>";
324: 	if ($row['awarnings']==1) $s=" checked";
325: 	else $s="";
326: 	echo "<td><input type=checkbox name=awarnings value=1".$s."> ".hlink("AAction:Warnings")."</td></tr>";
327: 	
328: 	echo "<tr><td>Decreases : </td>";
329: 	if ($row['adecrease']==1) $s=" checked";
330: 	else $s="";
331: 	echo "<td><input type=checkbox name=adecrease value=1".$s."> ".hlink("AAction:Decreases")."</td></tr>";
332: 	
333: 	echo "<tr><td>Action Limit : </td>";
334: 	echo "<td>";
335: 	echo "<input type=text name=ctrlimit size=3 maxlength=6 value=\"".$row['ctrlimit']."\"> ";
336: 	echo hlink("AAction:Limit");
337: 	echo "</td></tr>";
338: 	
339: 	echo "<tr><td>Action Counter : </td>";
340: 	echo "<td>";
341: 	echo "<input type=text name=ctrtoday size=3 maxlength=6 value=\"".$row['ctrtoday']."\"> ";
342: 	echo hlink("AAction:Counter");
343: 	echo " (for ";
344: 	if ($row['ctrdate']=="") echo "<i>unknown</i>";
345: 	else echo substr($row['ctrdate'],6,2)."/".substr($row['ctrdate'],4,2)."/".substr($row['ctrdate'],0,4);
346: 	echo ")";
347: 	echo "</td></tr>";
348: 	
349: 	echo "<tr><td>Email From : </td>";
350: 	echo "<td>";
351: 	echo "<input type=text name=efrom size=30 maxlength=120 value=\"".$row['efrom']."\">";
352: 	echo "</td></tr>";
353: 	
354: 	echo "<tr><td>Email Subject : </td><td>";
355: 	echo "<select name=esubject>";
356: 	echo "<option value=".$row['esubject'].">".aat_esub($row['esubject'])."</option>";
357: 	echo "<option value=0>Blank</option>";
358: 	echo "<option value=1>Short</option>";
359: 	echo "<option value=2>Long</option>";
360: 	echo "</select>";
361: 	echo "</td></tr>";
362: 	
363: 	echo "<tr><td>Email Type : </td><td>";
364: 	echo "<select name=etype>";
365: 	echo "<option value=".$row['etype'].">".aat_etype($row['etype'])."</option>";
366: 	echo "<option value=0>Short</option>";
367: 	echo "<option value=1>Long</option>";
368: 	echo "</select>";
369: 	echo "</td></tr>";
370: 	
371: 	echo "<tr><td valign=top>Email To : </td><td>";
372: 	echo "<textarea name=etolist cols=40 rows=6>".$row['etolist']."</textarea>";
373: 	echo "</td></tr>";
374: 	
375: 	echo "<tr><td colspan=2><input type=submit value=\"Update Action\"> &nbsp; <a href=admin.php>Cancel Update</a> | ";
376: 	echo "<a href=admin.php?aaid=".$_REQUEST['aaid']."&action=action_test>Test Action</a> | ";
377: 	echo "<a href=admin.php?aaid_del=".$_REQUEST['aaid']."&action=action_delete>Delete Action</a>";
378: 	echo "</td></tr>";
379: 	
380: 	echo "</form></table><br><br>";
381: 	$NATS->DB->Free($r);
382: 	}
383: 
384: $q="SELECT aaid,atype,aname FROM fnalertaction";
385: $r=$NATS->DB->Query($q);
386: while ($row=$NATS->DB->Fetch_Array($r))
387: 	{
388: 	echo "<a href=admin.php?aaid=".$row['aaid'].">action/".$row['aaid']." : ".$row['aname']."</a> - ";
389: 	echo aat_atype($row['atype']);
390: 	echo "<br>";
391: 	}
392: 
393: echo "<br><a href=admin.php?action=action_create><b>Create New Alert Action</b></a><br>";
394: echo "<br><br>";
395: 
396: echo "<b class=\"minortitle\">System Logs</b><br><br>";
397: echo "<a href=log.php>System Event Log</a><br><br>";
398: 
399: echo "<br><br>";
400: 
401: echo "<b class=\"minortitle\">Variables</b> ".hlink("Variable")."<br><br>";
402: $q="SELECT * FROM fnconfig ORDER BY fnc_var ASC";
403: $r=$NATS->DB->Query($q);
404: echo "<table border=0>";
405: while ($row=$NATS->DB->Fetch_Array($r))
406: 	{
407: 	echo "<form action=admin.php method=post>";
408: 	echo "<input type=hidden name=action value=var_save>";
409: 	echo "<input type=hidden name=orig_var value=\"".$row['fnc_var']."\">";
410: 	echo "<input type=hidden name=orig_val value=\"".$row['fnc_val']."\">";
411: 	echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"".$row['fnc_var']."\"> ";
412: 	echo "</td>";
413: 	echo "<td>=</td>";
414: 	echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"".$row['fnc_val']."\"></td>";
415: 	echo "<td><input type=submit value=\"Save\"> ";
416: 	echo hlink("Var:".$row['fnc_var']);
417: 	echo "</td>";
418: 	echo "</tr>";
419: 	echo "</form>";
420: 	}
421: echo "<form action=admin.php method=post>";
422: echo "<input type=hidden name=action value=var_new>";
423: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"\"></td>";
424: echo "<td>=</td>";
425: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"\"></td>";
426: echo "<td><input type=submit value=\"Create\"></td>";
427: echo "</tr>";
428: echo "</form>";
429: echo "</table>";
430: 
431: ?>
432: 
433: 
434: <?php
435: Screen_Footer();
436: ?>
437: