Viewing File server/web/main.php of 1.16.1a
|
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: 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'])) $check_update=true; 62: else $check_update=false; 63: if (isset($_REQUEST['quiet_check'])) $quiet_check=true; 64: else $quiet_check=false; 65: 66: if ($check_update) 67: { 68: echo "<b>".$NATS->Lang->Item("checking.updates").":</b> "; 69: echo "<span id=\"version-info\"> <img src=\"images/loading/small-circle-lines.gif\" style=\"position: relative; top: 4px;\"></span><br>"; 70: if (!$quiet_check) 71: { 72: echo "<br>"; 73: echo $NATS->Lang->Item("update.desc")." "; 74: echo $NATS->Version.$NATS->Release."."; 75: echo "<br>"; 76: } 77: echo "<br>\n"; 78: } 79: 80: 81: if ($mode=="overview") 82: { 83: $t="<b class=\"subtitle\">".$NATS->Lang->Item("overview.subtitle")."</b>"; 84: Start_Round($t,600); 85: echo "<table width=100% border=0><tr><td align=left width=50%>"; 86: $al=$NATS->GetAlerts(); 87: if (($al===false)||(count($al)==0)) 88: { 89: echo "<b class=\"al0\">".$NATS->Lang->Item("no.monitor.alerts")."</b>"; 90: } 91: else 92: { 93: echo "<a href=monitor.php>"; 94: echo "<b class=\"al2\">".$NATS->Lang->Item("monitor.alerts")."</b>"; 95: echo "</a>"; 96: } 97: echo "</td><td align=right><b><a href=main.php?check_updates=1>".$NATS->Lang->Item("check.updates")."</a></b></td></tr>"; 98: 99: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 100: $fx=time(); 101: $sx=$fx-(60*60*24); 102: echo "<tr><td align=left valign=top>"; 103: echo "<b>".$NATS->Lang->Item("monitoring")."</b><br><br>"; 104: $nq="SELECT COUNT(nodeid) FROM fnnode"; 105: $nr=$NATS->DB->Query($nq); 106: if ($nrow=$NATS->DB->Fetch_Array($nr)) $nodecount=$nrow['COUNT(nodeid)']; 107: else $nodecount=0; 108: $NATS->DB->Free($nr); 109: $gq="SELECT COUNT(groupid) FROM fngroup"; 110: $gr=$NATS->DB->Query($gq); 111: if ($nrow=$NATS->DB->Fetch_Array($gr)) $groupcount=$nrow['COUNT(groupid)']; 112: else $groupcount=0; 113: $NATS->DB->Free($gr); 114: echo "<a href=main.php?mode=nodes>".$nodecount." ".$NATS->Lang->Item("nodes.configured")."</a><br><br>"; 115: echo "<a href=main.php?mode=groups>".$groupcount." ".$NATS->Lang->Item("node.groups")."</a><br>"; 116: echo "</td><td align=right valign=top>"; 117: echo "<b>".$NATS->Lang->Item("common.tasks")."</b><br><br>"; 118: echo "<a href=main.php?mode=nodes>".$NATS->Lang->Item("add.nodes")."</a><br>"; 119: echo "<a href=admin.php?mode=alertactions>".$NATS->Lang->Item("email.alerting")."</a><br>"; 120: echo "<a href=main.php?mode=nodes>".$NATS->Lang->Item("configure.tests")."</a><br>"; 121: echo "</td></tr>"; 122: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 123: echo "<tr><td colspan=2><b>".$NATS->Lang->Item("test.summaries")."</b><br><br>"; 124: echo "<a href=summary.test.php?nodeid=*>".$NATS->Lang->Item("today")."</a> - "; 125: echo "<a href=summary.test.php?nodeid=*&startx=".$sx."&finishx=".$fx.">".$NATS->Lang->Item("last.24h")."</a> - "; 126: echo "<a href=summary.test.php?mode=custom>".$NATS->Lang->Item("custom")."</a>"; 127: echo "</td></tr>"; 128: echo "<tr><td colspan=2><hr class=\"nspacer\"></td></tr>"; 129: echo "<tr><td colspan=2>"; 130: /* 131: echo "<b>Installed Test Modules</b><br><br>"; 132: echo "<table class=\"nicetable\" width=100%>"; 133: echo "<tr><td><b>Name</b></td><td><b>Provides</b></td><td><b>Revision</b></td><td><b>Additional</b></td></tr>"; 134: foreach($NATS->Tests->QuickList as $key => $val) 135: { 136: echo "<tr><td>"; 137: echo $NATS->Tests->Tests[$key]->name; 138: echo "</td><td>"; 139: echo $NATS->Tests->Tests[$key]->type; 140: echo "</td><td>"; 141: echo $NATS->Tests->Tests[$key]->revision; 142: echo "</td><td>"; 143: echo $NATS->Tests->Tests[$key]->additional; 144: echo "</td></tr>"; 145: } 146: echo "</table>"; 147: */ 148: echo "<b>".$NATS->Lang->Item("monitored.nodes")."</b><br><br>"; 149: $q="SELECT nodeid,nodename,alertlevel FROM fnnode WHERE nodeenabled=1 ORDER BY alertlevel DESC, weight ASC"; 150: $r=$NATS->DB->Query($q); 151: $first=true; 152: while ($row=$NATS->DB->Fetch_Array($r)) 153: { 154: if ($first) $first=false; 155: else echo ", "; 156: echo "<a href=node.php?nodeid=".$row['nodeid'].">"; 157: echo "<b class=\"al".$row['alertlevel']."\">"; 158: if ($row['nodename']!="") echo $row['nodename']; 159: else if ($row['nodeid'] != "") echo $row['nodeid']; 160: else echo $NATS->Lang->Item("node"); 161: echo "</b></a>"; 162: } 163: echo "</td></tr>"; 164: echo "</table>"; 165: echo "<br>"; 166: End_Round(); 167: echo "<br><br>"; 168: 169: if ($NATS->Cfg->Get("site.nonews",0)!=1) 170: { 171: $t="<b class=\"subtitle\">".$NATS->Lang->Item("freenats.news")."</b>"; 172: Start_Round($t,600); 173: 174: echo "<DIV ID=\"news-holder\" STYLE=\"padding: 4px;\">"; 175: echo "<IMG SRC=\"images/loading/small-circle-lines.gif\">"; 176: echo "</DIV>\n"; 177: 178: echo "<I>Want to disable news? Set variable site.nonews to 1</I>"; 179: 180: End_Round(); 181: 182: echo "<SCRIPT TYPE=\"text/javascript\">\n"; 183: //echo "alert('check');\n"; 184: echo "var url='http://www.purplepixie.org/freenats/newsfeed.js.php';\n"; 185: echo "var nf=document.createElement('script');\n"; 186: echo "nf.type='text/javascript';\n"; 187: echo "nf.src=url;\n"; 188: echo "nf.async=true;\n"; 189: echo "var fs=document.getElementsByTagName('script')[0];\n"; 190: echo "fs.parentNode.insertBefore(nf, fs);\n"; 191: echo "</SCRIPT>\n"; 192: 193: } 194: 195: } 196: 197: else if ($mode=="nodes") 198: { 199: 200: if ($nm) 201: { 202: $q="SELECT nodeid,weight FROM fnnode ORDER BY weight ASC"; 203: $r=$NATS->DB->Query($q); 204: $nml="<span style=\"font-size: 8pt;\">".$NATS->Lang->Item("move.before")." </span><select name=move_before style=\"font-size: 8pt;\">"; 205: while ($row=$NATS->DB->Fetch_Array($r)) 206: { 207: $nml.="<option value=".$row['weight'].">".$row['nodeid']."</option>"; 208: } 209: $nml.="</select>"; 210: $NATS->DB->Free($r); 211: } 212: 213: Start_Round("<b class=\"subtitle\">".$NATS->Lang->Item("nodes")."</b> ".hlink("Node",12),600); 214: $q="SELECT nodeid,nodename,alertlevel,weight FROM fnnode ORDER BY weight ASC"; 215: $r=$NATS->DB->Query($q); 216: 217: echo "<table class=\"nicetablehov\" width=100%>"; 218: 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>"; 219: echo "<b>".$NATS->Lang->Item("move")."</a></b></td></tr>"; 220: $f=0; 221: $l=$NATS->DB->Num_Rows($r); 222: while ($row=$NATS->DB->Fetch_Array($r)) 223: { 224: //echo "<tr class=\"nicetablehov\" id=\"noderow_".$row['nodeid']."\" onmouseover=\"highlightrow('noderow_".$row['nodeid']."')\"><td align=left>"; 225: echo "<tr class=\"nicetablehov\"><td align=left>"; 226: echo "<a href=node.php?nodeid=".$row['nodeid'].">"; 227: 228: echo "<b class=\"al".$row['alertlevel']."\">"; 229: if ($row['nodename']!="") echo $row['nodename']; 230: else if ($row['nodeid'] != "") echo $row['nodeid']; 231: else echo $NATS->Lang->Item("node"); 232: echo "</b>"; 233: 234: echo "</a> "; 235: echo "(".$row['nodeid'].")"; 236: echo "</td><td align=left>"; 237: echo " <a href=node.edit.php?nodeid=".$row['nodeid']."><img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit")."\"></a>"; 238: echo " "; 239: 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> "; 240: echo "</td>"; 241: 242: if ($nm) 243: { 244: echo "<form action=node.action.php method=post>"; 245: echo "<input type=hidden name=nodeid value=".$row['nodeid'].">"; 246: echo "<input type=hidden name=action value=move_before>"; 247: } 248: 249: echo "<td>"; 250: if ($f==0) echo "<img src=images/arrows/off/arrow_top.png>"; 251: else 252: { 253: echo "<a href=node.action.php?nodeid=".$row['nodeid']."&action=move&dir=up>"; 254: echo "<img src=\"images/arrows/on/arrow_top.png\" border=0>"; 255: echo "</a>"; 256: } 257: 258: if ($f>=($l-1)) echo "<img src=images/arrows/off/arrow_down.png>"; 259: else 260: { 261: echo "<a href=node.action.php?nodeid=".$row['nodeid']."&action=move&dir=down>"; 262: echo "<img src=\"images/arrows/on/arrow_down.png\" border=0>"; 263: echo "</a>"; 264: } 265: 266: if ($nm) 267: { 268: echo "<span style=\"font-size: 8pt;\"> [".$row['weight']."] </span>"; 269: echo $nml; 270: echo " <input type=submit value=\"Go\" style=\"font-size: 8pt;\">"; 271: } 272: 273: echo "</td>"; 274: 275: if ($nm) echo "</form>"; 276: $f++; 277: 278: echo "</tr>"; 279: } 280: echo "<tr><td colspan=3> <br></td></tr>"; 281: echo "<form action=node.action.php><input type=hidden name=action value=create>"; 282: 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")."\"> "; 283: echo hlink("Node:Create"); 284: if ($nm) echo " <a href=node.action.php?action=reorderweight>".$NATS->Lang->Item("refresh.weight")."</a>"; 285: echo "</td></tr></form>"; 286: 287: $fx=time(); 288: $sx=$fx-(60*60*24); 289: echo "<tr><td colspan=3><b>Summary: </b><a href=summary.test.php?nodeid=*>".$NATS->Lang->Item("today")."</a> - "; 290: echo "<a href=summary.test.php?nodeid=*&startx=".$sx."&finishx=".$fx.">".$NATS->Lang->Item("last.24h")."</a> - "; 291: echo "<a href=summary.test.php?mode=custom>".$NATS->Lang->Item("custom")."</a> - "; 292: echo "<a href=main.php?mode=configsummary>".$NATS->Lang->Item("config")."</a></td></tr>"; 293: 294: echo "</table>"; 295: End_Round(); 296: } 297: 298: else if ($mode=="groups") 299: { 300: 301: $t="<b class=\"subtitle\">".$NATS->Lang->Item("node.groups")."</b> ".hlink("Group",12); 302: Start_Round($t,600); 303: 304: $q="SELECT groupid,groupname FROM fngroup ORDER BY weight ASC"; 305: $r=$NATS->DB->Query($q); 306: $f=0; 307: echo "<table class=\"nicetablehov\" width=100%>"; 308: $l=$NATS->DB->Num_Rows($r); 309: while ($row=$NATS->DB->Fetch_Array($r)) 310: { 311: echo "<tr class=\"nicetablehov\">"; 312: echo "<td><a href=group.php?groupid=".$row['groupid']."><b class=\"al".$NATS->GroupAlertLevel($row['groupid'])."\">".$row['groupname']."</b></a></td>"; 313: echo "<td><a href=group.edit.php?groupid=".$row['groupid']."><img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit")."\"></a>"; 314: echo " "; 315: 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>"; 316: echo "<td>"; 317: 318: if ($f==0) echo "<img src=images/arrows/off/arrow_top.png>"; 319: else 320: { 321: echo "<a href=group.action.php?groupid=".$row['groupid']."&action=move&dir=up>"; 322: echo "<img src=\"images/arrows/on/arrow_top.png\" border=0>"; 323: echo "</a>"; 324: } 325: 326: if ($f>=($l-1)) echo "<img src=images/arrows/off/arrow_down.png>"; 327: else 328: { 329: echo "<a href=group.action.php?groupid=".$row['groupid']."&action=move&dir=down>"; 330: echo "<img src=\"images/arrows/on/arrow_down.png\" border=0>"; 331: echo "</a>"; 332: } 333: 334: echo "</td>"; 335: $f++; 336: 337: echo "</tr>"; 338: } 339: echo "<tr><td colspan=3> <br></td></tr>"; 340: echo "<form action=group.action.php method=post>"; 341: echo "<input type=hidden name=action value=create>"; 342: 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")."\">"; 343: echo " ".hlink("Group:Create")."</td></tr></form>"; 344: echo "</table>"; 345: End_Round(); 346: } 347: 348: else if ($mode=="views") 349: { 350: $t="<b class=\"subtitle\">".$NATS->Lang->Item("views")."</b> ".hlink("View",12); 351: Start_Round($t,600); 352: echo "<table class=\"nicetablehov\" width=100%>"; 353: // get views... 354: $q="SELECT viewid,vtitle FROM fnview"; 355: $r=$NATS->DB->Query($q); 356: while ($row=$NATS->DB->Fetch_Array($r)) 357: { 358: echo "<tr class=\"nicetablehov\"><td>"; 359: echo "<a href=view.php?viewid=".$row['viewid'].">".$row['vtitle']."</a>"; 360: echo "</td><td>"; 361: echo "<a href=view.edit.php?viewid=".$row['viewid']."><img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit")."\"></a>"; 362: echo " "; 363: 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>"; 364: echo "</td></tr>"; 365: } 366: 367: echo "<tr><td colspan=2> <br></td></tr>"; 368: echo "<form action=view.edit.php method=post><input type=hidden name=action value=create>"; 369: echo "<tr><td><input type=text name=vtitle size=20 maxlength=64></td><td><input type=submit value=\"".$NATS->Lang->Item("create.view")."\"> "; 370: echo hlink("View:Create")."</td></tr></form>"; 371: echo "</table>"; 372: End_Round(); 373: 374: echo "<br><br>"; 375: $t="<b class=\"subtitle\">".$NATS->Lang->Item("reports")." ".hlink("Report",12)."</b>"; 376: Start_Round($t,600); 377: echo "<b><a href=report.php>".$NATS->Lang->Item("create.report")."</a></b> ".hlink("Report",12); 378: echo "<br><br>"; 379: 380: // reports in here 381: $rq="SELECT reportid,reportname FROM fnreport"; 382: $rr=$NATS->DB->Query($rq); 383: if ($NATS->DB->Num_Rows($rr)>0) 384: { 385: echo "<table class=\"nicetablehov\" width=100%>"; 386: while ($rep=$NATS->DB->Fetch_Array($rr)) 387: { 388: echo "<tr class=\"nicetablehov\">"; 389: echo "<td align=left>"; 390: echo "<a href=report.php?reportid=".$rep['reportid'].">".$rep['reportname']."</a>"; 391: echo "</td><td align=right>"; 392: echo "<a href=report.php?mode=delete&reportid=".$rep['reportid'].">"; 393: echo "<img src=images/options/action_delete.png border=0 title=\"".$NATS->Lang->Item("delete").": ".$rep['reportname']."\">"; 394: echo "</a>"; 395: echo " "; 396: echo "</td></tr>"; 397: } 398: echo "</table>"; 399: } 400: 401: End_Round(); 402: 403: } 404: 405: else if ($mode=="configsummary") 406: { 407: $scheds=array(); 408: $q="SELECT scheduleid,schedulename FROM fnschedule"; 409: $r=$NATS->DB->Query($q); 410: while ($row=$NATS->DB->Fetch_Array($r)) 411: { 412: $scheds[$row['scheduleid']]=$row['schedulename']; 413: } 414: $NATS->DB->Free($r); 415: 416: echo "<b class=\"subtitle\">".$NATS->Lang->Item("config.summary")."</b><br><br>"; 417: echo "<table width=100% border=1>"; 418: echo "<tr>"; 419: echo "<td><b>"; 420: echo $NATS->Lang->Item("nodeid"); 421: echo "</b></td>"; 422: echo "<td><b>"; 423: echo $NATS->Lang->Item("name"); 424: echo "</b></td>"; 425: echo "<td><b>"; 426: echo $NATS->Lang->Item("hostname"); 427: echo "</b></td>"; 428: echo "<td><b>"; 429: echo $NATS->Lang->Item("schedule"); 430: echo "</b></td>"; 431: echo "<td><b>"; 432: echo $NATS->Lang->Item("enabled"); 433: echo "</b></td>"; 434: echo "<td><b>"; 435: echo $NATS->Lang->Item("ping")." / ".$NATS->Lang->Item("required");; 436: echo "</b></td>"; 437: echo "<td><b>"; 438: echo $NATS->Lang->Item("interval"); 439: echo "</b></td>"; 440: echo "<td><b>"; 441: echo $NATS->Lang->Item("nodeside"); 442: echo "</b></td>"; 443: echo "</tr>"; 444: $q="SELECT * FROM fnnode ORDER BY weight ASC"; 445: $r=$NATS->DB->Query($q); 446: while ($row=$NATS->DB->Fetch_Array($r)) 447: { 448: echo "<tr><td>"; 449: echo $row['nodeid']; 450: echo "</td><td>"; 451: echo $row['nodename']; 452: echo "</td><td>"; 453: echo $row['hostname']; 454: echo "</td><td>"; 455: if ($row['scheduleid']==0) $s="All Times"; 456: else if (isset($scheds[$row['scheduleid']])) $s=$scheds[$row['scheduleid']]; 457: else $s="UNKNOWN"; 458: echo $s; 459: echo "</td><td>"; 460: echo dispyn($row['nodeenabled']); 461: echo "</td><td>"; 462: echo dispyn($row['pingtest'])." / ".dispyn($row['pingfatal']); 463: echo "</td><td>"; 464: echo $row['testinterval']; 465: echo "</td><td>"; 466: echo dispyn($row['nsenabled']); 467: echo "</td>"; 468: 469: echo "</tr>"; 470: } 471: $NATS->DB->Free($r); 472: echo "</table><br><br>"; 473: 474: } 475: 476: else 477: { 478: echo "Sorry - unknown mode for main.php"; 479: } 480: 481: 482: echo "<br><br>"; 483: 484: ?> 485: 486: 487: <?php 488: if ($check_update) 489: { 490: echo "<SCRIPT TYPE=\"text/javascript\">\n"; 491: //echo "alert('check');\n"; 492: echo "var url='http://www.purplepixie.org/freenats/download.php?CheckVersion2=".$NATS->Version."';\n"; 493: echo "var us=document.createElement('script');\n"; 494: echo "us.type='text/javascript';\n"; 495: echo "us.src=url;\n"; 496: echo "us.async=true;\n"; 497: echo "var fs=document.getElementsByTagName('script')[0];\n"; 498: echo "fs.parentNode.insertBefore(us, fs);\n"; 499: echo "</SCRIPT>\n"; 500: } 501: Screen_Footer(); 502: /* old PhoneHome Ping Tracker - now in screen as a png 503: $t=$NATS->Cfg->Get("freenats.tracker"); 504: if ( ($t!="") && ($t>0) ) 505: $NATS->PhoneHome(); 506: */ 507: ?> 508: