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