Viewing File server/web/admin.php of 1.10.3a
|
1: <?php 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 "<br><b>".$_REQUEST['message']."</b><br>"; 172: if (isset($amsg)) echo "<br><b>".$amsg."</b><br>"; 173: 174: echo "<br>"; 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<br>"; 188: else echo "Update Available: <a href=http://www.purplepixie.org/freenats>".$cs."</a><br>"; 189: } 190: else echo "Error Checking for Updates<br>"; 191: */ 192: echo $NATS->Lang->Item("checking.updates").": "; 193: echo "<script type=\"text/javascript\" src=\"".$du."\"></script>\n"; 194: echo "<br><br>"; 195: } 196: else if ($mode=="") 197: { 198: echo "<a href=admin.php?updatecheck=1><b>".$NATS->Lang->Item("check.updates")."</b></a><br><br>"; 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 "<b class=\"subtitle\">".$NATS->Lang->Item("user.admin")."</b><br><br>"; 249: 250: 251: 252: 253: $q="SELECT username,realname,userlevel FROM fnuser"; 254: $r=$NATS->DB->Query($q); 255: echo "<table border=0>"; 256: echo "<tr><td><b>".$NATS->Lang->Item("username")." </b></td>"; 257: echo "<td><b>".$NATS->Lang->Item("real.name")."</b></td><td><b>".$NATS->Lang->Item("user.level")."</b></td>"; 258: echo "<td><b>".$NATS->Lang->Item("password")."</b></td><td><b>".$NATS->Lang->Item("options")."</b></td></tr>"; 259: while ($row=$NATS->DB->Fetch_Array($r)) 260: { 261: echo "<form action=admin.php method=post>"; 262: echo "<input type=hidden name=action value=save_user>"; 263: echo "<input type=hidden name=mode value=users>"; 264: echo "<input type=hidden name=username value=\"".$row['username']."\">"; 265: echo "<tr><td>".$row['username']."</td>"; 266: echo "<td><input type=text name=realname value=\"".$row['realname']."\" size=20 maxlength=120></td>"; 267: echo "<td><select name=userlevel>"; 268: echo "<option value=".$row['userlevel'].">".tul($row['userlevel'])."</option>"; 269: echo "<option value=0>".tul(0)."</option>"; 270: echo "<option value=1>".tul(1)."</option>"; 271: echo "<option value=5>".tul(5)."</option>"; 272: echo "<option value=10>".tul(10)."</option>"; 273: echo "</select>"; 274: echo "</td>"; 275: echo "<td><input type=password name=pword value=\"_NOTTHIS_\" size=10 maxlength=128></td>"; 276: 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>"; 277: echo "</tr>"; 278: echo "</form>"; 279: } 280: echo "<form action=admin.php method=post>"; 281: echo "<input type=hidden name=action value=create_user>"; 282: echo "<input type=hidden name=mode value=users>"; 283: echo "<tr><td><input type=text name=username size=20 maxlength=60></td>"; 284: echo "<td><input type=text name=realname size=20 maxlength=120></td>"; 285: echo "<td><select name=userlevel>"; 286: echo "<option value=1>".tul(1)."</option>"; 287: echo "<option value=0>".tul(0)."</option>"; 288: echo "<option value=5>".tul(5)."</option>"; 289: echo "<option value=10>".tul(10)."</option>"; 290: echo "</select></td>"; 291: echo "<td><input type=password name=pword size=10 maxlength=60></td>"; 292: echo "<td><input type=submit value=\"".$NATS->Lang->Item("create.user")."\"></td>"; 293: echo "</tr></form>"; 294: echo "</table><br>"; 295: echo "<br>"; 296: $NATS->DB->Free($r); 297: } 298: else if ($mode=="nodetestsessions") 299: { 300: echo "<b class=\"subtitle\">".$NATS->Lang->Item("sessions.for")." ".$_REQUEST['nodeid']."</b><br><br>"; 301: echo "<b>".$NATS->Lang->Item("sessions.running.for")." ".$_REQUEST['nodeid']."</b><br>"; 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 "<i>".$NATS->Lang->Item("sessions.not.running")."</i><br>"; 305: echo "<table border=0>"; 306: while ($row=$NATS->DB->Fetch_Array($r)) 307: { 308: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 309: echo "<td>".nicedt($row['startx'])." - "; 310: if ($row['finishx']>0) echo nicedt($row['finishx']); 311: else echo $NATS->Lang->Item("sessions.stillrunning"); 312: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">".$NATS->Lang->Item("event.log")."</a>)"; 313: echo "</td></tr>"; 314: } 315: echo "</table>"; 316: $NATS->DB->Free($r); 317: echo "<br>"; 318: echo "<br>"; 319: 320: echo "<b>100 ".$NATS->Lang->Item("sessions.previous")." ".$_REQUEST['nodeid']."</b><br>"; 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 "<i>".$NATS->Lang->Item("sessions.previous.none")."</i><br>"; 324: echo "<table border=0>"; 325: while ($row=$NATS->DB->Fetch_Array($r)) 326: { 327: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 328: echo "<td>".nicedt($row['startx'])." - "; 329: if ($row['finishx']>0) echo nicedt($row['finishx']); 330: else echo $NATS->Lang->Item("sessions.stillrunning"); 331: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">".$NATS->Lang->Item("event.log")."</a>)"; 332: echo "</td></tr>"; 333: } 334: echo "</table>"; 335: $NATS->DB->Free($r); 336: echo "<br>"; 337: echo "<br>"; 338: 339: } 340: else if ($mode=="testsessions") 341: { 342: echo "<b class=\"subtitle\">".$NATS->Lang->Item("sessions.running")."</b><br><br>"; 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 "<i>".$NATS->Lang->Item("sessions.not.running")."</i><br>"; 346: echo "<table border=0>"; 347: while ($row=$NATS->DB->Fetch_Array($r)) 348: { 349: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 350: echo "<td>".nicedt($row['startx'])." - "; 351: if ($row['finishx']>0) echo nicedt($row['finishx']); 352: else echo $NATS->Lang->Item("sessions.stillrunning"); 353: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">".$NATS->Lang->Item("event.log")."</a>)"; 354: echo "</td></tr>"; 355: } 356: echo "</table>"; 357: $NATS->DB->Free($r); 358: echo "<br>"; 359: echo "<form action=admin.php method=post>"; 360: echo "<input type=hidden name=mode value=nodetestsessions>"; 361: echo "<b>100 ".$NATS->Lang->Item("sessions.previous")." </b>"; 362: $q="SELECT nodeid,nodename FROM fnnode ORDER BY weight ASC"; 363: $r=$NATS->DB->Query($q); 364: echo "<select name=nodeid>"; 365: while ($row=$NATS->DB->Fetch_Array($r)) 366: { 367: echo "<option value=".$row['nodeid'].">".$row['nodename']." (".$row['nodeid'].")</option>"; 368: } 369: echo "</select> <input type=submit value=Go></form><br>"; 370: } 371: else if ($mode=="alertactions") 372: { 373: echo "<b class=\"subtitle\">".$NATS->Lang->Item("alert.actions")."</b><br><br>"; 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 "<b>Error Fetching AAID</b><br><br>"; 382: Screen_Footer(); 383: exit(); 384: } 385: echo "<table border=0>"; 386: echo "<form action=admin.php method=post>"; 387: echo "<input type=hidden name=action value=save_aa>"; 388: echo "<input type=hidden name=mode value=alertactions>"; 389: echo "<input type=hidden name=aaid value=".$_REQUEST['aaid'].">"; 390: echo "<tr><td>".$NATS->Lang->Item("id")." : </td><td>action/".$_REQUEST['aaid']."</td></tr>"; 391: 392: echo "<tr><td>".$NATS->Lang->Item("aa.name")." : </td>"; 393: echo "<td>"; 394: echo "<input type=text name=aname size=30 maxlength=120 value=\"".$row['aname']."\">"; 395: echo "</td></tr>"; 396: 397: echo "<tr><td>".$NATS->Lang->Item("aa.type")." : </td><td>"; 398: echo "<select name=atype>"; 399: echo "<option value=".$row['atype'].">".aat_atype($row['atype'])."</option>"; 400: echo "<option value=Disabled>Disabled</option>"; 401: echo "<option value=email>EMail</option>"; 402: echo "<option value=url>URL</option>"; 403: echo "<option value=mqueue>Message Queue</option>"; 404: echo "</select>"; 405: echo "</td></tr>"; 406: 407: echo "<tr><td>".$NATS->Lang->Item("schedule")." : </td><td>"; 408: echo "<select name=scheduleid>"; 409: echo "<option value=0>At All Times</option>"; 410: $sq="SELECT scheduleid,schedulename FROM fnschedule"; 411: $sr=$NATS->DB->Query($sq); 412: while ($sched=$NATS->DB->Fetch_Array($sr)) 413: { 414: if ($sched['scheduleid']==$row['scheduleid']) $s.=" selected"; 415: else $s=""; 416: echo "<option value=".$sched['scheduleid'].$s.">".$sched['schedulename']."</option>"; 417: } 418: echo "</select>"; 419: $NATS->DB->Free($sr); 420: echo " ".hlink("AlertSchedule"); 421: echo "</td></tr>"; 422: 423: 424: echo "<tr><td>".$NATS->Lang->Item("warnings")." : </td>"; 425: if ($row['awarnings']==1) $s=" checked"; 426: else $s=""; 427: echo "<td><input type=checkbox name=awarnings value=1".$s."> ".hlink("AAction:Warnings")."</td></tr>"; 428: 429: echo "<tr><td>".$NATS->Lang->Item("decreases")." : </td>"; 430: if ($row['adecrease']==1) $s=" checked"; 431: else $s=""; 432: echo "<td><input type=checkbox name=adecrease value=1".$s."> ".hlink("AAction:Decreases")."</td></tr>"; 433: 434: echo "<tr><td>".$NATS->Lang->Item("aa.limit")." : </td>"; 435: echo "<td>"; 436: echo "<input type=text name=ctrlimit size=3 maxlength=6 value=\"".$row['ctrlimit']."\"> "; 437: echo hlink("AAction:Limit"); 438: echo "</td></tr>"; 439: 440: echo "<tr><td>".$NATS->Lang->Item("aa.counter")." : </td>"; 441: echo "<td>"; 442: echo "<input type=text name=ctrtoday size=3 maxlength=6 value=\"".$row['ctrtoday']."\"> "; 443: echo hlink("AAction:Counter"); 444: echo " (for "; 445: if ($row['ctrdate']=="") echo "<i>unknown</i>"; 446: else echo substr($row['ctrdate'],6,2)."/".substr($row['ctrdate'],4,2)."/".substr($row['ctrdate'],0,4); 447: echo ")"; 448: echo "</td></tr>"; 449: 450: if ($row['atype']!="url") 451: { 452: 453: echo "<tr><td>".$NATS->Lang->Item("aa.efrom")." : </td>"; 454: echo "<td>"; 455: echo "<input type=text name=efrom size=30 maxlength=120 value=\"".$row['efrom']."\">"; 456: echo "</td></tr>"; 457: 458: echo "<tr><td>".$NATS->Lang->Item("aa.esubj")." : </td><td>"; 459: echo "<select name=esubject>"; 460: echo "<option value=".$row['esubject'].">".aat_esub($row['esubject'])."</option>"; 461: echo "<option value=0>Blank</option>"; 462: echo "<option value=1>Short</option>"; 463: echo "<option value=2>Long</option>"; 464: echo "</select>"; 465: echo "</td></tr>"; 466: 467: } 468: 469: echo "<tr><td>".$NATS->Lang->Item("aa.mtype")." : </td><td>"; 470: echo "<select name=etype>"; 471: echo "<option value=".$row['etype'].">".aat_etype($row['etype'])."</option>"; 472: echo "<option value=0>Short</option>"; 473: echo "<option value=1>Long</option>"; 474: echo "</select>"; 475: echo "</td></tr>"; 476: 477: echo "<tr><td valign=top>".$NATS->Lang->Item("aa.eto")." : </td><td>"; 478: echo "<textarea name=etolist cols=40 rows=6>".$row['etolist']."</textarea>"; 479: echo "</td></tr>"; 480: 481: echo "<tr><td colspan=2><input type=submit value=\"".$NATS->Lang->Item("aa.update")."\"> <a href=admin.php>".$NATS->Lang->Item("aa.cancel")."</a> | "; 482: echo "<a href=admin.php?aaid=".$_REQUEST['aaid']."&mode=alertactions&action=action_test>".$NATS->Lang->Item("aa.test")."</a> | "; 483: echo "<a href=admin.php?aaid_del=".$_REQUEST['aaid']."&mode=alertactions&action=action_delete>".$NATS->Lang->Item("aa.delete")."</a>"; 484: echo "</td></tr>"; 485: 486: echo "</form></table><br><br>"; 487: $NATS->DB->Free($r); 488: } 489: 490: $q="SELECT aaid,atype,aname FROM fnalertaction"; 491: $r=$NATS->DB->Query($q); 492: echo "<table class=\"nicetable\"><tr>"; 493: 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>"; 494: while ($row=$NATS->DB->Fetch_Array($r)) 495: { 496: echo "<tr><td>"; 497: echo "<a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">".$row['aaid']."</a></td>"; 498: echo "<td><a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">".$row['aname']."</a></td><td>"; 499: echo aat_atype($row['atype']); 500: echo "</td></tr>"; 501: } 502: echo "</table>"; 503: 504: echo "<br><a href=admin.php?mode=alertactions&action=action_create><b>".$NATS->Lang->Item("aa.create")."</b></a><br>"; 505: echo "<br><br>"; 506: } 507: else if ($mode=="logs") 508: { 509: // Que ??!? 510: echo "<b class=\"subtitle\">System Logs</b><br><br>"; 511: echo "<a href=log.php>System Event Log</a><br><br>"; 512: 513: echo "<br><br>"; 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 "<b class=\"maintitle\">FreeNATS ".$NATS->Lang->Item("system.status")."</b><br><br>"; 525: 526: $tinfo=array(); 527: 528: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.size")."</b><br><br>"; 529: 530: echo "<table class=\"nicetable\">"; 531: echo "<tr><td><b>".$NATS->Lang->Item("status.tname")."</b></td><td><b>".$NATS->Lang->Item("status.tsize")."</b></td>"; 532: echo "<td><b>".$NATS->Lang->Item("status.tsize.kb")."</b></td><td><b>".$NATS->Lang->Item("status.tother")."</b></td></tr>"; 533: while ($row=$NATS->DB->Fetch_Array($r)) 534: { 535: echo "<tr><td>".$row['Name']."</td><td>".$row['Rows']."</td>"; 536: echo "<td>".round($row['Data_length']/1024,0)."</td><td>"; 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 "<a href=admin.php?mode=status&action=optimize&table=".$row['Name'].">".$NATS->Lang->Item("status.optimise")."</a>]"; 543: } 544: echo "</td></tr>"; 545: } 546: echo "</table>"; 547: $NATS->DB->Free($r); 548: echo "<br><br>"; 549: 550: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.running")."</b><br><br>"; 551: $q="SELECT * FROM fntestrun WHERE finishx=0"; 552: $r=$NATS->DB->Query($q); 553: echo "<b>".$NATS->DB->Num_Rows($r)." ".$NATS->Lang->Item("status.running")."</b><br><br>"; 554: if ($NATS->DB->Num_Rows($r)>0) 555: { 556: echo "<table class=\"nicetable\">"; 557: 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>"; 558: $nowx=time(); 559: $fifteenx=$nowx-(15*60); 560: $hourx=$nowx-(60*60); 561: while ($row=$NATS->DB->Fetch_Array($r)) 562: { 563: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">"; 564: echo $row['trid']."</a></td>"; 565: echo "<td><a href=node.php?nodeid=".$row['fnode']."</a></td>"; 566: echo "<td>".nicedt($row['startx'])." - ".dtago($row['startx'])."</td>"; 567: echo "<td>"; 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 "</td></tr>"; 572: } 573: echo "</table>"; 574: } 575: $NATS->DB->Free($r); 576: echo "<br><br>"; 577: 578: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.env.http")."</b><br><br>"; 579: $env_test_web=1; 580: include("environment.test.php"); 581: echo "<br>"; 582: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.env.cli")."</b><br><br>"; 583: $output=array(); 584: $return=0; 585: exec("php -q environment.test.php",$output,$return); 586: if ($return!=1) 587: { 588: echo "<b style=\"color: red;\">Error: </b> PHP CLI Script did not seem to execute. PHP-CLI is required for FreeNATS (fatal error)<BR />"; 589: } 590: foreach($output as $line) 591: echo $line; 592: 593: echo "<br><br>"; 594: echo $NATS->Lang->Item("status.disclaim"); 595: echo "<br><br>"; 596: 597: } 598: else if ($mode=="variables") 599: { 600: echo "<b class=\"subtitle\">".$NATS->Lang->Item("variables")."</b> ".hlink("Variable")."<br><br>"; 601: $q="SELECT * FROM fnconfig ORDER BY fnc_var ASC"; 602: $r=$NATS->DB->Query($q); 603: echo "<table border=0>"; 604: while ($row=$NATS->DB->Fetch_Array($r)) 605: { 606: echo "<form action=admin.php method=post>"; 607: echo "<input type=hidden name=action value=var_save>"; 608: echo "<input type=hidden name=mode value=variables>"; 609: echo "<input type=hidden name=orig_var value=\"".$row['fnc_var']."\">"; 610: echo "<input type=hidden name=orig_val value=\"".$row['fnc_val']."\">"; 611: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"".$row['fnc_var']."\"> "; 612: echo "</td>"; 613: echo "<td>=</td>"; 614: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"".$row['fnc_val']."\"></td>"; 615: echo "<td><input type=submit value=\"".$NATS->Lang->Item("save")."\"> "; 616: echo hlink("Var:".$row['fnc_var']); 617: echo "</td>"; 618: echo "</tr>"; 619: echo "</form>"; 620: } 621: echo "<form action=admin.php method=post>"; 622: echo "<input type=hidden name=action value=var_new>"; 623: echo "<input type=hidden name=mode value=variables>"; 624: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"\"></td>"; 625: echo "<td>=</td>"; 626: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"\"></td>"; 627: echo "<td><input type=submit value=\"".$NATS->Lang->Item("create")."\"></td>"; 628: echo "</tr>"; 629: echo "</form>"; 630: echo "</table><br><br>"; 631: } 632: else if ($mode=="sysinfo") 633: { 634: echo "<b class=\"subtitle\">FreeNATS ".$NATS->Lang->Item("sys.info")."</b><br><br>"; 635: 636: echo "<b>Version Information</b><br><br>"; 637: echo "<table border=0>"; 638: echo "<tr><td>".$NATS->Lang->Item("version").":</td><td>".$NATS->Version."</td></tr>"; 639: echo "<tr><td>".$NATS->Lang->Item("release").":</td><td>".$NATS->Release."</td></tr>"; 640: echo "<tr><td>".$NATS->Lang->Item("compound").":</td><td>".$NATS->Version.$NATS->Release."</td></tr>"; 641: echo "</table><br><br>"; 642: 643: echo "<b>".$NATS->Lang->Item("reg.modules")."</b><br><br>"; 644: echo "<table class=\"nicetable\" width=600>"; 645: echo "<tr><td><b>".$NATS->Lang->Item("name")."</b></td><td><b>".$NATS->Lang->Item("provides")."</b></td>"; 646: echo "<td><b>".$NATS->Lang->Item("revision")."</b></td><td><b>".$NATS->Lang->Item("additional")."</b></td></tr>"; 647: foreach($NATS->Tests->QuickList as $key => $val) 648: { 649: echo "<tr><td>"; 650: echo $NATS->Tests->Tests[$key]->name; 651: echo "</td><td>"; 652: echo $NATS->Tests->Tests[$key]->type; 653: echo "</td><td>"; 654: echo $NATS->Tests->Tests[$key]->revision; 655: echo "</td><td>"; 656: echo $NATS->Tests->Tests[$key]->additional; 657: echo "</td></tr>"; 658: } 659: echo "</table><br><br>"; 660: 661: echo "<b>".$NATS->Lang->Item("reg.events")."</b><br><br>"; 662: echo "<table class=\"nicetable\" width=600>"; 663: echo "<tr><td><b>".$NATS->Lang->Item("event")."</b></td><td><b>".$NATS->Lang->Item("handlers")."</b></td></tr>"; 664: foreach($NATS->EventHandlers as $key => $val) 665: { 666: echo "<tr><td valign=top>".$key."</td><td>"; 667: foreach($NATS->EventHandlers[$key] as $handler) 668: echo $handler."<br>"; 669: echo "</td></tr>"; 670: } 671: echo "</table><br><br>"; 672: echo "<b>".$NATS->Lang->Item("reg.languages")."</b><br><br>"; 673: $langs=$NATS->Lang->GetLanguages(); 674: foreach($langs as $code => $lang) 675: { 676: echo $code.": ".$lang."<br>"; 677: } 678: echo "<br><br>"; 679: } 680: else // catch-all 681: { 682: echo "<img src=images/options/user.png style=\"vertical-align: bottom;\"> "; 683: echo "<a href=admin.php?mode=users>".$NATS->Lang->Item("user.admin")."</a><br><br>"; 684: echo "<img src=images/options/application.png style=\"vertical-align: bottom;\"> "; 685: echo "<a href=log.php>".$NATS->Lang->Item("event.log")."</a><br><br>"; 686: echo "<img src=images/options/letter_open.png style=\"vertical-align: bottom;\"> "; 687: echo "<a href=admin.php?mode=alertactions>".$NATS->Lang->Item("alert.actions")."</a><br><br>"; 688: echo "<img src=images/options/action_add.png style=\"vertical-align: bottom;\"> "; 689: echo "<a href=admin.php?mode=variables>".$NATS->Lang->Item("variables")."</a><br><br>"; 690: echo "<img src=images/options/file.png style=\"vertical-align: bottom;\"> "; 691: echo "<a href=admin.php?mode=testsessions>".$NATS->Lang->Item("sessions")."</a><br><br>"; 692: echo "<img src=images/options/time.png style=\"vertical-align: bottom;\"> "; 693: echo "<a href=schedule.php>".$NATS->Lang->Item("schedules")."</a><br><br>"; 694: echo "<img src=images/options/folder_open.png style=\"vertical-align: bottom;\"> "; 695: echo "<a href=filemanager.php>".$NATS->Lang->Item("file.manager")."</a><br><br>"; 696: 697: if ($NATS->Cfg->Get("site.enable.adminsql",0)==1) 698: { 699: echo "<img src=images/options/folder_files.png style=\"vertical-align: bottom;\"> "; 700: echo "<a href=admin.sql.php>".$NATS->Lang->Item("sql.console")."</a><br><br>"; 701: } 702: echo "<img src=images/options/search.png style=\"vertical-align: bottom;\"> "; 703: echo "<a href=admin.dns.php>".$NATS->Lang->Item("dns.console")."</a><br><br>"; 704: echo "<img src=images/options/save.png style=\"vertical-align: bottom;\"> "; 705: echo "<a href=admin.backup.php>".$NATS->Lang->Item("backup.restore")."</a><br><br>"; 706: echo "<img src=images/options/reply.png style=\"vertical-align: bottom;\"> "; 707: echo "<a href=admin.php?mode=status>".$NATS->Lang->Item("sys.status")."</a><br><br>"; 708: echo "<img src=images/help16.png style=\"vertical-align: bottom;\"> "; 709: echo "<a href=admin.php?mode=sysinfo>".$NATS->Lang->Item("sys.info")."</a><br><br>"; 710: } 711: 712: if ($mode!="") echo "<a href=admin.php>".$NATS->Lang->Item("back.to.admin")."</a><br><br>"; 713: ?> 714: 715: 716: <?php 717: Screen_Footer(); 718: ?> 719: