Viewing File server/web/admin.php of 1.17.1a
|
1: <?php 2: /* ------------------------------------------------------------- 3: This file is part of FreeNATS 4: 5: FreeNATS is (C) Copyright 2008-2011 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($NATS->Lang->Item("admin.interface")); 32: 33: if (isset($_REQUEST['action'])) 34: { 35: switch($_REQUEST['action']) 36: { 37: case "save_user": 38: $glock = isset($_REQUEST['grouplock']) && $_REQUEST['grouplock']==1 ? 1 : 0; 39: $q="UPDATE fnuser SET realname=\"".ss($_REQUEST['realname'])."\",userlevel=".ss($_REQUEST['userlevel']); 40: $q.=",grouplock=".ss($glock); 41: if ((isset($_REQUEST['pword']))&&($_REQUEST['pword']!="_NOTTHIS_")) $q.=",password=MD5(\"".ss($_REQUEST['pword'])."\")"; 42: $q.=" WHERE username=\"".ss($_REQUEST['username'])."\""; 43: $NATS->DB->Query($q); 44: 45: $update=false; 46: if ($NATS->DB->Affected_Rows()>0) $update=true; 47: 48: // Grouplock! 49: $q="DELETE FROM fngrouplock WHERE username=\"".ss($_REQUEST['username'])."\""; 50: $NATS->DB->Query($q); 51: 52: 53: 54: if (isset($_REQUEST['gl'])) 55: { 56: foreach($_REQUEST['gl'] as $id => $state) 57: { 58: if ($state == 1) 59: { 60: $iq="INSERT INTO fngrouplock(username,groupid) VALUES(\"".ss($_REQUEST['username'])."\",".ss($id).")"; 61: //echo $iq; 62: $NATS->DB->Query($iq); 63: } 64: } 65: } 66: 67: if (!$update) $amsg=$NATS->Lang->Item("save.user.fail"); 68: else $amsg=$NATS->Lang->Item("save.user.ok"); 69: break; 70: 71: case "create_user": 72: $q="INSERT INTO fnuser(username,password,realname,userlevel) VALUES(\"".ss($_REQUEST['username'])."\","; 73: $q.="MD5(\"".ss($_REQUEST['pword'])."\"),\"".ss($_REQUEST['realname'])."\",".ss($_REQUEST['userlevel']).")"; 74: $NATS->DB->Query($q); 75: //echo $q; 76: if ($NATS->DB->Affected_Rows()<=0) $amsg=$NATS->Lang->Item("create.user.fail"); 77: else $amsg=$NATS->Lang->Item("create.user.ok"); 78: break; 79: 80: case "delete_user": 81: /* - disabled for 0.02.44 to allow duplicate deletion 82: if ($_REQUEST['username']=="admin") 83: { 84: $amsg="Can't delete the admin user"; 85: break; 86: } 87: */ 88: if (!isset($_REQUEST['confirmed'])) 89: { 90: $back=urlencode("admin.php?action=delete_user&mode=users&username=".$_REQUEST['username']."&confirmed=1"); 91: $url="confirm.php?action=".urlencode($NATS->Lang->Item("delete.user"))."+".$_REQUEST['username']."&back=".$back; 92: header("Location: ".$url); 93: exit(); 94: } 95: $q="DELETE FROM fnuser WHERE username=\"".ss($_REQUEST['username'])."\""; 96: $NATS->DB->Query($q); 97: $amsg=$_REQUEST['username'].$NATS->Lang->Item("user.deleted"); 98: break; 99: 100: case "var_save": 101: if ($_REQUEST['new_var']=="") // delete 102: { 103: $q="DELETE FROM fnconfig WHERE fnc_var=\"".ss($_REQUEST['orig_var'])."\""; 104: } 105: else // update 106: { 107: $q="UPDATE fnconfig SET fnc_var=\"".ss($_REQUEST['new_var'])."\",fnc_val=\"".ss($_REQUEST['new_val'])."\" "; 108: $q.="WHERE fnc_var=\"".ss($_REQUEST['orig_var'])."\""; 109: } 110: $NATS->DB->Query($q); 111: if ($NATS->DB->Affected_Rows()<=0) $amsg=$NATS->Lang->Item("save.var.fail"); 112: else $amsg=$NATS->Lang->Item("save.var.ok"); 113: break; 114: case "var_new": 115: $q="INSERT INTO fnconfig(fnc_var,fnc_val) VALUES(\"".ss($_REQUEST['new_var'])."\",\"".ss($_REQUEST['new_val'])."\")"; 116: //echo $q; 117: $NATS->DB->Query($q); 118: if ($NATS->DB->Affected_Rows()<=0) $amsg=$NATS->Lang->Item("new.var.fail"); 119: else $amsg=$NATS->Lang->Item("new.var.ok"); 120: break; 121: 122: case "save_aa": 123: $q="UPDATE fnalertaction SET "; 124: $q.="atype=\"".ss($_REQUEST['atype'])."\","; 125: $q.="ctrlimit=".ss($_REQUEST['ctrlimit']).","; 126: $q.="ctrtoday=".ss($_REQUEST['ctrtoday']).","; 127: $q.="aname=\"".ss($_REQUEST['aname'])."\","; 128: $q.="scheduleid=".ss($_REQUEST['scheduleid']).","; 129: if (isset($_REQUEST['efrom'])) $q.="efrom=\"".ss($_REQUEST['efrom'])."\","; 130: $q.="etolist=\"".ss($_REQUEST['etolist'])."\","; 131: if (isset($_REQUEST['esubject'])) $q.="esubject=".ss($_REQUEST['esubject']).","; 132: $q.="etype=".ss($_REQUEST['etype']); 133: if (isset($_REQUEST['awarnings'])) $q.=",awarnings=".ss($_REQUEST['awarnings']); 134: else $q.=",awarnings=0"; 135: if (isset($_REQUEST['adecrease'])) $q.=",adecrease=".ss($_REQUEST['adecrease']); 136: else $q.=",adecrease=0"; 137: $q.=" WHERE aaid=".ss($_REQUEST['aaid']); 138: //echo $q; 139: $NATS->DB->Query($q); 140: if ($NATS->DB->Affected_Rows()<=0) $NATS->Lang->Item("changes.fail"); 141: else $amsg=$NATS->Lang->Item("changes.ok"); 142: break; 143: 144: case "action_test": 145: $q="SELECT mdata FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid'])." LIMIT 0,1"; 146: $r=$NATS->DB->Query($q); 147: $row=$NATS->DB->Fetch_Array($r); 148: $oldm=$row['mdata']; 149: $q="UPDATE fnalertaction SET mdata=\"** ACTION TEST **\" WHERE aaid=".ss($_REQUEST['aaid']); 150: $NATS->DB->Query($q); 151: $NATS->ActionFlush(); 152: $q="UPDATE fnalertaction SET mdata=\"".ss($oldm)."\" WHERE aaid=".ss($_REQUEST['aaid']); 153: $NATS->DB->Query($q); 154: $amsg=$NATS->Lang->Item("aa.testflush"); 155: break; 156: 157: case "action_create": 158: $q="INSERT INTO fnalertaction(atype) VALUES(\"\")"; 159: $NATS->DB->Query($q); 160: $amsg=$NATS->Lang->Item("changes.ok"); 161: $_REQUEST['aaid']=$NATS->DB->Insert_Id(); 162: break; 163: 164: case "action_delete": 165: if (!isset($_REQUEST['confirmed'])) 166: { 167: $back=urlencode("admin.php?mode=alertactions&aaid_del=".$_REQUEST['aaid_del']."&action=action_delete&confirmed=1"); 168: $url="confirm.php?action=".urlencode($NATS->Lang->Item("aa.delete"))."&back=".$back; 169: header("Location: ".$url); 170: exit(); 171: } 172: // otherwise confirmed 173: $q="DELETE FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid_del']); 174: $NATS->DB->Query($q); 175: if ($NATS->DB->Affected_Rows()>0) $amsg=$NATS->Lang->Item("changes.ok"); 176: else $amsg=$NATS->Lang->Item("changes.fail"); 177: $q="DELETE FROM fnnalink WHERE aaid=".ss($_REQUEST['aaid_del']); 178: $NATS->DB->Query($q); 179: break; 180: 181: case "optimize": 182: $q="OPTIMIZE TABLE ".ss($_REQUEST['table']); 183: $NATS->DB->Query($q); 184: $amsg=$NATS->Lang->Item("optimised.ok")." ".$_REQUEST['table']; 185: break; 186: 187: } 188: } 189: 190: ob_end_flush(); 191: Screen_Header($NATS->Lang->Item("admin.interface"),1,1,"","main","admin"); 192: 193: if (isset($_REQUEST['mode'])) $mode=$_REQUEST['mode']; 194: else $mode=""; 195: 196: if (isset($_REQUEST['message'])) echo "<br><b>".$_REQUEST['message']."</b><br>"; 197: if (isset($amsg)) echo "<br><b>".$amsg."</b><br>"; 198: 199: echo "<br>"; 200: if (isset($_REQUEST['updatecheck'])) 201: { 202: // check for updates 203: $dq="?CheckVersion=".$NATS->Version."&JSMode=1"; 204: $dl="http://www.purplepixie.org/freenats/download.php"; 205: $du=$dl.$dq; 206: /* old method 207: $cp=@fopen($du,"r"); 208: if ($cp>0) 209: { 210: $cs=@fgets($cp,128); 211: @fclose($cp); 212: if ($cs=="0") echo "System Up to Date<br>"; 213: else echo "Update Available: <a href=http://www.purplepixie.org/freenats>".$cs."</a><br>"; 214: } 215: else echo "Error Checking for Updates<br>"; 216: */ 217: echo $NATS->Lang->Item("checking.updates").": "; 218: echo "<script type=\"text/javascript\" src=\"".$du."\"></script>\n"; 219: echo "<br><br>"; 220: } 221: else if ($mode=="") 222: { 223: echo "<a href=admin.php?updatecheck=1><b>".$NATS->Lang->Item("check.updates")."</b></a><br><br>"; 224: } 225: 226: function tul($l) 227: { 228: global $NATS; 229: if ($l>9) return $NATS->Lang->Item("ul.admin"); 230: if ($l>4) return $NATS->Lang->Item("ul.power"); 231: if ($l>0) return $NATS->Lang->Item("ul.normal"); 232: return $NATS->Lang->Item("ul.disabled"); 233: } 234: 235: function aat_etype($type) 236: { 237: global $NATS; 238: switch ($type) 239: { 240: case 0: return $NATS->Lang->Item("aae.short"); 241: case 1: return $NATS->Lang->Item("aae.long"); 242: default: return $NATS->Lang->Item("Unknown"); 243: } 244: } 245: 246: function aat_esub($type) 247: { 248: global $NATS; 249: switch ($type) 250: { 251: case 0: return $NATS->Lang->Item("aae.sub.blank"); 252: case 1: return $NATS->Lang->Item("aae.sub.short"); 253: case 2: return $NATS->Lang->Item("aae.sub.long"); 254: default: return $NATS->Lang->Item("unknown"); 255: } 256: } 257: 258: function aat_atype($type) 259: { 260: global $NATS; 261: switch($type) 262: { 263: case "": case "Disabled": return $NATS->Lang->Item("aatype.disabled"); 264: case "email": return $NATS->Lang->Item("aatype.email"); 265: case "url": return $NATS->Lang->Item("aatype.url"); 266: case "mqueue": return $NATS->Lang->Item("aatype.mqueue"); 267: default: return $NATS->Lang->Item("unknown")." (".$type.")"; 268: } 269: } 270: 271: if ($mode=="users") 272: { 273: echo "<b class=\"subtitle\">".$NATS->Lang->Item("user.admin")."</b><br><br>"; 274: 275: 276: 277: 278: $q="SELECT username,realname,userlevel,grouplock FROM fnuser"; 279: $r=$NATS->DB->Query($q); 280: echo "<table border=0>"; 281: echo "<tr><td><b>".$NATS->Lang->Item("username")." </b></td>"; 282: echo "<td><b>".$NATS->Lang->Item("real.name")."</b></td><td><b>".$NATS->Lang->Item("user.level")."</b></td>"; 283: echo "<td><b>".$NATS->Lang->Item("password")."</b></td><td><b>".$NATS->Lang->Item("options")."</b></td></tr>"; 284: while ($row=$NATS->DB->Fetch_Array($r)) 285: { 286: echo "<form action=admin.php method=post>"; 287: echo "<input type=hidden name=action value=save_user>"; 288: echo "<input type=hidden name=mode value=users>"; 289: echo "<input type=hidden name=username value=\"".$row['username']."\">"; 290: echo "<tr><td>".$row['username']."</td>"; 291: echo "<td><input type=text name=realname value=\"".$row['realname']."\" size=20 maxlength=120></td>"; 292: echo "<td><select name=userlevel>"; 293: echo "<option value=".$row['userlevel'].">".tul($row['userlevel'])."</option>"; 294: echo "<option value=0>".tul(0)."</option>"; 295: echo "<option value=1>".tul(1)."</option>"; 296: echo "<option value=5>".tul(5)."</option>"; 297: echo "<option value=10>".tul(10)."</option>"; 298: echo "</select>"; 299: echo "</td>"; 300: echo "<td><input type=password name=pword value=\"_NOTTHIS_\" size=10 maxlength=128></td>"; 301: echo "<td><a href=\"javascript:displayToggle('extended-".$row['username']."');\">".$NATS->Lang->Item("extended.user")."</a></td>"; 302: echo "<td><input type=submit value=\"".$NATS->Lang->Item("save")."\"> <a href=admin.php?action=delete_user&username=".$row['username'].">".$NATS->Lang->Item("delete")."</a></td>"; 303: echo "</tr>"; 304: 305: echo "<tr>"; 306: echo "<td colspan=\"6\">"; 307: 308: echo "<div class=\"userExtended\" id=\"extended-".$row['username']."\">"; 309: 310: $check = $row['grouplock'] == 1 ? " checked" : ""; 311: echo "<input type=\"checkbox\" name=\"grouplock\" value=\"1\"".$check." /> "; 312: echo $NATS->Lang->Item("user.grouplock"); 313: echo " (<i>".$NATS->Lang->Item("user.grouplock.warning")."</i>)<br /><br />"; 314: 315: $gq = "SELECT * FROM fngroup"; 316: $gr=$NATS->DB->Query($gq); 317: $groups=array(); 318: while ($grow=$NATS->DB->Fetch_Array($gr)) 319: $groups[$grow['groupid']]=$grow['groupname']; 320: $NATS->DB->Free($gr); 321: 322: $mygq = "SELECT * FROM fngrouplock WHERE username=\"".ss($row['username'])."\""; 323: $mygr = $NATS->DB->Query($mygq); 324: $mygroups=array(); 325: while ($myrow = $NATS->DB->Fetch_Array($mygr)) 326: $mygroups[]=$myrow['groupid']; 327: $NATS->DB->Free($mygr); 328: 329: foreach($groups as $id => $name) 330: { 331: $check = in_array($id,$mygroups) ? " checked" : ""; 332: echo "<input type=\"checkbox\" name=\"gl[".$id."]\" value=\"1\"".$check." /> ".$name."<br />"; 333: } 334: 335: echo "<br /><br /></div>"; 336: 337: echo "</td>"; 338: echo "</tr>"; 339: 340: echo "</form>"; 341: } 342: echo "<form action=admin.php method=post>"; 343: echo "<input type=hidden name=action value=create_user>"; 344: echo "<input type=hidden name=mode value=users>"; 345: echo "<tr><td><input type=text name=username size=20 maxlength=60></td>"; 346: echo "<td><input type=text name=realname size=20 maxlength=120></td>"; 347: echo "<td><select name=userlevel>"; 348: echo "<option value=1>".tul(1)."</option>"; 349: echo "<option value=0>".tul(0)."</option>"; 350: echo "<option value=5>".tul(5)."</option>"; 351: echo "<option value=10>".tul(10)."</option>"; 352: echo "</select></td>"; 353: echo "<td><input type=password name=pword size=10 maxlength=60></td>"; 354: echo "<td><input type=submit value=\"".$NATS->Lang->Item("create.user")."\"></td>"; 355: echo "</tr></form>"; 356: echo "</table><br>"; 357: echo "<br>"; 358: $NATS->DB->Free($r); 359: } 360: else if ($mode=="nodetestsessions") 361: { 362: echo "<b class=\"subtitle\">".$NATS->Lang->Item("sessions.for")." ".$_REQUEST['nodeid']."</b><br><br>"; 363: echo "<b>".$NATS->Lang->Item("sessions.running.for")." ".$_REQUEST['nodeid']."</b><br>"; 364: $q="SELECT * FROM fntestrun WHERE fnode=\"".ss($_REQUEST['nodeid'])."\" AND finishx=0 ORDER BY trid DESC"; 365: $r=$NATS->DB->Query($q); 366: if ($NATS->DB->Num_Rows($r)==0) echo "<i>".$NATS->Lang->Item("sessions.not.running")."</i><br>"; 367: echo "<table border=0>"; 368: while ($row=$NATS->DB->Fetch_Array($r)) 369: { 370: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 371: echo "<td>".nicedt($row['startx'])." - "; 372: if ($row['finishx']>0) echo nicedt($row['finishx']); 373: else echo $NATS->Lang->Item("sessions.stillrunning"); 374: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">".$NATS->Lang->Item("event.log")."</a>)"; 375: echo "</td></tr>"; 376: } 377: echo "</table>"; 378: $NATS->DB->Free($r); 379: echo "<br>"; 380: echo "<br>"; 381: 382: echo "<b>100 ".$NATS->Lang->Item("sessions.previous")." ".$_REQUEST['nodeid']."</b><br>"; 383: $q="SELECT * FROM fntestrun WHERE fnode=\"".ss($_REQUEST['nodeid'])."\" ORDER BY trid DESC LIMIT 0,100"; 384: $r=$NATS->DB->Query($q); 385: if ($NATS->DB->Num_Rows($r)==0) echo "<i>".$NATS->Lang->Item("sessions.previous.none")."</i><br>"; 386: echo "<table border=0>"; 387: while ($row=$NATS->DB->Fetch_Array($r)) 388: { 389: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 390: echo "<td>".nicedt($row['startx'])." - "; 391: if ($row['finishx']>0) echo nicedt($row['finishx']); 392: else echo $NATS->Lang->Item("sessions.stillrunning"); 393: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">".$NATS->Lang->Item("event.log")."</a>)"; 394: echo "</td></tr>"; 395: } 396: echo "</table>"; 397: $NATS->DB->Free($r); 398: echo "<br>"; 399: echo "<br>"; 400: 401: } 402: else if ($mode=="testsessions") 403: { 404: echo "<b class=\"subtitle\">".$NATS->Lang->Item("sessions.running")."</b><br><br>"; 405: $q="SELECT * FROM fntestrun WHERE finishx=0 ORDER BY trid DESC"; 406: $r=$NATS->DB->Query($q); 407: if ($NATS->DB->Num_Rows($r)==0) echo "<i>".$NATS->Lang->Item("sessions.not.running")."</i><br>"; 408: echo "<table border=0>"; 409: while ($row=$NATS->DB->Fetch_Array($r)) 410: { 411: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 412: echo "<td>".nicedt($row['startx'])." - "; 413: if ($row['finishx']>0) echo nicedt($row['finishx']); 414: else echo $NATS->Lang->Item("sessions.stillrunning"); 415: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">".$NATS->Lang->Item("event.log")."</a>)"; 416: echo "</td></tr>"; 417: } 418: echo "</table>"; 419: $NATS->DB->Free($r); 420: echo "<br>"; 421: echo "<form action=admin.php method=post>"; 422: echo "<input type=hidden name=mode value=nodetestsessions>"; 423: echo "<b>100 ".$NATS->Lang->Item("sessions.previous")." </b>"; 424: $q="SELECT nodeid,nodename FROM fnnode ORDER BY weight ASC"; 425: $r=$NATS->DB->Query($q); 426: echo "<select name=nodeid>"; 427: while ($row=$NATS->DB->Fetch_Array($r)) 428: { 429: echo "<option value=".$row['nodeid'].">".$row['nodename']." (".$row['nodeid'].")</option>"; 430: } 431: echo "</select> <input type=submit value=Go></form><br>"; 432: } 433: else if ($mode=="alertactions") 434: { 435: echo "<b class=\"subtitle\">".$NATS->Lang->Item("alert.actions")."</b><br><br>"; 436: 437: if (isset($_REQUEST['aaid'])) 438: { // view/edit aaid 439: $q="SELECT * FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid']); 440: $r=$NATS->DB->Query($q); 441: if (!$row=$NATS->DB->Fetch_Array($r)) 442: { 443: echo "<b>Error Fetching AAID</b><br><br>"; 444: Screen_Footer(); 445: exit(); 446: } 447: echo "<table border=0>"; 448: echo "<form action=admin.php method=post>"; 449: echo "<input type=hidden name=action value=save_aa>"; 450: echo "<input type=hidden name=mode value=alertactions>"; 451: echo "<input type=hidden name=aaid value=".$_REQUEST['aaid'].">"; 452: echo "<tr><td>".$NATS->Lang->Item("id")." : </td><td>action/".$_REQUEST['aaid']."</td></tr>"; 453: 454: echo "<tr><td>".$NATS->Lang->Item("aa.name")." : </td>"; 455: echo "<td>"; 456: echo "<input type=text name=aname size=30 maxlength=120 value=\"".$row['aname']."\">"; 457: echo "</td></tr>"; 458: 459: echo "<tr><td>".$NATS->Lang->Item("aa.type")." : </td><td>"; 460: echo "<select name=atype>"; 461: echo "<option value=".$row['atype'].">".aat_atype($row['atype'])."</option>"; 462: echo "<option value=Disabled>Disabled</option>"; 463: echo "<option value=email>EMail</option>"; 464: echo "<option value=url>URL</option>"; 465: echo "<option value=mqueue>Message Queue</option>"; 466: echo "</select>"; 467: echo "</td></tr>"; 468: 469: echo "<tr><td>".$NATS->Lang->Item("schedule")." : </td><td>"; 470: echo "<select name=scheduleid>"; 471: echo "<option value=0>At All Times</option>"; 472: $sq="SELECT scheduleid,schedulename FROM fnschedule"; 473: $sr=$NATS->DB->Query($sq); 474: while ($sched=$NATS->DB->Fetch_Array($sr)) 475: { 476: if ($sched['scheduleid']==$row['scheduleid']) $s.=" selected"; 477: else $s=""; 478: echo "<option value=".$sched['scheduleid'].$s.">".$sched['schedulename']."</option>"; 479: } 480: echo "</select>"; 481: $NATS->DB->Free($sr); 482: echo " ".hlink("AlertSchedule"); 483: echo "</td></tr>"; 484: 485: 486: echo "<tr><td>".$NATS->Lang->Item("warnings")." : </td>"; 487: if ($row['awarnings']==1) $s=" checked"; 488: else $s=""; 489: echo "<td><input type=checkbox name=awarnings value=1".$s."> ".hlink("AAction:Warnings")."</td></tr>"; 490: 491: echo "<tr><td>".$NATS->Lang->Item("decreases")." : </td>"; 492: if ($row['adecrease']==1) $s=" checked"; 493: else $s=""; 494: echo "<td><input type=checkbox name=adecrease value=1".$s."> ".hlink("AAction:Decreases")."</td></tr>"; 495: 496: echo "<tr><td>".$NATS->Lang->Item("aa.limit")." : </td>"; 497: echo "<td>"; 498: echo "<input type=text name=ctrlimit size=3 maxlength=6 value=\"".$row['ctrlimit']."\"> "; 499: echo hlink("AAction:Limit"); 500: echo "</td></tr>"; 501: 502: echo "<tr><td>".$NATS->Lang->Item("aa.counter")." : </td>"; 503: echo "<td>"; 504: echo "<input type=text name=ctrtoday size=3 maxlength=6 value=\"".$row['ctrtoday']."\"> "; 505: echo hlink("AAction:Counter"); 506: echo " (for "; 507: if ($row['ctrdate']=="") echo "<i>unknown</i>"; 508: else echo substr($row['ctrdate'],6,2)."/".substr($row['ctrdate'],4,2)."/".substr($row['ctrdate'],0,4); 509: echo ")"; 510: echo "</td></tr>"; 511: 512: if ($row['atype']!="url") 513: { 514: 515: echo "<tr><td>".$NATS->Lang->Item("aa.efrom")." : </td>"; 516: echo "<td>"; 517: echo "<input type=text name=efrom size=30 maxlength=120 value=\"".$row['efrom']."\">"; 518: echo "</td></tr>"; 519: 520: echo "<tr><td>".$NATS->Lang->Item("aa.esubj")." : </td><td>"; 521: echo "<select name=esubject>"; 522: echo "<option value=".$row['esubject'].">".aat_esub($row['esubject'])."</option>"; 523: echo "<option value=0>Blank</option>"; 524: echo "<option value=1>Short</option>"; 525: echo "<option value=2>Long</option>"; 526: echo "</select>"; 527: echo "</td></tr>"; 528: 529: } 530: 531: echo "<tr><td>".$NATS->Lang->Item("aa.mtype")." : </td><td>"; 532: echo "<select name=etype>"; 533: echo "<option value=".$row['etype'].">".aat_etype($row['etype'])."</option>"; 534: echo "<option value=0>Short</option>"; 535: echo "<option value=1>Long</option>"; 536: echo "</select>"; 537: echo "</td></tr>"; 538: 539: echo "<tr><td valign=top>".$NATS->Lang->Item("aa.eto")." : </td><td>"; 540: echo "<textarea name=etolist cols=40 rows=6>".$row['etolist']."</textarea>"; 541: echo "</td></tr>"; 542: 543: echo "<tr><td colspan=2><input type=submit value=\"".$NATS->Lang->Item("aa.update")."\"> <a href=admin.php>".$NATS->Lang->Item("aa.cancel")."</a> | "; 544: echo "<a href=admin.php?aaid=".$_REQUEST['aaid']."&mode=alertactions&action=action_test>".$NATS->Lang->Item("aa.test")."</a> | "; 545: echo "<a href=admin.php?aaid_del=".$_REQUEST['aaid']."&mode=alertactions&action=action_delete>".$NATS->Lang->Item("aa.delete")."</a>"; 546: echo "</td></tr>"; 547: 548: echo "</form></table><br><br>"; 549: $NATS->DB->Free($r); 550: } 551: 552: $q="SELECT aaid,atype,aname FROM fnalertaction"; 553: $r=$NATS->DB->Query($q); 554: echo "<table class=\"nicetable\"><tr>"; 555: echo "<td><b>".$NATS->Lang->Item("id")."</b></td><td><b>".$NATS->Lang->Item("aa.name")."</b></td><td><b>".$NATS->Lang->Item("aa.type")."</b></td></tr>"; 556: while ($row=$NATS->DB->Fetch_Array($r)) 557: { 558: echo "<tr><td>"; 559: echo "<a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">".$row['aaid']."</a></td>"; 560: echo "<td><a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">".$row['aname']."</a></td><td>"; 561: echo aat_atype($row['atype']); 562: echo "</td></tr>"; 563: } 564: echo "</table>"; 565: 566: echo "<br><a href=admin.php?mode=alertactions&action=action_create><b>".$NATS->Lang->Item("aa.create")."</b></a><br>"; 567: echo "<br><br>"; 568: } 569: else if ($mode=="logs") 570: { 571: // Que ??!? 572: echo "<b class=\"subtitle\">System Logs</b><br><br>"; 573: echo "<a href=log.php>System Event Log</a><br><br>"; 574: 575: echo "<br><br>"; 576: } 577: else if ($mode=="status") 578: { 579: // system healthcheck 580: 581: // usage data 582: //$q="SELECT COUNT(fnnode.nodeid),COUNT(fngroup.groupid),COUNT( FROM fnnode,fngroup"; 583: $q="SHOW TABLE STATUS LIKE \"fn%\""; 584: $r=$NATS->DB->Query($q); 585: 586: echo "<b class=\"maintitle\">FreeNATS ".$NATS->Lang->Item("system.status")."</b><br><br>"; 587: 588: $tinfo=array(); 589: 590: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.size")."</b><br><br>"; 591: 592: echo "<table class=\"nicetable\">"; 593: echo "<tr><td><b>".$NATS->Lang->Item("status.tname")."</b></td><td><b>".$NATS->Lang->Item("status.tsize")."</b></td>"; 594: echo "<td><b>".$NATS->Lang->Item("status.tsize.kb")."</b></td><td><b>".$NATS->Lang->Item("status.tother")."</b></td></tr>"; 595: while ($row=$NATS->DB->Fetch_Array($r)) 596: { 597: echo "<tr><td>".$row['Name']."</td><td>".$row['Rows']."</td>"; 598: echo "<td>".round($row['Data_length']/1024,0)."</td><td>"; 599: if (isset($tinfo[$row['Name']])) echo $tinfo[$row['Name']]; 600: else echo " "; 601: if ($row['Data_free']>0) 602: { 603: echo " [".round($row['Data_free']/1024,0)."kb ".$NATS->Lang->Item("status.free")." - "; 604: echo "<a href=admin.php?mode=status&action=optimize&table=".$row['Name'].">".$NATS->Lang->Item("status.optimise")."</a>]"; 605: } 606: echo "</td></tr>"; 607: } 608: echo "</table>"; 609: $NATS->DB->Free($r); 610: echo "<br><br>"; 611: 612: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.running")."</b><br><br>"; 613: $q="SELECT * FROM fntestrun WHERE finishx=0"; 614: $r=$NATS->DB->Query($q); 615: echo "<b>".$NATS->DB->Num_Rows($r)." ".$NATS->Lang->Item("status.running")."</b><br><br>"; 616: if ($NATS->DB->Num_Rows($r)>0) 617: { 618: echo "<table class=\"nicetable\">"; 619: echo "<tr><td><b>ID</b></td><td><b>".$NATS->Lang->Item("node")."</b></td><td><b>".$NATS->Lang->Item("started")."</b></td><td><b>".$NATS->Lang->Item("notes")."</b></td></tr>"; 620: $nowx=time(); 621: $fifteenx=$nowx-(15*60); 622: $hourx=$nowx-(60*60); 623: while ($row=$NATS->DB->Fetch_Array($r)) 624: { 625: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">"; 626: echo $row['trid']."</a></td>"; 627: echo "<td><a href=node.php?nodeid=".$row['fnode']."</a></td>"; 628: echo "<td>".nicedt($row['startx'])." - ".dtago($row['startx'])."</td>"; 629: echo "<td>"; 630: if ($row['startx']<$hourx) echo $NATS->Lang->Item("status.run.error"); 631: else if($row['startx']<$fifteenx) echo $NATS->Lang->Item("status.run.warn"); 632: else echo " "; 633: echo "</td></tr>"; 634: } 635: echo "</table>"; 636: } 637: $NATS->DB->Free($r); 638: echo "<br><br>"; 639: 640: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.env.http")."</b><br><br>"; 641: $env_test_web=1; 642: include("environment.test.php"); 643: echo "<br>"; 644: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.env.cli")."</b><br><br>"; 645: $output=array(); 646: $return=0; 647: exec("php -q environment.test.php",$output,$return); 648: if ($return!=1) 649: { 650: echo "<b style=\"color: red;\">Error: </b> PHP CLI Script did not seem to execute. PHP-CLI is required for FreeNATS (fatal error)<BR />"; 651: } 652: foreach($output as $line) 653: echo $line; 654: 655: echo "<br>"; 656: echo "<a href=admin.php?mode=phpinfo>Click here for very detailed PHP environment information for web and CLI</a>"; 657: 658: echo "<br><br>"; 659: echo $NATS->Lang->Item("status.disclaim"); 660: echo "<br><br>"; 661: 662: } 663: else if ($mode=="phpinfo") 664: { 665: echo "<H1>".$NATS->Lang->Item("status.env.http")."</H1><br>"; 666: $env_test_web=1; 667: include("environment.test.php"); 668: echo "<br>"; 669: ob_start(); 670: phpinfo(); 671: $info=ob_get_contents(); 672: ob_end_clean(); 673: $info=preg_replace("/<style.*<\/style>/is","",$info); 674: echo "<DIV STYLE=\"font-family: monospace;\">"; 675: echo nl2br(strip_tags($info)); 676: echo "</DIV><BR><HR><BR>\n"; 677: 678: echo "<H1>".$NATS->Lang->Item("status.env.cli")."</H1><br>"; 679: $output=array(); 680: $return=0; 681: exec("php -q environment.test.php full",$output,$return); 682: if ($return!=1) 683: { 684: echo "<b style=\"color: red;\">Error: </b> PHP CLI Script did not seem to execute. PHP-CLI is required for FreeNATS (fatal error)<BR />"; 685: } 686: foreach($output as $line) 687: echo $line; 688: } 689: else if ($mode=="variables") 690: { 691: echo "<b class=\"subtitle\">".$NATS->Lang->Item("variables")."</b> ".hlink("Variable")."<br><br>"; 692: $q="SELECT * FROM fnconfig ORDER BY fnc_var ASC"; 693: $r=$NATS->DB->Query($q); 694: echo "<table border=0>"; 695: while ($row=$NATS->DB->Fetch_Array($r)) 696: { 697: echo "<form action=admin.php method=post>"; 698: echo "<input type=hidden name=action value=var_save>"; 699: echo "<input type=hidden name=mode value=variables>"; 700: echo "<input type=hidden name=orig_var value=\"".$row['fnc_var']."\">"; 701: echo "<input type=hidden name=orig_val value=\"".$row['fnc_val']."\">"; 702: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"".$row['fnc_var']."\"> "; 703: echo "</td>"; 704: echo "<td>=</td>"; 705: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"".$row['fnc_val']."\"></td>"; 706: echo "<td><input type=submit value=\"".$NATS->Lang->Item("save")."\"> "; 707: echo hlink("Var:".$row['fnc_var']); 708: echo "</td>"; 709: echo "</tr>"; 710: echo "</form>"; 711: } 712: echo "<form action=admin.php method=post>"; 713: echo "<input type=hidden name=action value=var_new>"; 714: echo "<input type=hidden name=mode value=variables>"; 715: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"\"></td>"; 716: echo "<td>=</td>"; 717: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"\"></td>"; 718: echo "<td><input type=submit value=\"".$NATS->Lang->Item("create")."\"></td>"; 719: echo "</tr>"; 720: echo "</form>"; 721: echo "</table><br><br>"; 722: } 723: else if ($mode=="sysinfo") 724: { 725: echo "<b class=\"subtitle\">FreeNATS ".$NATS->Lang->Item("sys.info")."</b><br><br>"; 726: 727: echo "<b>Version Information</b><br><br>"; 728: echo "<table border=0>"; 729: echo "<tr><td>".$NATS->Lang->Item("version").":</td><td>".$NATS->Version."</td></tr>"; 730: echo "<tr><td>".$NATS->Lang->Item("release").":</td><td>".$NATS->Release."</td></tr>"; 731: echo "<tr><td>".$NATS->Lang->Item("compound").":</td><td>".$NATS->Version.$NATS->Release."</td></tr>"; 732: echo "</table><br><br>"; 733: 734: echo "<b>".$NATS->Lang->Item("reg.modules")."</b><br><br>"; 735: echo "<table class=\"nicetable\" width=600>"; 736: echo "<tr><td><b>".$NATS->Lang->Item("name")."</b></td><td><b>".$NATS->Lang->Item("provides")."</b></td>"; 737: echo "<td><b>".$NATS->Lang->Item("revision")."</b></td><td><b>".$NATS->Lang->Item("additional")."</b></td></tr>"; 738: foreach($NATS->Tests->QuickList as $key => $val) 739: { 740: echo "<tr><td>"; 741: echo $NATS->Tests->Tests[$key]->name; 742: echo "</td><td>"; 743: echo $NATS->Tests->Tests[$key]->type; 744: echo "</td><td>"; 745: echo $NATS->Tests->Tests[$key]->revision; 746: echo "</td><td>"; 747: echo $NATS->Tests->Tests[$key]->additional; 748: echo "</td></tr>"; 749: } 750: echo "</table><br><br>"; 751: 752: echo "<b>".$NATS->Lang->Item("reg.events")."</b><br><br>"; 753: echo "<table class=\"nicetable\" width=600>"; 754: echo "<tr><td><b>".$NATS->Lang->Item("event")."</b></td><td><b>".$NATS->Lang->Item("handlers")."</b></td></tr>"; 755: foreach($NATS->EventHandlers as $key => $val) 756: { 757: echo "<tr><td valign=top>".$key."</td><td>"; 758: foreach($NATS->EventHandlers[$key] as $handler) 759: echo $handler."<br>"; 760: echo "</td></tr>"; 761: } 762: echo "</table><br><br>"; 763: echo "<b>".$NATS->Lang->Item("reg.languages")."</b><br><br>"; 764: $langs=$NATS->Lang->GetLanguages(); 765: foreach($langs as $code => $lang) 766: { 767: echo $code.": ".$lang."<br>"; 768: } 769: echo "<br><br>"; 770: } 771: else // catch-all 772: { 773: echo "<H3>".$NATS->Lang->Item("tests.alerting")."</H3>\n"; 774: 775: echo "<img src=images/options/letter_open.png style=\"vertical-align: bottom;\"> "; 776: echo "<a href=admin.php?mode=alertactions>".$NATS->Lang->Item("alert.actions")."</a><br><br>"; 777: 778: echo "<img src=images/options/file.png style=\"vertical-align: bottom;\"> "; 779: echo "<a href=admin.php?mode=testsessions>".$NATS->Lang->Item("sessions")."</a><br><br>"; 780: 781: echo "<img src=images/options/time.png style=\"vertical-align: bottom;\"> "; 782: echo "<a href=schedule.php>".$NATS->Lang->Item("schedules")."</a><br><br>"; 783: 784: echo "<img src=images/options/rss.png style=\"vertical-align: bottom;\"> "; 785: echo "<a href=admin.rss.php>".$NATS->Lang->Item("rss.feed")."</a><br><br>"; 786: 787: echo "<H3>".$NATS->Lang->Item("system.settings")."</H3>\n"; 788: 789: echo "<img src=images/options/user.png style=\"vertical-align: bottom;\"> "; 790: echo "<a href=admin.php?mode=users>".$NATS->Lang->Item("user.admin")."</a><br><br>"; 791: 792: echo "<img src=images/options/action_add.png style=\"vertical-align: bottom;\"> "; 793: echo "<a href=admin.php?mode=variables>".$NATS->Lang->Item("variables")."</a><br><br>"; 794: 795: echo "<H3>".$NATS->Lang->Item("tools")."</H3>\n"; 796: 797: echo "<img src=images/options/folder_open.png style=\"vertical-align: bottom;\"> "; 798: echo "<a href=filemanager.php>".$NATS->Lang->Item("file.manager")."</a><br><br>"; 799: 800: if ($NATS->Cfg->Get("site.enable.adminsql",0)==1) 801: { 802: echo "<img src=images/options/folder_files.png style=\"vertical-align: bottom;\"> "; 803: echo "<a href=admin.sql.php>".$NATS->Lang->Item("sql.console")."</a><br><br>"; 804: } 805: 806: echo "<img src=images/options/search.png style=\"vertical-align: bottom;\"> "; 807: echo "<a href=admin.dns.php>".$NATS->Lang->Item("dns.console")."</a><br><br>"; 808: 809: echo "<img src=images/options/save.png style=\"vertical-align: bottom;\"> "; 810: echo "<a href=admin.backup.php>".$NATS->Lang->Item("backup.restore")."</a><br><br>"; 811: 812: echo "<H3>".$NATS->Lang->Item("logs.info")."</H3>\n"; 813: 814: echo "<img src=images/options/application.png style=\"vertical-align: bottom;\"> "; 815: echo "<a href=log.php>".$NATS->Lang->Item("event.log")."</a><br><br>"; 816: 817: echo "<img src=images/options/reply.png style=\"vertical-align: bottom;\"> "; 818: echo "<a href=admin.php?mode=status>".$NATS->Lang->Item("sys.status")."</a><br><br>"; 819: 820: echo "<img src=images/help16.png style=\"vertical-align: bottom;\"> "; 821: echo "<a href=admin.php?mode=sysinfo>".$NATS->Lang->Item("sys.info")."</a><br><br>"; 822: 823: /* 824: echo "<img src=images/options/user.png style=\"vertical-align: bottom;\"> "; 825: echo "<a href=admin.php?mode=users>".$NATS->Lang->Item("user.admin")."</a><br><br>"; 826: echo "<img src=images/options/application.png style=\"vertical-align: bottom;\"> "; 827: echo "<a href=log.php>".$NATS->Lang->Item("event.log")."</a><br><br>"; 828: echo "<img src=images/options/letter_open.png style=\"vertical-align: bottom;\"> "; 829: echo "<a href=admin.php?mode=alertactions>".$NATS->Lang->Item("alert.actions")."</a><br><br>"; 830: echo "<img src=images/options/action_add.png style=\"vertical-align: bottom;\"> "; 831: echo "<a href=admin.php?mode=variables>".$NATS->Lang->Item("variables")."</a><br><br>"; 832: echo "<img src=images/options/file.png style=\"vertical-align: bottom;\"> "; 833: echo "<a href=admin.php?mode=testsessions>".$NATS->Lang->Item("sessions")."</a><br><br>"; 834: echo "<img src=images/options/time.png style=\"vertical-align: bottom;\"> "; 835: echo "<a href=schedule.php>".$NATS->Lang->Item("schedules")."</a><br><br>"; 836: echo "<img src=images/options/folder_open.png style=\"vertical-align: bottom;\"> "; 837: echo "<a href=filemanager.php>".$NATS->Lang->Item("file.manager")."</a><br><br>"; 838: 839: if ($NATS->Cfg->Get("site.enable.adminsql",0)==1) 840: { 841: echo "<img src=images/options/folder_files.png style=\"vertical-align: bottom;\"> "; 842: echo "<a href=admin.sql.php>".$NATS->Lang->Item("sql.console")."</a><br><br>"; 843: } 844: echo "<img src=images/options/search.png style=\"vertical-align: bottom;\"> "; 845: echo "<a href=admin.dns.php>".$NATS->Lang->Item("dns.console")."</a><br><br>"; 846: echo "<img src=images/options/save.png style=\"vertical-align: bottom;\"> "; 847: echo "<a href=admin.backup.php>".$NATS->Lang->Item("backup.restore")."</a><br><br>"; 848: echo "<img src=images/options/reply.png style=\"vertical-align: bottom;\"> "; 849: echo "<a href=admin.php?mode=status>".$NATS->Lang->Item("sys.status")."</a><br><br>"; 850: echo "<img src=images/help16.png style=\"vertical-align: bottom;\"> "; 851: echo "<a href=admin.php?mode=sysinfo>".$NATS->Lang->Item("sys.info")."</a><br><br>"; 852: echo "<img src=images/options/rss.png style=\"vertical-align: bottom;\"> "; 853: echo "<a href=admin.rss.php>".$NATS->Lang->Item("rss.feed")."</a><br><br>"; 854: */ 855: } 856: 857: if ($mode!="") echo "<a href=admin.php>".$NATS->Lang->Item("back.to.admin")."</a><br><br>"; 858: ?> 859: 860: 861: <?php 862: Screen_Footer(); 863: ?> 864: