mirror of
https://github.com/billz/raspap-webgui.git
synced 2023-10-10 13:37:24 +02:00
Merge branch 'RaspAP:master' into master
This commit is contained in:
commit
80836f3da4
@ -24,7 +24,8 @@ The following features are currently available exclusively to sponsors. A tangib
|
||||
✅ [MAC address cloning](https://docs.raspap.com/net-devices/#changing-the-mac-address)
|
||||
✅ [Network diagnostics](https://docs.raspap.com/net-devices/#diagnostics)
|
||||
✅ [WireGuard VPN kill switch](https://docs.raspap.com/wireguard/#kill-switch)
|
||||
⚙️ Dynamic DNS support (in progress)
|
||||
✅ [Dynamic DNS](https://docs.raspap.com/dynamicdns/)
|
||||
✅ [Multiple WireGuard configs](https://docs.raspap.com/wireguard/#multiple-configs)
|
||||
|
||||
Look for the list above to grow as we add more exclusive features. Be sure to visit this page from time to time to learn about what's new, check the [Insiders docs page](https://docs.raspap.com/insiders/) and follow [@RaspAP on Twitter](https://twitter.com/rasp_ap) to stay updated.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
![](https://i.imgur.com/xeKD93p.png)
|
||||
[![Release 2.9.2](https://img.shields.io/badge/release-v2.9.2-green)](https://github.com/raspap/raspap-webgui/releases) [![Awesome](https://awesome.re/badge.svg)](https://github.com/thibmaek/awesome-raspberry-pi) [![Join Insiders](https://img.shields.io/static/v1?label=Join%20Insiders&message=%E2%9D%A4&logo=GitHub&color=ff69b4)](https://github.com/sponsors/RaspAP) [![Build Status](https://app.travis-ci.com/RaspAP/raspap-webgui.svg?branch=master)](https://app.travis-ci.com/RaspAP/raspap-webgui) [![Crowdin](https://badges.crowdin.net/raspap/localized.svg)](https://crowdin.com/project/raspap) [![Twitter URL](https://img.shields.io/twitter/url?label=%40RaspAP&logoColor=%23d8224c&url=https%3A%2F%2Ftwitter.com%2Frasp_ap)](https://twitter.com/rasp_ap) [![Subreddit subscribers](https://img.shields.io/reddit/subreddit-subscribers/RaspAP?style=social)](https://www.reddit.com/r/RaspAP/)
|
||||
[![Release 2.9.3](https://img.shields.io/badge/release-v2.9.3-green)](https://github.com/raspap/raspap-webgui/releases) [![Awesome](https://awesome.re/badge.svg)](https://github.com/thibmaek/awesome-raspberry-pi) [![Join Insiders](https://img.shields.io/static/v1?label=Join%20Insiders&message=%E2%9D%A4&logo=GitHub&color=ff69b4)](https://github.com/sponsors/RaspAP) [![Build Status](https://app.travis-ci.com/RaspAP/raspap-webgui.svg?branch=master)](https://app.travis-ci.com/RaspAP/raspap-webgui) [![Crowdin](https://badges.crowdin.net/raspap/localized.svg)](https://crowdin.com/project/raspap) [![Twitter URL](https://img.shields.io/twitter/url?label=%40RaspAP&logoColor=%23d8224c&url=https%3A%2F%2Ftwitter.com%2Frasp_ap)](https://twitter.com/rasp_ap) [![Subreddit subscribers](https://img.shields.io/reddit/subreddit-subscribers/RaspAP?style=social)](https://www.reddit.com/r/RaspAP/) [![Join the chat at https://app.gitter.im/#/room/#RaspAP:gitter.im](https://img.shields.io/badge/chat-on%20gitter-brightgreen)](https://app.gitter.im/#/room/#RaspAP:gitter.im)
|
||||
|
||||
RaspAP is feature-rich wireless router software that _just works_ on many popular [Debian-based devices](#supported-operating-systems), including the Raspberry Pi. Our popular [Quick installer](#quick-installer) creates a known-good default configuration for all current Raspberry Pis with onboard wireless. A fully responsive, mobile-ready interface gives you control over the relevant services and networking options. Advanced DHCP settings, WireGuard and OpenVPN support, [SSL certificates](https://docs.raspap.com/ssl-quick/), security audits, [captive portal integration](https://docs.raspap.com/captive/), themes and [multilingual options](https://docs.raspap.com/translations/) are included.
|
||||
|
||||
@ -32,7 +32,7 @@ We hope you enjoy using RaspAP as much as we do creating it. Tell us how you use
|
||||
- [License](#license)
|
||||
|
||||
## Prerequisites
|
||||
Start with a clean install of the [latest release of Raspberry Pi OS (32-bit) Lite](https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit). The Raspberry Pi OS desktop and 64-bit beta distros are unsupported.
|
||||
Start with a clean install of the [latest release of Raspberry Pi OS Lite](https://www.raspberrypi.com/software/operating-systems/). Both the 32- and 64-bit Lite versions are supported. The Raspberry Pi OS desktop distro is [unsupported](https://docs.raspap.com/faq/#distros).
|
||||
|
||||
1. Update Raspbian, including the kernel and firmware, followed by a reboot:
|
||||
```
|
||||
|
@ -9,6 +9,7 @@ if (isset($_POST['interface'])) {
|
||||
define( 'NL80211_BAND_24GHZ', 0x1 );
|
||||
define( 'NL80211_BAND_5GHZ', 0x2 );
|
||||
$iface = escapeshellcmd($_POST['interface']);
|
||||
$flags = 0;
|
||||
|
||||
// get physical device for selected interface
|
||||
exec("iw dev | awk '/$iface/ {print line}{line = $0}'", $return);
|
||||
|
@ -46,6 +46,7 @@ if (isset($interface)) {
|
||||
preg_match('/static\sdomain_name_server=(.*)/', $matched[0], $static_dns);
|
||||
preg_match('/fallback\sstatic_'.$interface.'/', $matched[0], $fallback);
|
||||
preg_match('/(?:no)?gateway/', $matched[0], $gateway);
|
||||
preg_match('/nohook\swpa_supplicant/', $matched[0], $nohook_wpa_supplicant);
|
||||
$dhcpdata['Metric'] = $metric[1];
|
||||
$dhcpdata['StaticIP'] = strpos($static_ip[1],'/') ? substr($static_ip[1], 0, strpos($static_ip[1],'/')) : $static_ip[1];
|
||||
$dhcpdata['SubnetMask'] = cidr2mask($static_ip[1]);
|
||||
@ -53,6 +54,7 @@ if (isset($interface)) {
|
||||
$dhcpdata['StaticDNS'] = $static_dns[1];
|
||||
$dhcpdata['FallbackEnabled'] = empty($fallback) ? false: true;
|
||||
$dhcpdata['DefaultRoute'] = $gateway[0] == "gateway";
|
||||
$dhcpdata['NoHookWPASupplicant'] = $nohook_wpa_supplicant[0] == "nohook wpa_supplicant";
|
||||
|
||||
echo json_encode($dhcpdata);
|
||||
}
|
||||
|
627
app/css/material-dark.php
Normal file
627
app/css/material-dark.php
Normal file
@ -0,0 +1,627 @@
|
||||
<?php header("Content-Type: text/css; charset=utf-8"); ?>
|
||||
<?php
|
||||
require_once '../../includes/functions.php';
|
||||
$color = getColorOpt();
|
||||
?>
|
||||
|
||||
/*
|
||||
Theme Name: Material Dark
|
||||
Author: @marek-guran
|
||||
Author URI: https://github.com/marek-guran
|
||||
Description: Inspired by Google's Material You Design
|
||||
License: GNU General Public License v3.0
|
||||
*/
|
||||
|
||||
<?php
|
||||
// Base color
|
||||
$baseColor = $color;
|
||||
|
||||
// Function to darken a color by a percentage
|
||||
function darkenColor($color, $percent)
|
||||
{
|
||||
$percent /= 100;
|
||||
$r = hexdec(substr($color, 1, 2));
|
||||
$g = hexdec(substr($color, 3, 2));
|
||||
$b = hexdec(substr($color, 5, 2));
|
||||
|
||||
$r = round($r * (1 - $percent));
|
||||
$g = round($g * (1 - $percent));
|
||||
$b = round($b * (1 - $percent));
|
||||
|
||||
return sprintf("#%02x%02x%02x", $r, $g, $b);
|
||||
}
|
||||
|
||||
// Function to lighten a color by a percentage
|
||||
function lightenColor($color, $percent)
|
||||
{
|
||||
$percent /= 100;
|
||||
$r = hexdec(substr($color, 1, 2));
|
||||
$g = hexdec(substr($color, 3, 2));
|
||||
$b = hexdec(substr($color, 5, 2));
|
||||
|
||||
$r = round($r + (255 - $r) * $percent);
|
||||
$g = round($g + (255 - $g) * $percent);
|
||||
$b = round($b + (255 - $b) * $percent);
|
||||
|
||||
return sprintf("#%02x%02x%02x", $r, $g, $b);
|
||||
}
|
||||
|
||||
$textColor = lightenColor($baseColor, 95);
|
||||
// Create other color variables
|
||||
$cardsColor = darkenColor($baseColor, 60);
|
||||
$secondaryColor = lightenColor($baseColor, 30);
|
||||
$primaryColor = $baseColor;
|
||||
$backgroundColor = darkenColor($baseColor, 90);
|
||||
|
||||
?>
|
||||
|
||||
@import url('all.css');
|
||||
|
||||
body {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
html * {
|
||||
font-family: Helvetica,Arial,sans-serif;
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.nav-item.active .nav-link {
|
||||
position: relative;
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
|
||||
border-top-right-radius: 18px;
|
||||
border-bottom-right-radius: 18px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2rem !important;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
h5.card-title {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
border-left: .01rem solid <?php echo $secondaryColor; ?>;
|
||||
border-bottom: .01rem solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-light .nav-item.active .nav-link i {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar .nav-item.active .nav-link {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.sidebar .nav-item .nav-link span:hover {
|
||||
color: <?php echo $textColor; ?>!important;
|
||||
}
|
||||
|
||||
#wrapper #content-wrapper #content {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.topbar {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.col {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.card-header .col i.fa-tachometer-alt,
|
||||
.card-header .col i.fa-dot-circle,
|
||||
.card-header .col i.fa-wifi,
|
||||
.card-header .col i.fa-exchange-alt,
|
||||
.card-header .col i.fa-hand-paper,
|
||||
.card-header .col i.fa-network-wired,
|
||||
.card-header .col i.fa-key,
|
||||
.card-header .ra-wireguard,
|
||||
.card-header .ra-wireguard:before,
|
||||
.card-header .col i.fa-user-lock,
|
||||
.card-header .col i.fa-chart-bar,
|
||||
.card-header .col i.fa-cube,
|
||||
.card-header .col i.fa-info-circle,
|
||||
.card-header .col i.fa-globe,
|
||||
.card-header .col i.fa-shield-alt {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
i.fa-bars {
|
||||
color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.nav-tabs {
|
||||
border-bottom: 1px solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
.nav-tabs .nav-link.active,
|
||||
.nav-tabs .nav-link {
|
||||
font-size: 1.0rem;
|
||||
border-top-left-radius: 18px;
|
||||
border-top-right-radius: 18px;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-link:hover {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-brand:hover {
|
||||
color: #d2d2d2;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle .icon-bar {
|
||||
background-color: #d2d2d2;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle:focus,
|
||||
.navbar-default .navbar-toggle:hover {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
#content, .navbar, .sidebar, .footer, .sticky-footer {
|
||||
background-attachment: scroll;
|
||||
background-repeat: repeat;
|
||||
background-size: auto;
|
||||
background-position: 0 0;
|
||||
background-origin: padding-box;
|
||||
background-clip: border-box;
|
||||
}
|
||||
|
||||
.sticky-footer {
|
||||
background-position: 30px 0;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
background-position: 0 20px;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-link.active {
|
||||
color: <?php echo $textColor; ?>;
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
a:focus, a:hover {
|
||||
color: #d2d2d2;
|
||||
}
|
||||
|
||||
.card>.card-header, .modal-content, .modal-header {
|
||||
border-color: transparent;
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
color: <?php echo $textColor; ?>;
|
||||
border-radius: 18px;
|
||||
font-size: 1.0rem;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
border-bottom-left-radius: 0px!important;
|
||||
border-bottom-right-radius: 0px!important;
|
||||
position: relative;
|
||||
margin-bottom: -18px;
|
||||
}
|
||||
|
||||
.card>.card-header .fa {
|
||||
color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.card-header [class^="fa"] {
|
||||
color: <?php echo $textColor; ?>;
|
||||
font-size: 1.0rem;
|
||||
}
|
||||
|
||||
.card, .card-body {
|
||||
border-color: transparent;
|
||||
border-radius: 18px;
|
||||
background-color: <?php echo $cardsColor; ?>;
|
||||
box-shadow: 0px -5px 5px rgba(0, 0, 0, 0.1),
|
||||
0px 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding-top: 36px; /* 18px to move down + 18px space at the top */
|
||||
padding-bottom: 36px; /* 18px space at the bottom */
|
||||
}
|
||||
|
||||
.unstyled {
|
||||
background-color: <?php echo $cardsColor; ?>;
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
hr {
|
||||
border-top: .01rem solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-brand-text {
|
||||
color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.ra-raspap:before {
|
||||
color: #ac1b3d !important;
|
||||
}
|
||||
|
||||
.sidebar-light #sidebarToggle {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border: 1px solid <?php echo $secondaryColor; ?>; !important
|
||||
}
|
||||
|
||||
.sidebar-light #sidebarToggle::after {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-light .nav-item .nav-link:hover i {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-light #sidebarToggle:hover {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar.toggled .nav-item .nav-link span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sidebar.toggled .nav-item .nav-link {
|
||||
text-align: center;
|
||||
padding: .6rem 1rem;
|
||||
width: 6.5rem;
|
||||
}
|
||||
|
||||
.card-footer, .modal-footer {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
color: <?php echo $textColor; ?>;
|
||||
border-top: 0px;
|
||||
border-bottom-right-radius: 18px!important;
|
||||
border-bottom-left-radius: 18px!important;
|
||||
position: relative;
|
||||
margin-top: -18px;
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.card>.card-header::before, .navbar-default::before {
|
||||
content: " ";
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
background-size: 100% 2px, 3px 100%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.sidebar-light, .sticky-footer {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-light .nav-item .nav-link i {
|
||||
color: rgba(230, 230, 230, .3);
|
||||
}
|
||||
|
||||
.sidebar .nav-item .nav-link {
|
||||
padding: 0.6rem;
|
||||
padding-left: 1.2rem;
|
||||
}
|
||||
|
||||
.sidebar-light hr.sidebar-divider {
|
||||
border-top: 1px solid <?php echo $secondaryColor; ?>;
|
||||
padding-top: 0.5rem;
|
||||
}
|
||||
|
||||
.sidebar .nav-item .nav-link span {
|
||||
font-size: 1.0rem;
|
||||
}
|
||||
|
||||
.topbar .topbar-divider {
|
||||
border-right: 1px solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.label-warning {
|
||||
background-color: #d2d2d2;
|
||||
}
|
||||
|
||||
span.label.label-warning {
|
||||
color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.table>tbody>tr>td,
|
||||
.table>tbody>tr>th,
|
||||
.table>tfoot>tr>td,
|
||||
.table>tfoot>tr>th,
|
||||
.table>thead>tr>td,
|
||||
.table>thead>tr>th {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border-top: .01rem solid <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.table{
|
||||
border-radius: 18px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.table>thead>tr>th {
|
||||
vertical-align: bottom;
|
||||
border-bottom: 0 solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
[class*="btn"], [class*="btn"]:focus, [class*="btn"]:disabled {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
border-color: transparent;
|
||||
border-radius: 18px;
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
[class*="btn"]:hover {
|
||||
border-radius: 18px;
|
||||
color: <?php echo $textColor; ?>;
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
[class*="btn"]:hover .disabled {
|
||||
background-color:red;
|
||||
}
|
||||
|
||||
[class*="alert"] {
|
||||
border-radius: 18px;
|
||||
color: <?php echo $textColor; ?>;
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border: 1px solid #404040;
|
||||
}
|
||||
|
||||
.close {
|
||||
font-size: 1.2em;
|
||||
font-weight: 400;
|
||||
text-shadow: none;
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.form-control,
|
||||
.form-control:focus,
|
||||
.custom-select {
|
||||
color: <?php echo $textColor; ?>;
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.form-control:disabled,
|
||||
.form-control[readonly] {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.form-control::-webkit-input-placeholder { color: #d2d2d2; }
|
||||
.form-control:-moz-placeholder { color: #d2d2d2; }
|
||||
.form-control::-moz-placeholder { color: #d2d2d2; }
|
||||
.form-control:-ms-input-placeholder { color: #d2d2d2; }
|
||||
.form-control::-ms-input-placeholder { color: #d2d2d2; }
|
||||
|
||||
.form-control option {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
input[type="text"]{
|
||||
color: <?php echo $textColor; ?>; !important
|
||||
}
|
||||
|
||||
.progress {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
#progressBar {
|
||||
background-color: <?php echo $secondaryColor; ?>!important;
|
||||
}
|
||||
|
||||
.progress-bar.bg-success {
|
||||
background-color: <?php echo $primaryColor; ?>!important;
|
||||
color: <?php echo $textColor; ?>!important;
|
||||
}
|
||||
|
||||
.progress .progress-bar {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.progress-bar.progress-bar-info.progress-bar-striped.active {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.figure-img {
|
||||
filter: opacity(0.7);
|
||||
}
|
||||
|
||||
.ra-wireguard:before {
|
||||
color: #404040 !important;
|
||||
}
|
||||
|
||||
.ra-wireguard:hover:before {
|
||||
color: #d1d3e2 !important;
|
||||
}
|
||||
|
||||
.sidebar .nav-item.active .nav-link span.ra-wireguard:before {
|
||||
color: #d2d2d2 !important;
|
||||
}
|
||||
|
||||
.custom-control-input:checked ~ .custom-control-label::before {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.custom-control-input:checked ~ .custom-control-label::before {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border-color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.wg-keygen {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border: 1px solid yellow <?php echo $secondaryColor; ?>;
|
||||
border-top-right-radius: 18px !important;
|
||||
border-bottom-right-radius: 18px !important;
|
||||
}
|
||||
|
||||
.btn.btn-outline-secondary.js-add-dhcp-upstream-server {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
border-top-right-radius: 18px !important;
|
||||
border-bottom-right-radius: 18px !important;
|
||||
}
|
||||
|
||||
.btn.btn-outline-success.js-add-dhcp-static-lease {
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.btn.btn-outline-success.js-add-dhcp-static-lease:hover {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.text-muted {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.fas.fa-circle {
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
button.btn.btn-light.js-toggle-password {
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
border-color: transparent;
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.btn.service-status {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
input.btn.btn-success {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
input.btn.btn-success:hover {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.signal-icon .signal-bar {
|
||||
background: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.figure-img {
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.logoutput {
|
||||
border-radius: 18px!important;
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border: 1px solid <?php echo $primaryColor; ?>!important;
|
||||
}
|
||||
|
||||
.btn-sm {
|
||||
border-top-right-radius: 18px!important;
|
||||
border-bottom-right-radius: 18px!important;
|
||||
}
|
||||
|
||||
.signal-icon .signal-bar {
|
||||
background: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
input.btn.btn-warning {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
input.btn.btn-warning:hover {
|
||||
background-color: <?php echo $backgroundColor; ?>;!important
|
||||
}
|
||||
|
||||
button.btn.btn-danger {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
button.btn.btn-danger:hover {
|
||||
background-color: <?php echo $backgroundColor; ?>;!important
|
||||
}
|
||||
|
||||
.btn-group label.active {
|
||||
background-color: <?php echo $primaryColor; ?>!important;
|
||||
border-color:transparent!important;
|
||||
color: <?php echo $textColor; ?>;!important
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
background-color: <?php echo $cardsColor; ?>;!important
|
||||
}
|
||||
|
||||
.btn-group:hover {
|
||||
background-color: <?php echo $cardsColor; ?>;!important
|
||||
}
|
||||
|
||||
.btn.btn-outline-secondary#gen_wpa_passphrase {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
border-top-right-radius: 18px !important;
|
||||
border-bottom-right-radius: 18px !important;
|
||||
}
|
||||
|
||||
a.scroll-to-top.rounded {
|
||||
display: inline;
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
border-radius: 18px!important;
|
||||
}
|
||||
|
||||
a.scroll-to-top.rounded i.fas.fa-angle-up {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.btn.btn-sm.btn-outline-secondary.rounded-right {
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.info-item.col-xs-3 {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.text-muted {
|
||||
color: <?php echo $textColor; ?>!important;
|
||||
}
|
||||
|
||||
.grid-stack-item-content {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 5px;
|
||||
box-sizing: border-box;
|
||||
}
|
633
app/css/material-light.php
Normal file
633
app/css/material-light.php
Normal file
@ -0,0 +1,633 @@
|
||||
<?php header("Content-Type: text/css; charset=utf-8"); ?>
|
||||
<?php
|
||||
require_once '../../includes/functions.php';
|
||||
$color = getColorOpt();
|
||||
?>
|
||||
|
||||
|
||||
/*
|
||||
Theme Name: Material Light
|
||||
Author: @marek-guran
|
||||
Author URI: https://github.com/marek-guran
|
||||
Description: Inspired by Google's Material You Design
|
||||
License: GNU General Public License v3.0
|
||||
*/
|
||||
|
||||
<?php
|
||||
// Base color
|
||||
$baseColor = $color;
|
||||
|
||||
// Function to darken a color by a percentage
|
||||
function darkenColor($color, $percent)
|
||||
{
|
||||
$percent /= 100;
|
||||
$r = hexdec(substr($color, 1, 2));
|
||||
$g = hexdec(substr($color, 3, 2));
|
||||
$b = hexdec(substr($color, 5, 2));
|
||||
|
||||
$r = round($r * (1 - $percent));
|
||||
$g = round($g * (1 - $percent));
|
||||
$b = round($b * (1 - $percent));
|
||||
|
||||
return sprintf("#%02x%02x%02x", $r, $g, $b);
|
||||
}
|
||||
|
||||
// Function to lighten a color by a percentage
|
||||
function lightenColor($color, $percent)
|
||||
{
|
||||
$percent /= 100;
|
||||
$r = hexdec(substr($color, 1, 2));
|
||||
$g = hexdec(substr($color, 3, 2));
|
||||
$b = hexdec(substr($color, 5, 2));
|
||||
|
||||
$r = round($r + (255 - $r) * $percent);
|
||||
$g = round($g + (255 - $g) * $percent);
|
||||
$b = round($b + (255 - $b) * $percent);
|
||||
|
||||
return sprintf("#%02x%02x%02x", $r, $g, $b);
|
||||
}
|
||||
|
||||
$textColor = lightenColor($baseColor, 95);
|
||||
// Create other color variables
|
||||
$cardsColor = lightenColor($baseColor, 50);
|
||||
$secondaryColor = lightenColor($baseColor, 30);
|
||||
$primaryColor = $baseColor;
|
||||
$backgroundColor = lightenColor($baseColor, 60);
|
||||
|
||||
?>
|
||||
|
||||
@import url('all.css');
|
||||
|
||||
body {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
html * {
|
||||
font-family: Helvetica,Arial,sans-serif;
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.nav-item.active .nav-link {
|
||||
position: relative;
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
|
||||
border-top-right-radius: 18px;
|
||||
border-bottom-right-radius: 18px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2rem !important;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
h5.card-title {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
border-left: .01rem solid <?php echo $secondaryColor; ?>;
|
||||
border-bottom: .01rem solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-light .nav-item.active .nav-link i {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar .nav-item.active .nav-link {
|
||||
font-weight: 400;
|
||||
color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
#wrapper #content-wrapper #content {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.topbar {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.col {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.card-header .col i.fa-tachometer-alt,
|
||||
.card-header .col i.fa-dot-circle,
|
||||
.card-header .col i.fa-wifi,
|
||||
.card-header .col i.fa-exchange-alt,
|
||||
.card-header .col i.fa-hand-paper,
|
||||
.card-header .col i.fa-network-wired,
|
||||
.card-header .col i.fa-key,
|
||||
.card-header .ra-wireguard,
|
||||
.card-header .ra-wireguard:before,
|
||||
.card-header .col i.fa-user-lock,
|
||||
.card-header .col i.fa-chart-bar,
|
||||
.card-header .col i.fa-cube,
|
||||
.card-header .col i.fa-info-circle,
|
||||
.card-header .col i.fa-globe,
|
||||
.card-header .col i.fa-shield-alt {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
i.fa-bars {
|
||||
color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.nav-tabs {
|
||||
border-bottom: 1px solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
.nav-tabs .nav-link.active,
|
||||
.nav-tabs .nav-link {
|
||||
font-size: 1.0rem;
|
||||
border-top-left-radius: 18px;
|
||||
border-top-right-radius: 18px;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-link:hover {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-brand:hover {
|
||||
color: #d2d2d2;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle .icon-bar {
|
||||
background-color: #d2d2d2;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle:focus,
|
||||
.navbar-default .navbar-toggle:hover {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
#content, .navbar, .sidebar, .footer, .sticky-footer {
|
||||
background-attachment: scroll;
|
||||
background-repeat: repeat;
|
||||
background-size: auto;
|
||||
background-position: 0 0;
|
||||
background-origin: padding-box;
|
||||
background-clip: border-box;
|
||||
}
|
||||
|
||||
.sticky-footer {
|
||||
background-position: 30px 0;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
background-position: 0 20px;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-link.active {
|
||||
color: <?php echo $textColor; ?>;
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
a:focus, a:hover {
|
||||
color: #d2d2d2;
|
||||
}
|
||||
|
||||
.card>.card-header, .modal-content, .modal-header {
|
||||
border-color: transparent;
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
color: <?php echo $textColor; ?>;
|
||||
border-radius: 18px;
|
||||
font-size: 1.0rem;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
border-bottom-left-radius: 0px!important;
|
||||
border-bottom-right-radius: 0px!important;
|
||||
position: relative;
|
||||
margin-bottom: -18px;
|
||||
}
|
||||
|
||||
.card>.card-header .fa {
|
||||
color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.card-header [class^="fa"] {
|
||||
color: <?php echo $textColor; ?>;
|
||||
font-size: 1.0rem;
|
||||
}
|
||||
|
||||
.card, .card-body {
|
||||
border-color: transparent;
|
||||
border-radius: 18px;
|
||||
background-color: <?php echo $cardsColor; ?>;
|
||||
box-shadow: 0px -5px 5px rgba(0, 0, 0, 0.1),
|
||||
0px 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding-top: 36px; /* 18px to move down + 18px space at the top */
|
||||
padding-bottom: 36px; /* 18px space at the bottom */
|
||||
}
|
||||
|
||||
.unstyled {
|
||||
background-color: <?php echo $cardsColor; ?>;
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
hr {
|
||||
border-top: .01rem solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-brand-text {
|
||||
color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.ra-raspap:before {
|
||||
color: #ac1b3d !important;
|
||||
}
|
||||
|
||||
.sidebar-light #sidebarToggle {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border: 1px solid <?php echo $secondaryColor; ?>; !important
|
||||
}
|
||||
|
||||
.sidebar-light #sidebarToggle::after {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-light .nav-item .nav-link:hover i {
|
||||
color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-light #sidebarToggle:hover {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar.toggled .nav-item .nav-link span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sidebar.toggled .nav-item .nav-link {
|
||||
text-align: center;
|
||||
padding: .6rem 1rem;
|
||||
width: 6.5rem;
|
||||
}
|
||||
|
||||
.card-footer, .modal-footer {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
color: <?php echo $textColor; ?>;
|
||||
border-top: 0px;
|
||||
border-bottom-right-radius: 18px!important;
|
||||
border-bottom-left-radius: 18px!important;
|
||||
position: relative;
|
||||
margin-top: -18px;
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.card>.card-header::before, .navbar-default::before {
|
||||
content: " ";
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
background-size: 100% 2px, 3px 100%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.sidebar-light, .sticky-footer {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.sidebar-light .nav-item .nav-link i {
|
||||
color: <?php echo $textColor; ?>;;
|
||||
}
|
||||
|
||||
.sidebar .nav-item .nav-link {
|
||||
padding: 0.6rem;
|
||||
padding-left: 1.2rem;
|
||||
}
|
||||
|
||||
.sidebar-light hr.sidebar-divider {
|
||||
border-top: 1px solid <?php echo $secondaryColor; ?>;
|
||||
padding-top: 0.5rem;
|
||||
}
|
||||
|
||||
.sidebar .nav-item .nav-link span {
|
||||
font-size: 1.0rem;
|
||||
}
|
||||
|
||||
.sidebar .nav-item .nav-link span:hover {
|
||||
color: <?php echo $primaryColor; ?>!important;
|
||||
}
|
||||
|
||||
.topbar .topbar-divider {
|
||||
border-right: 1px solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.label-warning {
|
||||
background-color: #d2d2d2;
|
||||
}
|
||||
|
||||
span.label.label-warning {
|
||||
color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.table>tbody>tr>td,
|
||||
.table>tbody>tr>th,
|
||||
.table>tfoot>tr>td,
|
||||
.table>tfoot>tr>th,
|
||||
.table>thead>tr>td,
|
||||
.table>thead>tr>th {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border-top: .01rem solid <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
.table{
|
||||
border-radius: 18px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.table>thead>tr>th {
|
||||
vertical-align: bottom;
|
||||
border-bottom: 0 solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
[class*="btn"], [class*="btn"]:focus, [class*="btn"]:disabled {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
border-color: transparent;
|
||||
border-radius: 18px;
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
[class*="btn"]:hover {
|
||||
border-radius: 18px;
|
||||
color: <?php echo $textColor; ?>;
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
[class*="btn"]:hover .disabled {
|
||||
background-color:red;
|
||||
}
|
||||
|
||||
[class*="alert"] {
|
||||
border-radius: 18px;
|
||||
color: <?php echo $textColor; ?>;
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border: 1px solid #404040;
|
||||
}
|
||||
|
||||
.close {
|
||||
font-size: 1.2em;
|
||||
font-weight: 400;
|
||||
text-shadow: none;
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.form-control,
|
||||
.form-control:focus,
|
||||
.custom-select {
|
||||
color: <?php echo $textColor; ?>;
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.form-control:disabled,
|
||||
.form-control[readonly] {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.form-control::-webkit-input-placeholder { color: #d2d2d2; }
|
||||
.form-control:-moz-placeholder { color: #d2d2d2; }
|
||||
.form-control::-moz-placeholder { color: #d2d2d2; }
|
||||
.form-control:-ms-input-placeholder { color: #d2d2d2; }
|
||||
.form-control::-ms-input-placeholder { color: #d2d2d2; }
|
||||
|
||||
.form-control option {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.form-control::placeholder {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
input[type="text"]{
|
||||
color: <?php echo $textColor; ?>; !important
|
||||
}
|
||||
|
||||
.progress {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
color: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
#progressBar {
|
||||
background-color: <?php echo $secondaryColor; ?>!important;
|
||||
}
|
||||
|
||||
.progress-bar.bg-success {
|
||||
background-color: <?php echo $primaryColor; ?>!important;
|
||||
color: <?php echo $textColor; ?>!important;
|
||||
}
|
||||
|
||||
.progress .progress-bar {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.progress-bar.progress-bar-info.progress-bar-striped.active {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.figure-img {
|
||||
filter: opacity(0.7);
|
||||
}
|
||||
|
||||
.ra-wireguard:before {
|
||||
color: <?php echo $textColor; ?>!important;
|
||||
}
|
||||
|
||||
.ra-wireguard:hover:before {
|
||||
color: <?php echo $primaryColor; ?>!important;
|
||||
}
|
||||
|
||||
.sidebar .nav-item.active .nav-link span.ra-wireguard:before {
|
||||
color: <?php echo $textColor; ?>!important;
|
||||
}
|
||||
|
||||
.custom-control-input:checked ~ .custom-control-label::before {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.custom-control-input:checked ~ .custom-control-label::before {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border-color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.wg-keygen {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border: 1px solid yellow <?php echo $secondaryColor; ?>;
|
||||
border-top-right-radius: 18px !important;
|
||||
border-bottom-right-radius: 18px !important;
|
||||
}
|
||||
|
||||
.btn.btn-outline-secondary.js-add-dhcp-upstream-server {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
border-top-right-radius: 18px !important;
|
||||
border-bottom-right-radius: 18px !important;
|
||||
}
|
||||
|
||||
.btn.btn-outline-success.js-add-dhcp-static-lease {
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.btn.btn-outline-success.js-add-dhcp-static-lease:hover {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.text-muted {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.fas.fa-circle {
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border: <?php echo $backgroundColor; ?>;
|
||||
}
|
||||
|
||||
button.btn.btn-light.js-toggle-password {
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
border-color: transparent;
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.btn.service-status {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
input.btn.btn-success {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
input.btn.btn-success:hover {
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.signal-icon .signal-bar {
|
||||
background: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
.figure-img {
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.logoutput {
|
||||
border-radius: 18px!important;
|
||||
background-color: <?php echo $backgroundColor; ?>;
|
||||
border: 1px solid <?php echo $primaryColor; ?>!important;
|
||||
}
|
||||
|
||||
.btn-sm {
|
||||
border-top-right-radius: 18px!important;
|
||||
border-bottom-right-radius: 18px!important;
|
||||
}
|
||||
|
||||
.signal-icon .signal-bar {
|
||||
background: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
input.btn.btn-warning {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
input.btn.btn-warning:hover {
|
||||
background-color: <?php echo $backgroundColor; ?>;!important
|
||||
}
|
||||
|
||||
button.btn.btn-danger {
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
}
|
||||
|
||||
button.btn.btn-danger:hover {
|
||||
background-color: <?php echo $backgroundColor; ?>;!important
|
||||
}
|
||||
|
||||
.btn-group label.active {
|
||||
background-color: <?php echo $primaryColor; ?>!important;
|
||||
border-color:transparent!important;
|
||||
color: <?php echo $textColor; ?>;!important
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
background-color: <?php echo $cardsColor; ?>;!important
|
||||
}
|
||||
|
||||
.btn-group:hover {
|
||||
background-color: <?php echo $cardsColor; ?>;!important
|
||||
}
|
||||
|
||||
.btn.btn-outline-secondary#gen_wpa_passphrase {
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
border-top-right-radius: 18px !important;
|
||||
border-bottom-right-radius: 18px !important;
|
||||
}
|
||||
|
||||
a.scroll-to-top.rounded {
|
||||
display: inline;
|
||||
background-color: <?php echo $secondaryColor; ?>;
|
||||
border-radius: 18px!important;
|
||||
}
|
||||
|
||||
a.scroll-to-top.rounded i.fas.fa-angle-up {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.btn.btn-sm.btn-outline-secondary.rounded-right {
|
||||
border: 1px solid <?php echo $secondaryColor; ?>;
|
||||
background-color: <?php echo $primaryColor; ?>;
|
||||
}
|
||||
|
||||
.info-item.col-xs-3 {
|
||||
color: <?php echo $textColor; ?>;
|
||||
}
|
||||
|
||||
.text-muted {
|
||||
color: <?php echo $textColor; ?>!important;
|
||||
}
|
||||
|
||||
.grid-stack-item-content {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 5px;
|
||||
box-sizing: border-box;
|
||||
}
|
@ -216,6 +216,12 @@ function loadInterfaceDHCPSelect() {
|
||||
$('#txtgateway').val(jsonData.StaticRouters);
|
||||
$('#chkfallback')[0].checked = jsonData.FallbackEnabled;
|
||||
$('#default-route').prop('checked', jsonData.DefaultRoute);
|
||||
if (strInterface.startsWith("wl")) {
|
||||
$('#nohook-wpa-supplicant').parent().parent().parent().show()
|
||||
$('#nohook-wpa-supplicant').prop('checked', jsonData.NoHookWPASupplicant);
|
||||
} else {
|
||||
$('#nohook-wpa-supplicant').parent().parent().parent().hide()
|
||||
}
|
||||
$('#txtrangestart').val(jsonData.RangeStart);
|
||||
$('#txtrangeend').val(jsonData.RangeEnd);
|
||||
$('#txtrangeleasetime').val(jsonData.leaseTime);
|
||||
@ -530,12 +536,27 @@ function set_theme(theme) {
|
||||
}
|
||||
|
||||
$(function() {
|
||||
var currentTheme = getCookie('theme');
|
||||
// Check if the current theme is a dark theme
|
||||
var isDarkTheme = currentTheme === 'lightsout.css' || currentTheme === 'material-dark.php';
|
||||
|
||||
$('#night-mode').prop('checked', isDarkTheme);
|
||||
$('#night-mode').change(function() {
|
||||
var state = $(this).is(':checked');
|
||||
if (state == true && getCookie('theme') != 'lightsout.css') {
|
||||
var currentTheme = getCookie('theme');
|
||||
|
||||
if (state == true) {
|
||||
if (currentTheme == 'custom.php') {
|
||||
set_theme('lightsout.css');
|
||||
} else if (currentTheme == 'material-light.php') {
|
||||
set_theme('material-dark.php');
|
||||
}
|
||||
} else {
|
||||
if (currentTheme == 'lightsout.css') {
|
||||
set_theme('custom.php');
|
||||
} else if (currentTheme == 'material-dark.php') {
|
||||
set_theme('material-light.php');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -558,6 +579,8 @@ var themes = {
|
||||
"default": "custom.php",
|
||||
"hackernews" : "hackernews.css",
|
||||
"lightsout" : "lightsout.css",
|
||||
"material-light" : "material-light.php",
|
||||
"material-dark" : "material-dark.php",
|
||||
}
|
||||
|
||||
// Toggles the sidebar navigation.
|
||||
|
@ -7,6 +7,16 @@ if (theme == 'lightsout.css') {
|
||||
var bgColor2 = '#141414';
|
||||
var borderColor = 'rgba(37, 153, 63, 1)';
|
||||
var labelColor = 'rgba(37, 153, 63, 1)';
|
||||
} else if (theme == 'material-light.php') {
|
||||
var bgColor1 = 'rgba(255, 255, 255, 0.5)';
|
||||
var bgColor2 = 'rgba(0, 0, 0, 0.5)';
|
||||
var borderColor = '#f2f2fb';
|
||||
var labelColor = '#f2f2fb';
|
||||
} else if (theme == 'material-dark.php') {
|
||||
var bgColor1 = 'rgba(255, 255, 255, 0.5)';
|
||||
var bgColor2 = 'rgba(0, 0, 0, 0.5)';
|
||||
var borderColor = '#f2f2fb';
|
||||
var labelColor = '#f2f2fb';
|
||||
} else {
|
||||
var bgColor1 = '#d4edda';
|
||||
var bgColor2 = '#eaecf4';
|
||||
|
@ -40,10 +40,16 @@ class Sysinfo
|
||||
return $uptime;
|
||||
}
|
||||
|
||||
public function systime()
|
||||
{
|
||||
$systime = exec("date");
|
||||
return $systime;
|
||||
}
|
||||
|
||||
public function usedMemory()
|
||||
{
|
||||
$used = shell_exec("free -m | awk 'NR==2{ total=$2 ; used=$3 } END { print used/total*100}'");
|
||||
return floor($used);
|
||||
return floor(intval($used));
|
||||
}
|
||||
|
||||
public function processorCount()
|
||||
|
@ -20,5 +20,5 @@ country_code=GB
|
||||
## RaspAP wireless client AP mode
|
||||
#interface=uap0
|
||||
|
||||
## RaspAP bridge AP mode (disabled by default)
|
||||
## RaspAP bridge AP mode, disabled by default
|
||||
#bridge=br0
|
||||
|
@ -75,8 +75,11 @@ function DisplayAdBlockConfig()
|
||||
$dnsmasq_state = ($dnsmasq[0] > 0);
|
||||
$serviceStatus = $dnsmasq_state && $enabled ? "up" : "down";
|
||||
|
||||
if (file_exists(RASPI_ADBLOCK_LISTPATH .'custom.txt')) {
|
||||
$adblock_custom_content = file_get_contents(RASPI_ADBLOCK_LISTPATH .'custom.txt');
|
||||
|
||||
} else {
|
||||
$adblock_custom_content = '';
|
||||
}
|
||||
$adblock_log = '';
|
||||
exec('sudo chmod o+r '.RASPI_DHCPCD_LOG);
|
||||
$handle = fopen(RASPI_DHCPCD_LOG, "r");
|
||||
|
@ -6,7 +6,7 @@ if (!defined('RASPI_CONFIG')) {
|
||||
|
||||
$defaults = [
|
||||
'RASPI_BRAND_TEXT' => 'RaspAP',
|
||||
'RASPI_VERSION' => '2.9.2',
|
||||
'RASPI_VERSION' => '2.9.3',
|
||||
'RASPI_CONFIG_NETWORK' => RASPI_CONFIG.'/networking/defaults.json',
|
||||
'RASPI_ADMIN_DETAILS' => RASPI_CONFIG.'/raspap.auth',
|
||||
'RASPI_WIFI_AP_INTERFACE' => 'wlan0',
|
||||
|
@ -187,6 +187,7 @@ function updateDnsmasqConfig($iface,$status)
|
||||
}
|
||||
// Static leases
|
||||
$staticLeases = array();
|
||||
if (isset($_POST["static_leases"]["mac"])) {
|
||||
for ($i=0; $i < count($_POST["static_leases"]["mac"]); $i++) {
|
||||
$mac = trim($_POST["static_leases"]["mac"][$i]);
|
||||
$ip = trim($_POST["static_leases"]["ip"][$i]);
|
||||
@ -195,6 +196,7 @@ function updateDnsmasqConfig($iface,$status)
|
||||
$staticLeases[] = array('mac' => $mac, 'ip' => $ip, 'comment' => $comment);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Sort ascending by IPs
|
||||
usort($staticLeases, "compareIPs");
|
||||
// Update config
|
||||
@ -253,11 +255,11 @@ function updateDHCPConfig($iface,$status)
|
||||
{
|
||||
$cfg[] = '# RaspAP '.$iface.' configuration';
|
||||
$cfg[] = 'interface '.$iface;
|
||||
if (isset($_POST['StaticIP'])) {
|
||||
if (isset($_POST['StaticIP']) && $_POST['StaticIP'] !== '') {
|
||||
$mask = ($_POST['SubnetMask'] !== '' && $_POST['SubnetMask'] !== '0.0.0.0') ? '/'.mask2cidr($_POST['SubnetMask']) : null;
|
||||
$cfg[] = 'static ip_address='.$_POST['StaticIP'].$mask;
|
||||
}
|
||||
if (isset($_POST['DefaultGateway'])) {
|
||||
if (isset($_POST['DefaultGateway']) && $_POST['DefaultGateway'] !== '') {
|
||||
$cfg[] = 'static routers='.$_POST['DefaultGateway'];
|
||||
}
|
||||
if ($_POST['DNS1'] !== '' || $_POST['DNS2'] !== '') {
|
||||
@ -271,6 +273,9 @@ function updateDHCPConfig($iface,$status)
|
||||
$cfg[] = 'fallback static_'.$iface;
|
||||
}
|
||||
$cfg[] = $_POST['DefaultRoute'] == '1' ? 'gateway' : 'nogateway';
|
||||
if (( substr($iface, 0, 2) === "wl") && $_POST['NoHookWPASupplicant'] == '1') {
|
||||
$cfg[] = 'nohook wpa_supplicant';
|
||||
}
|
||||
$dhcp_cfg = file_get_contents(RASPI_DHCPCD_CONFIG);
|
||||
if (!preg_match('/^interface\s'.$iface.'$/m', $dhcp_cfg)) {
|
||||
$cfg[] = PHP_EOL;
|
||||
|
@ -52,11 +52,15 @@ function mask2cidr($mask)
|
||||
*/
|
||||
function cidr2mask($cidr)
|
||||
{
|
||||
$ta = substr ($cidr, strpos ($cidr, '/') + 1) * 1;
|
||||
$netmask = str_split (str_pad (str_pad ('', $ta, '1'), 32, '0'), 8);
|
||||
foreach ($netmask as &$element)
|
||||
$element = bindec ($element);
|
||||
return join ('.', $netmask);
|
||||
$ipParts = explode('/', $cidr);
|
||||
$ip = $ipParts[0];
|
||||
$prefixLength = $ipParts[1];
|
||||
|
||||
$ipLong = ip2long($ip);
|
||||
$netmaskLong = bindec(str_pad(str_repeat('1', $prefixLength), 32, '0'));
|
||||
$netmask = long2ip(intval($netmaskLong));
|
||||
|
||||
return $netmask;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -314,24 +318,24 @@ function CSRFMetaTag()
|
||||
*/
|
||||
function CSRFValidate()
|
||||
{
|
||||
if(isset($_POST['csrf_token'])) {
|
||||
$post_token = $_POST['csrf_token'];
|
||||
$header_token = $_SERVER['HTTP_X_CSRF_TOKEN'];
|
||||
|
||||
if (empty($post_token) && empty($header_token)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$request_token = $post_token;
|
||||
if (empty($post_token)) {
|
||||
$request_token = $header_token;
|
||||
}
|
||||
|
||||
if (hash_equals($_SESSION['csrf_token'], $request_token)) {
|
||||
return true;
|
||||
} else {
|
||||
error_log('CSRF violation');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -426,8 +430,9 @@ function ParseConfig($arrConfig)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strpos($line, "=") !== false) {
|
||||
list($option, $value) = array_map("trim", explode("=", $line, 2));
|
||||
|
||||
}
|
||||
if (empty($config[$option])) {
|
||||
$config[$option] = $value ?: true;
|
||||
} else {
|
||||
@ -680,8 +685,10 @@ function getColorOpt()
|
||||
}
|
||||
function getSidebarState()
|
||||
{
|
||||
if(isset($_COOKIE['sidebarToggled'])) {
|
||||
if ($_COOKIE['sidebarToggled'] == 'true' ) {
|
||||
return"toggled";
|
||||
return "toggled";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,22 +40,25 @@ function DisplayHostAPDConfig()
|
||||
exec($cmd, $txpower);
|
||||
$txpower = intval($txpower[0]);
|
||||
|
||||
if (isset($_POST['interface'])) {
|
||||
$interface = escapeshellarg($_POST['interface']);
|
||||
}
|
||||
if (!RASPI_MONITOR_ENABLED) {
|
||||
if (isset($_POST['SaveHostAPDSettings'])) {
|
||||
SaveHostAPDConfig($arrSecurity, $arrEncType, $arr80211Standard, $interfaces, $status);
|
||||
}
|
||||
}
|
||||
$arrHostapdConf = parse_ini_file('/etc/raspap/hostapd.ini');
|
||||
$arrHostapdConf = parse_ini_file(RASPI_CONFIG.'/hostapd.ini');
|
||||
|
||||
if (!RASPI_MONITOR_ENABLED) {
|
||||
if (isset($_POST['StartHotspot']) || isset($_POST['RestartHotspot'])) {
|
||||
$status->addMessage('Attempting to start hotspot', 'info');
|
||||
if ($arrHostapdConf['BridgedEnable'] == 1) {
|
||||
exec('sudo /etc/raspap/hostapd/servicestart.sh --interface br0 --seconds 3', $return);
|
||||
exec('sudo '.RASPI_CONFIG.'/hostapd/servicestart.sh --interface br0 --seconds 3', $return);
|
||||
} elseif ($arrHostapdConf['WifiAPEnable'] == 1) {
|
||||
exec('sudo /etc/raspap/hostapd/servicestart.sh --interface uap0 --seconds 3', $return);
|
||||
exec('sudo '.RASPI_CONFIG.'/hostapd/servicestart.sh --interface uap0 --seconds 3', $return);
|
||||
} else {
|
||||
exec('sudo /etc/raspap/hostapd/servicestart.sh --seconds 3', $return);
|
||||
exec('sudo '.RASPI_CONFIG.'/hostapd/servicestart.sh --seconds 3', $return);
|
||||
}
|
||||
foreach ($return as $line) {
|
||||
$status->addMessage($line, 'info');
|
||||
@ -69,10 +72,12 @@ function DisplayHostAPDConfig()
|
||||
}
|
||||
}
|
||||
exec('cat '. RASPI_HOSTAPD_CONFIG, $hostapdconfig);
|
||||
exec('iwgetid '. escapeshellarg($_POST['interface']). ' -r', $wifiNetworkID);
|
||||
if (isset($interface)) {
|
||||
exec('iwgetid '. $interface. ' -r', $wifiNetworkID);
|
||||
if (!empty($wifiNetworkID[0])) {
|
||||
$managedModeEnabled = true;
|
||||
}
|
||||
}
|
||||
$hostapdstatus = $system->hostapdStatus();
|
||||
$serviceStatus = $hostapdstatus[0] == 0 ? "down" : "up";
|
||||
|
||||
@ -98,17 +103,19 @@ function DisplayHostAPDConfig()
|
||||
$arrConfig['country_code'] = $country_code[0];
|
||||
}
|
||||
// set txpower with iw if value is non-default ('auto')
|
||||
if (isset($_POST['txpower']) && ($_POST['txpower'] != 'auto')) {
|
||||
if (isset($_POST['txpower'])) {
|
||||
if ($_POST['txpower'] != 'auto') {
|
||||
$txpower = intval($_POST['txpower']);
|
||||
$sdBm = $txpower * 100;
|
||||
exec('sudo /sbin/iw dev '.escapeshellarg($_POST['interface']).' set txpower fixed '.$sdBm, $return);
|
||||
exec('sudo /sbin/iw dev '.$interface.' set txpower fixed '.$sdBm, $return);
|
||||
$status->addMessage('Setting transmit power to '.$_POST['txpower'].' dBm.', 'success');
|
||||
$txpower = $_POST['txpower'];
|
||||
} elseif ($_POST['txpower'] == 'auto') {
|
||||
exec('sudo /sbin/iw dev '.escapeshellarg($_POST['interface']).' set txpower auto', $return);
|
||||
exec('sudo /sbin/iw dev '.$interface.' set txpower auto', $return);
|
||||
$status->addMessage('Setting transmit power to '.$_POST['txpower'].'.', 'success');
|
||||
$txpower = $_POST['txpower'];
|
||||
}
|
||||
}
|
||||
|
||||
$countries_5Ghz_max48ch = RASPI_5GHZ_ISO_ALPHA2;
|
||||
$selectedHwMode = $arrConfig['hw_mode'];
|
||||
@ -132,6 +139,8 @@ function DisplayHostAPDConfig()
|
||||
if ($selectedHwMode === $hwModeDisabled) {
|
||||
unset($selectedHwMode);
|
||||
}
|
||||
} else {
|
||||
$hwModeDisabled = null;
|
||||
}
|
||||
|
||||
echo renderTemplate(
|
||||
@ -168,13 +177,16 @@ function DisplayHostAPDConfig()
|
||||
*/
|
||||
function SaveHostAPDConfig($wpa_array, $enc_types, $modes, $interfaces, $status)
|
||||
{
|
||||
// It should not be possible to send bad data for these fields so clearly
|
||||
// someone is up to something if they fail. Fail silently.
|
||||
// It should not be possible to send bad data for these fields.
|
||||
// If wpa fields are absent, return false and log securely.
|
||||
if (!(array_key_exists($_POST['wpa'], $wpa_array)
|
||||
&& array_key_exists($_POST['wpa_pairwise'], $enc_types)
|
||||
&& array_key_exists($_POST['hw_mode'], $modes))
|
||||
) {
|
||||
error_log("Attempting to set hostapd config with wpa='".$_POST['wpa']."', wpa_pairwise='".$_POST['wpa_pairwise']."' and hw_mode='".$_POST['hw_mode']."'"); // FIXME: log injection
|
||||
$err = "Attempting to set hostapd config with wpa='".escapeshellarg($_POST['wpa']);
|
||||
$err .= "', wpa_pairwise='".$escapeshellarg(_POST['wpa_pairwise']);
|
||||
$err .= "and hw_mode='".$escapeshellarg(_POST['hw_mode'])."'";
|
||||
error_log($err);
|
||||
return false;
|
||||
}
|
||||
// Validate input
|
||||
|
@ -75,6 +75,9 @@ if (empty($_SESSION['locale']) && strlen($_SERVER['HTTP_ACCEPT_LANGUAGE']) >= 2)
|
||||
case "pl":
|
||||
$locale = "pl_PL.UTF-8";
|
||||
break;
|
||||
case "sk":
|
||||
$locale = "sk_SK.UTF-8";
|
||||
break;
|
||||
default:
|
||||
$locale = "en_GB.UTF-8";
|
||||
break;
|
||||
@ -117,10 +120,10 @@ function getLocales()
|
||||
'pt_BR.UTF-8' => 'Português',
|
||||
'ru_RU.UTF-8' => 'Русский',
|
||||
'ro_RO.UTF-8' => 'Română',
|
||||
'sk_SK.UTF-8' => 'Slovenčina',
|
||||
'sv_SE.UTF-8' => 'Svenska',
|
||||
'tr_TR.UTF-8' => 'Türkçe',
|
||||
'vi_VN.UTF-8' => 'Tiếng Việt (Vietnamese)'
|
||||
);
|
||||
return $arrLocales;
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ function DisplayOpenVPNConfig()
|
||||
ftruncate($f, 0);
|
||||
fclose($f);
|
||||
}
|
||||
} elseif (isset($_POST['log-openvpn']) || filesize('/tmp/openvpn.log') >0) {
|
||||
} elseif (isset($_POST['log-openvpn']) || file_exists('/tmp/openvpn.log')) {
|
||||
$logEnable = 1;
|
||||
exec("sudo /etc/raspap/openvpn/openvpnlog.sh", $logOutput);
|
||||
$logOutput = file_get_contents('/tmp/openvpn.log');
|
||||
|
@ -125,7 +125,11 @@ function DisplaySystem(&$extraFooterScripts)
|
||||
exec('cat '. RASPI_LIGHTTPD_CONFIG, $return);
|
||||
$conf = ParseConfig($return);
|
||||
$serverPort = $conf['server.port'];
|
||||
if (isset($conf['server.bind'])) {
|
||||
$serverBind = str_replace('"', '',$conf['server.bind']);
|
||||
} else {
|
||||
$serverBind = '';
|
||||
}
|
||||
|
||||
// define locales
|
||||
$arrLocales = getLocales();
|
||||
@ -138,6 +142,7 @@ function DisplaySystem(&$extraFooterScripts)
|
||||
$cores = $system->processorCount();
|
||||
$os = $system->operatingSystem();
|
||||
$kernel = $system->kernelVersion();
|
||||
$systime = $system->systime();
|
||||
|
||||
// mem used
|
||||
$memused = $system->usedMemory();
|
||||
@ -189,11 +194,13 @@ function DisplaySystem(&$extraFooterScripts)
|
||||
// theme options
|
||||
$themes = [
|
||||
"default" => "RaspAP (default)",
|
||||
"hackernews" => "HackerNews"
|
||||
"hackernews" => "HackerNews",
|
||||
"material-light" => "Material"
|
||||
];
|
||||
$themeFiles = [
|
||||
"default" => "custom.php",
|
||||
"hackernews" => "hackernews.css"
|
||||
"hackernews" => "hackernews.css",
|
||||
"material-light" => "material-light.php"
|
||||
];
|
||||
$selectedTheme = array_search($_COOKIE['theme'], $themeFiles);
|
||||
|
||||
@ -207,6 +214,7 @@ function DisplaySystem(&$extraFooterScripts)
|
||||
"serverBind",
|
||||
"hostname",
|
||||
"uptime",
|
||||
"systime",
|
||||
"cores",
|
||||
"os",
|
||||
"kernel",
|
||||
|
@ -77,6 +77,7 @@ function nearbyWifiStations(&$networks, $cached = true)
|
||||
if ( isset($lastnet['index']) ) $index = $lastnet['index'] + 1;
|
||||
}
|
||||
|
||||
if (is_array($scan_results)) {
|
||||
array_shift($scan_results);
|
||||
foreach ($scan_results as $network) {
|
||||
$arrNetwork = preg_split("/[\t]+/", $network); // split result into array
|
||||
@ -118,6 +119,7 @@ function nearbyWifiStations(&$networks, $cached = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function connectedWifiStations(&$networks)
|
||||
|
@ -14,7 +14,7 @@
|
||||
* @author Lawrence Yau <sirlagz@gmail.com>
|
||||
* @author Bill Zimmerman <billzimmerman@gmail.com>
|
||||
* @license GNU General Public License, version 3 (GPL-3.0)
|
||||
* @version 2.9.2
|
||||
* @version 2.9.3
|
||||
* @link https://github.com/RaspAP/raspap-webgui/
|
||||
* @link https://raspap.com/
|
||||
* @see http://sirlagz.net/2013/02/08/raspap-webgui/
|
||||
|
@ -140,7 +140,13 @@ function _get_linux_distro() {
|
||||
# Sets php package option based on Linux version, abort if unsupported distro
|
||||
function _set_php_package() {
|
||||
case $RELEASE in
|
||||
22.04|20.04|18.04|19.10|11*) # Ubuntu Server, Debian 11 & Armbian 22.05
|
||||
23.05|12*) # Debian 12 & Armbian 23.05
|
||||
php_package="php8.2-cgi"
|
||||
phpcgiconf="/etc/php/8.2/cgi/php.ini" ;;
|
||||
23.04) # Ubuntu Server 23.04
|
||||
php_package="php8.1-cgi"
|
||||
phpcgiconf="/etc/php/8.1/cgi/php.ini" ;;
|
||||
22.04|20.04|18.04|19.10|11*) # Previous Ubuntu Server, Debian & Armbian distros
|
||||
php_package="php7.4-cgi"
|
||||
phpcgiconf="/etc/php/7.4/cgi/php.ini" ;;
|
||||
10*|11*)
|
||||
@ -165,6 +171,8 @@ function _set_php_package() {
|
||||
function _manage_systemd_services() {
|
||||
_install_log "Checking for systemd network services"
|
||||
|
||||
_check_notify_ubuntu
|
||||
|
||||
services=( "systemd-networkd" "systemd-resolved" )
|
||||
for svc in "${services[@]}"; do
|
||||
# Prompt to disable systemd service
|
||||
@ -189,10 +197,27 @@ function _manage_systemd_services() {
|
||||
_install_status 0
|
||||
}
|
||||
|
||||
# Notifies Ubuntu users of pre-install requirements
|
||||
function _check_notify_ubuntu() {
|
||||
if [ ${OS,,} = "ubuntu" ]; then
|
||||
_install_status 2 "Ubuntu Server requires manual pre- and post-install steps. See https://docs.raspap.com/manual/"
|
||||
echo -n "Proceed with installation? [Y/n]: "
|
||||
read answer < /dev/tty
|
||||
if [ "$answer" != "${answer#[Nn]}" ]; then
|
||||
echo "Installation aborted."
|
||||
exit 0
|
||||
else
|
||||
_install_status 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Runs a system software update to make sure we're using all fresh packages
|
||||
function _install_dependencies() {
|
||||
_install_log "Installing required packages"
|
||||
_set_php_package
|
||||
|
||||
# OS-specific packages
|
||||
if [ "$php_package" = "php7.4-cgi" ] && [ ${OS,,} = "ubuntu" ] && [[ ${RELEASE} =~ ^(22.04|20.04|18.04|19.10|11) ]]; then
|
||||
echo "Adding apt-repository ppa:ondrej/php"
|
||||
sudo apt-get install -y software-properties-common || _install_status 1 "Unable to install dependency"
|
||||
@ -202,11 +227,13 @@ function _install_dependencies() {
|
||||
fi
|
||||
if [ ${OS,,} = "debian" ] || [ ${OS,,} = "ubuntu" ]; then
|
||||
dhcpcd_package="dhcpcd5"
|
||||
iw_package="iw"
|
||||
fi
|
||||
|
||||
# Set dconf-set-selections
|
||||
echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections
|
||||
echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections
|
||||
sudo apt-get install -y lighttpd git hostapd dnsmasq iptables-persistent $php_package $dhcpcd_package vnstat qrencode || _install_status 1 "Unable to install dependencies"
|
||||
sudo apt-get install -y lighttpd git hostapd dnsmasq iptables-persistent $php_package $dhcpcd_package $iw_package vnstat qrencode || _install_status 1 "Unable to install dependencies"
|
||||
_install_status 0
|
||||
}
|
||||
|
||||
@ -461,6 +488,10 @@ function _download_latest_files() {
|
||||
fi
|
||||
|
||||
_install_log "Cloning latest files from github"
|
||||
if [ "$repo" == "RaspAP/raspap-insiders" ]; then
|
||||
_install_status 3
|
||||
echo "Insiders please read this: https://docs.raspap.com/insiders/#authentication"
|
||||
fi
|
||||
git clone --branch $branch --depth 1 -c advice.detachedHead=false $git_source_url /tmp/raspap-webgui || _install_status 1 "Unable to download files from github"
|
||||
sudo mv /tmp/raspap-webgui $webroot_dir || _install_status 1 "Unable to move raspap-webgui to web root"
|
||||
|
||||
@ -718,11 +749,17 @@ function _optimize_php() {
|
||||
|
||||
function _install_complete() {
|
||||
_install_log "Installation completed"
|
||||
if [ "$repo" == "RaspAP/raspap-insiders" ]; then
|
||||
echo -e "${ANSI_RASPBERRY}"
|
||||
echo "Thank you for supporting this project as an Insider!"
|
||||
echo -e "${ANSI_RESET}"
|
||||
else
|
||||
echo "Join RaspAP Insiders for early access to exclusive features!"
|
||||
echo -e "${ANSI_RASPBERRY}"
|
||||
echo "> https://docs.raspap.com/insiders/"
|
||||
echo "> https://github.com/sponsors/RaspAP/"
|
||||
echo -e "${ANSI_RESET}"
|
||||
fi
|
||||
if [ "$assume_yes" == 0 ]; then
|
||||
# Prompt to reboot if wired ethernet (eth0) is connected.
|
||||
# With default_configuration this will create an active AP on restart.
|
||||
|
@ -234,6 +234,8 @@ function _install_status() {
|
||||
2)
|
||||
echo -e "[$ANSI_YELLOW \U26A0 warning $ANSI_RESET] $2"
|
||||
;;
|
||||
3)
|
||||
echo -e "[$ANSI_RASPBERRY ! important $ANSI_RESET] $2"
|
||||
esac
|
||||
}
|
||||
|
||||
|
Binary file not shown.
@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: raspap\n"
|
||||
"Report-Msgid-Bugs-To: Bill Zimmerman <billzimmerman@gmail.com>\n"
|
||||
"POT-Creation-Date: 2017-10-19 08:56+0000\n"
|
||||
"PO-Revision-Date: 2023-02-22 08:17\n"
|
||||
"PO-Revision-Date: 2023-06-22 05:56\n"
|
||||
"Last-Translator: Bill Zimmerman <billzimmerman@gmail.com>\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de_DE\n"
|
||||
@ -433,8 +433,8 @@ msgstr "Format"
|
||||
msgid "Choose a hosted server"
|
||||
msgstr "Gehosteten Server auswählen"
|
||||
|
||||
msgid "Enable these options to log DHCP server activity."
|
||||
msgstr "Aktivieren Sie diese Optionen, um die DHCP-Serveraktivität zu protokollieren."
|
||||
msgid "Enable these options to log <code>dhcpcd</code> and <code>dnsmasq</code> activity."
|
||||
msgstr "Diese Optionen Aktivieren <code>dhcpcd</code> und <code>dnsmasq</code> Logging."
|
||||
|
||||
msgid "Log DHCP requests"
|
||||
msgstr "DHCP-Anfragen protokollieren"
|
||||
@ -485,8 +485,8 @@ msgstr "Sicherheitstyp"
|
||||
msgid "Encryption Type"
|
||||
msgstr "Verschlüsselungstyp"
|
||||
|
||||
msgid "Pre-shared key (PSK)"
|
||||
msgstr "Pre-Shared-Key (PSK)"
|
||||
msgid "PSK"
|
||||
msgstr "PSK"
|
||||
|
||||
msgid "Advanced settings"
|
||||
msgstr "Erweiterte Einstellungen"
|
||||
@ -606,7 +606,7 @@ msgid "Scan this QR code directly or %s %sprint a sign%s for your users."
|
||||
msgstr "QR-Code direkt scannen oder %s %sein Zeichen drucken%s für die Benutzer."
|
||||
|
||||
msgid "Printable Wi-Fi sign"
|
||||
msgstr ""
|
||||
msgstr "Printable Wi-Fi sign"
|
||||
|
||||
msgid "To connect with your phone or tablet, scan the QR code above with your camera app."
|
||||
msgstr "Um sich mit dem Telefon oder Tablet zu verbinden, den obigen QR-Code mit der Kamera-App scannen."
|
||||
@ -617,6 +617,21 @@ msgstr "Für andere Geräte die Anmeldedaten unten verwenden."
|
||||
msgid "Network"
|
||||
msgstr "Netzwerk"
|
||||
|
||||
msgid "The selected interface (%s) has support for the 2.4 GHz wireless band only."
|
||||
msgstr "Die ausgewählte Schnittstelle (%s) unterstützt nur das 2,4 GHz Band."
|
||||
|
||||
msgid "The selected interface (%s) has support for the 2.5 GHz wireless band only."
|
||||
msgstr "Die ausgewählte Schnittstelle (%s) unterstützt nur das 2,4 GHz Band."
|
||||
|
||||
msgid "The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands."
|
||||
msgstr "Die ausgewählte Schnittstelle (%s) unterstützt das 2,4 und 5 GHz Band."
|
||||
|
||||
msgid "The selected interface (%s) does not support wireless mode operation."
|
||||
msgstr "Die ausgewählte Schnittstelle (%s) hat kein drahtloses Interface."
|
||||
|
||||
msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set."
|
||||
msgstr "Die 5 GHz Option ist deaktiviert, bis eine kompatible Domain gesetzt ist."
|
||||
|
||||
#: includes/networking.php
|
||||
msgid "Summary"
|
||||
msgstr "Zusammenfassung"
|
||||
@ -711,6 +726,12 @@ msgstr "Fehler beim Speichern der Netzwerkkonfiguration"
|
||||
msgid "Unable to detect interface"
|
||||
msgstr "Schnittstelle kann nicht gefunden werden"
|
||||
|
||||
msgid "Routing table"
|
||||
msgstr "Routingtabelle"
|
||||
|
||||
msgid "raw output"
|
||||
msgstr "Raw Output"
|
||||
|
||||
#: includes/system.php
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformationen"
|
||||
@ -763,6 +784,12 @@ msgstr "Port des Webservers"
|
||||
msgid "Web server bind address"
|
||||
msgstr "Webserver Bindungsadresse"
|
||||
|
||||
msgid "OS"
|
||||
msgstr "Betriebssystem"
|
||||
|
||||
msgid "Kernel"
|
||||
msgstr "Kernel"
|
||||
|
||||
#: includes/themes.php
|
||||
msgid "Theme settings"
|
||||
msgstr "Oberflächendesign Einstellungen"
|
||||
@ -877,7 +904,7 @@ msgstr "Einstellungen"
|
||||
msgid "Currently available OpenVPN client configurations are displayed below."
|
||||
msgstr "Derzeit verfügbare OpenVPN-Client-Konfigurationen werden unten angezeigt."
|
||||
|
||||
msgid "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgid "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
msgstr "Die Aktivierung einer Konfiguration startet den Dienst <code>openvpn-client</code> neu."
|
||||
|
||||
msgid "Delete OpenVPN client"
|
||||
@ -991,6 +1018,9 @@ msgstr "oben"
|
||||
msgid "down"
|
||||
msgstr "unten"
|
||||
|
||||
msgid "Clear log"
|
||||
msgstr "Log löschen"
|
||||
|
||||
msgid "adblock"
|
||||
msgstr "Werbesperre"
|
||||
|
||||
|
Binary file not shown.
@ -464,6 +464,15 @@ msgstr "This option adds <code>dhcp-host</code> entries to the dnsmasq configura
|
||||
msgid "This toggles the <code>gateway</code>/<code>nogateway</code> option for this interface in the DHCPCD configuration."
|
||||
msgstr "This toggles the <code>gateway</code>/<code>nogateway</code> option for this interface in the DHCPCD configuration."
|
||||
|
||||
msgid "This toggles the <code>nohook wpa_supplicant</code> option for this interface in the DHCPCD configuration."
|
||||
msgstr "This toggles the <code>nohook wpa_supplicant</code> option for this interface in the DHCPCD configuration."
|
||||
|
||||
msgid "Disable wpa_supplicant dhcp hook for this interface"
|
||||
msgstr "Disable wpa_supplicant dhcp hook for this interface"
|
||||
|
||||
msgid "If you manage wireless connections with wpa_supplicant itself, the hook may create unwanted connection events. This option disables the hook."
|
||||
msgstr "If you manage wireless connections with wpa_supplicant itself, the hook may create unwanted connection events. This option disables the hook."
|
||||
|
||||
#: includes/hostapd.php
|
||||
msgid "Basic"
|
||||
msgstr "Basic"
|
||||
@ -728,6 +737,9 @@ msgstr "Pi Revision"
|
||||
msgid "Uptime"
|
||||
msgstr "Uptime"
|
||||
|
||||
msgid "System Time"
|
||||
msgstr "System Time"
|
||||
|
||||
msgid "Memory Used"
|
||||
msgstr "Memory Used"
|
||||
|
||||
@ -901,8 +913,8 @@ msgstr "Configurations"
|
||||
msgid "Currently available OpenVPN client configurations are displayed below."
|
||||
msgstr "Currently available OpenVPN client configurations are displayed below."
|
||||
|
||||
msgid "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgstr "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgid "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
msgstr "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
|
||||
msgid "Delete OpenVPN client"
|
||||
msgstr "Delete OpenVPN client"
|
||||
|
Binary file not shown.
@ -844,7 +844,7 @@ msgstr "Configuraciones"
|
||||
msgid "Currently available OpenVPN client configurations are displayed below."
|
||||
msgstr "Las configuraciones de cliente OpenVPN actualmente disponibles se muestran a continuación."
|
||||
|
||||
msgid "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgid "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
msgstr "Al activar una configuración, se reiniciará el servicio <code>openvpn-client</code>."
|
||||
|
||||
msgid "Delete OpenVPN client"
|
||||
|
Binary file not shown.
@ -877,7 +877,7 @@ msgstr "Configuration"
|
||||
msgid "Currently available OpenVPN client configurations are displayed below."
|
||||
msgstr "Les configurations des fichiers OpenVPN actuellement disponibles sont affichées ci-dessous."
|
||||
|
||||
msgid "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgid "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
msgstr "L'activation d'une configuration redémarrera le service <code>openvpn-client</code>."
|
||||
|
||||
msgid "Delete OpenVPN client"
|
||||
|
Binary file not shown.
@ -844,7 +844,7 @@ msgstr "Configurazioni"
|
||||
msgid "Currently available OpenVPN client configurations are displayed below."
|
||||
msgstr "Le configurazioni client OpenVPN attualmente disponibili sono visualizzate di seguito."
|
||||
|
||||
msgid "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgid "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
msgstr "Attivando la configurazione si riavvierà il servizio <code>openvpn-client</code>."
|
||||
|
||||
msgid "Delete OpenVPN client"
|
||||
|
@ -844,7 +844,7 @@ msgstr "환경설정"
|
||||
msgid "Currently available OpenVPN client configurations are displayed below."
|
||||
msgstr ""
|
||||
|
||||
msgid "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgid "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete OpenVPN client"
|
||||
|
Binary file not shown.
@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: raspap\n"
|
||||
"Report-Msgid-Bugs-To: Bill Zimmerman <billzimmerman@gmail.com>\n"
|
||||
"POT-Creation-Date: 2017-10-19 08:56+0000\n"
|
||||
"PO-Revision-Date: 2022-01-05 11:43\n"
|
||||
"PO-Revision-Date: 2023-08-25 09:56\n"
|
||||
"Last-Translator: Bill Zimmerman <billzimmerman@gmail.com>\n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"Language: pt_BR\n"
|
||||
@ -40,7 +40,7 @@ msgid "Memory Use"
|
||||
msgstr "Uso da memória"
|
||||
|
||||
msgid "CPU Temp"
|
||||
msgstr "Temperatura do CPU"
|
||||
msgstr "Temp CPU"
|
||||
|
||||
msgid "Networking"
|
||||
msgstr "Rede"
|
||||
@ -147,31 +147,31 @@ msgid "Not configured"
|
||||
msgstr "Não configurado"
|
||||
|
||||
msgid "Connected"
|
||||
msgstr ""
|
||||
msgstr "Conectado"
|
||||
|
||||
msgid "Known"
|
||||
msgstr ""
|
||||
msgstr "Conhecido"
|
||||
|
||||
msgid "Nearby"
|
||||
msgstr ""
|
||||
msgstr "Ao redor"
|
||||
|
||||
msgid "<strong>Note:</strong> WEP access points appear as 'Open'. RaspAP does not currently support connecting to WEP"
|
||||
msgstr "<strong>Nota:</strong> pontos de acesso WEP aparecem como 'Open'. Atualmente, o RaspAP não suporta conexão com WEP"
|
||||
|
||||
msgid "No Wifi stations found"
|
||||
msgstr ""
|
||||
msgstr "Nenhuma estação Wi-Fi encontrada"
|
||||
|
||||
msgid "Reinitializing wpa_supplicant"
|
||||
msgstr ""
|
||||
msgstr "Reinicializando wpa_supplicante"
|
||||
|
||||
msgid "Click 'Rescan' to search for nearby Wifi stations."
|
||||
msgstr ""
|
||||
msgstr "Clique em 'Reescanear' para procurar por estações Wi-Fi próximas."
|
||||
|
||||
msgid "Click 'Reinitialize' to force reinitialize <code>wpa_supplicant</code>."
|
||||
msgstr ""
|
||||
msgstr "Clique em 'Reiniciar' para forçar a reinicialização do <code>wpa_supplicant</code>."
|
||||
|
||||
msgid "Reinitialize"
|
||||
msgstr ""
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: includes/dashboard.php
|
||||
msgid "Interface Information"
|
||||
@ -268,58 +268,58 @@ msgid "Connected Devices"
|
||||
msgstr "Dispositivos Conectados"
|
||||
|
||||
msgid "Client: Ethernet cable"
|
||||
msgstr ""
|
||||
msgstr "Cliente: Cabo Ethernet"
|
||||
|
||||
msgid "Ethernet"
|
||||
msgstr ""
|
||||
msgstr "Ethernet"
|
||||
|
||||
msgid "Client: Smartphone (USB tethering)"
|
||||
msgstr ""
|
||||
msgstr "Cliente: Smartphone (ligação USB)"
|
||||
|
||||
msgid "Smartphone"
|
||||
msgstr ""
|
||||
msgstr "Smartphone"
|
||||
|
||||
msgid "WiFi"
|
||||
msgstr ""
|
||||
msgstr "WiFi"
|
||||
|
||||
msgid "Mobile Data Client"
|
||||
msgstr ""
|
||||
msgstr "Cliente de dados móveis"
|
||||
|
||||
msgid "Mobile Data"
|
||||
msgstr ""
|
||||
msgstr "Dados móveis"
|
||||
|
||||
msgid "No information available"
|
||||
msgstr ""
|
||||
msgstr "Nenhuma informação disponível"
|
||||
|
||||
msgid "Interface name invalid"
|
||||
msgstr ""
|
||||
msgstr "Nome da interface inválido"
|
||||
|
||||
msgid "Required exec function is disabled. Check if exec is not added to php <code>disable_functions</code>."
|
||||
msgstr ""
|
||||
msgstr "A função exec necessária está desabilitada. Verifique se o exec não está adicionado ao php <code>disable_functions</code>."
|
||||
|
||||
msgid "Waiting for the interface to start ..."
|
||||
msgstr ""
|
||||
msgstr "Aguardando a interface iniciar..."
|
||||
|
||||
msgid "Stop the Interface"
|
||||
msgstr ""
|
||||
msgstr "Parar a Interface"
|
||||
|
||||
msgid "Connection mode"
|
||||
msgstr ""
|
||||
msgstr "Modo de conexão"
|
||||
|
||||
msgid "Signal quality"
|
||||
msgstr ""
|
||||
msgstr "Qualidade do sinal"
|
||||
|
||||
msgid "WAN IP"
|
||||
msgstr ""
|
||||
msgstr "WAN IP"
|
||||
|
||||
msgid "Web-GUI"
|
||||
msgstr ""
|
||||
msgstr "Web-GUI"
|
||||
|
||||
msgid "Signal strength"
|
||||
msgstr ""
|
||||
msgstr "Intensidade do sinal"
|
||||
|
||||
msgid "No Client device or not yet configured"
|
||||
msgstr ""
|
||||
msgstr "Nenhum dispositivo cliente ou ainda não configurado"
|
||||
|
||||
#: includes/dhcp.php
|
||||
msgid "DHCP server settings"
|
||||
@ -332,10 +332,10 @@ msgid "Interface"
|
||||
msgstr "Inteface"
|
||||
|
||||
msgid "Enable DHCP for this interface"
|
||||
msgstr ""
|
||||
msgstr "Habilitar DHCP para esta interface"
|
||||
|
||||
msgid "Enable this option if you want RaspAP to assign IP addresses on the selected interface."
|
||||
msgstr ""
|
||||
msgstr "Habilite esta opção se você deseja que o RaspAP atribua endereços IP na interface selecionada."
|
||||
|
||||
msgid "DNS Server"
|
||||
msgstr "Servidor DNS"
|
||||
@ -368,7 +368,7 @@ msgid "MAC Address"
|
||||
msgstr "Endereço MAC"
|
||||
|
||||
msgid "Optional comment"
|
||||
msgstr ""
|
||||
msgstr "Comentário opcional"
|
||||
|
||||
msgid "Host name"
|
||||
msgstr "Nome de host"
|
||||
@ -413,55 +413,55 @@ msgid "Dnsmasq is not running"
|
||||
msgstr "Dnsmasq não executando"
|
||||
|
||||
msgid "Upstream DNS servers"
|
||||
msgstr ""
|
||||
msgstr "Servidores DNS Upstream"
|
||||
|
||||
msgid "Only ever query DNS servers configured below"
|
||||
msgstr ""
|
||||
msgstr "Sempre consultar servidores DNS configurados abaixo"
|
||||
|
||||
msgid "Enable this option if you want RaspAP to <b>send DNS queries to the servers configured below exclusively</b>. By default RaspAP also uses its upstream DHCP server's name servers."
|
||||
msgstr ""
|
||||
msgstr "Habilite esta opção se você quiser que o RaspAP <b>envie consultas DNS para os servidores configurados abaixo exclusivamente</b>. Por padrão, o RaspAP também usa seus servidores de nome do servidor DHCP upstream."
|
||||
|
||||
msgid "This option adds <code>no-resolv</code> to the dnsmasq configuration."
|
||||
msgstr ""
|
||||
msgstr "Esta opção adiciona <code>no-resolv</code> na configuração do dnsmasq."
|
||||
|
||||
msgid "Add upstream DNS server"
|
||||
msgstr ""
|
||||
msgstr "Adicionar servidor DNS upstream"
|
||||
|
||||
msgid "Format"
|
||||
msgstr ""
|
||||
msgstr "Formato"
|
||||
|
||||
msgid "Choose a hosted server"
|
||||
msgstr ""
|
||||
msgstr "Escolha um servidor hospedado"
|
||||
|
||||
msgid "Enable these options to log DHCP server activity."
|
||||
msgstr ""
|
||||
msgid "Enable these options to log <code>dhcpcd</code> and <code>dnsmasq</code> activity."
|
||||
msgstr "Habilite essas opções para registrar as atividades <code>dhcpcd</code> e <code>dnsmasq</code>."
|
||||
|
||||
msgid "Log DHCP requests"
|
||||
msgstr ""
|
||||
msgstr "Registrar requisições DHCP"
|
||||
|
||||
msgid "Log DNS queries"
|
||||
msgstr ""
|
||||
msgstr "Registrar consultas DNS"
|
||||
|
||||
msgid "Restrict access"
|
||||
msgstr ""
|
||||
msgstr "Acesso restrito"
|
||||
|
||||
msgid "Limit network access to static clients"
|
||||
msgstr ""
|
||||
msgstr "Limitar o acesso da rede a clientes estáticos"
|
||||
|
||||
msgid "Enable this option if you want RaspAP to <b>ignore any clients</b> which are not specified in the static leases list."
|
||||
msgstr ""
|
||||
msgstr "Ative esta opção se você quiser que o RaspAP <b>ignore quaisquer clientes</b> que não são especificados na lista de concessões estáticas."
|
||||
|
||||
msgid "This option adds <code>dhcp-ignore</code> to the dnsmasq configuration."
|
||||
msgstr ""
|
||||
msgstr "Esta opção adiciona <code>dhcp-ignore</code> na configuração do dnsmasq."
|
||||
|
||||
msgid "Clients with a particular hardware MAC address can always be allocated the same IP address."
|
||||
msgstr ""
|
||||
msgstr "Os clientes com um endereço MAC de hardware específico podem sempre ter o mesmo endereço IP."
|
||||
|
||||
msgid "This option adds <code>dhcp-host</code> entries to the dnsmasq configuration."
|
||||
msgstr ""
|
||||
msgstr "Esta opção adiciona entradas <code>dhcp-host</code> na configuração do dnsmasq."
|
||||
|
||||
msgid "This toggles the <code>gateway</code>/<code>nogateway</code> option for this interface in the DHCPCD configuration."
|
||||
msgstr ""
|
||||
msgstr "Isto alterna a opção <code>de gateway</code>/<code>nogateway</code> para essa interface na configuração do DHCPCD."
|
||||
|
||||
#: includes/hostapd.php
|
||||
msgid "Basic"
|
||||
@ -486,7 +486,7 @@ msgid "Encryption Type"
|
||||
msgstr "Tipo de Criptografia"
|
||||
|
||||
msgid "PSK"
|
||||
msgstr ""
|
||||
msgstr "PSK"
|
||||
|
||||
msgid "Advanced settings"
|
||||
msgstr "Configurações avançadas"
|
||||
@ -546,7 +546,7 @@ msgid "WiFi client AP mode"
|
||||
msgstr "WiFi modo cliente AP"
|
||||
|
||||
msgid "Bridged AP mode"
|
||||
msgstr ""
|
||||
msgstr "Modo AP Bridged"
|
||||
|
||||
msgid "Hide SSID in broadcast"
|
||||
msgstr "Esconder SSID em transmissão"
|
||||
@ -555,41 +555,56 @@ msgid "Maximum number of clients"
|
||||
msgstr "Número máximo de clientes"
|
||||
|
||||
msgid "Configures the <code>max_num_sta</code> option of hostapd. The default and maximum is 2007. If empty or 0, the default applies."
|
||||
msgstr ""
|
||||
msgstr "Configura a opção <code>max_num_sta</code> do hostapd. O padrão e máximo é 2007. Se vazio ou 0, o padrão se aplica."
|
||||
|
||||
msgid "Beacon interval"
|
||||
msgstr ""
|
||||
msgstr "Intervalo Beacon"
|
||||
|
||||
msgid "Disable <code>disassoc_low_ack</code>"
|
||||
msgstr ""
|
||||
msgstr "Desabilitar <code>disassoc_low_ack</code>"
|
||||
|
||||
msgid "Do not disassociate stations based on excessive transmission failures."
|
||||
msgstr ""
|
||||
msgstr "Não desassocie estações baseadas em falhas excessivas de transmissão."
|
||||
|
||||
msgid "Executing RaspAP service start"
|
||||
msgstr ""
|
||||
msgstr "Executando o serviço de inicialização RaspAP"
|
||||
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
msgstr "Fechar"
|
||||
|
||||
msgid "Enable this option to log <code>hostapd</code> activity."
|
||||
msgstr ""
|
||||
msgstr "Habilitar esta opção para registrar a atividade <code>hostapd</code>."
|
||||
|
||||
msgid "Transmit power (dBm)"
|
||||
msgstr ""
|
||||
msgstr "Potência de transmissão (dBm)"
|
||||
|
||||
msgid "Sets the <code>txpower</code> option for the AP interface and the configured country."
|
||||
msgstr ""
|
||||
msgstr "Define a opção <code>txpower</code> para a interface AP e o país configurado."
|
||||
|
||||
msgid "dBm is a unit of level used to indicate that a power ratio is expressed in decibels (dB) with reference to one milliwatt (mW). 30 dBm is equal to 1000 mW, while 0 dBm equals 1.25 mW."
|
||||
msgstr ""
|
||||
msgstr "dBm é uma unidade de nível usada para indicar que uma taxa de potência é expressa em decibéis (dB) com referência a um miliwatt (mW). 30 dBm é igual a 1000 mW, enquanto 0 dBm é igual a 1.25 mW."
|
||||
|
||||
msgid "The selected interface (%s) has support for the 2.4 GHz wireless band only."
|
||||
msgstr "A interface selecionada (%s) tem suporte apenas para banda sem fio de 2.4 GHz."
|
||||
|
||||
msgid "The selected interface (%s) has support for the 2.5 GHz wireless band only."
|
||||
msgstr "A interface selecionada (%s) tem suporte apenas para banda sem fio de 2.5 GHz."
|
||||
|
||||
msgid "The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands."
|
||||
msgstr "A interface selecionada (%s) tem suporte apenas para as bandas sem fio de 2.4 e 2.5 GHz."
|
||||
|
||||
msgid "The selected interface (%s) does not support wireless mode operation."
|
||||
msgstr "A interface selecionada (%s) não suporta operar no modo sem fio."
|
||||
|
||||
msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set."
|
||||
msgstr "A opção 802.11ac 5 GHz está desativada até que seja configurada a regulação local."
|
||||
|
||||
#: includes/networking.php
|
||||
msgid "Summary"
|
||||
msgstr "Sumário"
|
||||
|
||||
msgid "Internet connection"
|
||||
msgstr ""
|
||||
msgstr "Conexão de internet"
|
||||
|
||||
msgid "Current settings"
|
||||
msgstr "Configurações atuais"
|
||||
@ -619,7 +634,7 @@ msgid "Static IP Options"
|
||||
msgstr "Opções de IP Estático"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr ""
|
||||
msgstr "Métrica"
|
||||
|
||||
msgid "Apply settings"
|
||||
msgstr "Aplicar Configurações"
|
||||
@ -628,55 +643,61 @@ msgid "Information provided by /sys/class/net"
|
||||
msgstr "Informação Provida por /sys/class/net"
|
||||
|
||||
msgid "Network Devices"
|
||||
msgstr ""
|
||||
msgstr "Dispositivos de Rede"
|
||||
|
||||
msgid "Mobile Data Settings"
|
||||
msgstr ""
|
||||
msgstr "Configurações de Dados Móveis"
|
||||
|
||||
msgid "Properties of network devices"
|
||||
msgstr ""
|
||||
msgstr "Propriedades dos dispositivos de rede"
|
||||
|
||||
msgid "Device"
|
||||
msgstr ""
|
||||
msgstr "Dispositivo"
|
||||
|
||||
msgid "MAC"
|
||||
msgstr ""
|
||||
msgstr "MAC"
|
||||
|
||||
msgid "USB vid/pid"
|
||||
msgstr ""
|
||||
msgstr "USB vid/pid"
|
||||
|
||||
msgid "Device type"
|
||||
msgstr ""
|
||||
msgstr "Tipo de dispositivo"
|
||||
|
||||
msgid "Fixed name"
|
||||
msgstr ""
|
||||
msgstr "Nome fixo"
|
||||
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
msgstr "Alterar"
|
||||
|
||||
msgid "Settings for Mobile Data Devices"
|
||||
msgstr ""
|
||||
msgstr "Configurações para dispositivos de dados móveis"
|
||||
|
||||
msgid "PIN of SIM card"
|
||||
msgstr ""
|
||||
msgstr "PIN do cartão SIM"
|
||||
|
||||
msgid "APN Settings (Modem device ppp0)"
|
||||
msgstr ""
|
||||
msgstr "Configurações do APN (dispositivo Modem ppp0)"
|
||||
|
||||
msgid "Access Point Name (APN)"
|
||||
msgstr ""
|
||||
msgstr "Nome do Ponto de Acesso (APN)"
|
||||
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
msgstr "Senha"
|
||||
|
||||
msgid "Successfully Updated Network Configuration"
|
||||
msgstr ""
|
||||
msgstr "Configuração de Rede Atualizada com Sucesso"
|
||||
|
||||
msgid "Error saving network configuration to file"
|
||||
msgstr ""
|
||||
msgstr "Erro ao salvar configuração de rede no arquivo"
|
||||
|
||||
msgid "Unable to detect interface"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível detectar a interface"
|
||||
|
||||
msgid "Routing table"
|
||||
msgstr "Tabela de roteamento"
|
||||
|
||||
msgid "raw output"
|
||||
msgstr "raw output"
|
||||
|
||||
#: includes/system.php
|
||||
msgid "System Information"
|
||||
@ -695,10 +716,10 @@ msgid "Language setting saved"
|
||||
msgstr "Configuração de idioma salva"
|
||||
|
||||
msgid "Console"
|
||||
msgstr ""
|
||||
msgstr "Console"
|
||||
|
||||
msgid "Hostname"
|
||||
msgstr ""
|
||||
msgstr "Nome do Host"
|
||||
|
||||
msgid "Pi Revision"
|
||||
msgstr "Revisão do Pi"
|
||||
@ -725,10 +746,16 @@ msgid "System Shutting Down Now!"
|
||||
msgstr "Sistema Desligando Agora!"
|
||||
|
||||
msgid "Web server port"
|
||||
msgstr ""
|
||||
msgstr "Porta do servidor web"
|
||||
|
||||
msgid "Web server bind address"
|
||||
msgstr ""
|
||||
msgstr "Endereço de vinculação do servidor web"
|
||||
|
||||
msgid "OS"
|
||||
msgstr "OS [Sistema operacional]"
|
||||
|
||||
msgid "Kernel"
|
||||
msgstr "Kernel"
|
||||
|
||||
#: includes/themes.php
|
||||
msgid "Theme settings"
|
||||
@ -738,7 +765,7 @@ msgid "Select a theme"
|
||||
msgstr "Selecione um tema"
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
msgstr "Cor"
|
||||
|
||||
#: includes/data_usage.php
|
||||
msgid "Data usage"
|
||||
@ -766,7 +793,7 @@ msgid "Monthly"
|
||||
msgstr "Por mês"
|
||||
|
||||
msgid "interface"
|
||||
msgstr ""
|
||||
msgstr "interface"
|
||||
|
||||
msgid "date"
|
||||
msgstr "data"
|
||||
@ -818,7 +845,7 @@ msgid "Diffie Hellman parameters"
|
||||
msgstr "Parâmetros Diffie Hellman"
|
||||
|
||||
msgid "KeepAlive"
|
||||
msgstr ""
|
||||
msgstr "Manter Ativo"
|
||||
|
||||
msgid "Server log"
|
||||
msgstr "Log do servidor"
|
||||
@ -839,64 +866,64 @@ msgid "Attempting to stop openvpn"
|
||||
msgstr "Tentando parar openvpn"
|
||||
|
||||
msgid "Configurations"
|
||||
msgstr ""
|
||||
msgstr "Configurações"
|
||||
|
||||
msgid "Currently available OpenVPN client configurations are displayed below."
|
||||
msgstr ""
|
||||
msgstr "Configurações do cliente OpenVPN disponíveis atualmente são exibidas abaixo."
|
||||
|
||||
msgid "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgstr ""
|
||||
msgid "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
msgstr "Ativar a configuração reiniciará o serviço <code>openvpn-client</code>."
|
||||
|
||||
msgid "Delete OpenVPN client"
|
||||
msgstr ""
|
||||
msgstr "Excluir cliente OpenVPN"
|
||||
|
||||
msgid "Delete client configuration? This cannot be undone."
|
||||
msgstr ""
|
||||
msgstr "Excluir configuração de cliente? Esta ação não pode ser desfeita."
|
||||
|
||||
msgid "Activate OpenVPN client"
|
||||
msgstr ""
|
||||
msgstr "Ativar o cliente OpenVPN"
|
||||
|
||||
msgid "Activate client configuration? This will restart the openvpn-client service."
|
||||
msgstr ""
|
||||
msgstr "Ativar configuração do cliente? Isto irá reiniciar o serviço openvpn-cliente."
|
||||
|
||||
msgid "Activate"
|
||||
msgstr ""
|
||||
msgstr "Ativar"
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgid "Enable this option to log <code>openvpn</code> activity."
|
||||
msgstr ""
|
||||
msgstr "Habilite esta opção para registrar a atividade <code>openvpn</code>."
|
||||
|
||||
msgid "Authentification Method"
|
||||
msgstr ""
|
||||
msgstr "Método de Autenticação"
|
||||
|
||||
msgid "Username and password"
|
||||
msgstr ""
|
||||
msgstr "Usuário e senha"
|
||||
|
||||
msgid "Certificates"
|
||||
msgstr ""
|
||||
msgstr "Certificados"
|
||||
|
||||
msgid "Enter username and password"
|
||||
msgstr ""
|
||||
msgstr "Insira o usuário e senha"
|
||||
|
||||
msgid "Certificates in the configuration file"
|
||||
msgstr ""
|
||||
msgstr "Certificados no arquivo de configuração"
|
||||
|
||||
msgid "RaspAP supports certificates by including them in the configuration file."
|
||||
msgstr ""
|
||||
msgstr "O RaspAP suporta certificados incluindo-os no arquivo de configuração."
|
||||
|
||||
msgid "Signing certification authority (CA) certificate (e.g. <code>ca.crt</code>): enclosed in <code><ca> ... </ca></code> tags."
|
||||
msgstr ""
|
||||
msgstr "Certificado da autoridade certificadora (CA) (por exemplo, <code>ca.crt</code>): anexado em <code><ca> ... </ca></code> tags."
|
||||
|
||||
msgid "Client certificate (public key) (e.g. <code>client.crt</code>): enclosed in <code><cert> ... </cert></code> tags."
|
||||
msgstr ""
|
||||
msgstr "Certificado de cliente (chave pública) (por exemplo, <code>client.crt</code>): contido em tags <code><cert> ... </cert></code>."
|
||||
|
||||
msgid "Private key of the client certificate (e.g. <code>client.key</code>): enclosed in <code><key> ... </key></code> tags."
|
||||
msgstr ""
|
||||
msgstr "Chave privada do certificado do cliente (por exemplo, <code>client.key</code>): contido em tags <code><key> ... </key></code>."
|
||||
|
||||
msgid "Configuration File"
|
||||
msgstr ""
|
||||
msgstr "Arquivo de configuração"
|
||||
|
||||
#: includes/torproxy.php
|
||||
msgid "TOR is not running"
|
||||
@ -906,7 +933,7 @@ msgid "TOR is running"
|
||||
msgstr "TOR está sendo executado"
|
||||
|
||||
msgid "Relay"
|
||||
msgstr ""
|
||||
msgstr "Relay"
|
||||
|
||||
msgid "Relay settings"
|
||||
msgstr "Configurações de relay"
|
||||
@ -934,7 +961,7 @@ msgstr "Tentando parar TOR"
|
||||
|
||||
#: template/dashboard.php
|
||||
msgid "Bridged AP mode is enabled. For Hostname and IP, see your router's admin page."
|
||||
msgstr ""
|
||||
msgstr "O modo AP Bridge está ativado. Para o Hostname e IP, consulte a página de administrador do seu roteador."
|
||||
|
||||
#: common form controls
|
||||
msgid "Save settings"
|
||||
@ -958,249 +985,252 @@ msgstr "cima"
|
||||
msgid "down"
|
||||
msgstr "baixo"
|
||||
|
||||
msgid "Clear log"
|
||||
msgstr "Limpar o log"
|
||||
|
||||
msgid "adblock"
|
||||
msgstr ""
|
||||
msgstr "adBlock"
|
||||
|
||||
msgid "Ad Blocking"
|
||||
msgstr ""
|
||||
msgstr "Bloqueador de anúncios"
|
||||
|
||||
msgid "Start Ad Blocking"
|
||||
msgstr ""
|
||||
msgstr "Iniciar o Bloqueador de Anúncios"
|
||||
|
||||
msgid "Restart Ad Blocking"
|
||||
msgstr ""
|
||||
msgstr "Reiniciar o Bloqueador de anúncios"
|
||||
|
||||
msgid "Blocklist settings"
|
||||
msgstr ""
|
||||
msgstr "Configurações da lista de bloqueio"
|
||||
|
||||
msgid "Enable blocklists"
|
||||
msgstr ""
|
||||
msgstr "Habilitar lista de bloqueio"
|
||||
|
||||
msgid "Enable this option if you want RaspAP to <b>block DNS requests for ads, tracking and other virtual garbage</b>. Blocklists are gathered from multiple, actively maintained sources and automatically updated, cleaned, optimized and moderated on a daily basis."
|
||||
msgstr ""
|
||||
msgstr "Ative esta opção se você quiser que o RaspAP <b>bloqueie requisições DNS para anúncios, rastreamento e outros lixo virtuais</b>. As listas de bloqueio são coletadas de múltiplas fontes ativamente mantidas e atualizadas, limpas, otimizadas e moderadas automaticamente."
|
||||
|
||||
msgid "This option adds <code>conf-file</code> and <code>addn-hosts</code> to the dnsmasq configuration."
|
||||
msgstr ""
|
||||
msgstr "Esta opção adiciona <code>conf-file</code> e <code>addn-hosts</code> à configuração do dnsmasq."
|
||||
|
||||
msgid "Choose a blocklist provider"
|
||||
msgstr ""
|
||||
msgstr "Escolha um provedor de lista de bloqueio"
|
||||
|
||||
msgid "Hostnames blocklist last updated"
|
||||
msgstr ""
|
||||
msgstr "Última atualização da lista de bloqueio de hosts"
|
||||
|
||||
msgid "Domains blocklist last updated"
|
||||
msgstr ""
|
||||
msgstr "Última atualização da lista de bloqueio de domínios"
|
||||
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
msgstr "Atualizar agora"
|
||||
|
||||
msgid "Statistics"
|
||||
msgstr ""
|
||||
msgstr "Estatísticas"
|
||||
|
||||
msgid "Information provided by adblock"
|
||||
msgstr ""
|
||||
msgstr "Informação disponibilizada por adblock"
|
||||
|
||||
msgid "Enable custom blocklist"
|
||||
msgstr ""
|
||||
msgstr "Habilitar lista de bloqueio personalizada"
|
||||
|
||||
msgid "Define custom hosts to be blocked by entering an IPv4 or IPv6 address followed by any whitespace (spaces or tabs) and the host name."
|
||||
msgstr ""
|
||||
msgstr "Defina hosts personalizados a serem bloqueados digitando um endereço IPv4 ou IPv6 seguido de qualquer espaço em branco (espaços ou abas) e o nome do host."
|
||||
|
||||
msgid "<b>IPv4 example:</b> 0.0.0.0 badhost.com"
|
||||
msgstr ""
|
||||
msgstr "<b>IPv4 example:</b> 0.0.0.0 badhost.com"
|
||||
|
||||
msgid "This option adds an <code>addn-hosts</code> directive to the dnsmasq configuration."
|
||||
msgstr ""
|
||||
msgstr "Esta opção adiciona uma diretiva <code>addn-hosts</code> para a configuração do dnsmasq."
|
||||
|
||||
msgid "Custom blocklist not defined"
|
||||
msgstr ""
|
||||
msgstr "Lista de bloqueio personalizada não definida"
|
||||
|
||||
msgid "Invalid custom IP address found on line "
|
||||
msgstr ""
|
||||
msgstr "Endereço IP personalizado inválido encontrado na linha "
|
||||
|
||||
msgid "Invalid custom host found on line "
|
||||
msgstr ""
|
||||
msgstr "Host personalizado inválido encontrado na linha "
|
||||
|
||||
msgid "Tunnel settings"
|
||||
msgstr ""
|
||||
msgstr "Configurações do túnel"
|
||||
|
||||
msgid "Configuration Method"
|
||||
msgstr ""
|
||||
msgstr "Método de Configuração"
|
||||
|
||||
msgid "Upload file"
|
||||
msgstr ""
|
||||
msgstr "Enviar arquivo"
|
||||
|
||||
msgid "Create manually"
|
||||
msgstr ""
|
||||
msgstr "Criar manualmente"
|
||||
|
||||
msgid "Upload a WireGuard config"
|
||||
msgstr ""
|
||||
msgstr "Enviar uma configuração do WireGuard"
|
||||
|
||||
msgid "This option uploads and installs an existing WireGuard <code>.conf</code> file on this device."
|
||||
msgstr ""
|
||||
msgstr "Esta opção carrega e instala um arquivo existente do WireGuard <code>.conf</code> neste dispositivo."
|
||||
|
||||
msgid "Apply iptables rules for AP interface"
|
||||
msgstr ""
|
||||
msgstr "Aplicar regras do iptables para a interface AP"
|
||||
|
||||
msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on the AP interface."
|
||||
msgstr ""
|
||||
msgstr "Recomendado se você deseja encaminhar tráfego de rede da interface wg0 para os clientes conectados na interface de AP."
|
||||
|
||||
msgid "This option adds <strong>iptables</strong> <code>Postup</code> and <code>PostDown</code> rules for the configured AP interface (%s)."
|
||||
msgstr ""
|
||||
msgstr "Esta opção adiciona as regras do <strong>iptables</strong> <code>Postup</code> e <code>PostDown</code> para a interface AP configurada (%s)."
|
||||
|
||||
msgid "Select WireGuard configuration file (.conf)"
|
||||
msgstr ""
|
||||
msgstr "Selecionar arquivo de configuração do WireGuard (.conf)"
|
||||
|
||||
msgid "Create a local WireGuard config"
|
||||
msgstr ""
|
||||
msgstr "Criar uma configuração local do WireGuard"
|
||||
|
||||
msgid "Enable server"
|
||||
msgstr ""
|
||||
msgstr "Habilitar servidor"
|
||||
|
||||
msgid "Enable this option to secure network traffic by creating an encrypted tunnel between RaspAP and configured peers."
|
||||
msgstr ""
|
||||
msgstr "Ative esta opção para proteger o tráfego de rede criando um túnel criptografado entre o RaspAP e os pontos configurados."
|
||||
|
||||
msgid "This setting generates a new WireGuard <code>.conf</code> file on this device."
|
||||
msgstr ""
|
||||
msgstr "Esta configuração gera um novo arquivo do WireGuard <code>.conf</code> neste dispositivo."
|
||||
|
||||
msgid "Local public key"
|
||||
msgstr ""
|
||||
msgstr "Chave pública local"
|
||||
|
||||
msgid "Local Port"
|
||||
msgstr ""
|
||||
msgstr "Porta Local"
|
||||
|
||||
msgid "IP Address"
|
||||
msgstr ""
|
||||
msgstr "Endereço IP"
|
||||
|
||||
msgid "DNS"
|
||||
msgstr ""
|
||||
msgstr "DNS"
|
||||
|
||||
msgid "Peer"
|
||||
msgstr ""
|
||||
msgstr "Ponto"
|
||||
|
||||
msgid "Enable peer"
|
||||
msgstr ""
|
||||
msgstr "Habilitar ponto"
|
||||
|
||||
msgid "Enable this option to encrypt traffic by creating a tunnel between RaspAP and this peer."
|
||||
msgstr ""
|
||||
msgstr "Habilite esta opção para criptografar o tráfego criando um túnel entre o RaspAP e este ponto."
|
||||
|
||||
msgid "This option adds <code>client.conf</code> to the WireGuard configuration."
|
||||
msgstr ""
|
||||
msgstr "Esta opção adiciona <code>client.conf</code> para a configuração do WireGuard."
|
||||
|
||||
msgid "Peer public key"
|
||||
msgstr ""
|
||||
msgstr "Chave pública do ponto"
|
||||
|
||||
msgid "Endpoint address"
|
||||
msgstr ""
|
||||
msgstr "Endereço do Endpoint"
|
||||
|
||||
msgid "Allowed IPs"
|
||||
msgstr ""
|
||||
msgstr "IPs Permitidos"
|
||||
|
||||
msgid "Persistent keepalive"
|
||||
msgstr ""
|
||||
msgstr "Manter persistente"
|
||||
|
||||
msgid "Enable this option to display an updated <code>wg-quick</code> debug log."
|
||||
msgstr ""
|
||||
msgstr "Ative esta opção para exibir um log de depuração atualizado do <code>wg-quick</code>."
|
||||
|
||||
msgid "WireGuard debug log updated"
|
||||
msgstr ""
|
||||
msgstr "Log de depuração do WireGuard atualizado"
|
||||
|
||||
msgid "Scan this QR code with your client to connect to this tunnel"
|
||||
msgstr ""
|
||||
msgstr "Escaneie este código QR com o seu cliente para se conectar a esse túnel"
|
||||
|
||||
msgid "or download the <code>client.conf</code> file to your device."
|
||||
msgstr ""
|
||||
msgstr "ou baixe o arquivo <code>client.conf</code> para o seu dispositivo."
|
||||
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
msgstr "Baixar"
|
||||
|
||||
msgid "Start WireGuard"
|
||||
msgstr ""
|
||||
msgstr "Iniciar o WireGuard"
|
||||
|
||||
msgid "Stop WireGuard"
|
||||
msgstr ""
|
||||
msgstr "Parar o WireGuard"
|
||||
|
||||
msgid "Information provided by wireguard"
|
||||
msgstr ""
|
||||
msgstr "Informação fornecida por Wireguard"
|
||||
|
||||
msgid "Attempting to start WireGuard"
|
||||
msgstr ""
|
||||
msgstr "Tentando iniciar o WireGuard"
|
||||
|
||||
msgid "Attempting to stop WireGuard"
|
||||
msgstr ""
|
||||
msgstr "Tentando parar o WireGuard"
|
||||
|
||||
msgid "WireGuard configuration updated successfully"
|
||||
msgstr ""
|
||||
msgstr "Configuração do Wireguard atualizada com sucesso"
|
||||
|
||||
msgid "WireGuard configuration failed to be updated"
|
||||
msgstr ""
|
||||
msgstr "A configuração do WireGuard falhou ao ser atualizada"
|
||||
|
||||
msgid "Client Firewall"
|
||||
msgstr ""
|
||||
msgstr "Firewall do Cliente"
|
||||
|
||||
msgid "Firewall is ENABLED"
|
||||
msgstr ""
|
||||
msgstr "O Firewall está ATIVADO"
|
||||
|
||||
msgid "Firewall is OFF"
|
||||
msgstr ""
|
||||
msgstr "O Firewall está DESATIVADO"
|
||||
|
||||
msgid "The default firewall will only allow outgoing and already established traffic."
|
||||
msgstr ""
|
||||
msgstr "O firewall padrão só permitirá tráfego de saída e o tráfego já foi estabelecido."
|
||||
|
||||
msgid "No incoming UDP traffic is allowed."
|
||||
msgstr ""
|
||||
msgstr "Nenhum tráfego UDP de entrada é permitido."
|
||||
|
||||
msgid "There are no restrictions for the access point <code>%s</code>."
|
||||
msgstr ""
|
||||
msgstr "Não há restrições para o ponto de acesso <code>%s</code>. "
|
||||
|
||||
msgid "Exception: Service"
|
||||
msgstr ""
|
||||
msgstr "Exceção: Serviço"
|
||||
|
||||
msgid "allow SSH access on port 22"
|
||||
msgstr ""
|
||||
msgstr "permitir acesso ao SSH na porta 22"
|
||||
|
||||
msgid "allow access to the RaspAP GUI on port 80 or 443"
|
||||
msgstr ""
|
||||
msgstr "permitir acesso à GUI do RaspAP na porta 80 ou 443"
|
||||
|
||||
msgid "Allow incoming connections for some services from the internet side."
|
||||
msgstr ""
|
||||
msgstr "Permitir conexões de entrada para alguns serviços a partir da internet."
|
||||
|
||||
msgid "Exception: network device"
|
||||
msgstr ""
|
||||
msgstr "Exceção: dispositivo de rede"
|
||||
|
||||
msgid "Exclude device(s)"
|
||||
msgstr ""
|
||||
msgstr "Excluir dispositivo(s)"
|
||||
|
||||
msgid "Exclude the given network device(s) (separated by a blank or comma) from firewall rules."
|
||||
msgstr ""
|
||||
msgstr "Excluir o(s) dispositivo(s) de rede especificado(s) (separados por um espaço ou vírgula) das regras do firewall."
|
||||
|
||||
msgid "Current client devices: <code>%s</code>"
|
||||
msgstr ""
|
||||
msgstr "Dispositivos do cliente atual: <code>%s</code>"
|
||||
|
||||
msgid "The access point <code>%s</code> is per default excluded."
|
||||
msgstr ""
|
||||
msgstr "O ponto de acesso <code>%s</code> está excluído por padrão."
|
||||
|
||||
msgid "Exception: IP-Address"
|
||||
msgstr ""
|
||||
msgstr "Exceção: Endereço IP"
|
||||
|
||||
msgid "Allow incoming connections from"
|
||||
msgstr ""
|
||||
msgstr "Permitir conexões de entrada de"
|
||||
|
||||
msgid "For the given IP-addresses (separated by a blank or comma) the incoming connection (via TCP and UDP) is accepted."
|
||||
msgstr ""
|
||||
msgstr "Para os endereços IP fornecidos (separados por um espaço ou vírgula) a conexão de entrada (via TCP e UDP) é aceita."
|
||||
|
||||
msgid "This is required for an OpenVPN via UDP or Wireguard connection."
|
||||
msgstr ""
|
||||
msgstr "Isto é necessário para uma conexão OpenVPN via UDP ou uma conexão WireGuard."
|
||||
|
||||
msgid "The list of configured VPN server IP addresses: <code><b>%s</b></code>"
|
||||
msgstr ""
|
||||
msgstr "A lista de endereços IP do servidor VPN configurado: <code><b>%s</b></code>"
|
||||
|
||||
msgid "Disable Firewall"
|
||||
msgstr ""
|
||||
msgstr "Desativar Firewall"
|
||||
|
||||
msgid "Enable Firewall"
|
||||
msgstr ""
|
||||
msgstr "Ativar Firewall"
|
||||
|
||||
msgid "Apply changes"
|
||||
msgstr ""
|
||||
msgstr "Aplicar alterações"
|
||||
|
||||
|
Binary file not shown.
@ -844,7 +844,7 @@ msgstr "Configurații"
|
||||
msgid "Currently available OpenVPN client configurations are displayed below."
|
||||
msgstr "Configurațiile clientului OpenVPN disponibile sunt afișate mai jos."
|
||||
|
||||
msgid "Activating a configuraton will restart the <code>openvpn-client</code> service."
|
||||
msgid "Activating a configuration will restart the <code>openvpn-client</code> service."
|
||||
msgstr "Activarea unei configurații va reporni serviciul <code>openvpn-client</code>."
|
||||
|
||||
msgid "Delete OpenVPN client"
|
||||
|
BIN
locale/sk_SK/LC_MESSAGES/messages.mo
Normal file
BIN
locale/sk_SK/LC_MESSAGES/messages.mo
Normal file
Binary file not shown.
1236
locale/sk_SK/LC_MESSAGES/messages.po
Normal file
1236
locale/sk_SK/LC_MESSAGES/messages.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -8,13 +8,14 @@
|
||||
with the contributions of our <a href="https://github.com/raspap/raspap-webgui/graphs/contributors">developer community</a>
|
||||
and <a href="https://crowdin.com/project/raspap">language translators</a>.
|
||||
Learn more about joining the project as a <a href="https://docs.raspap.com/#get-involved">code contributor</a>,
|
||||
<a href="https://docs.raspap.com/translations.html">translator</a> or <a href="https://github.com/sponsors/RaspAP">financial sponsor</a> with immediate access to <a href="https://github.com/sponsors/RaspAP#exclusive-features">exclusive features</a> available to <strong>Insiders</strong>.</div>
|
||||
<a href="https://docs.raspap.com/translations/">translator</a> or <a href="https://github.com/sponsors/RaspAP">financial sponsor</a> with immediate access to <a href="https://github.com/sponsors/RaspAP#exclusive-features">exclusive features</a> available to <strong>Insiders</strong>.</div>
|
||||
<div class="mt-3">Project documentation is available at <a href="https://docs.raspap.com/">https://docs.raspap.com/</a></div>
|
||||
<div class="mt-3 project-links">
|
||||
<div class="row">
|
||||
<div class="col-md-6">GitHub <i class="fab fa-github"></i> <a href="https://github.com/RaspAP/">RaspAP</a></div>
|
||||
<div class="col-md-6">Twitter <span style="color: #55acee"><i class="fab fa-twitter"></i></span> <a href="https://twitter.com/rasp_ap">@RaspAP</a></div>
|
||||
<div class="col-md-6">Reddit <span style="color: #ff4500"><i class="fab fa-reddit"></i></span> <a href="https://www.reddit.com/r/RaspAP/">/r/raspap</a></div>
|
||||
<div class="col-md-6">Gitter <span style="color: #ed1965"><i class="fab fa-gitter"></i></span> <a href="https://app.gitter.im/#/room/#RaspAP:gitter.im">/room/RaspAP</a></div>
|
||||
<div class="col-md-6">License <i class="fas fa-balance-scale"></i> <a href="https://github.com/raspap/raspap-webgui/blob/master/LICENSE">GPL-3.0</a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -67,6 +67,19 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="form-group col-md-6">
|
||||
<div class="custom-control custom-switch">
|
||||
<input class="custom-control-input" id="nohook-wpa-supplicant" type="checkbox" name="NoHookWPASupplicant" value="1" aria-describedby="hook-wpa-supplicant-description">
|
||||
<label class="custom-control-label" for="nohook-wpa-supplicant"><?php echo _("Disable wpa_supplicant dhcp hook for this interface") ?></label>
|
||||
<?php getTooltip('If you manage wireless connections with wpa_supplicant itself, the hook may create unwanted connection events. This option disables the hook.', 'tipnohook'); ?>
|
||||
</div>
|
||||
<p class="mb-0" id="hook-wpa-supplicant-description">
|
||||
<small><?php echo _("This toggles the <code>nohook wpa_supplicant</code> option for this interface in the DHCPCD configuration.") ?></small>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5 class="mt-1">DHCP options</h5>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-6">
|
||||
|
@ -4,7 +4,7 @@
|
||||
<h4 class="mt-3 mb-3"><?php echo _("Configurations"); ?></h4>
|
||||
<p id="openvpnconfigs-description" class="mb-3">
|
||||
<small><?php echo _("Currently available OpenVPN client configurations are displayed below.") ?></small>
|
||||
<br><small class="text-muted"><?php echo _("Activating a configuraton will restart the <code>openvpn-client</code> service.") ?></small>
|
||||
<br><small class="text-muted"><?php echo _("Activating a configuration will restart the <code>openvpn-client</code> service.") ?></small>
|
||||
</p>
|
||||
<div class="openvpn-configs js-openvpn-configs-container">
|
||||
<?php foreach ($clients as $client) :
|
||||
|
@ -25,6 +25,9 @@ include('includes/sysstats.php');
|
||||
<div class="row mb-1">
|
||||
<div class="info-item col-xs-3"><?php echo _("Uptime"); ?></div><div class="info-value col-xs-3"><?php echo htmlspecialchars($uptime, ENT_QUOTES); ?></div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<div class="info-item col-xs-3"><?php echo _("System Time"); ?></div><div class="info-value col-xs-3"><?php echo htmlspecialchars($systime, ENT_QUOTES); ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-1"><?php echo _("Memory Used"); ?></div>
|
||||
|
Loading…
Reference in New Issue
Block a user