Viewing File server/web/main.php of 1.10.1a
|
1: <?php 2: /* ------------------------------------------------------------- 3: This file is part of FreeNATS 4: 5: FreeNATS is (C) Copyright 2008-2010 PurplePixie Systems 6: 7: FreeNATS is free software: you can redistribute it and/or modify 8: it under the terms of the GNU General Public License as published by 9: the Free Software Foundation, either version 3 of the License, or 10: (at your option) any later version. 11: 12: FreeNATS is distributed in the hope that it will be useful, 13: but WITHOUT ANY WARRANTY; without even the implied warranty of 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15: GNU General Public License for more details. 16: 17: You should have received a copy of the GNU General Public License 18: along with FreeNATS. If not, see www.gnu.org/licenses 19: 20: For more information see www.purplepixie.org/freenats 21: -------------------------------------------------------------- */ 22: 23: ob_start(); 24: require("include.php"); 25: $NATS->Start(); 26: if (!$NATS_Session->Check($NATS->DB)) 27: { 28: header("Location: ./?login_msg=Invalid+Or+Expired+Session"); 29: exit(); 30: } 31: ob_end_flush(); 32: 33: if (isset($_REQUEST['mode'])) $mode=$_REQUEST['mode']; 34: else 35: { 36: $mode="overview"; 37: $_REQUEST['mode']="overview"; 38: } 39: 40: Screen_Header($NATS->Lang->Item("overview.title"),1,0,"","main"); 41: 42: if (isset($_REQUEST['message'])) 43: { 44: echo "<b>".$_REQUEST['message']."</b><br>"; 45: $poplist[]=$_REQUEST['message']; 46: } 47: 48: if (isset($_REQUEST['nodemove'])) $nm=true; 49: else $nm=false; 50: 51: function dispyn($val) 52: { 53: if ($val==0) return "N"; 54: else if ($val==1) return "Y"; 55: else return $val."?"; 56: } 57: 58: ?> 59: <br> 60: <?php 61: if (isset($_REQUEST['check_updates'])) 62: { 63: // check for updates 64: $dq="?CheckVersion=".$NATS->Version."&JSMode=1"; 65: $dl="http://www.purplepixie.org/freenats/download.php"; 66: $du=$dl.$dq; 67: echo "<b>".$NATS->Lang->Item("checking.updates").": "; 68: echo "<script type=\"text/javascript\" src=\"".$du."\"></script>\n"; 69: echo "</b><br>"; 70: if (!isset($_REQUEST['quiet_check'])) 71: { 72: echo $NATS->Lang->Item("update.desc")." "; 73: echo $NATS->Version.$NATS->Release."."; 74: echo "<br>"; 75: } 76: echo "<br>"; 77: } 78: 79: 80: if ($mode=="overview") 81: { 82: $t="<b class=\"subtitle\">".$NATS->Lang->Item("overview.subtitle")."</b>"; 83: Start_Round($t,600); 84: echo "<table width=100% border=0><tr><td align=left width=50%>"; 85: $al=$NATS->GetAlerts(); 86: if (($al===false)||(count($al)==0)) 87: { 88: echo "<b class=\"al0\">".$NATS->Lang->Item("no.monitor.alerts")."</b>"; 89: } 90: else 91: { 92: echo "<a href=monitor.php>"; 93: echo "<b class=\"al2\">".$NATS->Lang->Item("monitor.alerts")."</b>"; 94: echo "</a>"; 95: } 96: echo "</td><td align=right><b><a href=main.php?check_updates=1>".$NATS->Lang->Item("check.updates")."</a></b></td></tr>"; 97: 98: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 99: $fx=time(); 100: $sx=$fx-(60*60*24); 101: echo "<tr><td align=left valign=top>"; 102: echo "<b>".$NATS->Lang->Item("monitoring")."</b><br><br>"; 103: $nq="SELECT COUNT(nodeid) FROM fnnode"; 104: $nr=$NATS->DB->Query($nq); 105: if ($nrow=$NATS->DB->Fetch_Array($nr)) $nodecount=$nrow['COUNT(nodeid)']; 106: else $nodecount=0; 107: $NATS->DB->Free($nr); 108: $gq="SELECT COUNT(groupid) FROM fngroup"; 109: $gr=$NATS->DB->Query($gq); 110: if ($nrow=$NATS->DB->Fetch_Array($gr)) $groupcount=$nrow['COUNT(groupid)']; 111: else $groupcount=0; 112: $NATS->DB->Free($gr); 113: echo "<a href=main.php?mode=nodes>".$nodecount." ".$NATS->Lang->Item("nodes.configured")."</a><br><br>"; 114: echo "<a href=main.php?mode=groups>".$groupcount." ".$NATS->Lang->Item("node.groups")."</a><br>"; 115: echo "</td><td align=right valign=top>"; 116: echo "<b>".$NATS->Lang->Item("common.tasks")."</b><br><br>"; 117: echo "<a href=main.php?mode=nodes>".$NATS->Lang->Item("add.nodes")."</a><br>"; 118: echo "<a href=admin.php?mode=alertactions>".$NATS->Lang->Item("email.alerting")."</a><br>"; 119: echo "<a href=main.php?mode=nodes>".$NATS->Lang->Item("configure.tests")."</a><br>"; 120: echo "</td></tr>"; 121: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 122: echo "<tr><td colspan=2><b>".$NATS->Lang->Item("test.summaries")."</b><br><br>"; 123: echo "<a href=summary.test.php?nodeid=*>".$NATS->Lang->Item("today")."</a> - "; 124: echo "<a href=summary.test.php?nodeid=*&startx=".$sx."&finishx=".$fx.">".$NATS->Lang->Item("last.24h")."</a> - "; 125: echo "<a href=summary.test.php?mode=custom>".$NATS->Lang->Item("custom")."</a>"; 126: echo "</td></tr>"; 127: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 128: echo "<tr><td colspan=2>"; 129: /* 130: echo "<b>Installed Test Modules</b><br><br>"; 131: echo "<table class=\"nicetable\" width=100%>"; 132: echo "<tr><td><b>Name</b></td><td><b>Provides</b></td><td><b>Revision</b></td><td><b>Additional</b></td></tr>"; 133: foreach($NATS->Tests->QuickList as $key => $val) 134: { 135: echo "<tr><td>"; 136: echo $NATS->Tests->Tests[$key]->name; 137: echo "</td><td>"; 138: echo $NATS->Tests->Tests[$key]->type; 139: echo "</td><td>"; 140: echo $NATS->Tests->Tests[$key]->revision; 141: echo "</td><td>"; 142: echo $NATS->Tests->Tests[$key]->additional; 143: echo "</td></tr>"; 144: } 145: echo "</table>"; 146: */ 147: echo "<b>".$NATS->Lang->Item("monitored.nodes")."</b><br><br>"; 148: $q="SELECT nodeid,nodename,alertlevel FROM fnnode WHERE nodeenabled=1 ORDER BY alertlevel DESC, weight ASC"; 149: $r=$NATS->DB->Query($q); 150: $first=true; 151: while ($row=$NATS->DB->Fetch_Array($r)) 152: { 153: if ($first) $first=false; 154: else echo ", "; 155: echo "<a href=node.php?nodeid=".$row['nodeid'].">"; 156: echo "<b class=\"al".$row['alertlevel']."\">"; 157: if ($row['nodename']!="") echo $row['nodename']; 158: else echo $row['nodeid']; 159: echo "</b></a>"; 160: } 161: echo "</td></tr>"; 162: echo "</table>"; 163: echo "<br>"; 164: End_Round(); 165: echo "<br><br>"; 166: } 167: 168: else if ($mode=="nodes") 169: { 170: 171: if ($nm) 172: { 173: $q="SELECT nodeid,weight FROM fnnode ORDER BY weight ASC"; 174: $r=$NATS->DB->Query($q); 175: $nml="<span style=\"font-size: 8pt;\">".$NATS->Lang->Item("move.before")." </span><select name=move_before style=\"font-size: 8pt;\">"; 176: while ($row=$NATS->DB->Fetch_Array($r)) 177: { 178: $nml.="<option value=".$row['weight'].">".$row['nodeid']."</option>"; 179: } 180: $nml.="</select>"; 181: $NATS->DB->Free($r); 182: } 183: 184: Start_Round("<b class=\"subtitle\">".$NATS->Lang->Item("nodes")."</b> ".hlink("Node",12),600); 185: $q="SELECT nodeid,nodename,alertlevel,weight FROM fnnode ORDER BY weight ASC"; 186: $r=$NATS->DB->Query($q); 187: 188: echo "<table class=\"nicetablehov\" width=100%>"; 189: echo "<tr><td><b>".$NATS->Lang->Item("node")."</b></td><td><b>".$NATS->Lang->Item("options")."</b></td><td><a href=main.php?mode=nodes&nodemove=1>"; 190: echo "<b>".$NATS->Lang->Item("move")."</a></b></td></tr>"; 191: $f=0; 192: $l=$NATS->DB->Num_Rows($r); 193: while ($row=$NATS->DB->Fetch_Array($r)) 194: { 195: //echo "<tr class=\"nicetablehov\" id=\"noderow_".$row['nodeid']."\" onmouseover=\"highlightrow('noderow_".$row['nodeid']."')\"><td align=left>"; 196: echo "<tr class=\"nicetablehov\"><td align=left>"; 197: echo "<a href=node.php?nodeid=".$row['nodeid'].">"; 198: 199: echo "<b class=\"al".$row['alertlevel']."\">"; 200: echo $row['nodename']; 201: echo "</b>"; 202: 203: echo "</a> "; 204: echo "(".$row['nodeid'].")"; 205: echo "</td><td align=left>"; 206: echo " <a href=node.edit.php?nodeid=".$row['nodeid']."><img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit")."\"></a>"; 207: echo " "; 208: echo "<a href=node.action.php?action=delete&nodeid=".$row['nodeid']."><img src=images/options/action_delete.png border=0 title=\"".$NATS->Lang->Item("delete")."\"></a> "; 209: echo "</td>"; 210: 211: if ($nm) 212: { 213: echo "<form action=node.action.php method=post>"; 214: echo "<input type=hidden name=nodeid value=".$row['nodeid'].">"; 215: echo "<input type=hidden name=action value=move_before>"; 216: } 217: 218: echo "<td>"; 219: if ($f==0) echo "<img src=images/arrows/off/arrow_top.png>"; 220: else 221: { 222: echo "<a href=node.action.php?nodeid=".$row['nodeid']."&action=move&dir=up>"; 223: echo "<img src=\"images/arrows/on/arrow_top.png\" border=0>"; 224: echo "</a>"; 225: } 226: 227: if ($f>=($l-1)) echo "<img src=images/arrows/off/arrow_down.png>"; 228: else 229: { 230: echo "<a href=node.action.php?nodeid=".$row['nodeid']."&action=move&dir=down>"; 231: echo "<img src=\"images/arrows/on/arrow_down.png\" border=0>"; 232: echo "</a>"; 233: } 234: 235: if ($nm) 236: { 237: echo "<span style=\"font-size: 8pt;\"> [".$row['weight']."] </span>"; 238: echo $nml; 239: echo " <input type=submit value=\"Go\" style=\"font-size: 8pt;\">"; 240: } 241: 242: echo "</td>"; 243: 244: if ($nm) echo "</form>"; 245: $f++; 246: 247: echo "</tr>"; 248: } 249: echo "<tr><td colspan=3> <br></td></tr>"; 250: echo "<form action=node.action.php><input type=hidden name=action value=create>"; 251: echo "<tr><td><input type=text name=nodeid size=20 maxlenth=32></td><td colspan=2><input type=submit value=\"".$NATS->Lang->Item("create.node")."\"> "; 252: echo hlink("Node:Create"); 253: if ($nm) echo " <a href=node.action.php?action=reorderweight>".$NATS->Lang->Item("refresh.weight")."</a>"; 254: echo "</td></tr></form>"; 255: 256: $fx=time(); 257: $sx=$fx-(60*60*24); 258: echo "<tr><td colspan=3><b>Summary: </b><a href=summary.test.php?nodeid=*>".$NATS->Lang->Item("today")."</a> - "; 259: echo "<a href=summary.test.php?nodeid=*&startx=".$sx."&finishx=".$fx.">".$NATS->Lang->Item("last.24h")."</a> - "; 260: echo "<a href=summary.test.php?mode=custom>".$NATS->Lang->Item("custom")."</a> - "; 261: echo "<a href=main.php?mode=configsummary>".$NATS->Lang->Item("config")."</a></td></tr>"; 262: 263: echo "</table>"; 264: End_Round(); 265: } 266: 267: else if ($mode=="groups") 268: { 269: 270: $t="<b class=\"subtitle\">".$NATS->Lang->Item("node.groups")."</b> ".hlink("Group",12); 271: Start_Round($t,600); 272: 273: $q="SELECT groupid,groupname FROM fngroup ORDER BY weight ASC"; 274: $r=$NATS->DB->Query($q); 275: $f=0; 276: echo "<table class=\"nicetablehov\" width=100%>"; 277: $l=$NATS->DB->Num_Rows($r); 278: while ($row=$NATS->DB->Fetch_Array($r)) 279: { 280: echo "<tr class=\"nicetablehov\">"; 281: echo "<td><a href=group.php?groupid=".$row['groupid']."><b class=\"al".$NATS->GroupAlertLevel($row['groupid'])."\">".$row['groupname']."</b></a></td>"; 282: echo "<td><a href=group.edit.php?groupid=".$row['groupid']."><img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit")."\"></a>"; 283: echo " "; 284: echo "<a href=group.action.php?action=delete&groupid=".$row['groupid']."><img src=images/options/action_delete.png border=0 title=\"".$NATS->Lang->Item("delete")."\"></a></td>"; 285: echo "<td>"; 286: 287: if ($f==0) echo "<img src=images/arrows/off/arrow_top.png>"; 288: else 289: { 290: echo "<a href=group.action.php?groupid=".$row['groupid']."&action=move&dir=up>"; 291: echo "<img src=\"images/arrows/on/arrow_top.png\" border=0>"; 292: echo "</a>"; 293: } 294: 295: if ($f>=($l-1)) echo "<img src=images/arrows/off/arrow_down.png>"; 296: else 297: { 298: echo "<a href=group.action.php?groupid=".$row['groupid']."&action=move&dir=down>"; 299: echo "<img src=\"images/arrows/on/arrow_down.png\" border=0>"; 300: echo "</a>"; 301: } 302: 303: echo "</td>"; 304: $f++; 305: 306: echo "</tr>"; 307: } 308: echo "<tr><td colspan=3> <br></td></tr>"; 309: echo "<form action=group.action.php method=post>"; 310: echo "<input type=hidden name=action value=create>"; 311: echo "<tr><td><input type=text size=20 name=groupname maxlength=120></td><td colspan=2><input type=submit value=\"".$NATS->Lang->Item("create.group")."\">"; 312: echo " ".hlink("Group:Create")."</td></tr></form>"; 313: echo "</table>"; 314: End_Round(); 315: } 316: 317: else if ($mode=="views") 318: { 319: $t="<b class=\"subtitle\">".$NATS->Lang->Item("views")."</b> ".hlink("View",12); 320: Start_Round($t,600); 321: echo "<table class=\"nicetablehov\" width=100%>"; 322: // get views... 323: $q="SELECT viewid,vtitle FROM fnview"; 324: $r=$NATS->DB->Query($q); 325: while ($row=$NATS->DB->Fetch_Array($r)) 326: { 327: echo "<tr class=\"nicetablehov\"><td>"; 328: echo "<a href=view.php?viewid=".$row['viewid'].">".$row['vtitle']."</a>"; 329: echo "</td><td>"; 330: echo "<a href=view.edit.php?viewid=".$row['viewid']."><img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit")."\"></a>"; 331: echo " "; 332: echo "<a href=view.edit.php?viewid=".$row['viewid']."&action=delete><img src=images/options/action_delete.png border=0 title=\"".$NATS->Lang->Item("delete")."\"></a>"; 333: echo "</td></tr>"; 334: } 335: 336: echo "<tr><td colspan=2> <br></td></tr>"; 337: echo "<form action=view.edit.php method=post><input type=hidden name=action value=create>"; 338: echo "<tr><td><input type=text name=vtitle size=20 maxlength=64></td><td><input type=submit value=\"".$NATS->Lang->Item("create.view")."\"> "; 339: echo hlink("View:Create")."</td></tr></form>"; 340: echo "</table>"; 341: End_Round(); 342: 343: echo "<br><br>"; 344: $t="<b class=\"subtitle\">".$NATS->Lang->Item("reports")." ".hlink("Report",12)."</b>"; 345: Start_Round($t,600); 346: echo "<b><a href=report.php>".$NATS->Lang->Item("create.report")."</a></b> ".hlink("Report",12); 347: echo "<br><br>"; 348: 349: // reports in here 350: $rq="SELECT reportid,reportname FROM fnreport"; 351: $rr=$NATS->DB->Query($rq); 352: if ($NATS->DB->Num_Rows($rr)>0) 353: { 354: echo "<table class=\"nicetablehov\" width=100%>"; 355: while ($rep=$NATS->DB->Fetch_Array($rr)) 356: { 357: echo "<tr class=\"nicetablehov\">"; 358: echo "<td align=left>"; 359: echo "<a href=report.php?reportid=".$rep['reportid'].">".$rep['reportname']."</a>"; 360: echo "</td><td align=right>"; 361: echo "<a href=report.php?mode=delete&reportid=".$rep['reportid'].">"; 362: echo "<img src=images/options/action_delete.png border=0 title=\"".$NATS->Lang->Item("delete").": ".$rep['reportname']."\">"; 363: echo "</a>"; 364: echo " "; 365: echo "</td></tr>"; 366: } 367: echo "</table>"; 368: } 369: 370: End_Round(); 371: 372: } 373: 374: else if ($mode=="configsummary") 375: { 376: $scheds=array(); 377: $q="SELECT scheduleid,schedulename FROM fnschedule"; 378: $r=$NATS->DB->Query($q); 379: while ($row=$NATS->DB->Fetch_Array($r)) 380: { 381: $scheds[$row['scheduleid']]=$row['schedulename']; 382: } 383: $NATS->DB->Free($r); 384: 385: echo "<b class=\"subtitle\">".$NATS->Lang->Item("config.summary")."</b><br><br>"; 386: echo "<table width=100% border=1>"; 387: echo "<tr>"; 388: echo "<td><b>"; 389: echo $NATS->Lang->Item("nodeid"); 390: echo "</b></td>"; 391: echo "<td><b>"; 392: echo $NATS->Lang->Item("name"); 393: echo "</b></td>"; 394: echo "<td><b>"; 395: echo $NATS->Lang->Item("hostname"); 396: echo "</b></td>"; 397: echo "<td><b>"; 398: echo $NATS->Lang->Item("schedule"); 399: echo "</b></td>"; 400: echo "<td><b>"; 401: echo $NATS->Lang->Item("enabled"); 402: echo "</b></td>"; 403: echo "<td><b>"; 404: echo $NATS->Lang->Item("ping")." / ".$NATS->Lang->Item("required");; 405: echo "</b></td>"; 406: echo "<td><b>"; 407: echo $NATS->Lang->Item("interval"); 408: echo "</b></td>"; 409: echo "<td><b>"; 410: echo $NATS->Lang->Item("nodeside"); 411: echo "</b></td>"; 412: echo "</tr>"; 413: $q="SELECT * FROM fnnode ORDER BY weight ASC"; 414: $r=$NATS->DB->Query($q); 415: while ($row=$NATS->DB->Fetch_Array($r)) 416: { 417: echo "<tr><td>"; 418: echo $row['nodeid']; 419: echo "</td><td>"; 420: echo $row['nodename']; 421: echo "</td><td>"; 422: echo $row['hostname']; 423: echo "</td><td>"; 424: if ($row['scheduleid']==0) $s="All Times"; 425: else if (isset($scheds[$row['scheduleid']])) $s=$scheds[$row['scheduleid']]; 426: else $s="UNKNOWN"; 427: echo $s; 428: echo "</td><td>"; 429: echo dispyn($row['nodeenabled']); 430: echo "</td><td>"; 431: echo dispyn($row['pingtest'])." / ".dispyn($row['pingfatal']); 432: echo "</td><td>"; 433: echo $row['testinterval']; 434: echo "</td><td>"; 435: echo dispyn($row['nsenabled']); 436: echo "</td>"; 437: 438: echo "</tr>"; 439: } 440: $NATS->DB->Free($r); 441: echo "</table><br><br>"; 442: 443: } 444: 445: else 446: { 447: echo "Sorry - unknown mode for main.php"; 448: } 449: 450: 451: echo "<br><br>"; 452: 453: ?> 454: 455: 456: <?php 457: Screen_Footer(); 458: /* old PhoneHome Ping Tracker - now in screen as a png 459: $t=$NATS->Cfg->Get("freenats.tracker"); 460: if ( ($t!="") && ($t>0) ) 461: $NATS->PhoneHome(); 462: */ 463: ?> 464: