1
0
mirror of https://github.com/billz/raspap-webgui.git synced 2023-10-10 13:37:24 +02:00
raspap-webgui/index.php

346 lines
14 KiB
PHP
Raw Normal View History

2015-02-16 10:30:58 +01:00
<?php
2015-02-25 14:06:48 +01:00
/**
2020-02-03 11:13:57 +01:00
* Raspbian WiFi Configuration Portal (RaspAP)
2015-02-25 14:06:48 +01:00
*
* Enables use of simple web interface rather than SSH to control wifi and hostapd on the Raspberry Pi.
2019-08-20 11:18:12 +02:00
* Recommended distribution is Raspbian Buster Lite. Specific instructions to install the supported software are
2015-02-25 14:06:48 +01:00
* in the README and original post by @SirLagz. For a quick run through, the packages required for the WebGUI are:
2020-03-25 17:54:06 +01:00
* lighttpd (version 1.4.53 installed via apt)
* php-cgi (version 7.3.14-1 installed via apt)
* along with their supporting packages, php7.3 will also need to be enabled.
*
2020-02-15 18:57:46 +01:00
* @author Lawrence Yau <sirlagz@gmail.com>
* @author Bill Zimmerman <billzimmerman@gmail.com>
* @license GNU General Public License, version 3 (GPL-3.0)
2020-04-13 10:16:52 +02:00
* @version 2.4
2020-02-15 18:57:46 +01:00
* @link https://github.com/billz/raspap-webgui
* @see http://sirlagz.net/2013/02/08/raspap-webgui/
2015-02-25 14:06:48 +01:00
*/
2020-02-15 18:57:46 +01:00
require 'includes/csrf.php';
2019-08-07 23:53:04 +02:00
ensureCSRFSessionToken();
2018-05-29 20:52:41 +02:00
2020-02-15 18:57:46 +01:00
require_once 'includes/config.php';
require_once 'includes/defaults.php';
require_once RASPI_CONFIG.'/raspap.php';
require_once 'includes/locale.php';
require_once 'includes/functions.php';
require_once 'includes/dashboard.php';
require_once 'includes/authenticate.php';
require_once 'includes/admin.php';
require_once 'includes/dhcp.php';
require_once 'includes/hostapd.php';
2020-03-26 20:45:39 +01:00
require_once 'includes/adblock.php';
2020-02-15 18:57:46 +01:00
require_once 'includes/system.php';
require_once 'includes/sysstats.php';
require_once 'includes/configure_client.php';
require_once 'includes/networking.php';
require_once 'includes/themes.php';
require_once 'includes/data_usage.php';
require_once 'includes/about.php';
require_once 'includes/openvpn.php';
2020-04-20 13:52:03 +02:00
require_once 'includes/wireguard.php';
2020-02-15 18:57:46 +01:00
require_once 'includes/torproxy.php';
2015-02-25 14:06:48 +01:00
2015-02-16 10:30:58 +01:00
$output = $return = 0;
$page = $_GET['page'];
2016-06-24 23:39:39 +02:00
if (!isset($_COOKIE['theme'])) {
2017-10-09 16:04:59 +02:00
$theme = "custom.css";
2017-10-07 01:08:06 +02:00
} else {
2017-10-09 16:04:59 +02:00
$theme = $_COOKIE['theme'];
2017-10-07 01:08:06 +02:00
}
2019-10-08 19:35:32 +02:00
$theme_url = 'app/css/'.htmlspecialchars($theme, ENT_QUOTES);
if ($_COOKIE['sidebarToggled'] == 'true' ) {
$toggleState = "toggled";
}
// Get Bridged AP mode status
$arrHostapdConf = parse_ini_file('/etc/raspap/hostapd.ini');
// defaults to false
$bridgedEnabled = $arrHostapdConf['BridgedEnable'];
?><!DOCTYPE html>
2015-02-25 14:06:48 +01:00
<html lang="en">
<head>
<meta charset="utf-8">
<?php echo CSRFMetaTag() ?>
2015-02-25 14:06:48 +01:00
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
2015-02-16 10:30:58 +01:00
2019-08-20 11:18:12 +02:00
<title><?php echo _("RaspAP WiFi Configuration Portal"); ?></title>
2015-02-16 10:30:58 +01:00
2015-02-25 14:06:48 +01:00
<!-- Bootstrap Core CSS -->
2019-10-11 21:37:59 +02:00
<link href="dist/bootstrap/css/bootstrap.css" rel="stylesheet">
2015-02-16 10:30:58 +01:00
<!-- SB-Admin-2 CSS -->
2019-10-08 19:35:32 +02:00
<link href="dist/sb-admin-2/css/sb-admin-2.min.css" rel="stylesheet">
2015-02-16 10:30:58 +01:00
2019-10-20 00:26:35 +02:00
<!-- DataTables CSS -->
<link href="dist/datatables/dataTables.bootstrap4.min.css" rel="stylesheet">
2015-02-25 14:06:48 +01:00
<!-- Custom Fonts -->
2019-10-11 21:37:59 +02:00
<link href="dist/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
2015-02-16 10:30:58 +01:00
2015-02-25 14:06:48 +01:00
<!-- Custom CSS -->
2017-10-07 01:08:06 +02:00
<link href="<?php echo $theme_url; ?>" title="main" rel="stylesheet">
2015-02-16 10:30:58 +01:00
2019-10-08 19:35:32 +02:00
<link rel="shortcut icon" type="image/png" href="app/icons/favicon.png?ver=2.0">
<link rel="apple-touch-icon" sizes="180x180" href="app/icons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="app/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="app/icons/favicon-16x16.png">
<link rel="icon" type="image/png" href="app/icons/favicon.png" />
<link rel="manifest" href="app/icons/site.webmanifest">
<link rel="mask-icon" href="app/icons/safari-pinned-tab.svg" color="#b91d47">
<meta name="msapplication-config" content="app/icons/browserconfig.xml">
<meta name="msapplication-TileColor" content="#b91d47">
<meta name="theme-color" content="#ffffff">
2015-02-25 14:06:48 +01:00
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
2019-10-11 21:37:59 +02:00
<body id="page-top">
2019-10-13 01:25:35 +02:00
<!-- Page Wrapper -->
<div id="wrapper">
2019-10-11 21:37:59 +02:00
<!-- Sidebar -->
2020-03-24 19:48:35 +01:00
<ul class="navbar-nav sidebar sidebar-light d-none d-md-block accordion <?php echo (isset($toggleState)) ? $toggleState : null ; ?>" id="accordionSidebar">
2019-10-11 21:37:59 +02:00
<!-- Sidebar - Brand -->
2019-10-15 02:17:42 +02:00
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="index.php?page=wlan0_info">
2020-02-02 09:37:15 +01:00
<div class="sidebar-brand-text ml-1">RaspAP</div>
</a>
2019-10-11 21:37:59 +02:00
<!-- Divider -->
<hr class="sidebar-divider my-0">
2020-02-02 12:33:09 +01:00
<div class="row">
<div class="col-xs ml-3 sidebar-brand-icon">
2020-02-02 15:59:47 +01:00
<img src="app/img/raspAP-logo.svg" class="navbar-logo" width="64" height="64">
2020-02-02 12:33:09 +01:00
</div>
<div class="col-xs ml-2">
<div class="ml-1">Status</div>
2020-04-11 09:59:21 +02:00
<div class="info-item-xs"><span class="icon">
<i class="fas fa-circle <?php echo ($hostapd_led); ?>"></i></span> <?php echo _("Hotspot").' '. _($hostapd_status); ?>
</div>
<div class="info-item-xs"><span class="icon">
<i class="fas fa-circle <?php echo ($memused_led); ?>"></i></span> <?php echo _("Memory Use").': '. htmlspecialchars($memused, ENT_QUOTES); ?>%
</div>
<div class="info-item-xs"><span class="icon">
<i class="fas fa-circle <?php echo ($cputemp_led); ?>"></i></span> <?php echo _("CPU Temp").': '. htmlspecialchars($cputemp, ENT_QUOTES); ?>°C
</div>
2020-02-02 12:33:09 +01:00
</div>
2020-02-02 09:37:15 +01:00
</div>
2020-02-03 10:48:58 +01:00
<li class="nav-item">
<a class="nav-link" href="index.php?page=wlan0_info"><i class="fas fa-tachometer-alt fa-fw mr-2"></i><span class="nav-label"><?php echo _("Dashboard"); ?></span></a>
</li>
<?php if (RASPI_HOTSPOT_ENABLED) : ?>
<li class="nav-item">
2020-02-29 00:00:35 +01:00
<a class="nav-link" href="index.php?page=hostapd_conf"><i class="far fa-dot-circle fa-fw mr-2"></i><span class="nav-label"><?php echo _("Hotspot"); ?></a>
2020-03-26 19:21:59 +01:00
</li>
<?php endif; ?>
<?php if (RASPI_DHCP_ENABLED && !$bridgedEnabled) : ?>
<li class="nav-item">
<a class="nav-link" href="index.php?page=dhcpd_conf"><i class="fas fa-exchange-alt fa-fw mr-2"></i><span class="nav-label"><?php echo _("DHCP Server"); ?></a>
2020-03-26 20:45:39 +01:00
</li>
<?php endif; ?>
<?php if (RASPI_ADBLOCK_ENABLED) : ?>
<li class="nav-item">
<a class="nav-link" href="index.php?page=adblock_conf"><i class="far fa-hand-paper fa-fw mr-2"></i><span class="nav-label"><?php echo _("Ad Blocking"); ?></a>
2020-02-03 10:48:58 +01:00
</li>
<?php endif; ?>
<?php if (RASPI_NETWORK_ENABLED) : ?>
<li class="nav-item">
2020-02-29 00:00:35 +01:00
<a class="nav-link" href="index.php?page=network_conf"><i class="fas fa-network-wired fa-fw mr-2"></i><span class="nav-label"><?php echo _("Networking"); ?></a>
2020-02-03 10:48:58 +01:00
</li>
<?php endif; ?>
2020-03-26 19:21:59 +01:00
<?php if (RASPI_WIFICLIENT_ENABLED && !$bridgedEnabled) : ?>
2020-02-03 10:48:58 +01:00
<li class="nav-item">
2020-03-26 19:21:59 +01:00
<a class="nav-link" href="index.php?page=wpa_conf"><i class="fas fa-wifi fa-fw mr-2"></i><span class="nav-label"><?php echo _("WiFi client"); ?></span></a>
2020-02-03 10:48:58 +01:00
</li>
<?php endif; ?>
<?php if (RASPI_OPENVPN_ENABLED) : ?>
<li class="nav-item">
2020-02-29 00:00:35 +01:00
<a class="nav-link" href="index.php?page=openvpn_conf"><i class="fas fa-key fa-fw mr-2"></i><span class="nav-label"><?php echo _("OpenVPN"); ?></a>
2020-04-20 13:52:03 +02:00
</li>
<?php endif; ?>
<?php if (RASPI_WIREGUARD_ENABLED) : ?>
<li class="nav-item">
<a class="nav-link" href="index.php?page=wg_conf"><i class="fas fa-key fa-fw mr-2"></i><span class="nav-label"><?php echo _("WireGuard"); ?></a>
2020-02-03 10:48:58 +01:00
</li>
<?php endif; ?>
<?php if (RASPI_TORPROXY_ENABLED) : ?>
<li class="nav-item">
2020-02-29 00:00:35 +01:00
<a class="nav-link" href="index.php?page=torproxy_conf"><i class="fas fa-eye-slash fa-fw mr-2"></i><span class="nav-label"><?php echo _("TOR proxy"); ?></a>
2020-02-03 10:48:58 +01:00
</li>
<?php endif; ?>
<?php if (RASPI_CONFAUTH_ENABLED) : ?>
<li class="nav-item">
2020-02-29 18:09:31 +01:00
<a class="nav-link" href="index.php?page=auth_conf"><i class="fas fa-user-lock fa-fw mr-2"></i><span class="nav-label"><?php echo _("Authentication"); ?></a>
2020-02-03 10:48:58 +01:00
</li>
<?php endif; ?>
<?php if (RASPI_CHANGETHEME_ENABLED) : ?>
<li class="nav-item">
<a class="nav-link" href="index.php?page=theme_conf"><i class="fas fa-paint-brush fa-fw mr-2"></i><span class="nav-label"><?php echo _("Change Theme"); ?></a>
</li>
<?php endif; ?>
<?php if (RASPI_VNSTAT_ENABLED) : ?>
<li class="nav-item">
<a class="nav-link" href="index.php?page=data_use"><i class="fas fa-chart-bar fa-fw mr-2"></i><span class="nav-label"><?php echo _("Data usage"); ?></a>
</li>
<?php endif; ?>
<?php if (RASPI_SYSTEM_ENABLED) : ?>
<li class="nav-item">
<a class="nav-link" href="index.php?page=system_info"><i class="fas fa-cube fa-fw mr-2"></i><span class="nav-label"><?php echo _("System"); ?></a>
</li>
<?php endif; ?>
<li class="nav-item">
<a class="nav-link" href="index.php?page=about"><i class="fas fa-info-circle fa-fw mr-2"></i><span class="nav-label"><?php echo _("About RaspAP"); ?></a>
</li>
<!-- Divider -->
<hr class="sidebar-divider d-none d-md-block">
<!-- Sidebar Toggler (Sidebar) -->
<div class="text-center d-none d-md-block">
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
</ul>
<!-- End of Sidebar -->
2020-02-03 10:56:30 +01:00
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
2020-02-03 10:56:30 +01:00
<!-- Main Content -->
<div id="content">
<!-- Topbar -->
<nav class="navbar navbar-expand navbar-light topbar mb-1 static-top">
<!-- Sidebar Toggle (Topbar) -->
<button id="sidebarToggleTopbar" class="btn btn-link d-md-none rounded-circle mr-3">
<i class="fa fa-bars"></i>
</button>
<!-- Topbar Navbar -->
<p class="text-left brand-title mt-3 ml-2"><?php //echo _("WiFi Configuration Portal"); ?></p>
<ul class="navbar-nav ml-auto">
<div class="topbar-divider d-none d-sm-block"></div>
<!-- Nav Item - User -->
<li class="nav-item dropdown no-arrow">
<a class="nav-link" href="index.php?page=auth_conf">
<span class="mr-2 d-none d-lg-inline small"><?php echo htmlspecialchars($config['admin_user'], ENT_QUOTES); ?></span>
<i class="fas fa-user-circle fa-3x"></i>
</a>
</li>
</ul>
</nav>
<!-- End of Topbar -->
<!-- Begin Page Content -->
<div class="container-fluid">
<?php
2020-02-15 18:57:46 +01:00
$extraFooterScripts = array();
// handle page actions
switch ($page) {
case "wlan0_info":
DisplayDashboard($extraFooterScripts);
break;
case "dhcpd_conf":
DisplayDHCPConfig();
break;
case "wpa_conf":
DisplayWPAConfig();
break;
case "network_conf":
DisplayNetworkingConfig();
break;
case "hostapd_conf":
DisplayHostAPDConfig();
break;
2020-03-26 20:45:39 +01:00
case "adblock_conf":
DisplayAdBlockConfig();
break;
2020-02-15 18:57:46 +01:00
case "openvpn_conf":
DisplayOpenVPNConfig();
break;
2020-04-20 13:52:03 +02:00
case "wg_conf":
DisplayWireGuardConfig();
break;
2020-02-15 18:57:46 +01:00
case "torproxy_conf":
DisplayTorProxyConfig();
break;
case "auth_conf":
DisplayAuthConfig($config['admin_user'], $config['admin_pass']);
break;
case "save_hostapd_conf":
SaveTORAndVPNConfig();
break;
case "theme_conf":
DisplayThemeConfig();
break;
case "data_use":
DisplayDataUsage($extraFooterScripts);
break;
case "system_info":
DisplaySystem();
break;
case "about":
DisplayAbout();
break;
default:
DisplayDashboard($extraFooterScripts);
}
?>
2020-02-03 10:56:30 +01:00
</div><!-- /.container-fluid -->
</div><!-- End of Main Content -->
<!-- Footer -->
<footer class="sticky-footer bg-grey-100">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span></span>
</div>
</div>
</footer>
<!-- End Footer -->
</div><!-- End of Content Wrapper -->
2019-10-13 01:25:35 +02:00
</div><!-- End of Page Wrapper -->
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top" style="display: inline;">
<i class="fas fa-angle-up"></i>
</a>
2015-02-25 14:06:48 +01:00
<!-- jQuery -->
2019-10-08 19:35:32 +02:00
<script src="dist/jquery/jquery.min.js"></script>
2015-02-25 14:06:48 +01:00
<!-- Bootstrap Core JavaScript -->
2019-10-13 01:25:35 +02:00
<script src="dist/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Core plugin JavaScript -->
<script src="dist/jquery-easing/jquery.easing.min.js"></script>
2015-02-25 14:06:48 +01:00
2019-10-11 21:37:59 +02:00
<!-- Chart.js JavaScript -->
<script src="dist/chart.js/Chart.min.js"></script>
2015-02-25 14:06:48 +01:00
<!-- SB-Admin-2 JavaScript -->
2019-10-08 19:35:32 +02:00
<script src="dist/sb-admin-2/js/sb-admin-2.js"></script>
<!-- Custom RaspAP JS -->
2019-10-08 19:35:32 +02:00
<script src="app/js/custom.js"></script>
2019-10-31 10:06:35 +01:00
<?php if ($page == "wlan0_info" || !isset($page)) { ?>
2019-10-14 12:33:02 +02:00
<!-- Link Quality Chart -->
<script src="app/js/linkquality.js"></script>
2019-12-29 20:30:55 +01:00
<?php }
2019-12-29 20:30:55 +01:00
// Load non default JS/ECMAScript in footer.
foreach ($extraFooterScripts as $script) {
echo ' <script type="text/javascript" src="' , $script['src'] , '"';
if ($script['defer']) {
2020-02-03 11:13:57 +01:00
echo ' defer="defer"';
2019-12-29 20:30:55 +01:00
}
echo '></script>' , PHP_EOL;
}
2020-02-15 18:57:46 +01:00
?>
</body>
2015-02-25 14:06:48 +01:00
</html>