File: 1.10.1a/server/web/admin.php (View as Code)

1: 2: /* ------------------------------------------------------------- 3: This file is part of FreeNATS 4: 5: FreeNATS is (C) Copyright 2008-2010 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: $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=$NATS->Lang->Item("save.user.fail"); 43: else $amsg=$NATS->Lang->Item("save.user.ok"); 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=$NATS->Lang->Item("create.user.fail"); 52: else $amsg=$NATS->Lang->Item("create.user.ok"); 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=".urlencode($NATS->Lang->Item("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=$_REQUEST['username'].$NATS->Lang->Item("user.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=$NATS->Lang->Item("save.var.fail"); 87: else $amsg=$NATS->Lang->Item("save.var.ok"); 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=$NATS->Lang->Item("new.var.fail"); 94: else $amsg=$NATS->Lang->Item("new.var.ok"); 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: $q.="scheduleid=".ss($_REQUEST['scheduleid']).","; 104: if (isset($_REQUEST['efrom'])) $q.="efrom=\"".ss($_REQUEST['efrom'])."\","; 105: $q.="etolist=\"".ss($_REQUEST['etolist'])."\","; 106: if (isset($_REQUEST['esubject'])) $q.="esubject=".ss($_REQUEST['esubject']).","; 107: $q.="etype=".ss($_REQUEST['etype']); 108: if (isset($_REQUEST['awarnings'])) $q.=",awarnings=".ss($_REQUEST['awarnings']); 109: else $q.=",awarnings=0"; 110: if (isset($_REQUEST['adecrease'])) $q.=",adecrease=".ss($_REQUEST['adecrease']); 111: else $q.=",adecrease=0"; 112: $q.=" WHERE aaid=".ss($_REQUEST['aaid']); 113: //echo $q; 114: $NATS->DB->Query($q); 115: if ($NATS->DB->Affected_Rows()<=0) $NATS->Lang->Item("changes.fail"); 116: else $amsg=$NATS->Lang->Item("changes.ok"); 117: break; 118: 119: case "action_test": 120: $q="SELECT mdata FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid'])." LIMIT 0,1"; 121: $r=$NATS->DB->Query($q); 122: $row=$NATS->DB->Fetch_Array($r); 123: $oldm=$row['mdata']; 124: $q="UPDATE fnalertaction SET mdata=\"** ACTION TEST **\" WHERE aaid=".ss($_REQUEST['aaid']); 125: $NATS->DB->Query($q); 126: $NATS->ActionFlush(); 127: $q="UPDATE fnalertaction SET mdata=\"".ss($oldm)."\" WHERE aaid=".ss($_REQUEST['aaid']); 128: $NATS->DB->Query($q); 129: $amsg=$NATS->Lang->Item("aa.testflush"); 130: break; 131: 132: case "action_create": 133: $q="INSERT INTO fnalertaction(atype) VALUES(\"\")"; 134: $NATS->DB->Query($q); 135: $amsg=$NATS->Lang->Item("changes.ok"); 136: $_REQUEST['aaid']=$NATS->DB->Insert_Id(); 137: break; 138: 139: case "action_delete": 140: if (!isset($_REQUEST['confirmed'])) 141: { 142: $back=urlencode("admin.php?mode=alertactions&aaid_del=".$_REQUEST['aaid_del']."&action=action_delete&confirmed=1"); 143: $url="confirm.php?action=".urlencode($NATS->Lang->Item("aa.delete"))."&back=".$back; 144: header("Location: ".$url); 145: exit(); 146: } 147: // otherwise confirmed 148: $q="DELETE FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid_del']); 149: $NATS->DB->Query($q); 150: if ($NATS->DB->Affected_Rows()>0) $amsg=$NATS->Lang->Item("changes.ok"); 151: else $amsg=$NATS->Lang->Item("changes.fail"); 152: $q="DELETE FROM fnnalink WHERE aaid=".ss($_REQUEST['aaid_del']); 153: $NATS->DB->Query($q); 154: break; 155: 156: case "optimize": 157: $q="OPTIMIZE TABLE ".ss($_REQUEST['table']); 158: $NATS->DB->Query($q); 159: $amsg=$NATS->Lang->Item("optimised.ok")." ".$_REQUEST['table']; 160: break; 161: 162: } 163: } 164: 165: ob_end_flush(); 166: Screen_Header($NATS->Lang->Item("admin.interface"),1,1,"","main","admin"); 167: 168: if (isset($_REQUEST['mode'])) $mode=$_REQUEST['mode']; 169: else $mode=""; 170: 171: if (isset($_REQUEST['message'])) echo "
".$_REQUEST['message']."
";
172: if (isset($amsg)) echo "
".$amsg."
";
173: 174: echo "
";
175: if (isset($_REQUEST['updatecheck'])) 176: { 177: // check for updates 178: $dq="?CheckVersion=".$NATS->Version."&JSMode=1"; 179: $dl="http://www.purplepixie.org/freenats/download.php"; 180: $du=$dl.$dq; 181: /* old method 182: $cp=@fopen($du,"r"); 183: if ($cp>0) 184: { 185: $cs=@fgets($cp,128); 186: @fclose($cp); 187: if ($cs=="0") echo "System Up to Date
";
188: else echo "Update Available: ".$cs."
";
189: } 190: else echo "Error Checking for Updates
";
191: */ 192: echo $NATS->Lang->Item("checking.updates").": "; 193: echo "\n"; 194: echo "

";
195: } 196: else if ($mode=="") 197: { 198: echo "".$NATS->Lang->Item("check.updates")."

";
199: } 200: 201: function tul($l) 202: { 203: global $NATS; 204: if ($l>9) return $NATS->Lang->Item("ul.admin"); 205: if ($l>4) return $NATS->Lang->Item("ul.power"); 206: if ($l>0) return $NATS->Lang->Item("ul.normal"); 207: return $NATS->Lang->Item("ul.disabled"); 208: } 209: 210: function aat_etype($type) 211: { 212: global $NATS; 213: switch ($type) 214: { 215: case 0: return $NATS->Lang->Item("aae.short"); 216: case 1: return $NATS->Lang->Item("aae.long"); 217: default: return $NATS->Lang->Item("Unknown"); 218: } 219: } 220: 221: function aat_esub($type) 222: { 223: global $NATS; 224: switch ($type) 225: { 226: case 0: return $NATS->Lang->Item("aae.sub.blank"); 227: case 1: return $NATS->Lang->Item("aae.sub.short"); 228: case 2: return $NATS->Lang->Item("aae.sub.long"); 229: default: return $NATS->Lang->Item("unknown"); 230: } 231: } 232: 233: function aat_atype($type) 234: { 235: global $NATS; 236: switch($type) 237: { 238: case "": case "Disabled": return $NATS->Lang->Item("aatype.disabled"); 239: case "email": return $NATS->Lang->Item("aatype.email"); 240: case "url": return $NATS->Lang->Item("aatype.url"); 241: case "mqueue": return $NATS->Lang->Item("aatype.mqueue"); 242: default: return $NATS->Lang->Item("unknown")." (".$type.")"; 243: } 244: } 245: 246: if ($mode=="users") 247: { 248: echo "".$NATS->Lang->Item("user.admin")."

";
249: 250: 251: 252: 253: $q="SELECT username,realname,userlevel FROM fnuser"; 254: $r=$NATS->DB->Query($q); 255: echo ""; 256: echo ""; 257: echo ""; 258: echo ""; 259: while ($row=$NATS->DB->Fetch_Array($r)) 260: { 261: echo "
";
262: echo ""; 263: echo ""; 264: echo ""; 265: echo ""; 266: echo ""; 267: echo ""; 275: echo ""; 276: echo ""; 277: echo ""; 278: echo ""; 279: } 280: echo "
";
281: echo ""; 282: echo ""; 283: echo ""; 284: echo ""; 285: echo ""; 291: echo ""; 292: echo ""; 293: echo ""; 294: echo "
".$NATS->Lang->Item("username")." ".$NATS->Lang->Item("real.name")."".$NATS->Lang->Item("user.level")."".$NATS->Lang->Item("password")."".$NATS->Lang->Item("options")."
".$row['username'].""; 274: echo "Lang->Item("save")."\"> ".$NATS->Lang->Item("delete")."
Lang->Item("create.user")."\">

";
295: echo "
";
296: $NATS->DB->Free($r); 297: } 298: else if ($mode=="nodetestsessions") 299: { 300: echo "".$NATS->Lang->Item("sessions.for")." ".$_REQUEST['nodeid']."

";
301: echo "".$NATS->Lang->Item("sessions.running.for")." ".$_REQUEST['nodeid']."
";
302: $q="SELECT * FROM fntestrun WHERE fnode=\"".ss($_REQUEST['nodeid'])."\" AND finishx=0 ORDER BY trid DESC"; 303: $r=$NATS->DB->Query($q); 304: if ($NATS->DB->Num_Rows($r)==0) echo "".$NATS->Lang->Item("sessions.not.running")."
";
305: echo ""; 306: while ($row=$NATS->DB->Fetch_Array($r)) 307: { 308: echo ""; 309: echo ""; 314: } 315: echo "
run/".$row['trid']."".nicedt($row['startx'])." - "; 310: if ($row['finishx']>0) echo nicedt($row['finishx']); 311: else echo $NATS->Lang->Item("sessions.stillrunning"); 312: echo " (".$NATS->Lang->Item("event.log").")"; 313: echo "
";
316: $NATS->DB->Free($r); 317: echo "
";
318: echo "
";
319: 320: echo "100 ".$NATS->Lang->Item("sessions.previous")." ".$_REQUEST['nodeid']."
";
321: $q="SELECT * FROM fntestrun WHERE fnode=\"".ss($_REQUEST['nodeid'])."\" ORDER BY trid DESC LIMIT 0,100"; 322: $r=$NATS->DB->Query($q); 323: if ($NATS->DB->Num_Rows($r)==0) echo "".$NATS->Lang->Item("sessions.previous.none")."
";
324: echo ""; 325: while ($row=$NATS->DB->Fetch_Array($r)) 326: { 327: echo ""; 328: echo ""; 333: } 334: echo "
run/".$row['trid']."".nicedt($row['startx'])." - "; 329: if ($row['finishx']>0) echo nicedt($row['finishx']); 330: else echo $NATS->Lang->Item("sessions.stillrunning"); 331: echo " (".$NATS->Lang->Item("event.log").")"; 332: echo "
";
335: $NATS->DB->Free($r); 336: echo "
";
337: echo "
";
338: 339: } 340: else if ($mode=="testsessions") 341: { 342: echo "".$NATS->Lang->Item("sessions.running")."

";
343: $q="SELECT * FROM fntestrun WHERE finishx=0 ORDER BY trid DESC"; 344: $r=$NATS->DB->Query($q); 345: if ($NATS->DB->Num_Rows($r)==0) echo "".$NATS->Lang->Item("sessions.not.running")."
";
346: echo ""; 347: while ($row=$NATS->DB->Fetch_Array($r)) 348: { 349: echo ""; 350: echo ""; 355: } 356: echo "
run/".$row['trid']."".nicedt($row['startx'])." - "; 351: if ($row['finishx']>0) echo nicedt($row['finishx']); 352: else echo $NATS->Lang->Item("sessions.stillrunning"); 353: echo " (".$NATS->Lang->Item("event.log").")"; 354: echo "
";
357: $NATS->DB->Free($r); 358: echo "
";
359: echo "
"; 360: echo ""; 361: echo "100 ".$NATS->Lang->Item("sessions.previous")." "; 362: $q="SELECT nodeid,nodename FROM fnnode ORDER BY weight ASC"; 363: $r=$NATS->DB->Query($q); 364: echo "
";
370: } 371: else if ($mode=="alertactions") 372: { 373: echo "".$NATS->Lang->Item("alert.actions")."

";
374: 375: if (isset($_REQUEST['aaid'])) 376: { // view/edit aaid 377: $q="SELECT * FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid']); 378: $r=$NATS->DB->Query($q); 379: if (!$row=$NATS->DB->Fetch_Array($r)) 380: { 381: echo "Error Fetching AAID

";
382: Screen_Footer(); 383: exit(); 384: } 385: echo ""; 386: echo "
";
387: echo ""; 388: echo ""; 389: echo ""; 390: echo ""; 391: 392: echo ""; 393: echo ""; 396: 397: echo ""; 406: 407: echo ""; 422: 423: 424: echo ""; 425: if ($row['awarnings']==1) $s=" checked"; 426: else $s=""; 427: echo ""; 428: 429: echo ""; 430: if ($row['adecrease']==1) $s=" checked"; 431: else $s=""; 432: echo ""; 433: 434: echo ""; 435: echo ""; 439: 440: echo ""; 441: echo ""; 449: 450: if ($row['atype']!="url") 451: { 452: 453: echo ""; 454: echo ""; 457: 458: echo ""; 466: 467: } 468: 469: echo ""; 476: 477: echo ""; 480: 481: echo ""; 485: 486: echo "
".$NATS->Lang->Item("id")." : action/".$_REQUEST['aaid']."
".$NATS->Lang->Item("aa.name")." : "; 394: echo ""; 395: echo "
".$NATS->Lang->Item("aa.type")." : "; 398: echo ""; 405: echo "
".$NATS->Lang->Item("schedule")." : "; 408: echo ""; 419: $NATS->DB->Free($sr); 420: echo " ".hlink("AlertSchedule"); 421: echo "
".$NATS->Lang->Item("warnings")." : ".hlink("AAction:Warnings")."
".$NATS->Lang->Item("decreases")." : ".hlink("AAction:Decreases")."
".$NATS->Lang->Item("aa.limit")." : "; 436: echo " "; 437: echo hlink("AAction:Limit"); 438: echo "
".$NATS->Lang->Item("aa.counter")." : "; 442: echo " "; 443: echo hlink("AAction:Counter"); 444: echo " (for "; 445: if ($row['ctrdate']=="") echo "unknown"; 446: else echo substr($row['ctrdate'],6,2)."/".substr($row['ctrdate'],4,2)."/".substr($row['ctrdate'],0,4); 447: echo ")"; 448: echo "
".$NATS->Lang->Item("aa.efrom")." : "; 455: echo ""; 456: echo "
".$NATS->Lang->Item("aa.esubj")." : "; 459: echo ""; 465: echo "
".$NATS->Lang->Item("aa.mtype")." : "; 470: echo ""; 475: echo "
".$NATS->Lang->Item("aa.eto")." : "; 478: echo ""; 479: echo "
Lang->Item("aa.update")."\">   ".$NATS->Lang->Item("aa.cancel")." | "; 482: echo "".$NATS->Lang->Item("aa.test")." | "; 483: echo "".$NATS->Lang->Item("aa.delete").""; 484: echo "


";
487: $NATS->DB->Free($r); 488: } 489: 490: $q="SELECT aaid,atype,aname FROM fnalertaction"; 491: $r=$NATS->DB->Query($q); 492: echo ""; 493: echo ""; 494: while ($row=$NATS->DB->Fetch_Array($r)) 495: { 496: echo ""; 498: echo ""; 501: } 502: echo "
".$NATS->Lang->Item("id")."".$NATS->Lang->Item("aa.name")."".$NATS->Lang->Item("aa.type")."
"; 497: echo "".$row['aaid']."".$row['aname'].""; 499: echo aat_atype($row['atype']); 500: echo "
";
503: 504: echo "
".$NATS->Lang->Item("aa.create")."
";
505: echo "

";
506: } 507: else if ($mode=="logs") 508: { 509: // Que ??!? 510: echo "System Logs

";
511: echo "System Event Log

";
512: 513: echo "

";
514: } 515: else if ($mode=="status") 516: { 517: // system healthcheck 518: 519: // usage data 520: //$q="SELECT COUNT(fnnode.nodeid),COUNT(fngroup.groupid),COUNT( FROM fnnode,fngroup"; 521: $q="SHOW TABLE STATUS LIKE \"fn%\""; 522: $r=$NATS->DB->Query($q); 523: 524: echo "FreeNATS ".$NATS->Lang->Item("system.status")."

";
525: 526: $tinfo=array(); 527: 528: echo "".$NATS->Lang->Item("status.size")."

";
529: 530: echo ""; 531: echo ""; 532: echo ""; 533: while ($row=$NATS->DB->Fetch_Array($r)) 534: { 535: echo ""; 536: echo ""; 545: } 546: echo "
".$NATS->Lang->Item("status.tname")."".$NATS->Lang->Item("status.tsize")."".$NATS->Lang->Item("status.tsize.kb")."".$NATS->Lang->Item("status.tother")."
".$row['Name']."".$row['Rows']."".round($row['Data_length']/1024,0).""; 537: if (isset($tinfo[$row['Name']])) echo $tinfo[$row['Name']]; 538: else echo " "; 539: if ($row['Data_free']>0) 540: { 541: echo " [".round($row['Data_free']/1024,0)."kb ".$NATS->Lang->Item("status.free")." - "; 542: echo "".$NATS->Lang->Item("status.optimise")."]"; 543: } 544: echo "
";
547: $NATS->DB->Free($r); 548: echo "

";
549: 550: echo "".$NATS->Lang->Item("status.running")."

";
551: $q="SELECT * FROM fntestrun WHERE finishx=0"; 552: $r=$NATS->DB->Query($q); 553: echo "".$NATS->DB->Num_Rows($r)." ".$NATS->Lang->Item("status.running")."

";
554: if ($NATS->DB->Num_Rows($r)>0) 555: { 556: echo ""; 557: echo ""; 558: $nowx=time(); 559: $fifteenx=$nowx-(15*60); 560: $hourx=$nowx-(60*60); 561: while ($row=$NATS->DB->Fetch_Array($r)) 562: { 563: echo ""; 565: echo ""; 566: echo ""; 567: echo ""; 572: } 573: echo "
ID".$NATS->Lang->Item("node")."".$NATS->Lang->Item("started")."".$NATS->Lang->Item("notes")."
"; 564: echo $row['trid']."".nicedt($row['startx'])." - ".dtago($row['startx']).""; 568: if ($row['startx']<$hourx) echo $NATS->Lang->Item("status.run.error"); 569: else if($row['startx']<$fifteenx) echo $NATS->Lang->Item("status.run.warn"); 570: else echo " "; 571: echo "
";
574: } 575: $NATS->DB->Free($r); 576: echo "

";
577: 578: echo "".$NATS->Lang->Item("status.env.http")."

";
579: $env_test_web=1; 580: include("environment.test.php"); 581: echo "
";
582: echo "".$NATS->Lang->Item("status.env.cli")."

";
583: $output=array(); 584: $return=0; 585: exec("php -q environment.test.php",$output,$return); 586: if ($return!=1) 587: { 588: echo "Error: PHP CLI Script did not seem to execute. PHP-CLI is required for FreeNATS (fatal error)
";
589: } 590: foreach($output as $line) 591: echo $line; 592: 593: echo "

";
594: echo $NATS->Lang->Item("status.disclaim"); 595: echo "

";
596: 597: } 598: else if ($mode=="variables") 599: { 600: echo "".$NATS->Lang->Item("variables")." ".hlink("Variable")."

";
601: $q="SELECT * FROM fnconfig ORDER BY fnc_var ASC"; 602: $r=$NATS->DB->Query($q); 603: echo ""; 604: while ($row=$NATS->DB->Fetch_Array($r)) 605: { 606: echo "
";
607: echo ""; 608: echo ""; 609: echo ""; 610: echo ""; 611: echo ""; 613: echo ""; 614: echo ""; 615: echo ""; 618: echo ""; 619: echo ""; 620: } 621: echo "
";
622: echo ""; 623: echo ""; 624: echo ""; 625: echo ""; 626: echo ""; 627: echo ""; 628: echo ""; 629: echo ""; 630: echo "
"; 612: echo "=Lang->Item("save")."\"> "; 616: echo hlink("Var:".$row['fnc_var']); 617: echo "
=Lang->Item("create")."\">


";
631: } 632: else if ($mode=="sysinfo") 633: { 634: echo "FreeNATS ".$NATS->Lang->Item("sys.info")."

";
635: 636: echo "Version Information

";
637: echo ""; 638: echo ""; 639: echo ""; 640: echo ""; 641: echo "
".$NATS->Lang->Item("version").":".$NATS->Version."
".$NATS->Lang->Item("release").":".$NATS->Release."
".$NATS->Lang->Item("compound").":".$NATS->Version.$NATS->Release."


";
642: 643: echo "".$NATS->Lang->Item("reg.modules")."

";
644: echo ""; 645: echo ""; 646: echo ""; 647: foreach($NATS->Tests->QuickList as $key => $val) 648: { 649: echo ""; 658: } 659: echo "
".$NATS->Lang->Item("name")."".$NATS->Lang->Item("provides")."".$NATS->Lang->Item("revision")."".$NATS->Lang->Item("additional")."
"; 650: echo $NATS->Tests->Tests[$key]->name; 651: echo ""; 652: echo $NATS->Tests->Tests[$key]->type; 653: echo ""; 654: echo $NATS->Tests->Tests[$key]->revision; 655: echo ""; 656: echo $NATS->Tests->Tests[$key]->additional; 657: echo "


";
660: 661: echo "".$NATS->Lang->Item("reg.events")."

";
662: echo ""; 663: echo ""; 664: foreach($NATS->EventHandlers as $key => $val) 665: { 666: echo ""; 670: } 671: echo "
".$NATS->Lang->Item("event")."".$NATS->Lang->Item("handlers")."
".$key.""; 667: foreach($NATS->EventHandlers[$key] as $handler) 668: echo $handler."
";
669: echo "


";
672: echo "".$NATS->Lang->Item("reg.languages")."

";
673: $langs=$NATS->Lang->GetLanguages(); 674: foreach($langs as $code => $lang) 675: { 676: echo $code.": ".$lang."
";
677: } 678: echo "

";
679: } 680: else // catch-all 681: { 682: echo "  "; 683: echo "".$NATS->Lang->Item("user.admin")."

";
684: echo "  "; 685: echo "".$NATS->Lang->Item("event.log")."

";
686: echo "  "; 687: echo "".$NATS->Lang->Item("alert.actions")."

";
688: echo "  "; 689: echo "".$NATS->Lang->Item("variables")."

";
690: echo "  "; 691: echo "".$NATS->Lang->Item("sessions")."

";
692: echo "  "; 693: echo "".$NATS->Lang->Item("schedules")."

";
694: echo "  "; 695: echo "".$NATS->Lang->Item("file.manager")."

";
696: 697: if ($NATS->Cfg->Get("site.enable.adminsql",0)==1) 698: { 699: echo "  "; 700: echo "".$NATS->Lang->Item("sql.console")."

";
701: } 702: echo "  "; 703: echo "".$NATS->Lang->Item("dns.console")."

";
704: echo "  "; 705: echo "".$NATS->Lang->Item("backup.restore")."

";
706: echo "  "; 707: echo "".$NATS->Lang->Item("sys.status")."

";
708: echo "  "; 709: echo "".$NATS->Lang->Item("sys.info")."

";
710: } 711: 712: if ($mode!="") echo "".$NATS->Lang->Item("back.to.admin")."

";
713: ?> 714: 715: 716: 717: Screen_Footer(); 718: ?> 719: