File: 1.17.0a/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: echo ""; 333: echo ""; 334: echo ""; 337: echo ""; 356: $f++; 357: 358: echo ""; 359: } 360: echo ""; 361: echo "
";
362: echo ""; 363: echo ""; 365: echo "
GroupAlertLevel($row['groupid'])."\">".$row['groupname']."Lang->Item("edit")."\">"; 335: echo " "; 336: echo "Lang->Item("delete")."\">"; 338: 339: if ($f==0) echo ""; 340: else 341: { 342: echo ""; 343: echo ""; 344: echo ""; 345: } 346: 347: if ($f>=($l-1)) echo ""; 348: else 349: { 350: echo ""; 351: echo ""; 352: echo ""; 353: } 354: 355: echo "
 
Lang->Item("create.group")."\">"; 364: echo " ".hlink("Group:Create")."
";
366: End_Round(); 367: } 368: 369: else if ($mode=="views") 370: { 371: $t="".$NATS->Lang->Item("views")." ".hlink("View",12); 372: Start_Round($t,600); 373: echo ""; 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 ""; 386: } 387: 388: echo ""; 389: echo "
";
390: echo ""; 392: echo "
"; 380: echo "".$row['vtitle'].""; 381: echo ""; 382: echo "Lang->Item("edit")."\">"; 383: echo " "; 384: echo "Lang->Item("delete")."\">"; 385: echo "
 
Lang->Item("create.view")."\"> "; 391: echo hlink("View:Create")."
";
393: End_Round(); 394: 395: echo "

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

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

";
438: echo ""; 439: echo ""; 440: echo ""; 443: echo ""; 446: echo ""; 449: echo ""; 452: echo ""; 455: echo ""; 458: echo ""; 461: echo ""; 464: echo ""; 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 ""; 489: 490: echo ""; 491: } 492: $NATS->DB->Free($r); 493: echo "
"; 441: echo $NATS->Lang->Item("nodeid"); 442: echo ""; 444: echo $NATS->Lang->Item("name"); 445: echo ""; 447: echo $NATS->Lang->Item("hostname"); 448: echo ""; 450: echo $NATS->Lang->Item("schedule"); 451: echo ""; 453: echo $NATS->Lang->Item("enabled"); 454: echo ""; 456: echo $NATS->Lang->Item("ping")." / ".$NATS->Lang->Item("required");; 457: echo ""; 459: echo $NATS->Lang->Item("interval"); 460: echo ""; 462: echo $NATS->Lang->Item("nodeside"); 463: echo "
"; 470: echo $row['nodeid']; 471: echo ""; 472: echo $row['nodename']; 473: echo ""; 474: echo $row['hostname']; 475: echo ""; 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 ""; 481: echo dispyn($row['nodeenabled']); 482: echo ""; 483: echo dispyn($row['pingtest'])." / ".dispyn($row['pingfatal']); 484: echo ""; 485: echo $row['testinterval']; 486: echo ""; 487: echo dispyn($row['nsenabled']); 488: echo "


";
494: 495: } 496: 497: else 498: { 499: echo "Sorry - unknown mode for main.php"; 500: } 501: 502: 503: echo "

";
504: 505: ?> 506: 507: 508: 509: if ($check_update) 510: { 511: echo "\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: