Viewing File server/web/admin.php of 0.04.07a
|
1: <?php 2: /* ------------------------------------------------------------- 3: This file is part of FreeNATS 4: 5: FreeNATS is (C) Copyright 2008 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("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="Save User Failed or Nothing Changed"; 43: else $amsg="Save User ".$_REQUEST['username']." Succeeded"; 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="Create User Failed"; 52: else $amsg="User ".$_REQUEST['username']." Created"; 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=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="User ".$_REQUEST['username']." 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="Update/Delete Variable Failed"; 87: else $amsg="Updated/Deleted Variable"; 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="Create Variable Failed"; 94: else $amsg="Created Variable"; 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: if (isset($_REQUEST['efrom'])) $q.="efrom=\"".ss($_REQUEST['efrom'])."\","; 104: $q.="etolist=\"".ss($_REQUEST['etolist'])."\","; 105: if (isset($_REQUEST['esubject'])) $q.="esubject=".ss($_REQUEST['esubject']).","; 106: $q.="etype=".ss($_REQUEST['etype']); 107: if (isset($_REQUEST['awarnings'])) $q.=",awarnings=".ss($_REQUEST['awarnings']); 108: else $q.=",awarnings=0"; 109: if (isset($_REQUEST['adecrease'])) $q.=",adecrease=".ss($_REQUEST['adecrease']); 110: else $q.=",adecrease=0"; 111: $q.=" WHERE aaid=".ss($_REQUEST['aaid']); 112: //echo $q; 113: $NATS->DB->Query($q); 114: if ($NATS->DB->Affected_Rows()<=0) $amsg="Action Update Failed or Nothing Changed"; 115: else $amsg="Action Updated"; 116: break; 117: 118: case "action_test": 119: $q="SELECT mdata FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid'])." LIMIT 0,1"; 120: $r=$NATS->DB->Query($q); 121: $row=$NATS->DB->Fetch_Array($r); 122: $oldm=$row['mdata']; 123: $q="UPDATE fnalertaction SET mdata=\"** ACTION TEST **\" WHERE aaid=".ss($_REQUEST['aaid']); 124: $NATS->DB->Query($q); 125: $NATS->ActionFlush(); 126: $q="UPDATE fnalertaction SET mdata=\"".ss($oldm)."\" WHERE aaid=".ss($_REQUEST['aaid']); 127: $NATS->DB->Query($q); 128: $amsg="Alert Action Tested & Flushed"; 129: break; 130: 131: case "action_create": 132: $q="INSERT INTO fnalertaction(atype) VALUES(\"\")"; 133: $NATS->DB->Query($q); 134: $amsg="Created New Alert Action"; 135: break; 136: 137: case "action_delete": 138: if (!isset($_REQUEST['confirmed'])) 139: { 140: $back=urlencode("admin.php?mode=alertactions&aaid_del=".$_REQUEST['aaid_del']."&action=action_delete&confirmed=1"); 141: $url="confirm.php?action=Delete+alert+action&back=".$back; 142: header("Location: ".$url); 143: exit(); 144: } 145: // otherwise confirmed 146: $q="DELETE FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid_del']); 147: $NATS->DB->Query($q); 148: if ($NATS->DB->Affected_Rows()>0) $amsg="Alert Action Deleted"; 149: else $amsg="Alert Action Delete Failed"; 150: $q="DELETE FROM fnnalink WHERE aaid=".ss($_REQUEST['aaid_del']); 151: $NATS->DB->Query($q); 152: break; 153: 154: case "optimize": 155: $q="OPTIMIZE TABLE ".ss($_REQUEST['table']); 156: $NATS->DB->Query($q); 157: $msg="Optimised Table ".$_REQUEST['table']; 158: break; 159: 160: } 161: } 162: 163: ob_end_flush(); 164: Screen_Header("Administration Interface",1); 165: 166: if (isset($_REQUEST['mode'])) $mode=$_REQUEST['mode']; 167: else $mode=""; 168: 169: if (isset($_REQUEST['message'])) echo "<br><b>".$_REQUEST['message']."</b><br>"; 170: if (isset($amsg)) echo "<br><b>".$amsg."</b><br>"; 171: 172: echo "<br>"; 173: if (isset($_REQUEST['updatecheck'])) 174: { 175: // check for updates 176: $dq="?CheckVersion=".$NATS->Version."&JSMode=1"; 177: $dl="http://www.purplepixie.org/freenats/download.php"; 178: $du=$dl.$dq; 179: /* old method 180: $cp=@fopen($du,"r"); 181: if ($cp>0) 182: { 183: $cs=@fgets($cp,128); 184: @fclose($cp); 185: if ($cs=="0") echo "System Up to Date<br>"; 186: else echo "Update Available: <a href=http://www.purplepixie.org/freenats>".$cs."</a><br>"; 187: } 188: else echo "Error Checking for Updates<br>"; 189: */ 190: echo "Checking Version: "; 191: echo "<script type=\"text/javascript\" src=\"".$du."\"></script>\n"; 192: echo "<br><br>"; 193: } 194: else if ($mode=="") 195: { 196: echo "<a href=admin.php?updatecheck=1><b>Check for FreeNATS Updates</b></a><br><br>"; 197: } 198: 199: function tul($l) 200: { 201: if ($l>9) return "Administrator"; 202: if ($l>4) return "Power User"; 203: if ($l>0) return "Normal User"; 204: return "Disabled"; 205: } 206: 207: function aat_etype($type) 208: { 209: switch ($type) 210: { 211: case 0: return "Short"; 212: case 1: return "Long"; 213: default: return "Unknown"; 214: } 215: } 216: 217: function aat_esub($type) 218: { 219: switch ($type) 220: { 221: case 0: return "Blank"; 222: case 1: return "Short"; 223: case 2: return "Long"; 224: default: return "Unknown"; 225: } 226: } 227: 228: function aat_atype($type) 229: { 230: switch($type) 231: { 232: case "": case "Disabled": return "Disabled"; 233: case "email": return "EMail"; 234: case "url": return "URL"; 235: default: return "Unknown"; 236: } 237: } 238: 239: if ($mode=="users") 240: { 241: echo "<b class=\"subtitle\">Users</b><br><br>"; 242: 243: 244: 245: 246: $q="SELECT username,realname,userlevel FROM fnuser"; 247: $r=$NATS->DB->Query($q); 248: echo "<table border=0>"; 249: echo "<tr><td><b>Username </b></td>"; 250: echo "<td><b>Real Name</b></td><td><b>User Level</b></td><td><b>Password</b></td><td><b>Options</b></td></tr>"; 251: while ($row=$NATS->DB->Fetch_Array($r)) 252: { 253: echo "<form action=admin.php method=post>"; 254: echo "<input type=hidden name=action value=save_user>"; 255: echo "<input type=hidden name=mode value=users>"; 256: echo "<input type=hidden name=username value=\"".$row['username']."\">"; 257: echo "<tr><td>".$row['username']."</td>"; 258: echo "<td><input type=text name=realname value=\"".$row['realname']."\" size=20 maxlength=120></td>"; 259: echo "<td><select name=userlevel>"; 260: echo "<option value=".$row['userlevel'].">".tul($row['userlevel'])."</option>"; 261: echo "<option value=0>".tul(0)."</option>"; 262: echo "<option value=1>".tul(1)."</option>"; 263: echo "<option value=5>".tul(5)."</option>"; 264: echo "<option value=10>".tul(10)."</option>"; 265: echo "</select>"; 266: echo "</td>"; 267: echo "<td><input type=password name=pword value=\"_NOTTHIS_\" size=10 maxlength=128></td>"; 268: echo "<td><input type=submit value=\"Save\"> <a href=admin.php?action=delete_user&username=".$row['username'].">Delete</a></td>"; 269: echo "</tr>"; 270: echo "</form>"; 271: } 272: echo "<form action=admin.php method=post>"; 273: echo "<input type=hidden name=action value=create_user>"; 274: echo "<input type=hidden name=mode value=users>"; 275: echo "<tr><td><input type=text name=username size=20 maxlength=60></td>"; 276: echo "<td><input type=text name=realname size=20 maxlength=120></td>"; 277: echo "<td><select name=userlevel>"; 278: echo "<option value=1>".tul(1)."</option>"; 279: echo "<option value=0>".tul(0)."</option>"; 280: echo "<option value=5>".tul(5)."</option>"; 281: echo "<option value=10>".tul(10)."</option>"; 282: echo "</select></td>"; 283: echo "<td><input type=password name=pword size=10 maxlength=60></td>"; 284: echo "<td><input type=submit value=\"Create User\"></td>"; 285: echo "</tr></form>"; 286: echo "</table><br>"; 287: echo "<br>"; 288: $NATS->DB->Free($r); 289: } 290: else if ($mode=="nodetestsessions") 291: { 292: echo "<b class=\"subtitle\">Test Sessions for ".$_REQUEST['nodeid']."</b><br><br>"; 293: echo "<b>Running Sessions for ".$_REQUEST['nodeid']."</b><br>"; 294: $q="SELECT * FROM fntestrun WHERE fnode=\"".ss($_REQUEST['nodeid'])."\" AND finishx=0 ORDER BY trid DESC"; 295: $r=$NATS->DB->Query($q); 296: if ($NATS->DB->Num_Rows($r)==0) echo "<i>No running test sessions</i><br>"; 297: echo "<table border=0>"; 298: while ($row=$NATS->DB->Fetch_Array($r)) 299: { 300: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 301: echo "<td>".nicedt($row['startx'])." - "; 302: if ($row['finishx']>0) echo nicedt($row['finishx']); 303: else echo "Still Running"; 304: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">System Logs</a>)"; 305: echo "</td></tr>"; 306: } 307: echo "</table>"; 308: $NATS->DB->Free($r); 309: echo "<br>"; 310: echo "<br>"; 311: 312: echo "<b>Last 100 Previous Sessions for ".$_REQUEST['nodeid']."</b><br>"; 313: $q="SELECT * FROM fntestrun WHERE fnode=\"".ss($_REQUEST['nodeid'])."\" ORDER BY trid DESC LIMIT 0,100"; 314: $r=$NATS->DB->Query($q); 315: if ($NATS->DB->Num_Rows($r)==0) echo "<i>No previous test sessions</i><br>"; 316: echo "<table border=0>"; 317: while ($row=$NATS->DB->Fetch_Array($r)) 318: { 319: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 320: echo "<td>".nicedt($row['startx'])." - "; 321: if ($row['finishx']>0) echo nicedt($row['finishx']); 322: else echo "Still Running"; 323: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">System Logs</a>)"; 324: echo "</td></tr>"; 325: } 326: echo "</table>"; 327: $NATS->DB->Free($r); 328: echo "<br>"; 329: echo "<br>"; 330: 331: } 332: else if ($mode=="testsessions") 333: { 334: echo "<b class=\"subtitle\">Running Test Sessions</b><br><br>"; 335: $q="SELECT * FROM fntestrun WHERE finishx=0 ORDER BY trid DESC"; 336: $r=$NATS->DB->Query($q); 337: if ($NATS->DB->Num_Rows($r)==0) echo "<i>No running test sessions</i><br>"; 338: echo "<table border=0>"; 339: while ($row=$NATS->DB->Fetch_Array($r)) 340: { 341: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">run/".$row['trid']."</a></td>"; 342: echo "<td>".nicedt($row['startx'])." - "; 343: if ($row['finishx']>0) echo nicedt($row['finishx']); 344: else echo "Still Running"; 345: echo " (<a href=log.php?f_entry=Tester+".$row['trid'].">System Logs</a>)"; 346: echo "</td></tr>"; 347: } 348: echo "</table>"; 349: $NATS->DB->Free($r); 350: echo "<br>"; 351: echo "<form action=admin.php method=post>"; 352: echo "<input type=hidden name=mode value=nodetestsessions>"; 353: echo "<b>Last 100 Test Sessions for </b>"; 354: $q="SELECT nodeid,nodename FROM fnnode ORDER BY weight ASC"; 355: $r=$NATS->DB->Query($q); 356: echo "<select name=nodeid>"; 357: while ($row=$NATS->DB->Fetch_Array($r)) 358: { 359: echo "<option value=".$row['nodeid'].">".$row['nodename']." (".$row['nodeid'].")</option>"; 360: } 361: echo "</select> <input type=submit value=Go></form><br>"; 362: } 363: else if ($mode=="alertactions") 364: { 365: echo "<b class=\"subtitle\">Alert Actions</b><br><br>"; 366: 367: if (isset($_REQUEST['aaid'])) 368: { // view/edit aaid 369: $q="SELECT * FROM fnalertaction WHERE aaid=".ss($_REQUEST['aaid']); 370: $r=$NATS->DB->Query($q); 371: if (!$row=$NATS->DB->Fetch_Array($r)) 372: { 373: echo "<b>Error Fetching AAID</b><br><br>"; 374: Screen_Footer(); 375: exit(); 376: } 377: echo "<table border=0>"; 378: echo "<form action=admin.php method=post>"; 379: echo "<input type=hidden name=action value=save_aa>"; 380: echo "<input type=hidden name=mode value=alertactions>"; 381: echo "<input type=hidden name=aaid value=".$_REQUEST['aaid'].">"; 382: echo "<tr><td>ID : </td><td>action/".$_REQUEST['aaid']."</td></tr>"; 383: 384: echo "<tr><td>Action Name : </td>"; 385: echo "<td>"; 386: echo "<input type=text name=aname size=30 maxlength=120 value=\"".$row['aname']."\">"; 387: echo "</td></tr>"; 388: 389: echo "<tr><td>Type : </td><td>"; 390: echo "<select name=atype>"; 391: echo "<option value=".$row['atype'].">".aat_atype($row['atype'])."</option>"; 392: echo "<option value=Disabled>Disabled</option>"; 393: echo "<option value=email>EMail</option>"; 394: echo "<option value=url>URL</option>"; 395: echo "</select>"; 396: echo "</td></tr>"; 397: 398: echo "<tr><td>Warnings : </td>"; 399: if ($row['awarnings']==1) $s=" checked"; 400: else $s=""; 401: echo "<td><input type=checkbox name=awarnings value=1".$s."> ".hlink("AAction:Warnings")."</td></tr>"; 402: 403: echo "<tr><td>Decreases : </td>"; 404: if ($row['adecrease']==1) $s=" checked"; 405: else $s=""; 406: echo "<td><input type=checkbox name=adecrease value=1".$s."> ".hlink("AAction:Decreases")."</td></tr>"; 407: 408: echo "<tr><td>Action Limit : </td>"; 409: echo "<td>"; 410: echo "<input type=text name=ctrlimit size=3 maxlength=6 value=\"".$row['ctrlimit']."\"> "; 411: echo hlink("AAction:Limit"); 412: echo "</td></tr>"; 413: 414: echo "<tr><td>Action Counter : </td>"; 415: echo "<td>"; 416: echo "<input type=text name=ctrtoday size=3 maxlength=6 value=\"".$row['ctrtoday']."\"> "; 417: echo hlink("AAction:Counter"); 418: echo " (for "; 419: if ($row['ctrdate']=="") echo "<i>unknown</i>"; 420: else echo substr($row['ctrdate'],6,2)."/".substr($row['ctrdate'],4,2)."/".substr($row['ctrdate'],0,4); 421: echo ")"; 422: echo "</td></tr>"; 423: 424: if ($row['atype']!="url") 425: { 426: 427: echo "<tr><td>Email From : </td>"; 428: echo "<td>"; 429: echo "<input type=text name=efrom size=30 maxlength=120 value=\"".$row['efrom']."\">"; 430: echo "</td></tr>"; 431: 432: echo "<tr><td>Email Subject : </td><td>"; 433: echo "<select name=esubject>"; 434: echo "<option value=".$row['esubject'].">".aat_esub($row['esubject'])."</option>"; 435: echo "<option value=0>Blank</option>"; 436: echo "<option value=1>Short</option>"; 437: echo "<option value=2>Long</option>"; 438: echo "</select>"; 439: echo "</td></tr>"; 440: 441: } 442: 443: echo "<tr><td>Msg Type : </td><td>"; 444: echo "<select name=etype>"; 445: echo "<option value=".$row['etype'].">".aat_etype($row['etype'])."</option>"; 446: echo "<option value=0>Short</option>"; 447: echo "<option value=1>Long</option>"; 448: echo "</select>"; 449: echo "</td></tr>"; 450: 451: echo "<tr><td valign=top>Email To<br>or URL : </td><td>"; 452: echo "<textarea name=etolist cols=40 rows=6>".$row['etolist']."</textarea>"; 453: echo "</td></tr>"; 454: 455: echo "<tr><td colspan=2><input type=submit value=\"Update Action\"> <a href=admin.php>Cancel Update</a> | "; 456: echo "<a href=admin.php?aaid=".$_REQUEST['aaid']."&action=action_test>Test Action</a> | "; 457: echo "<a href=admin.php?aaid_del=".$_REQUEST['aaid']."&action=action_delete>Delete Action</a>"; 458: echo "</td></tr>"; 459: 460: echo "</form></table><br><br>"; 461: $NATS->DB->Free($r); 462: } 463: 464: $q="SELECT aaid,atype,aname FROM fnalertaction"; 465: $r=$NATS->DB->Query($q); 466: echo "<table class=\"nicetable\"><tr>"; 467: echo "<td><b>ID</b></td><td><b>Action Name</b></td><td><b>Action Type</b></td></tr>"; 468: while ($row=$NATS->DB->Fetch_Array($r)) 469: { 470: echo "<tr><td>"; 471: echo "<a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">".$row['aaid']."</a></td>"; 472: echo "<td><a href=admin.php?mode=alertactions&aaid=".$row['aaid'].">".$row['aname']."</a></td><td>"; 473: echo aat_atype($row['atype']); 474: echo "</td></tr>"; 475: } 476: echo "</table>"; 477: 478: echo "<br><a href=admin.php?mode=alertactions&action=action_create><b>Create New Alert Action</b></a><br>"; 479: echo "<br><br>"; 480: } 481: else if ($mode=="logs") 482: { 483: echo "<b class=\"subtitle\">System Logs</b><br><br>"; 484: echo "<a href=log.php>System Event Log</a><br><br>"; 485: 486: echo "<br><br>"; 487: } 488: else if ($mode=="status") 489: { 490: // system healthcheck 491: 492: // usage data 493: //$q="SELECT COUNT(fnnode.nodeid),COUNT(fngroup.groupid),COUNT( FROM fnnode,fngroup"; 494: $q="SHOW TABLE STATUS LIKE \"fn%\""; 495: $r=$NATS->DB->Query($q); 496: 497: echo "<b class=\"maintitle\">FreeNATS System Status</b><br><br>"; 498: 499: $tinfo=array(); 500: 501: echo "<b class=\"subtitle\">Table Sizes</b><br><br>"; 502: 503: echo "<table class=\"nicetable\">"; 504: echo "<tr><td><b>Table Name</b></td><td><b>Size (Rows)</b></td><td><b>Size (kb)</b></td><td><b>Other Information</b></td></tr>"; 505: while ($row=$NATS->DB->Fetch_Array($r)) 506: { 507: echo "<tr><td>".$row['Name']."</td><td>".$row['Rows']."</td>"; 508: echo "<td>".round($row['Data_length']/1024,0)."</td><td>"; 509: if (isset($tinfo[$row['Name']])) echo $tinfo[$row['Name']]; 510: else echo " "; 511: if ($row['Data_free']>0) 512: { 513: echo " [".round($row['Data_free']/1024,0)."kb Free - <a href=admin.php?mode=status&action=optimize&table=".$row['Name'].">Optimise</a>]"; 514: } 515: echo "</td></tr>"; 516: } 517: echo "</table>"; 518: $NATS->DB->Free($r); 519: echo "<br><br>"; 520: 521: echo "<b class=\"subtitle\">Test Sessions</b><br><br>"; 522: $q="SELECT * FROM fntestrun WHERE finishx=0"; 523: $r=$NATS->DB->Query($q); 524: echo "<b>".$NATS->DB->Num_Rows($r)." Open/Running Test Sessions</b><br><br>"; 525: if ($NATS->DB->Num_Rows($r)>0) 526: { 527: echo "<table class=\"nicetable\">"; 528: echo "<tr><td><b>ID</b></td><td><b>Node</b></td><td><b>Started</b></td><td><b>Notes</b></td></tr>"; 529: $nowx=time(); 530: $fifteenx=$nowx-(15*60); 531: $hourx=$nowx-(60*60); 532: while ($row=$NATS->DB->Fetch_Array($r)) 533: { 534: echo "<tr><td><a href=testrun.php?trid=".$row['trid'].">"; 535: echo $row['trid']."</a></td>"; 536: echo "<td><a href=node.php?nodeid=".$row['fnode']."</a></td>"; 537: echo "<td>".nicedt($row['startx'])." - ".dtago($row['startx'])."</td>"; 538: echo "<td>"; 539: if ($row['startx']<$hourx) echo "Error: Over an hour old"; 540: else if($row['startx']<$fifteenx) echo "Warning: Over fifteen minutes old"; 541: else echo " "; 542: echo "</td></tr>"; 543: } 544: echo "</table>"; 545: } 546: $NATS->DB->Free($r); 547: echo "<br><br>"; 548: 549: 550: echo "Please note this merely displays FreeNATS software status - not<br>the status of "; 551: echo "the underlying Virtual Machine (if applicable).<br><br> You should monitor disk space and "; 552: echo "performance for the VM via<br>the relevant system (such as the rPath interface).<br><br>"; 553: 554: } 555: else if ($mode=="variables") 556: { 557: echo "<b class=\"subtitle\">Variables</b> ".hlink("Variable")."<br><br>"; 558: $q="SELECT * FROM fnconfig ORDER BY fnc_var ASC"; 559: $r=$NATS->DB->Query($q); 560: echo "<table border=0>"; 561: while ($row=$NATS->DB->Fetch_Array($r)) 562: { 563: echo "<form action=admin.php method=post>"; 564: echo "<input type=hidden name=action value=var_save>"; 565: echo "<input type=hidden name=mode value=variables>"; 566: echo "<input type=hidden name=orig_var value=\"".$row['fnc_var']."\">"; 567: echo "<input type=hidden name=orig_val value=\"".$row['fnc_val']."\">"; 568: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"".$row['fnc_var']."\"> "; 569: echo "</td>"; 570: echo "<td>=</td>"; 571: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"".$row['fnc_val']."\"></td>"; 572: echo "<td><input type=submit value=\"Save\"> "; 573: echo hlink("Var:".$row['fnc_var']); 574: echo "</td>"; 575: echo "</tr>"; 576: echo "</form>"; 577: } 578: echo "<form action=admin.php method=post>"; 579: echo "<input type=hidden name=action value=var_new>"; 580: echo "<input type=hidden name=mode value=variables>"; 581: echo "<tr><td><input type=text size=20 maxlength=60 name=new_var value=\"\"></td>"; 582: echo "<td>=</td>"; 583: echo "<td><input type=text size=20 maxlength=60 name=new_val value=\"\"></td>"; 584: echo "<td><input type=submit value=\"Create\"></td>"; 585: echo "</tr>"; 586: echo "</form>"; 587: echo "</table>"; 588: } 589: else // catch-all 590: { 591: echo "<img src=images/options/user.png style=\"vertical-align: bottom;\"> "; 592: echo "<a href=admin.php?mode=users>User Administration</a><br><br>"; 593: echo "<img src=images/options/application.png style=\"vertical-align: bottom;\"> "; 594: echo "<a href=log.php>System Event Log</a><br><br>"; 595: echo "<img src=images/options/letter_open.png style=\"vertical-align: bottom;\"> "; 596: echo "<a href=admin.php?mode=alertactions>Alert Actions</a><br><br>"; 597: echo "<img src=images/options/action_add.png style=\"vertical-align: bottom;\"> "; 598: echo "<a href=admin.php?mode=variables>System Variables</a><br><br>"; 599: echo "<img src=images/options/file.png style=\"vertical-align: bottom;\"> "; 600: echo "<a href=admin.php?mode=testsessions>Test Sessions</a><br><br>"; 601: echo "<img src=images/options/time.png style=\"vertical-align: bottom;\"> "; 602: echo "<a href=schedule.php>Test Schedules</a><br><br>"; 603: 604: if ($NATS->Cfg->Get("site.enable.adminsql",0)==1) 605: { 606: echo "<img src=images/options/folder_files.png style=\"vertical-align: bottom;\"> "; 607: echo "<a href=admin.sql.php>SQL Console</a><br><br>"; 608: } 609: echo "<img src=images/options/search.png style=\"vertical-align: bottom;\"> "; 610: echo "<a href=admin.php?mode=status>System Status Report</a><br><br>"; 611: } 612: 613: if ($mode!="") echo "<a href=admin.php>Back to Main Admin Menu</a><br><br>"; 614: ?> 615: 616: 617: <?php 618: Screen_Footer(); 619: ?> 620: