File: 1.19.1b/server/web/main.php (View as Code)

1: 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 "".$_REQUEST['message']."
";
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:
76: 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 "".$NATS->Lang->Item("checking.updates").": "; 85: echo " 
";
86: if (!$quiet_check) 87: { 88: echo "
";
89: echo $NATS->Lang->Item("update.desc")." "; 90: echo $NATS->Version.$NATS->Release."."; 91: echo "
";
92: } 93: echo "
\n";
94: } 95: 96: 97: if ($mode=="overview") 98: { 99: 100: $t="".$NATS->Lang->Item("overview.subtitle").""; 101: Start_Round($t,600); 102: echo ""; 115: 116: echo ""; 117: $fx=time(); 118: $sx=$fx-(60*60*24); 119: echo ""; 139: echo ""; 140: echo ""; 145: echo ""; 146: echo ""; 181: echo "
"; 103: $al=$NATS->GetAlerts(); 104: if (($al===false)||(count($al)==0)) 105: { 106: echo "".$NATS->Lang->Item("no.monitor.alerts").""; 107: } 108: else 109: { 110: echo ""; 111: echo "".$NATS->Lang->Item("monitor.alerts").""; 112: echo ""; 113: } 114: echo "".$NATS->Lang->Item("check.updates")."

"; 120: echo "".$NATS->Lang->Item("monitoring")."

";
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 "".$nodecount." ".$NATS->Lang->Item("nodes.configured")."

";
132: echo "".$groupcount." ".$NATS->Lang->Item("node.groups")."
";
133: echo "
"; 134: echo "".$NATS->Lang->Item("common.tasks")."

";
135: echo "".$NATS->Lang->Item("add.nodes")."
";
136: echo "".$NATS->Lang->Item("email.alerting")."
";
137: echo "".$NATS->Lang->Item("configure.tests")."
";
138: echo "

".$NATS->Lang->Item("test.summaries")."

"; 141: echo "".$NATS->Lang->Item("today")." - "; 142: echo "".$NATS->Lang->Item("last.24h")." - "; 143: echo "".$NATS->Lang->Item("custom").""; 144: echo "

"; 147: /* 148: echo "Installed Test Modules

";
149: echo ""; 150: echo ""; 151: foreach($NATS->Tests->QuickList as $key => $val) 152: { 153: echo ""; 162: } 163: echo "
NameProvidesRevisionAdditional
"; 154: echo $NATS->Tests->Tests[$key]->name; 155: echo ""; 156: echo $NATS->Tests->Tests[$key]->type; 157: echo ""; 158: echo $NATS->Tests->Tests[$key]->revision; 159: echo ""; 160: echo $NATS->Tests->Tests[$key]->additional; 161: echo "
";
164: */ 165: echo "".$NATS->Lang->Item("monitored.nodes")."

";
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 ""; 174: echo ""; 175: if ($row['nodename']!="") echo $row['nodename']; 176: else if ($row['nodeid'] != "") echo $row['nodeid']; 177: else echo $NATS->Lang->Item("node"); 178: echo ""; 179: } 180: echo "
";
182: echo "
";
183: End_Round(); 184: echo "

";
185: 186: if ($NATS->Cfg->Get("site.nonews",0)!=1) 187: { 188: $t="".$NATS->Lang->Item("freenats.news").""; 189: Start_Round($t,600); 190: 191: echo "
"; 192: echo ""; 193: echo "
\n";
194: 195: echo "Want to disable news? Set variable site.nonews to 1"; 196: 197: End_Round(); 198: 199: echo "\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="".$NATS->Lang->Item("move.before")." "; 227: $NATS->DB->Free($r); 228: } 229: 230: Start_Round("".$NATS->Lang->Item("nodes")." ".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 ""; 235: echo ""; 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 ""; 260: 261: if ($nm) 262: { 263: echo "
";
264: echo ""; 265: echo ""; 266: } 267: 268: echo ""; 293: 294: if ($nm) echo ""; 295: $f++; 296: 297: echo ""; 298: } 299: } 300: 301: echo ""; 302: echo "
";
303: echo ""; 307: 308: $fx=time(); 309: $sx=$fx-(60*60*24); 310: echo ""; 314: 315: echo "
".$NATS->Lang->Item("node")."".$NATS->Lang->Item("options").""; 236: echo "".$NATS->Lang->Item("move")."
"; 244: echo "
"; 245: echo ""; 246: 247: echo ""; 248: if ($row['nodename']!="") echo $row['nodename']; 249: else if ($row['nodeid'] != "") echo $row['nodeid']; 250: else echo $NATS->Lang->Item("node"); 251: echo ""; 252: 253: echo " "; 254: echo "(".$row['nodeid'].")"; 255: echo ""; 256: echo " Lang->Item("edit")."\">"; 257: echo " "; 258: echo "Lang->Item("delete")."\"> "; 259: echo ""; 269: if ($f==0) echo ""; 270: else 271: { 272: echo ""; 273: echo ""; 274: echo ""; 275: } 276: 277: if ($f>=($l-1)) echo ""; 278: else 279: { 280: echo ""; 281: echo ""; 282: echo ""; 283: } 284: 285: if ($nm) 286: { 287: echo " [".$row['weight']."] "; 288: echo $nml; 289: echo " "; 290: } 291: 292: echo "
 
Lang->Item("create.node")."\"> "; 304: echo hlink("Node:Create"); 305: if ($nm) echo " ".$NATS->Lang->Item("refresh.weight").""; 306: echo "
Summary: ".$NATS->Lang->Item("today")." - "; 311: echo "".$NATS->Lang->Item("last.24h")." - "; 312: echo "".$NATS->Lang->Item("custom")." - "; 313: echo "".$NATS->Lang->Item("config")."
";
316: End_Round(); 317: } 318: 319: else if ($mode=="groups") 320: { 321: 322: $t="".$NATS->Lang->Item("node.groups")." ".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 ""; 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 ""; 335: echo ""; 336: echo ""; 339: echo ""; 358: $f++; 359: 360: echo ""; 361: } 362: } 363: echo ""; 364: echo "
";
365: echo ""; 366: echo ""; 368: echo "
GroupAlertLevel($row['groupid'])."\">".$row['groupname']."Lang->Item("edit")."\">"; 337: echo " "; 338: echo "Lang->Item("delete")."\">"; 340: 341: if ($f==0) echo ""; 342: else 343: { 344: echo ""; 345: echo ""; 346: echo ""; 347: } 348: 349: if ($f>=($l-1)) echo ""; 350: else 351: { 352: echo ""; 353: echo ""; 354: echo ""; 355: } 356: 357: echo "
 
Lang->Item("create.group")."\">"; 367: echo " ".hlink("Group:Create")."
";
369: End_Round(); 370: } 371: 372: else if ($mode=="views") 373: { 374: $t="".$NATS->Lang->Item("views")." ".hlink("View",12); 375: Start_Round($t,600); 376: echo ""; 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 ""; 389: } 390: 391: echo ""; 392: echo "
";
393: echo ""; 395: echo "
"; 383: echo "".$row['vtitle'].""; 384: echo ""; 385: echo "Lang->Item("edit")."\">"; 386: echo " "; 387: echo "Lang->Item("delete")."\">"; 388: echo "
 
Lang->Item("create.view")."\"> "; 394: echo hlink("View:Create")."
";
396: End_Round(); 397: 398: echo "

";
399: $t="".$NATS->Lang->Item("reports")." ".hlink("Report",12).""; 400: Start_Round($t,600); 401: echo "".$NATS->Lang->Item("create.report")." ".hlink("Report",12); 402: echo "

";
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 ""; 410: while ($rep=$NATS->DB->Fetch_Array($rr)) 411: { 412: echo ""; 413: echo ""; 421: } 422: echo "
"; 414: echo "".$rep['reportname'].""; 415: echo ""; 416: echo ""; 417: echo "Lang->Item("delete").": ".$rep['reportname']."\">"; 418: echo ""; 419: echo "  "; 420: echo "
";
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 "".$NATS->Lang->Item("config.summary")."

";
441: echo ""; 442: echo ""; 443: echo ""; 446: echo ""; 449: echo ""; 452: echo ""; 455: echo ""; 458: echo ""; 461: echo ""; 464: echo ""; 467: echo ""; 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 ""; 494: 495: echo ""; 496: } 497: } 498: $NATS->DB->Free($r); 499: echo "
"; 444: echo $NATS->Lang->Item("nodeid"); 445: echo ""; 447: echo $NATS->Lang->Item("name"); 448: echo ""; 450: echo $NATS->Lang->Item("hostname"); 451: echo ""; 453: echo $NATS->Lang->Item("schedule"); 454: echo ""; 456: echo $NATS->Lang->Item("enabled"); 457: echo ""; 459: echo $NATS->Lang->Item("ping")." / ".$NATS->Lang->Item("required");; 460: echo ""; 462: echo $NATS->Lang->Item("interval"); 463: echo ""; 465: echo $NATS->Lang->Item("nodeside"); 466: echo "
"; 475: echo $row['nodeid']; 476: echo ""; 477: echo $row['nodename']; 478: echo ""; 479: echo $row['hostname']; 480: echo ""; 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 ""; 486: echo dispyn($row['nodeenabled']); 487: echo ""; 488: echo dispyn($row['pingtest'])." / ".dispyn($row['pingfatal']); 489: echo ""; 490: echo $row['testinterval']; 491: echo ""; 492: echo dispyn($row['nsenabled']); 493: echo "


";
500: 501: } 502: 503: else 504: { 505: echo "Sorry - unknown mode for main.php"; 506: } 507: 508: 509: echo "

";
510: 511: ?> 512: 513: 514: 515: if ($check_update) 516: { 517: echo "\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: