Viewing File server/web/admin.php of 1.19.1b
|
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: $esubjects = array ( 527: 0 => $NATS->Lang->Item("aa.esubj.blank"), 528: 1 => $NATS->Lang->Item("aa.esubj.short"), 529: 2 => $NATS->Lang->Item("aa.esubj.long"), 530: 3 => $NATS->Lang->Item("aa.esubj.nodeid"), 531: ); 532: echo "<select name=esubject>"; 533: foreach ($esubjects as $id => $desc) 534: echo '<option value="'.$id.'"'.($row['esubject'] == $id ? ' selected' :'').">".$desc."</option>"; 535: /* 536: echo "<option value=0>Blank</option>"; 537: echo "<option value=1>Short</option>"; 538: echo "<option value=2>Long</option>"; 539: */ 540: echo "</select>"; 541: echo "</td></tr>"; 542: 543: } 544: 545: echo "<tr><td>".$NATS->Lang->Item("aa.mtype")." : </td><td>"; 546: echo "<select name=etype>"; 547: echo "<option value=".$row['etype'].">".aat_etype($row['etype'])."</option>"; 548: echo "<option value=0>Short</option>"; 549: echo "<option value=1>Long</option>"; 550: echo "</select>"; 551: echo "</td></tr>"; 552: 553: echo "<tr><td valign=top>".$NATS->Lang->Item("aa.eto")." : </td><td>"; 554: echo "<textarea name=etolist cols=40 rows=6>".$row['etolist']."</textarea>"; 555: echo "</td></tr>"; 556: 557: echo "<tr><td colspan=2><input type=submit value=\"".$NATS->Lang->Item("aa.update")."\"> <a href=admin.php>".$NATS->Lang->Item("aa.cancel")."</a> | "; 558: echo "<a href=admin.php?aaid=".$_REQUEST['aaid']."&mode=alertactions&action=action_test>".$NATS->Lang->Item("aa.test")."</a> | "; 559: echo "<a href=admin.php?aaid_del=".$_REQUEST['aaid']."&mode=alertactions&action=action_delete>".$NATS->Lang->Item("aa.delete")."</a>"; 560: echo "</td></tr>"; 561: 562: echo "</form></table><br><br>"; 563: $NATS->DB->Free($r); 564: } 565: 566: $q="SELECT aaid,atype,aname FROM fnalertaction"; 567: $r=$NATS->DB->Query($q); 568: echo "<table class=\"nicetable\"><tr>"; 569: 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>"; 570: while ($row=$NATS->DB->Fetch_Array($r)) 571: { 572: echo "<tr><td>"; 573: echo "<a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">".$row['aaid']."</a></td>"; 574: echo "<td><a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">".$row['aname']."</a></td><td>"; 575: echo aat_atype($row['atype']); 576: echo "</td></tr>"; 577: } 578: echo "</table>"; 579: 580: echo "<br><a href=admin.php?mode=alertactions&action=action_create><b>".$NATS->Lang->Item("aa.create")."</b></a><br>"; 581: echo "<br><br>"; 582: } 583: else if ($mode=="logs") 584: { 585: // Que ??!? 586: echo "<b class=\"subtitle\">System Logs</b><br><br>"; 587: echo "<a href=log.php>System Event Log</a><br><br>"; 588: 589: echo "<br><br>"; 590: } 591: else if ($mode=="status") 592: { 593: // system healthcheck 594: 595: // usage data 596: //$q="SELECT COUNT(fnnode.nodeid),COUNT(fngroup.groupid),COUNT( FROM fnnode,fngroup"; 597: $q="SHOW TABLE STATUS LIKE \"fn%\""; 598: $r=$NATS->DB->Query($q); 599: 600: echo "<b class=\"maintitle\">FreeNATS ".$NATS->Lang->Item("system.status")."</b><br><br>"; 601: 602: $tinfo=array(); 603: 604: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.size")."</b><br><br>"; 605: 606: echo "<table class=\"nicetable\">"; 607: echo "<tr><td><b>".$NATS->Lang->Item("status.tname")."</b></td><td><b>".$NATS->Lang->Item("status.tsize")."</b></td>"; 608: echo "<td><b>".$NATS->Lang->Item("status.tsize.kb")."</b></td><td><b>".$NATS->Lang->Item("status.tother")."</b></td></tr>"; 609: while ($row=$NATS->DB->Fetch_Array($r)) 610: { 611: echo "<tr><td>".$row['Name']."</td><td>".$row['Rows']."</td>"; 612: echo "<td>".round($row['Data_length']/1024,0)."</td><td>"; 613: if (isset($tinfo[$row['Name']])) echo $tinfo[$row['Name']]; 614: else echo " "; 615: if ($row['Data_free']>0) 616: { 617: echo " [".round($row['Data_free']/1024,0)."kb ".$NATS->Lang->Item("status.free")." - "; 618: echo "<a href=admin.php?mode=status&action=optimize&table=".$row['Name'].">".$NATS->Lang->Item("status.optimise")."</a>]"; 619: } 620: echo "</td></tr>"; 621: } 622: echo "</table>"; 623: $NATS->DB->Free($r); 624: echo "<br><br>"; 625: 626: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.running")."</b><br><br>"; 627: $q="SELECT * FROM fntestrun WHERE finishx=0"; 628: $r=$NATS->DB->Query($q); 629: echo "<b>".$NATS->DB->Num_Rows($r)." ".$NATS->Lang->Item("status.running")."</b><br><br>"; 630: if ($NATS->DB->Num_Rows($r)>0) 631: { 632: echo "<table class=\"nicetable\">"; 633: 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>"; 634: $nowx=time(); 635: $fifteenx=$nowx-(15*60); 636: $hourx=$nowx-(60*60); 637: while ($row=$NATS->DB->Fetch_Array($r)) 638: { 639: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">"; 640: echo $row['trid']."</a></td>"; 641: echo "<td><a href=node.php?nodeid=".$row['fnode']."</a></td>"; 642: echo "<td>".nicedt($row['startx'])." - ".dtago($row['startx'])."</td>"; 643: echo "<td>"; 644: if ($row['startx']<$hourx) echo $NATS->Lang->Item("status.run.error"); 645: else if($row['startx']<$fifteenx) echo $NATS->Lang->Item("status.run.warn"); 646: else echo " "; 647: echo "</td></tr>"; 648: } 649: echo "</table>"; 650: } 651: $NATS->DB->Free($r); 652: echo "<br><br>"; 653: 654: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.env.http")."</b><br><br>"; 655: $env_test_web=1; 656: include("environment.test.php"); 657: echo "<br>"; 658: echo "<b class=\"subtitle\">".$NATS->Lang->Item("status.env.cli")."</b><br><br>"; 659: $output=array(); 660: $return=0; 661: exec("php -q environment.test.php",$output,$return); 662: if ($return!=1) 663: { 664: echo "<b style=\"color: red;\">Error: </b> PHP CLI Script did not seem to execute. PHP-CLI is required for FreeNATS (fatal error)<BR />"; 665: } 666: foreach($output as $line) 667: echo $line; 668: 669: echo "<br>"; 670: echo "<a href=admin.php?mode=phpinfo>Click here for very detailed PHP environment information for web and CLI</a>"; 671: 672: echo "<br><br>"; 673: echo $NATS->Lang->Item("status.disclaim"); 674: echo "<br><br>"; 675: 676: } 677: else if ($mode=="phpinfo") 678: { 679: echo "<H1>".$NATS->Lang->Item("status.env.http")."</H1><br>"; 680: $env_test_web=1; 681: include("environment.test.php"); 682: echo "<br>"; 683: ob_start(); 684: phpinfo(); 685: $info=ob_get_contents(); 686: ob_end_clean(); 687: $info=preg_replace("/<style.*<\/style>/is","",$info); 688: echo "<DIV STYLE=\"font-family: monospace;\">"; 689: echo nl2br(strip_tags($info)); 690: echo "</DIV><BR><HR><BR>\n"; 691: 692: echo "<H1>".$NATS->Lang->Item("status.env.cli")."</H1><br>"; 693: $output=array(); 694: $return=0; 695: exec("php -q environment.test.php full",$output,$return); 696: if ($return!=1) 697: { 698: echo "<b style=\"color: red;\">Error: </b> PHP CLI Script did not seem to execute. PHP-CLI is required for FreeNATS (fatal error)<BR />"; 699: } 700: foreach($output as $line) 701: echo $line; 702: } 703: else if ($mode=="variables") 704: { 705: echo "<b class=\"subtitle\">".$NATS->Lang->Item("variables")."</b> ".hlink("Variable")."<br><br>"; 706: $q="SELECT * FROM fnconfig ORDER BY fnc_var ASC"; 707: $r=$NATS->DB->Query($q); 708: echo "<table border=0>"; 709: while ($row=$NATS->DB->Fetch_Array($r)) 710: { 711: echo "<form action=admin.php method=post>"; 712: echo "<input type=hidden name=action value=var_save>"; 713: echo "<input type=hidden name=mode value=variables>"; 714: echo "<input type=hidden name=orig_var value=\"".$row['fnc_var']."\">"; 715: echo "<input type=hidden name=orig_val value=\"".$row['fnc_val']."\">"; 716: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"".$row['fnc_var']."\"> "; 717: echo "</td>"; 718: echo "<td>=</td>"; 719: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"".$row['fnc_val']."\"></td>"; 720: echo "<td><input type=submit value=\"".$NATS->Lang->Item("save")."\"> "; 721: echo hlink("Var:".$row['fnc_var']); 722: echo "</td>"; 723: echo "</tr>"; 724: echo "</form>"; 725: } 726: echo "<form action=admin.php method=post>"; 727: echo "<input type=hidden name=action value=var_new>"; 728: echo "<input type=hidden name=mode value=variables>"; 729: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"\"></td>"; 730: echo "<td>=</td>"; 731: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"\"></td>"; 732: echo "<td><input type=submit value=\"".$NATS->Lang->Item("create")."\"></td>"; 733: echo "</tr>"; 734: echo "</form>"; 735: echo "</table><br><br>"; 736: } 737: else if ($mode=="sysinfo") 738: { 739: echo "<b class=\"subtitle\">FreeNATS ".$NATS->Lang->Item("sys.info")."</b><br><br>"; 740: 741: echo "<b>Version Information</b><br><br>"; 742: echo "<table border=0>"; 743: echo "<tr><td>".$NATS->Lang->Item("version").":</td><td>".$NATS->Version."</td></tr>"; 744: echo "<tr><td>".$NATS->Lang->Item("release").":</td><td>".$NATS->Release."</td></tr>"; 745: echo "<tr><td>".$NATS->Lang->Item("compound").":</td><td>".$NATS->Version.$NATS->Release."</td></tr>"; 746: echo "</table><br><br>"; 747: 748: echo "<b>".$NATS->Lang->Item("reg.modules")."</b><br><br>"; 749: echo "<table class=\"nicetable\" width=600>"; 750: echo "<tr><td><b>".$NATS->Lang->Item("name")."</b></td><td><b>".$NATS->Lang->Item("provides")."</b></td>"; 751: echo "<td><b>".$NATS->Lang->Item("revision")."</b></td><td><b>".$NATS->Lang->Item("additional")."</b></td></tr>"; 752: foreach($NATS->Tests->QuickList as $key => $val) 753: { 754: echo "<tr><td>"; 755: echo $NATS->Tests->Tests[$key]->name; 756: echo "</td><td>"; 757: echo $NATS->Tests->Tests[$key]->type; 758: echo "</td><td>"; 759: echo $NATS->Tests->Tests[$key]->revision; 760: echo "</td><td>"; 761: echo $NATS->Tests->Tests[$key]->additional; 762: echo "</td></tr>"; 763: } 764: echo "</table><br><br>"; 765: 766: echo "<b>".$NATS->Lang->Item("reg.events")."</b><br><br>"; 767: echo "<table class=\"nicetable\" width=600>"; 768: echo "<tr><td><b>".$NATS->Lang->Item("event")."</b></td><td><b>".$NATS->Lang->Item("handlers")."</b></td></tr>"; 769: foreach($NATS->EventHandlers as $key => $val) 770: { 771: echo "<tr><td valign=top>".$key."</td><td>"; 772: foreach($NATS->EventHandlers[$key] as $handler) 773: echo $handler."<br>"; 774: echo "</td></tr>"; 775: } 776: echo "</table><br><br>"; 777: echo "<b>".$NATS->Lang->Item("reg.languages")."</b><br><br>"; 778: $langs=$NATS->Lang->GetLanguages(); 779: foreach($langs as $code => $lang) 780: { 781: echo $code.": ".$lang."<br>"; 782: } 783: echo "<br><br>"; 784: } 785: else // catch-all 786: { 787: echo "<H3>".$NATS->Lang->Item("tests.alerting")."</H3>\n"; 788: 789: $suspend = $NATS->Cfg->Get("site.tester.suspended",0) == 1 ? true : false; 790: echo "<form action=\"admin.php\" method=\"post\">"; 791: $col = $suspend ? "red" : "green"; 792: $txt = $suspend ? $NATS->Lang->Item("testing.suspended") : $NATS->Lang->Item("testing.not.suspended"); 793: $opt = $suspend ? $NATS->Lang->Item("testing.resume") : $NATS->Lang->Item("testing.suspend"); 794: $val = $suspend ? 0 : 1; 795: echo "<b style=\"color: ".$col."\">".$txt."</b> "; 796: echo "<input type=\"hidden\" name=\"action\" value=\"test_suspend\" />"; 797: echo "<input type=\"hidden\" name=\"suspend\" value=\"".$val."\" />"; 798: echo "<input type=\"submit\" value=\"".$opt."\" />"; 799: echo "</form><br />"; 800: 801: echo "<img src=images/options/letter_open.png style=\"vertical-align: bottom;\"> "; 802: echo "<a href=admin.php?mode=alertactions>".$NATS->Lang->Item("alert.actions")."</a><br><br>"; 803: 804: echo "<img src=images/options/file.png style=\"vertical-align: bottom;\"> "; 805: echo "<a href=admin.php?mode=testsessions>".$NATS->Lang->Item("sessions")."</a><br><br>"; 806: 807: echo "<img src=images/options/time.png style=\"vertical-align: bottom;\"> "; 808: echo "<a href=schedule.php>".$NATS->Lang->Item("schedules")."</a><br><br>"; 809: 810: echo "<img src=images/options/rss.png style=\"vertical-align: bottom;\"> "; 811: echo "<a href=admin.rss.php>".$NATS->Lang->Item("rss.feed")."</a><br><br>"; 812: 813: echo "<H3>".$NATS->Lang->Item("system.settings")."</H3>\n"; 814: 815: echo "<img src=images/options/user.png style=\"vertical-align: bottom;\"> "; 816: echo "<a href=admin.php?mode=users>".$NATS->Lang->Item("user.admin")."</a><br><br>"; 817: 818: echo "<img src=images/options/action_add.png style=\"vertical-align: bottom;\"> "; 819: echo "<a href=admin.php?mode=variables>".$NATS->Lang->Item("variables")."</a><br><br>"; 820: 821: echo "<H3>".$NATS->Lang->Item("tools")."</H3>\n"; 822: 823: echo "<img src=images/options/folder_open.png style=\"vertical-align: bottom;\"> "; 824: echo "<a href=filemanager.php>".$NATS->Lang->Item("file.manager")."</a><br><br>"; 825: 826: if ($NATS->Cfg->Get("site.enable.adminsql",0)==1) 827: { 828: echo "<img src=images/options/folder_files.png style=\"vertical-align: bottom;\"> "; 829: echo "<a href=admin.sql.php>".$NATS->Lang->Item("sql.console")."</a><br><br>"; 830: } 831: 832: echo "<img src=images/options/search.png style=\"vertical-align: bottom;\"> "; 833: echo "<a href=admin.dns.php>".$NATS->Lang->Item("dns.console")."</a><br><br>"; 834: 835: echo "<img src=images/options/save.png style=\"vertical-align: bottom;\"> "; 836: echo "<a href=admin.backup.php>".$NATS->Lang->Item("backup.restore")."</a><br><br>"; 837: 838: echo "<H3>".$NATS->Lang->Item("logs.info")."</H3>\n"; 839: 840: echo "<img src=images/options/application.png style=\"vertical-align: bottom;\"> "; 841: echo "<a href=log.php>".$NATS->Lang->Item("event.log")."</a><br><br>"; 842: 843: echo "<img src=images/options/reply.png style=\"vertical-align: bottom;\"> "; 844: echo "<a href=admin.php?mode=status>".$NATS->Lang->Item("sys.status")."</a><br><br>"; 845: 846: echo "<img src=images/help16.png style=\"vertical-align: bottom;\"> "; 847: echo "<a href=admin.php?mode=sysinfo>".$NATS->Lang->Item("sys.info")."</a><br><br>"; 848: 849: /* 850: echo "<img src=images/options/user.png style=\"vertical-align: bottom;\"> "; 851: echo "<a href=admin.php?mode=users>".$NATS->Lang->Item("user.admin")."</a><br><br>"; 852: echo "<img src=images/options/application.png style=\"vertical-align: bottom;\"> "; 853: echo "<a href=log.php>".$NATS->Lang->Item("event.log")."</a><br><br>"; 854: echo "<img src=images/options/letter_open.png style=\"vertical-align: bottom;\"> "; 855: echo "<a href=admin.php?mode=alertactions>".$NATS->Lang->Item("alert.actions")."</a><br><br>"; 856: echo "<img src=images/options/action_add.png style=\"vertical-align: bottom;\"> "; 857: echo "<a href=admin.php?mode=variables>".$NATS->Lang->Item("variables")."</a><br><br>"; 858: echo "<img src=images/options/file.png style=\"vertical-align: bottom;\"> "; 859: echo "<a href=admin.php?mode=testsessions>".$NATS->Lang->Item("sessions")."</a><br><br>"; 860: echo "<img src=images/options/time.png style=\"vertical-align: bottom;\"> "; 861: echo "<a href=schedule.php>".$NATS->Lang->Item("schedules")."</a><br><br>"; 862: echo "<img src=images/options/folder_open.png style=\"vertical-align: bottom;\"> "; 863: echo "<a href=filemanager.php>".$NATS->Lang->Item("file.manager")."</a><br><br>"; 864: 865: if ($NATS->Cfg->Get("site.enable.adminsql",0)==1) 866: { 867: echo "<img src=images/options/folder_files.png style=\"vertical-align: bottom;\"> "; 868: echo "<a href=admin.sql.php>".$NATS->Lang->Item("sql.console")."</a><br><br>"; 869: } 870: echo "<img src=images/options/search.png style=\"vertical-align: bottom;\"> "; 871: echo "<a href=admin.dns.php>".$NATS->Lang->Item("dns.console")."</a><br><br>"; 872: echo "<img src=images/options/save.png style=\"vertical-align: bottom;\"> "; 873: echo "<a href=admin.backup.php>".$NATS->Lang->Item("backup.restore")."</a><br><br>"; 874: echo "<img src=images/options/reply.png style=\"vertical-align: bottom;\"> "; 875: echo "<a href=admin.php?mode=status>".$NATS->Lang->Item("sys.status")."</a><br><br>"; 876: echo "<img src=images/help16.png style=\"vertical-align: bottom;\"> "; 877: echo "<a href=admin.php?mode=sysinfo>".$NATS->Lang->Item("sys.info")."</a><br><br>"; 878: echo "<img src=images/options/rss.png style=\"vertical-align: bottom;\"> "; 879: echo "<a href=admin.rss.php>".$NATS->Lang->Item("rss.feed")."</a><br><br>"; 880: */ 881: } 882: 883: if ($mode!="") echo "<a href=admin.php>".$NATS->Lang->Item("back.to.admin")."</a><br><br>"; 884: ?> 885: 886: 887: <?php 888: Screen_Footer(); 889: ?> 890: