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