Viewing File server/web/main.php of 1.19.3a
|
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='//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: if ($NATS->isUserAllowedGroup($NATS_Session->username,$row['groupid'])) 333: { 334: echo "<tr class=\"nicetablehov\">"; 335: echo "<td><a href=group.php?groupid=".$row['groupid']."><b class=\"al".$NATS->GroupAlertLevel($row['groupid'])."\">".$row['groupname']."</b></a></td>"; 336: echo "<td><a href=group.edit.php?groupid=".$row['groupid']."><img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit")."\"></a>"; 337: echo " "; 338: 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>"; 339: echo "<td>"; 340: 341: if ($f==0) echo "<img src=images/arrows/off/arrow_top.png>"; 342: else 343: { 344: echo "<a href=group.action.php?groupid=".$row['groupid']."&action=move&dir=up>"; 345: echo "<img src=\"images/arrows/on/arrow_top.png\" border=0>"; 346: echo "</a>"; 347: } 348: 349: if ($f>=($l-1)) echo "<img src=images/arrows/off/arrow_down.png>"; 350: else 351: { 352: echo "<a href=group.action.php?groupid=".$row['groupid']."&action=move&dir=down>"; 353: echo "<img src=\"images/arrows/on/arrow_down.png\" border=0>"; 354: echo "</a>"; 355: } 356: 357: echo "</td>"; 358: $f++; 359: 360: echo "</tr>"; 361: } 362: } 363: echo "<tr><td colspan=3> <br></td></tr>"; 364: echo "<form action=group.action.php method=post>"; 365: echo "<input type=hidden name=action value=create>"; 366: 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")."\">"; 367: echo " ".hlink("Group:Create")."</td></tr></form>"; 368: echo "</table>"; 369: End_Round(); 370: } 371: 372: else if ($mode=="views") 373: { 374: $t="<b class=\"subtitle\">".$NATS->Lang->Item("views")."</b> ".hlink("View",12); 375: Start_Round($t,600); 376: echo "<table class=\"nicetablehov\" width=100%>"; 377: // get views... 378: $q="SELECT viewid,vtitle FROM fnview"; 379: $r=$NATS->DB->Query($q); 380: while ($row=$NATS->DB->Fetch_Array($r)) 381: { 382: echo "<tr class=\"nicetablehov\"><td>"; 383: echo "<a href=view.php?viewid=".$row['viewid'].">".$row['vtitle']."</a>"; 384: echo "</td><td>"; 385: echo "<a href=view.edit.php?viewid=".$row['viewid']."><img src=images/options/application.png border=0 title=\"".$NATS->Lang->Item("edit")."\"></a>"; 386: echo " "; 387: 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>"; 388: echo "</td></tr>"; 389: } 390: 391: echo "<tr><td colspan=2> <br></td></tr>"; 392: echo "<form action=view.edit.php method=post><input type=hidden name=action value=create>"; 393: echo "<tr><td><input type=text name=vtitle size=20 maxlength=64></td><td><input type=submit value=\"".$NATS->Lang->Item("create.view")."\"> "; 394: echo hlink("View:Create")."</td></tr></form>"; 395: echo "</table>"; 396: End_Round(); 397: 398: echo "<br><br>"; 399: $t="<b class=\"subtitle\">".$NATS->Lang->Item("reports")." ".hlink("Report",12)."</b>"; 400: Start_Round($t,600); 401: echo "<b><a href=report.php>".$NATS->Lang->Item("create.report")."</a></b> ".hlink("Report",12); 402: echo "<br><br>"; 403: 404: // reports in here 405: $rq="SELECT reportid,reportname FROM fnreport"; 406: $rr=$NATS->DB->Query($rq); 407: if ($NATS->DB->Num_Rows($rr)>0) 408: { 409: echo "<table class=\"nicetablehov\" width=100%>"; 410: while ($rep=$NATS->DB->Fetch_Array($rr)) 411: { 412: echo "<tr class=\"nicetablehov\">"; 413: echo "<td align=left>"; 414: echo "<a href=report.php?reportid=".$rep['reportid'].">".$rep['reportname']."</a>"; 415: echo "</td><td align=right>"; 416: echo "<a href=report.php?mode=delete&reportid=".$rep['reportid'].">"; 417: echo "<img src=images/options/action_delete.png border=0 title=\"".$NATS->Lang->Item("delete").": ".$rep['reportname']."\">"; 418: echo "</a>"; 419: echo " "; 420: echo "</td></tr>"; 421: } 422: echo "</table>"; 423: } 424: 425: End_Round(); 426: 427: } 428: 429: else if ($mode=="configsummary") 430: { 431: $scheds=array(); 432: $q="SELECT scheduleid,schedulename FROM fnschedule"; 433: $r=$NATS->DB->Query($q); 434: while ($row=$NATS->DB->Fetch_Array($r)) 435: { 436: $scheds[$row['scheduleid']]=$row['schedulename']; 437: } 438: $NATS->DB->Free($r); 439: 440: echo "<b class=\"subtitle\">".$NATS->Lang->Item("config.summary")."</b><br><br>"; 441: echo "<table width=100% border=1>"; 442: echo "<tr>"; 443: echo "<td><b>"; 444: echo $NATS->Lang->Item("nodeid"); 445: echo "</b></td>"; 446: echo "<td><b>"; 447: echo $NATS->Lang->Item("name"); 448: echo "</b></td>"; 449: echo "<td><b>"; 450: echo $NATS->Lang->Item("hostname"); 451: echo "</b></td>"; 452: echo "<td><b>"; 453: echo $NATS->Lang->Item("schedule"); 454: echo "</b></td>"; 455: echo "<td><b>"; 456: echo $NATS->Lang->Item("enabled"); 457: echo "</b></td>"; 458: echo "<td><b>"; 459: echo $NATS->Lang->Item("ping")." / ".$NATS->Lang->Item("required");; 460: echo "</b></td>"; 461: echo "<td><b>"; 462: echo $NATS->Lang->Item("interval"); 463: echo "</b></td>"; 464: echo "<td><b>"; 465: echo $NATS->Lang->Item("nodeside"); 466: echo "</b></td>"; 467: echo "</tr>"; 468: $q="SELECT * FROM fnnode ORDER BY weight ASC"; 469: $r=$NATS->DB->Query($q); 470: while ($row=$NATS->DB->Fetch_Array($r)) 471: { 472: if ($NATS->isUserAllowedNode($NATS_Session->username,$row['nodeid'])) 473: { 474: echo "<tr><td>"; 475: echo $row['nodeid']; 476: echo "</td><td>"; 477: echo $row['nodename']; 478: echo "</td><td>"; 479: echo $row['hostname']; 480: echo "</td><td>"; 481: if ($row['scheduleid']==0) $s="All Times"; 482: else if (isset($scheds[$row['scheduleid']])) $s=$scheds[$row['scheduleid']]; 483: else $s="UNKNOWN"; 484: echo $s; 485: echo "</td><td>"; 486: echo dispyn($row['nodeenabled']); 487: echo "</td><td>"; 488: echo dispyn($row['pingtest'])." / ".dispyn($row['pingfatal']); 489: echo "</td><td>"; 490: echo $row['testinterval']; 491: echo "</td><td>"; 492: echo dispyn($row['nsenabled']); 493: echo "</td>"; 494: 495: echo "</tr>"; 496: } 497: } 498: $NATS->DB->Free($r); 499: echo "</table><br><br>"; 500: 501: } 502: 503: else 504: { 505: echo "Sorry - unknown mode for main.php"; 506: } 507: 508: 509: echo "<br><br>"; 510: 511: ?> 512: 513: 514: <?php 515: if ($check_update) 516: { 517: echo "<SCRIPT TYPE=\"text/javascript\">\n"; 518: //echo "alert('check');\n"; 519: echo "var url='//www.purplepixie.org/freenats/download.php?CheckVersion2=".$NATS->Version."';\n"; 520: echo "var us=document.createElement('script');\n"; 521: echo "us.type='text/javascript';\n"; 522: echo "us.src=url;\n"; 523: echo "us.async=true;\n"; 524: echo "var fs=document.getElementsByTagName('script')[0];\n"; 525: echo "fs.parentNode.insertBefore(us, fs);\n"; 526: echo "</SCRIPT>\n"; 527: } 528: Screen_Footer(); 529: /* old PhoneHome Ping Tracker - now in screen as a png 530: $t=$NATS->Cfg->Get("freenats.tracker"); 531: if ( ($t!="") && ($t>0) ) 532: $NATS->PhoneHome(); 533: */ 534: ?> 535: