port directive

This commit is contained in:
Noel Wuyts 2015-05-05 16:08:11 +02:00 committed by Martin Schröder
parent d6b193ad24
commit 897b49e48c
97 changed files with 3196 additions and 1885 deletions

View file

@ -4,38 +4,39 @@
<meta charset="utf-8">
<title >LuCi Express</title><!--ng-bind="title"-->
<link href="/css/normalize.css" rel="stylesheet" type="text/css" />
<link href="/lib/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="/lib/css/bootstrap-select.min.css" rel="stylesheet" type="text/css" />
<link href="/lib/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="/lib/css/angular-ui.min.css" rel="stylesheet" type="text/css" />
<link href="/lib/css/select.min.css" rel="stylesheet" type="text/css" />
<link href="/lib/css/angular-ui-switch.min.css" rel="stylesheet" type="text/css" />
<link href="css/normalize.css" rel="stylesheet" type="text/css" />
<link href="lib/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="lib/css/bootstrap-select.min.css" rel="stylesheet" type="text/css" />
<link href="lib/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="lib/css/angular-ui.min.css" rel="stylesheet" type="text/css" />
<link href="lib/css/select.min.css" rel="stylesheet" type="text/css" />
<link href="lib/css/angular-ui-switch.min.css" rel="stylesheet" type="text/css" />
<link href="lib/css/awesome-bootstrap-checkbox.css" rel="stylesheet" type="text/css" />
<!--<link href="/lib/css/awesome-bootstrap-checkbox.css" rel="stylesheet" type="text/css" />-->
<link href="/css/nga.min.css" rel="stylesheet" type="text/css" />
<link href="/css/app.css" rel="stylesheet" type="text/css" />
<link href="css/nga.min.css" rel="stylesheet" type="text/css" />
<link href="css/app.css" rel="stylesheet" type="text/css" />
</head>
<body role="document" ng-cloak >
<div ui-view="content" style="min-height: 1000px;"></div>
<div style="margin-bottom: 40px"></div>
<script src="/lib/js/async.js"></script>
<script src="/lib/js/js-schema.min.js"></script>
<script src="/lib/js/require.js"></script>
<script src="/lib/js/jquery.min.js"></script>
<script src="/lib/js/angular.min.js"></script>
<script src="/lib/js/angular-ui.min.js"></script>
<script src="/lib/js/angular-ui-router.min.js"></script>
<script src="/lib/js/angular-gettext.min.js"></script>
<script src="/lib/js/bootstrap-select.min.js"></script>
<script src="/lib/js/select.min.js"></script>
<script src="/lib/js/angular-animate.min.js"></script>
<script src="/lib/js/angular-ui-bootstrap-luci.min.js"></script>
<script src="/lib/js/jquery-jsonrpc.js"></script>
<script src="/lib/js/translations.js"></script>
<script src="/lib/js/bootstrap.min.js"></script>
<script src="/lib/js/angular-ui-switch.min.js"></script>
<script src="/lib/js/angular-modal-service.min.js"></script>
<script src="lib/js/async.js"></script>
<script src="lib/js/js-schema.min.js"></script>
<script src="lib/js/require.js"></script>
<script src="lib/js/jquery.min.js"></script>
<script src="lib/js/angular.min.js"></script>
<script src="lib/js/angular-ui.min.js"></script>
<script src="lib/js/angular-ui-router.min.js"></script>
<script src="lib/js/angular-gettext.min.js"></script>
<script src="lib/js/bootstrap-select.min.js"></script>
<script src="lib/js/select.min.js"></script>
<script src="lib/js/angular-animate.min.js"></script>
<script src="lib/js/angular-ui-bootstrap-luci.min.js"></script>
<script src="lib/js/jquery-jsonrpc.js"></script>
<script src="lib/js/translations.js"></script>
<script src="lib/js/bootstrap.min.js"></script>
<script src="lib/js/angular-ui-switch.min.js"></script>
<script src="lib/js/angular-modal-service.min.js"></script>
<!-- ###---### -->
<script src="js/app.js"></script>

View file

@ -21,7 +21,7 @@
*/
angular.module("luci")
.factory('$config', function($rootScope){
.factory('$config', function(){
return {
mode: "basic", // basic or expert supported
//model: "Inteno DG301",
@ -42,14 +42,13 @@ angular.module("luci")
themes: [
"default",
"inteno-red",
"vodaphone"
"vodafone"
],
plugins: [
"core",
"phone",
"settings",
"status",
"router",
"phone",
"internet",
"router",
"wifi"
],
rpc: {

View file

@ -24,7 +24,7 @@
// provides a service for managing all pages
// pages register with this service, and menus can query it to get the navigation tree
angular.module("luci")
.provider('$navigation', function navigationProvider($stateProvider){
.provider('$navigation', function navigationProvider(){
var data = {
children: {},
children_list: []
@ -77,9 +77,8 @@ angular.module("luci")
Object.assign(o.children, children);
item = o;
}
obj.children_list = Object.keys(obj.children).map(function(key){
return obj.children[key];
});
obj.children_list = Object.keys(obj.children).map(function (key) {
return obj.children[key]; });
obj.children_list.sort(function(a, b){
return a.index - b.index;
});

View file

@ -22,14 +22,14 @@
// service for managing session data
angular.module("luci")
.factory('$tr', function(gettextCatalog, $localStorage) {
.factory('$tr', function(gettextCatalog) {
return function(str){
return gettextCatalog.getString(str);
}
});
angular.module("luci")
.factory('$languages', function($config, gettextCatalog, $localStorage, $window) {
.factory('$languages', function($config, gettextCatalog, $localStorage) {
gettextCatalog.currentLanguage = $localStorage.getItem("language") || "se";
return {
getLanguages: function(){

View file

@ -0,0 +1,222 @@
.checkbox {
padding-left: 20px;
}
.checkbox label {
display: inline-block;
vertical-align: middle;
position: relative;
padding-left: 5px;
}
.checkbox label::before {
content: "";
display: inline-block;
position: absolute;
width: 17px;
height: 17px;
left: 0;
margin-left: -20px;
border: 1px solid #cccccc;
border-radius: 3px;
background-color: #fff;
-webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
-o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
}
.checkbox label::after {
display: inline-block;
position: absolute;
width: 16px;
height: 16px;
left: 0;
top: 0;
margin-left: -20px;
padding-left: 3px;
padding-top: 1px;
font-size: 11px;
color: #555555;
}
.checkbox input[type="checkbox"] {
opacity: 0;
z-index: 1;
}
.checkbox input[type="checkbox"]:focus + label::before {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.checkbox input[type="checkbox"]:checked + label::after {
font-family: 'FontAwesome';
content: "\f00c";
}
.checkbox input[type="checkbox"]:disabled + label {
opacity: 0.65;
}
.checkbox input[type="checkbox"]:disabled + label::before {
background-color: #eeeeee;
cursor: not-allowed;
}
.checkbox.checkbox-circle label::before {
border-radius: 50%;
}
.checkbox.checkbox-inline {
margin-top: 0;
}
.checkbox-primary input[type="checkbox"]:checked + label::before {
background-color: #337ab7;
border-color: #337ab7;
}
.checkbox-primary input[type="checkbox"]:checked + label::after {
color: #fff;
}
.checkbox-danger input[type="checkbox"]:checked + label::before {
background-color: #d9534f;
border-color: #d9534f;
}
.checkbox-danger input[type="checkbox"]:checked + label::after {
color: #fff;
}
.checkbox-info input[type="checkbox"]:checked + label::before {
background-color: #5bc0de;
border-color: #5bc0de;
}
.checkbox-info input[type="checkbox"]:checked + label::after {
color: #fff;
}
.checkbox-warning input[type="checkbox"]:checked + label::before {
background-color: #f0ad4e;
border-color: #f0ad4e;
}
.checkbox-warning input[type="checkbox"]:checked + label::after {
color: #fff;
}
.checkbox-success input[type="checkbox"]:checked + label::before {
background-color: #5cb85c;
border-color: #5cb85c;
}
.checkbox-success input[type="checkbox"]:checked + label::after {
color: #fff;
}
.radio {
padding-left: 20px;
}
.radio label {
display: inline-block;
vertical-align: middle;
position: relative;
padding-left: 5px;
}
.radio label::before {
content: "";
display: inline-block;
position: absolute;
width: 30px;
height: 30px;
left: 0;
margin-left: -20px;
margin-top: -5px;
border: 1px solid #cccccc;
border-radius: 50%;
background-color: #fff;
-webkit-transition: border 0.15s ease-in-out;
-o-transition: border 0.15s ease-in-out;
transition: border 0.15s ease-in-out;
}
.radio label::after {
display: inline-block;
position: absolute;
content: " ";
width: 24px;
height: 24px;
left: 3px;
top: 3px;
margin-left: -20px;
margin-top: -5px;
border-radius: 50%;
background-color: #555555;
-webkit-transform: scale(0, 0);
-ms-transform: scale(0, 0);
-o-transform: scale(0, 0);
transform: scale(0, 0);
-webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
-moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
-o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
}
.radio input[type="radio"] {
opacity: 0;
z-index: 1;
}
.radio input[type="radio"]:focus + label::before {
outline: none;
outline-offset: -2px;
}
.radio input[type="radio"]:checked + label::after {
-webkit-transform: scale(1, 1);
-ms-transform: scale(1, 1);
-o-transform: scale(1, 1);
transform: scale(1, 1);
}
.radio input[type="radio"]:disabled + label {
opacity: 0.65;
}
.radio input[type="radio"]:disabled + label::before {
cursor: not-allowed;
}
.radio.radio-inline {
margin-top: 0;
}
.radio-primary input[type="radio"] + label::after {
background-color: #337ab7;
}
.radio-primary input[type="radio"]:checked + label::before {
border-color: #337ab7;
}
.radio-primary input[type="radio"]:checked + label::after {
background-color: #337ab7;
}
.radio-danger input[type="radio"] + label::after {
background-color: #d9534f;
}
.radio-danger input[type="radio"]:checked + label::before {
border-color: #d9534f;
}
.radio-danger input[type="radio"]:checked + label::after {
background-color: #d9534f;
}
.radio-info input[type="radio"] + label::after {
background-color: #5bc0de;
}
.radio-info input[type="radio"]:checked + label::before {
border-color: #5bc0de;
}
.radio-info input[type="radio"]:checked + label::after {
background-color: #5bc0de;
}
.radio-warning input[type="radio"] + label::after {
background-color: #f0ad4e;
}
.radio-warning input[type="radio"]:checked + label::before {
border-color: #f0ad4e;
}
.radio-warning input[type="radio"]:checked + label::after {
background-color: #f0ad4e;
}
.radio-success input[type="radio"] + label::after {
background-color: #5cb85c;
}
.radio-success input[type="radio"]:checked + label::before {
border-color: #5cb85c;
}
.radio-success input[type="radio"]:checked + label::after {
background-color: #5cb85c;
}
input[type="checkbox"].styled:checked + label:after {
font-family: 'FontAwesome';
content: "\f00c";
}
input[type="checkbox"] .styled:checked + label::before {
color: #fff;
}
input[type="checkbox"] .styled:checked + label::after {
color: #fff;
}

File diff suppressed because one or more lines are too long

View file

@ -6,7 +6,8 @@
"widgets/luci.table",
"widgets/luci.config",
"widgets/uci.firewall.nat.rule.edit",
"widgets/core.modal"
"widgets/core.modal",
"widgets/luci.input.port"
],
"pages": {
"overview": {

View file

@ -2,11 +2,12 @@
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">{{ title }}</h4>
<button ng-hide="hideCloseBtn" type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">{{title|translate}}</h4>
</div>
<div class="modal-body" ng-transclude></div>
<div class="modal-footer">
<div ng-show="formIncluded" ng-transclude></div>
<div ng-hide="formIncluded" class="modal-body" ng-transclude></div>
<div ng-hide="formIncluded" class="modal-footer">
<button class="btn btn-primary" ng-show="acceptLabel" ng-click="onAccept()">{{acceptLabel}}</button>
<button class="btn btn-default" ng-show="dismissLabel" ng-click="onDismiss()">{{dismissLabel}}</button>
</div>

View file

@ -7,19 +7,18 @@ $juci.module("core")
transclude: true,
replace:true,
scope: {
acceptLabel: "@acceptLabel",
dismissLabel: "@dismissLabel",
onAccept: "&onAccept",
onDismiss: "&onDismiss",
ngShow: "=ngShow",
title: "@title"
acceptLabel: "@",
dismissLabel: "@",
onAccept: "&",
onDismiss: "&",
ngShow: "=",
title: "@",
hideCloseBtn : "@",
formIncluded : "@"
},
controller: "ModalController",
link: function postLink(scope, element, attrs) {
//scope.title = attrs.title;
//scope.acceptLabel = attrs.acceptLabel;
//scope.dismissLabel = attrs.dismissLabel;
scope.element = element;
scope.element = element;
scope.$watch("ngShow", function(value){
if(value == true)
$(element).modal('show');

View file

@ -0,0 +1,13 @@
<div class="form-group has-feedback" ng-class="{ 'has-error': form[name].$invalid }">
<label for="{{id}}" class="control-label {{labelClass}}">{{label|translate}}</label>
<div class="{{inputOuterClass}}">
<input id="{{id}}" name="{{name}}" type="text" class="form-control" ng-model="model" placeholder="..." validate-port required />
<span ng-show="form[name].$invalid" class="glyphicon glyphicon-remove form-control-feedback"></span>
</div>
<div class="row" ng-show="form[name].$dirty && form[name].$invalid">
<div class="{{messageClass}} {{messageOffsetClass}}">
<span class="has-error small" ng-show="form[name].$error.required">{{'error.port.required'|translate}}</span>
<span class="has-error small" ng-show="form[name].$error.validatePort">{{'error.port.invalid'|translate}}</span>
</div>
</div>
</div>

View file

@ -0,0 +1,39 @@
$juci.module("core")
.directive("luciInputPort", function(){
var plugin_root = $juci.module("core").plugin_root;
return {
templateUrl: plugin_root+"/widgets/luci.input.port.html",
restrict: 'E',
replace: true,
scope: {
id: "@",
name: "@",
label: "@",
model : "=",
form: "=",
labelClass : "@",
inputOuterClass : "@",
messageClass : "@",
messageOffsetClass : "@"
}
};
})
.directive("validatePort", function(){
var PORT_REGEX = /^\d{1,5}$/;
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.validatePort = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) { // consider empty models to be valid
return true;
}
if (PORT_REGEX.test(viewValue)) { // valid regex
if (viewValue > 0 && viewValue <= 65535) {
return true;
}
}
return false;
}
}
}
});

View file

@ -3,8 +3,7 @@
theme="bootstrap"
search-enabled="false"
on-select="onChangeTheme($item, $model)"
style="width: 150px;"
>
style="width: 150px;">
<ui-select-match placeholder="Pick your theme">{{$select.selected.label}}</ui-select-match>
<ui-select-choices repeat="theme in themes"
refresh-delay="0">

View file

@ -1,5 +1,5 @@
$juci.module("core")
.directive("juciThemePicker", function($compile){
.directive("juciThemePicker", function(){
var plugin_root = $juci.module("core").plugin_root;
return {
@ -8,7 +8,6 @@ $juci.module("core")
};
})
.controller("JuciThemePickerController", function($scope, $theme, $config){
var allthemes = $theme.getAvailableThemes();
$scope.themes = $config.themes.map(function(x){
return {
id: x,

View file

@ -1,59 +1,71 @@
<form name="ruleForm" class="form-horizontal">
<div class="form-group">
<label for="email" class="control-label col-xs-3">Device</label>
<div class="col-xs-9">
<ui-select ng-model="rule.dest_ip"
theme="bootstrap"
search-enabled="false"
on-select="onChangeSection($item, $model)">
<ui-select-match placeholder="Select device...">{{devices[$select.selected].ipaddr}}</ui-select-match>
<ui-select-choices repeat="c in clients"
refresh-delay="0">
<div >{{devices[c].ipaddr + " " + devices[c].hostname}}</div>
</ui-select-choices>
</ui-select>
</div>
</div>
<div class="form-group">
<label for="email" class="control-label col-xs-3">Local IP</label>
<div class="col-xs-9"><input type="text" class="form-control" ng-model="rule.dest_ip" ng-pattern="patterns.ipaddress"/></div>
</div>
<div class="form-group">
<label for="email" class="control-label col-xs-3">Protocol</label>
<div class="col-xs-9">
<ui-select ng-model="rule.proto"
theme="bootstrap"
search-enabled="false"
on-select="onChangeSection($item, $model)">
<ui-select-match placeholder="Select protocol...">{{$select.selected}}</ui-select-match>
<ui-select-choices repeat="c in protocols"
refresh-delay="0">
<div >{{c}}</div>
</ui-select-choices>
</ui-select>
</div>
</div>
<div class="form-group">
<label for="email" class="control-label col-xs-3">Type</label>
<div class="col-xs-9">
<input type="radio" ng-model="portIsRange" ng-value="1"/> Range
<input type="radio" ng-model="portIsRange" ng-value="0"/> Single
</div>
</div>
<div class="form-group" ng-show="portIsRange">
<label for="email" class="control-label col-xs-3">Public port range</label>
<div class="col-xs-9"><input type="text" class="form-control" ng-model="rule.src_dport" ng-pattern="patterns.port"/></div>
</div>
<div class="form-group" ng-show="portIsRange">
<label for="email" class="control-label col-xs-3">Private port range</label>
<div class="col-xs-9"><input type="text" class="form-control" ng-model="rule.dest_port" ng-pattern="patterns.port"/></div>
</div>
<div class="form-group" ng-show="!portIsRange">
<label for="email" class="control-label col-xs-3">Public port</label>
<div class="col-xs-9"><input type="text" class="form-control" ng-model="rule.src_dport" ng-pattern="patterns.port"/></div>
</div>
<div class="form-group" ng-show="!portIsRange">
<label for="email" class="control-label col-xs-3">Private port</label>
<div class="col-xs-9"><input type="text" class="form-control" ng-model="rule.dest_port" ng-pattern="patterns.port"/></div>
</div>
</form>
<form name="ruleForm" class="form-horizontal" novalidate>
<div class="modal-body">
<div class="form-group">
<label for="device" class="control-label col-xs-4" translate>Device</label>
<div class="col-xs-8" id="device">
<ui-select ng-model="rule.dest_ip"
theme="bootstrap"
search-enabled="false"
on-select="onChangeSection($item, $model)">
<ui-select-match placeholder="Select device...">{{devices[$select.selected].hostname}}</ui-select-match>
<ui-select-choices repeat="c in clients"
refresh-delay="0">
<div >{{devices[c].hostname}}</div>
</ui-select-choices>
</ui-select>
</div>
</div>
<div class="form-group">
<label for="ipAddress" class="control-label col-xs-4" translate>Local IP Address</label>
<div class="col-xs-8"><input id="ipAddress" type="text" class="form-control" ng-model="rule.dest_ip" ng-pattern="patterns.ipaddress"/></div>
</div>
<div class="form-group">
<label for="protocol" class="control-label col-xs-4" translate>Protocol</label>
<div class="col-xs-8" id="protocol">
<ui-select ng-model="rule.proto"
theme="bootstrap"
search-enabled="false"
on-select="onChangeSection($item, $model)">
<ui-select-match placeholder="Select protocol...">{{$select.selected}}</ui-select-match>
<ui-select-choices repeat="c in protocols"
refresh-delay="0">
<div>{{c}}</div>
</ui-select-choices>
</ui-select>
</div>
</div>
<div class="form-group">
<label for="range" class="control-label col-xs-4">Type</label>
<div class="col-xs-8" id="range">
<div class="radio radio-info radio-inline">
<input id="port" type="radio" ng-model="portIsRange" ng-value="0"/>
<label for="port" translate>Port</label>
</div>
<div class="radio radio-info radio-inline">
<input id="portRange" type="radio" ng-model="portIsRange" ng-value="1"/>
<label for="portRange" translate>Port Range</label>
</div>
</div>
</div>
<div class="form-group" ng-show="portIsRange">
<label class="control-label col-xs-4">Public port range</label>
<div class="col-xs-3"><input type="text" class="form-control" ng-model="rule.src_dport" ng-pattern="patterns.port"/></div>
<div class="col-xs-3"><input type="text" class="form-control" ng-model="rule.src_dport" ng-pattern="patterns.port"/></div>
</div>
<div class="form-group" ng-show="portIsRange">
<label class="control-label col-xs-4">Private port range</label>
<div class="col-xs-3"><input type="text" class="form-control" ng-model="rule.dest_port" ng-pattern="patterns.port"/></div>
<div class="col-xs-3"><input type="text" class="form-control" ng-model="rule.dest_port" ng-pattern="patterns.port"/></div>
</div>
<div ng-show="!portIsRange">
<luci-input-port id="publicPortId" name="publicPort" model="rule.src_port" form="ruleForm" label="Public port" label-class="col-xs-4" input-outer-class="col-xs-3" message-class="col-xs-8" message-offset-class="col-xs-offset-4" />
</div>
<div ng-show="!portIsRange">
<luci-input-port id="privatePortId" name="privatePort" model="rule.dest_port" form="ruleForm" label="Private port" label-class="col-xs-4" input-outer-class="col-xs-3" message-class="col-xs-8" message-offset-class="col-xs-offset-4" />
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" ng-click="onAccept(rule)" ng-disabled="ruleForm.$invalid" translate>Submit</button>
<button class="btn btn-default " data-dismiss="modal" translate>Cancel</button>
</div>
</form>

View file

@ -11,12 +11,12 @@ $juci.module("core")
require: "^ngModel"
};
}).controller("uciFirewallNatRuleEdit", function($scope, $uci, $rpc){
$scope.portIsRange = 1;
$scope.portIsRange = 0;
$scope.protocols = ["udp", "tcp"];
$scope.patterns = {
ipaddress: /^(?!0)(?!.*\.$)((1?\d?\d|25[0-5]|2[0-4]\d)(\.|$)){4}$/,
port: /^\d{1,5}$/
}
};
$rpc.router.clients().done(function(clients){
//console.log(JSON.stringify(Object.keys(clients).map(function(x) { return clients[x]; })));
$scope.clients = [];

View file

@ -0,0 +1,35 @@
/*
* juci - javascript universal client interface
*
* Project Author: Noël Wuyts <noel.wuyts@gmail.com>
*
* Copyright (C) 2012-2013 Inteno Broadband Technology AB. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
$juci.module("internet")
.state("internet", {
url: "/internet",
views: {
"content": {
templateUrl: "pages/internet.firewall.html"
}
},
onEnter: function(){
$juci.redirect("internet.firewall");
}
});

View file

@ -0,0 +1,19 @@
<luci-layout-with-sidebar>
<div ng-controller="InternetFirewallPageCtrl">
<luci-config-section>
<luci-config-heading>{{'internet.firewall.title'|translate}}</luci-config-heading>
<luci-config-info>{{'internet.firewall.info'|translate}}</luci-config-info>
<luci-config-lines>
<luci-config-line title="{{'toggle-all-rules'|translate}}">
<switch id="enabled" name="enabled" ng-model="firewallSwitchState" ng-change="onFirewallToggle"></switch>
</luci-config-line>
</luci-config-lines>
<luci-config-lines>
<luci-config-line ng-repeat="rule in firewall['@rule']" title="{{rule.name.value|translate}}">
<switch id="enabled" name="enabled" ng-model="rule.enabled.value" class="green"></switch>
</luci-config-line>
</luci-config-lines>
</luci-config-section>
<luci-config-apply></luci-config-apply>
</div>
</luci-layout-with-sidebar>

View file

@ -0,0 +1,23 @@
$juci.module("internet")
.controller("InternetFirewallPageCtrl", function($scope, $uci){
$scope.firewallSwitchState = 0;
$uci.sync("firewall").done(function(){
$scope.firewall = $uci.firewall;
//settings.firewall = Number(settings.firewall);
//settings.ping_wan = Number(settings.ping_wan);
$scope.wan_ping_rule = $uci.firewall["@rule"].filter(function(rule){ return rule.name.value == "Allow-Ping" })[0]||null;
$scope.firewallSwitchState = $uci.firewall["@rule"].filter(function(rule){ return rule.enabled.value == true; }).length > 0;
$scope.$apply();
});
$scope.onFirewallToggle = function(){
if(!$scope.firewallSwitchState) {
$uci.firewall["@rule"].map(function(rule){
rule.enabled.value = false;
});
} else {
$uci.firewall["@rule"].map(function(rule){
rule.enabled.value = true;
});
};
}
});

View file

@ -0,0 +1,27 @@
<luci-layout-with-sidebar>
<div ng-controller="InternetPortMappingPageCtrl">
<h2 translate>Port Mapping</h2>
<p translate>Port mapping allows remote computers to connect to a specific device within your private network.</p>
<table class="table">
<thead><th translate>Local IP</th><th translate>Protocol</th><th translate>Local port</th><th translate>Public Port</th><th></th><th></th></thead>
<tbody>
<tr ng-repeat="r in redirects">
<td>{{ r.dest_ip.value }}</td>
<td>{{ r.proto.value }}</td>
<td>{{ r.dest_port.value }}</td>
<td>{{ r.src_dport.value }}</td>
<td style="width: 1%"><button class="btn btn-default" ng-click="onEditRule(r)"><i class="fa fa-pencil" style="{{editColor}}"></i></button></td>
<td style="width: 1%"><button class="btn btn-default" ng-click="onDeleteRule(r)"><i class="fa fa-trash-o"></i></button></td>
</tr>
<tr>
<td colspan="5"></td>
<td style="width: 1%"><button class="btn btn-default" ng-click="onAddRule()"><i class="fa fa-plus"></i></button></td>
</tr>
</tbody>
</table>
<luci-config-apply></luci-config-apply>
<modal title="Add Port Mapping" ng-show="showModal" on-accept="onAcceptModal()" on-dismiss="onDismissModal()" form-included="true" dismiss-label="Cancel" accept-label="Save" hide-close-btn="true">
<uci-firewall-nat-rule-edit ng-model="rule"></uci-firewall-nat-rule-edit>
</modal>
</div>
</luci-layout-with-sidebar>

View file

@ -0,0 +1,73 @@
$juci.module("internet")
.controller("InternetPortMappingPageCtrl", function($scope, $uci, ModalService, $rpc){
function reload(){
$uci.sync("firewall").done(function(){
$scope.redirects = $uci.firewall["@redirect"];
$scope.$apply();
});
} reload();
$scope.showModal = 0;
$scope.onAcceptModal = function(){
var rule = $scope.rule;
//Object.keys($scope.redirects).map(function(idx) { var x = $scope.redirects[idx]; if(x[".name"] == rule[".name"]) $scope.redirects[idx] = rule; });
console.log(JSON.stringify(rule));
if(!rule[".name"]){
// set up the rule in uci
rule[".type"] = "redirect";
$uci.firewall.create(rule).done(function(rule){
$scope.rule_src = rule;
});
}
$scope.showModal = 0;
};
$scope.onDismissModal = function(){
$scope.showModal = 0;
};
$scope.onAddRule = function(){
$scope.rule = {};
//$scope.redirects.push($scope.rule);
$scope.showModal = 1;
};
$scope.onEditRule = function(rule){
$scope.rule_src = rule;
$scope.rule = {
".name": rule[".name"],
dest_ip: rule.dest_ip.value,
proto: rule.proto.value,
dest_port: rule.dest_port.value,
src_dport: rule.src_dport.value
};
$scope.modalTitle = "Edit port mapping ("+(rule['.name'] || 'new')+")";
$scope.showModal = 1;
};
$scope.onDeleteRule = function(rule){
function removeFromList(){
if($scope.redirects) {
$scope.redirects = $scope.redirects.filter(function(x){ return x !== rule; });
$scope.$apply();
}
}
console.log("Deleting rule: "+rule[".name"]);
if(rule[".name"]){
$uci.delete("firewall."+rule[".name"]).always(function(){
removeFromList();
});
} else {
removeFromList();
}
};
$scope.onCommit = function(){
if(!$scope.redirects) return;
$uci.commit("firewall").always(function(){
$scope.$apply();
console.log("Saved firewall settings!");
});
};
$scope.onCancel = function(){
$uci.rollback().always(function(){
reload();
});
}
});

View file

@ -0,0 +1,19 @@
{
"scripts": [
"internet"
],
"pages": {
"internet.dns": {
"view": "pages/internet.dns"
},
"internet.exposed_host": {
"view": "pages/internet.exposed_host"
},
"internet.firewall": {
"view": "pages/internet.firewall"
},
"internet.port_mapping": {
"view": "pages/internet.port_mapping"
}
}
}

View file

@ -3,17 +3,50 @@
"router"
],
"pages": {
"internet.dns": {
"view": "pages/internet.dns"
"settings.configuration": {
"view": "pages/settings.configuration"
},
"internet.exposed_host": {
"view": "pages/internet.exposed_host"
"settings.energy": {
"view": "pages/settings.energy"
},
"internet.firewall": {
"view": "pages/internet.firewall"
"settings.network": {
"view": "pages/settings.network"
},
"internet.port_mapping": {
"view": "pages/internet.port_mapping"
"settings.password": {
"view": "pages/settings.password"
},
"settings.upgrade": {
"view": "pages/settings.upgrade"
},
"settings.uci": {
"view": "pages/settings.uci"
},
"status.status": {
"view": "pages/status.status"
},
"status.status.dsl": {
"view": "pages/status.status.dsl"
},
"status.status.tv": {
"view": "pages/status.status.tv"
},
"status.status.voice": {
"view": "pages/status.status.voice"
},
"status.about": {
"view": "pages/status.about"
},
"status.diagnostics": {
"view": "pages/status.diagnostics"
},
"status.events": {
"view": "pages/status.events"
},
"status.nat": {
"view": "pages/status.nat"
},
"status.restart": {
"view": "pages/status.restart"
}
}
}

View file

@ -21,14 +21,15 @@
*/
$juci.module("router")
.state("internet", {
url: "/internet",
views: {
"content": {
templateUrl: "pages/internet.firewall.html",
}
},
onEnter: function($state){
$juci.redirect("internet.firewall");
},
});
.state("settings", {
url: "/settings",
onEnter: function(){
$juci.redirect("settings.password");
}
})
.state("status", {
url: "/status",
onEnter: function(){
$juci.redirect("status.status");
}
});

View file

@ -1,7 +1,7 @@
<div class="navbar navbar-default" ng-controller="NavigationCtrl">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only" translate>Toggle navigation</span>
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only" translate>Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@ -25,11 +25,11 @@
</ul>
<ul class="nav navbar-nav navbar-right" auto-active>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{'Theme' | translate}} <span class="caret"></a>
<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{'Theme' | translate}} <span class="caret"/></a>
<ul class="dropdown-menu" role="menu">
<li >
<a href="" data-theme="default" class="theme-link">Default</a>
<a href="" data-theme="vodaphone" class="theme-link">Vodaphone</a>
<a href="" data-theme="vodafone" class="theme-link">Vodafone</a>
</li>
</ul>
</li>

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

Before

Width:  |  Height:  |  Size: 846 B

After

Width:  |  Height:  |  Size: 846 B

View file

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

Before

Width:  |  Height:  |  Size: 482 B

After

Width:  |  Height:  |  Size: 482 B

View file

Before

Width:  |  Height:  |  Size: 615 B

After

Width:  |  Height:  |  Size: 615 B

View file

Before

Width:  |  Height:  |  Size: 465 B

After

Width:  |  Height:  |  Size: 465 B

View file

Before

Width:  |  Height:  |  Size: 617 B

After

Width:  |  Height:  |  Size: 617 B

View file

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 109 KiB

View file

Before

Width:  |  Height:  |  Size: 477 B

After

Width:  |  Height:  |  Size: 477 B

View file

Before

Width:  |  Height:  |  Size: 397 B

After

Width:  |  Height:  |  Size: 397 B

View file

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 368 B

View file

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 419 B

View file

Before

Width:  |  Height:  |  Size: 487 B

After

Width:  |  Height:  |  Size: 487 B

View file

Before

Width:  |  Height:  |  Size: 632 B

After

Width:  |  Height:  |  Size: 632 B

View file

Before

Width:  |  Height:  |  Size: 829 B

After

Width:  |  Height:  |  Size: 829 B

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

Before

Width:  |  Height:  |  Size: 441 B

After

Width:  |  Height:  |  Size: 441 B

View file

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

Before

Width:  |  Height:  |  Size: 589 B

After

Width:  |  Height:  |  Size: 589 B

View file

Before

Width:  |  Height:  |  Size: 839 B

After

Width:  |  Height:  |  Size: 839 B

View file

Before

Width:  |  Height:  |  Size: 309 B

After

Width:  |  Height:  |  Size: 309 B

View file

Before

Width:  |  Height:  |  Size: 509 B

After

Width:  |  Height:  |  Size: 509 B

View file

Before

Width:  |  Height:  |  Size: 354 B

After

Width:  |  Height:  |  Size: 354 B

View file

Before

Width:  |  Height:  |  Size: 431 B

After

Width:  |  Height:  |  Size: 431 B

View file

Before

Width:  |  Height:  |  Size: 343 B

After

Width:  |  Height:  |  Size: 343 B

View file

Before

Width:  |  Height:  |  Size: 399 B

After

Width:  |  Height:  |  Size: 399 B

View file

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 462 B

View file

Before

Width:  |  Height:  |  Size: 569 B

After

Width:  |  Height:  |  Size: 569 B

View file

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

Before

Width:  |  Height:  |  Size: 851 B

After

Width:  |  Height:  |  Size: 851 B

View file

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

Before

Width:  |  Height:  |  Size: 866 B

After

Width:  |  Height:  |  Size: 866 B

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

@ -0,0 +1,11 @@
{
"title": "Vodafone",
"index": "index.html",
"styles": [
"css/theme.css"
],
"scripts": [
"widgets/vodafone.navbar",
"widgets/vodafone.top_bar"
]
}

View file

@ -20,17 +20,17 @@
* 02110-1301 USA
*/
$juci.module("vodaphone")
$juci.module("vodafone")
.directive("luciNavbar", function($http, $compile, $templateCache, $config){
var plugin_root = $juci.module("vodaphone").plugin_root;
var plugin_root = $juci.module("vodafone").plugin_root;
var target_tpl = "plugins/core/widgets/luci.navbar.html";
return {
priority: 100, // give it higher priority than built-in ng-click
//templateUrl: plugin_root+"/widgets/vodaphone.navbar.html",
priority: 100, // give it higher priority than built-in ng-click
//templateUrl: plugin_root+"/widgets/vodafone.navbar.html",
replace: true,
link: function(scope, element, attrs){
if($config.theme == "vodaphone" && !$templateCache.get(plugin_root + "/widgets/vodaphone.navbar.html")){
var promise = $http.get(plugin_root + "/widgets/vodaphone.navbar.html", {cache: $templateCache}).success(function(html) {
link: function(scope, element, attrs){
if($config.theme == "vodaphone" && !$templateCache.get(plugin_root + "/widgets/vodafone.navbar.html")){
var promise = $http.get(plugin_root + "/widgets/vodafone.navbar.html", {cache: $templateCache}).success(function(html) {
$templateCache.put(target_tpl, html);
}).then(function (response) {
element.replaceWith($compile($templateCache.get(target_tpl))(scope));

View file

@ -0,0 +1,26 @@
<div id="top-bar" ng-controller="luciTopBarController">
<div id="top-bar-content">
<div class="rel">
<a href="#">
<div id="logo">
{{ model }} <!--<img src="themes/vodaphone/img/logo/easybox-804-reskin.png" alt="">-->
</div>
</a>
<div id="top-info" class="clearfix">
<div id="top-info-mode" class="rel">
<ui-select ng-model="selectedMode"
theme="bootstrap"
search-enabled="false"
on-select="onChangeMode($item, $model)"
style="width: 150px;">
<ui-select-match placeholder="Basic">{{$select.selected.label}}</ui-select-match>
<ui-select-choices repeat="mode in guiModes"
refresh-delay="0">
<div >{{mode.label}}</div>
</ui-select-choices>
</ui-select>
</div>
</div>
</div>
</div>
</div>

View file

@ -19,18 +19,18 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
/*
$juci.module("vodaphone")
$juci.module("vodafone")
.directive("luciTopBar", function($http, $compile, $templateCache, $config){
var plugin_root = $juci.module("vodaphone").plugin_root;
var plugin_root = $juci.module("vodafone").plugin_root;
var target_tpl = "plugins/core/widgets/luci.top_bar.html";
return {
priority: 100, // give it higher priority than built-in ng-click
//templateUrl: plugin_root+"/widgets/vodaphone.navbar.html",
//templateUrl: plugin_root+"/widgets/vodafone.navbar.html",
replace: true,
link: function(scope, element, attrs){
if($config.theme == "vodaphone" && !$templateCache.get(plugin_root + "/widgets/vodaphone.top_bar.html")){
var promise = $http.get(plugin_root + "/widgets/vodaphone.top_bar.html", {cache: $templateCache}).success(function(html) {
if($config.theme == "vodaphone" && !$templateCache.get(plugin_root + "/widgets/vodafone.top_bar.html")){
var promise = $http.get(plugin_root + "/widgets/vodafone.top_bar.html", {cache: $templateCache}).success(function(html) {
$templateCache.put(target_tpl, html);
}).then(function (response) {
element.replaceWith($compile($templateCache.get(target_tpl))(scope));

View file

@ -1,23 +0,0 @@
<div id="top-bar" ng-controller="luciTopBarController">
<div class="container">
<div class="row">
<div class="col-md-5" style="font-size: 28px; padding-top: 10px;">
<img ng-src="{{ model }}" alt=""/>
</div>
<div style="float: right; margin-top: 10px; ">
<ui-select ng-model="selectedMode"
theme="bootstrap"
search-enabled="false"
on-select="onChangeMode($item, $model)"
style="width: 150px;"
>
<ui-select-match placeholder="Basic">{{$select.selected.label}}</ui-select-match>
<ui-select-choices repeat="mode in guiModes"
refresh-delay="0">
<div >{{mode.label}}</div>
</ui-select-choices>
</ui-select>
</div>
</div>
</div>
</div>

Binary file not shown.

View file

@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.7.5\n"
"X-Generator: Poedit 1.7.6\n"
msgid "Overview"
msgstr "Overview"
@ -38,7 +38,164 @@ msgstr "Theme"
msgid "Network"
msgstr "Network"
#: htdocs/plugins/router/pages/internet.exposed_host.html:14
# #-#-#-#-# custom.pot #-#-#-#-#
# wifi
#: htdocs/plugins/wifi/pages/wifi.general.html:17
msgid "Setup"
msgstr ""
msgid "General"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.schedule.html:4
msgid "Schedule"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.wps.html:5
msgid "WPS"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.mac_filter.html:4
msgid "MAC Filter"
msgstr ""
msgid "wifi.general.info"
msgstr ""
msgid "wifi.macfilter.info"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:11
msgid "Enable WiFi On/Off button on EasyBox"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:8
msgid "Wifi Network"
msgstr ""
msgid "wifi.schedule.info"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.wps.html:8
msgid "WPS Function"
msgstr ""
msgid "wifi.wps.info"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:4
msgid "MAC Filtering"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:14
msgid "Access for listed devices"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:19
msgid "Currently added devices"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:41
msgid "Add currently connected hosts to the list"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:4
msgid "Wifi Mode"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:10
msgid "Bandwidth"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:16
msgid "Channel"
msgstr ""
msgid "MAC filter"
msgstr ""
msgid "Apply"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:46
msgid "Cancel"
msgstr ""
# internet
msgid "Firewall"
msgstr ""
msgid "DSN"
msgstr ""
# status
msgid "DSL"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:59
msgid "Voice"
msgstr ""
msgid "Vodaphone TV"
msgstr ""
msgid "Diagnostics"
msgstr ""
msgid "Events"
msgstr ""
msgid "Restart"
msgstr ""
msgid "About"
msgstr ""
msgid "NAT"
msgstr ""
# phone
msgid "Call Log"
msgstr ""
#: htdocs/plugins/phone/pages/phone.number_blocking.html:4
msgid "Number Blocking"
msgstr ""
#: htdocs/plugins/phone/pages/phone.ringing_schedule.html:4
#: htdocs/plugins/phone/pages/phone.ringing_schedule.html:7
msgid "Ringing Schedule"
msgstr ""
msgid "Numbers"
msgstr ""
msgid "Speed Dialing"
msgstr ""
# settings
msgid "EasyBox Password"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:4
msgid "Firmware Upgrade"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:4
msgid "Energy Settings"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:4
msgid "Configuration"
msgstr ""
msgid "Advanced"
msgstr ""
msgid "application.name"
msgstr ""
#: htdocs/plugins/internet/pages/internet.exposed_host.html:14
msgid ""
"<span class=\"glyphicon glyphicon-exclamation-sign\" aria-hidden=\"true\"></"
"span> Warning: By using the exposed host function you bypass the firewall of "
@ -47,99 +204,763 @@ msgid ""
"forwarded: {{ nonforwardedPorts || 'None'}}."
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:19
msgid ""
"<span class=\"glyphicon glyphicon-info-sign\" aria-hidden=\"true\"></span> "
"{{info}}"
#: htdocs/plugins/router/pages/status.status.js:74
msgid "Active Connections"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:12
#: htdocs/plugins/router/pages/status.status.html:20
msgid "Active Stations"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:46
msgid "Add clients to MAC filtering list"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:57
msgid "ADSL"
msgstr ""
#: htdocs/plugins/phone/pages/phone.call_log.js:26
msgid "All Numbers"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:6
msgid "Automated Diagnostics"
msgstr ""
#: htdocs/plugins/core/widgets/luci.top_bar.html:13
msgid "Basic"
msgstr ""
#: htdocs/plugins/core/widgets/luci.top_bar.js:14
msgid "Basic Mode"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:22
msgid "Bit Rate"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:66
msgid "Buffered"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:37
msgid "Cell Statistics"
msgstr ""
#: htdocs/plugins/router/pages/settings.password.html:18
msgid "Change Password"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:22
msgid "Check for Update"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:12
msgid "Choose Bandwidth"
msgstr "Choose Bandwidth"
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:18
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:18
msgid "Choose Channel"
msgstr "Choose Channel"
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:11
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:15
msgid "Choose Device"
msgstr "Choose Device"
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:6
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:6
msgid "Choose Mode"
msgstr "Choose Mode"
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:17
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:21
msgid "Choose Protection"
msgstr "Choose Protection"
#: htdocs/plugins/router/pages/status.dsl.html:3
#: htdocs/plugins/router/pages/status.status.tv.html:6
msgid "Connection Status"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:30
msgid "Connection Type"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:14
msgid "Connections"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:7
msgid "Current Firmware Version"
msgstr ""
#: htdocs/plugins/router/pages/settings.password.html:8
msgid "Current password"
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:3
msgid "Device"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:17
msgid "DHCP Leases"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:10
msgid "Diagnose"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:4
msgid "Diagnostic Utility"
msgstr ""
#: htdocs/plugins/router/pages/settings.password.html:12
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:27
msgid "Display Characters"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:9
msgid "DSL Connection"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:13
msgid "DSL Mode"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:3
msgid "DSL Status"
msgstr "DSL Status"
#: htdocs/plugins/router/pages/internet.exposed_host.html:3
#: htdocs/plugins/router/pages/status.status.dsl.html:17
msgid "DSL Status Information"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:4
msgid "Enabled"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:32
msgid "Error Counter"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:61
msgid "Ethernet Ports"
msgstr ""
#: htdocs/plugins/core/widgets/luci.top_bar.js:15
msgid "Expert Mode"
msgstr ""
#: htdocs/plugins/internet/pages/internet.exposed_host.html:3
msgid "Exposed Host"
msgstr ""
#: htdocs/plugins/router/pages/internet.exposed_host.html:7
#: htdocs/plugins/internet/pages/internet.exposed_host.html:7
msgid "Exposed Host Function"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:14
msgid "Factory Settings"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:28
msgid "Firmware File:"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:49
msgid "Firmware Version"
msgstr ""
#: htdocs/plugins/router/pages/settings.password.html:4
msgid "Gateway Password"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:5
msgid "General WiFi Settings"
msgstr ""
#: htdocs/plugins/router/pages/internet.exposed_host.html:4
#: htdocs/plugins/phone/pages/phone.call_log.js:32
msgid "Guest Room"
msgstr ""
#: htdocs/plugins/phone/pages/phone.call_log.js:28
msgid "Home Main"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:14
msgid "Host"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:22
#: htdocs/plugins/router/pages/status.status.js:47
msgid "Hostname"
msgstr ""
#: htdocs/plugins/internet/pages/internet.exposed_host.html:4
msgid ""
"If you have a local network device that cannot run an Internet application "
"properly behind the firewall, you can allow unrestricted Internet access to "
"the network device (Exposed Host)."
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:29
msgid "Install Upgrade"
msgstr ""
#: htdocs/plugins/internet/pages/internet.firewall.html:5
msgid "internet.firewall.info"
msgstr ""
"Your EasyBox provides extensive firewall functionality which protects "
"against common attacks. Vodafone recommends not to turn off firewall."
#: htdocs/plugins/internet/pages/internet.firewall.html:4
msgid "internet.firewall.title"
msgstr "Firewall"
#: htdocs/plugins/router/pages/status.status.js:22
#: htdocs/plugins/router/pages/status.status.js:28
msgid "IPv4-Address"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:50
msgid "Kernel Version"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:22
msgid "Leasetime remaining"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:11
msgid "Load"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:53
msgid "Load Average"
msgstr ""
#: htdocs/plugins/router/pages/settings.uci.html:16
msgid "Loading"
msgstr ""
#: htdocs/html/default.html:2
msgid "Loading..."
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:6
#: htdocs/plugins/router/pages/internet.port_mapping.html:6
msgid "Local IP"
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:18
msgid "Local IP Address"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:6
#: htdocs/plugins/router/pages/internet.port_mapping.html:6
msgid "Local port"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:51
msgid "Local Time"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:4
#: htdocs/plugins/core/widgets/luci.top_bar.js:16
msgid "Log out"
msgstr ""
#: htdocs/plugins/router/pages/settings.password.html:6
msgid "Login Account"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "MAC address"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:22
msgid "MAC-Address"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:11
msgid "Manual Firmware Upgrade"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:8
msgid "Memory"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:48
msgid "Model"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:56
#: htdocs/plugins/router/pages/status.status.js:57
#: htdocs/plugins/router/pages/status.status.js:58
#: htdocs/plugins/router/pages/status.status.js:59
msgid "no"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:24
#: htdocs/plugins/router/pages/status.status.js:88
msgid "No active leases"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:101
msgid "No active stations"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "Noise"
msgstr ""
#: htdocs/plugins/core/widgets/luci.footer.js:46
msgid "Not connected"
msgstr ""
#: htdocs/plugins/phone/pages/phone.call_log.js:30
msgid "Office"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:18
msgid "Online Update"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:27
msgid "Operating Data"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:22
#: htdocs/plugins/router/pages/settings.password.html:10
msgid "Password"
msgstr ""
#: htdocs/plugins/phone/pages/phone.number_blocking.html:5
msgid "phone.number_blocking.info"
msgstr ""
#: htdocs/plugins/phone/pages/phone.ringing_schedule.html:5
msgid "phone.schedule.info"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:22
msgid "Ping"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:13
msgid "Ping Test"
msgstr ""
#: htdocs/plugins/core/widgets/luci.input.port.html:9
msgid "Please add"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.js:80
msgid "Please enter correct username and password!"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:7
msgid "Please sign in"
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:41
msgid "Port"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:3
#: htdocs/plugins/router/pages/internet.port_mapping.html:3
msgid "Port Mapping"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:4
#: htdocs/plugins/router/pages/internet.port_mapping.html:4
msgid ""
"Port mapping allows remote computers to connect to a specific device within "
"your private network."
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:45
msgid "Port Range"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:13
msgid "Power-LED"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:16
msgid "Power-LED Brightness"
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:22
#: htdocs/plugins/internet/pages/internet.port_mapping.html:6
#: htdocs/plugins/router/pages/internet.port_mapping.html:6
msgid "Protocol"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:6
#: htdocs/plugins/router/pages/internet.port_mapping.html:6
msgid "Public Port"
msgstr ""
#: htdocs/html/404.html:2
msgid "The page you were trying to access was not found!"
#: htdocs/plugins/router/pages/settings.configuration.html:17
msgid "Reset"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:16
msgid "Reset restores the factory default settings of your gateway"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:10
msgid "Restore settings from a configuration saved on a computer"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:70
msgid "Root Usage (/)"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "RX Rate"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:8
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:46
msgid "Save"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:7
msgid "Save settings to computer with password protection"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.schedule.html:7
msgid "Schedule Function"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:5
msgid "settings.config.info"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:5
msgid "settings.energy.info"
msgstr ""
#: htdocs/plugins/router/pages/settings.password.html:5
msgid "settings.password.info"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:5
msgid "settings.upgrade.info"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:12
msgid "settings.upgrade.manual.info"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:19
msgid "settings.upgrade.online.info"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:26
msgid "settings.upgrade.usb.info"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:65
msgid "Shared"
msgstr ""
#: htdocs/plugins/phone/pages/phone.call_log.html:7
msgid "Show calls for"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:30
msgid "Sign in"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "Signal"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:10
msgid "Status-LED"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:7
msgid "status.diagnostics.auto.info"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:5
msgid "status.diagnostics.info"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:14
msgid "status.diagnostics.ping.info"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:28
msgid "status.diagnostics.trace.info"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:5
msgid "status.dsl.offline"
msgstr ""
#: htdocs/plugins/router/pages/status.status.tv.html:5
msgid "status.tv.info"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:11
msgid "Storage"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:67
msgid "Swap"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:71
msgid "Temporary Usage (/tmp)"
msgstr ""
#: htdocs/plugins/core/widgets/luci.navbar.html:4
msgid "Toggle navigation"
msgstr ""
#: htdocs/plugins/internet/pages/internet.firewall.html:7
msgid "toggle-all-rules"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:27
msgid "Tracing Tool"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "TX Rate"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:14
msgid "Upload file"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:52
msgid "Uptime"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:64
msgid "Usage"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:25
msgid "USB Firmware Upgrade"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:7
msgid "USB Port"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:18
msgid "Username"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:58
msgid "VDSL"
msgstr ""
#: htdocs/plugins/router/pages/status.status.tv.html:7
msgid "Vodaphone TV Channels"
msgstr ""
#: htdocs/plugins/router/pages/status.status.tv.html:4
msgid "Vodaphone TV Status"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:60
msgid "Voice Ports"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:56
msgid "Wifi"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:10
msgid "wifi-iface.closed"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:13
msgid "wifi-iface.device"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:19
msgid "wifi-iface.encryption"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:25
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:26
msgid "wifi-iface.key"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:7
msgid "wifi-iface.ssid"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.settings.html:6
msgid "wifi.settings.info"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:56
#: htdocs/plugins/router/pages/status.status.js:57
#: htdocs/plugins/router/pages/status.status.js:58
#: htdocs/plugins/router/pages/status.status.js:59
msgid "yes"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:3
msgid "You are logged in!"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:6
msgid ""
"Your EasyBox supports the industry-wide WiFi standards, enabling easy "
"wireless connection of your devices."
# share/menu.d/internet.json
msgid "internet.title"
msgstr ""
msgid "internet.port_mapping.title"
msgstr ""
msgid "internet.exposed_host.title"
msgstr ""
msgid "internet.dns.title"
msgstr ""
# share/menu.d/overview.json
msgid "overview.title"
msgstr ""
# share/menu.d/phone.json
msgid "phone.title"
msgstr ""
msgid "phone.call_log.title"
msgstr ""
msgid "phone.number_blocking.title"
msgstr ""
msgid "phone.ringing_schedule.title"
msgstr ""
msgid "phone.numbers.title"
msgstr ""
msgid "phone.speed_dialing.title"
msgstr ""
# share/menu.d/settings.json
msgid "settings.title"
msgstr ""
msgid "settings.password.title"
msgstr ""
msgid "settings.upgrade.title"
msgstr ""
msgid "settings.energy.title"
msgstr ""
msgid "settings.configuration.title"
msgstr ""
msgid "settings.network.title"
msgstr ""
msgid "settings.uci.title"
msgstr ""
# share/menu.d/status.json
msgid "status.title"
msgstr ""
msgid "status.status.title"
msgstr ""
msgid "status.status.dsl.title"
msgstr ""
msgid "status.diagnostics.title"
msgstr ""
msgid "status.events.title"
msgstr ""
msgid "status.restart.title"
msgstr ""
msgid "status.about.title"
msgstr ""
msgid "status.nat.title"
msgstr ""
# share/menu.d/status.vodafone.json
msgid "status.status.voice.title"
msgstr ""
msgid "status.status.tv.title"
msgstr ""
# share/menu.d/wifi.json
msgid "wifi.title"
msgstr ""
msgid "wifi.general.title"
msgstr ""
msgid "wifi.schedule.title"
msgstr ""
msgid "wifi.wps.title"
msgstr ""
msgid "wifi.mac_filter.title"
msgstr ""
msgid "wifi.settings.title"
msgstr ""
msgid "wifi-iface.wifi-iface.ssid"
msgstr ""
msgid "wifi-iface.network"
msgstr ""
msgid "wifi-iface.mode"
msgstr ""
msgid "wifi-iface.cipher"
msgstr ""
msgid "wifi-iface.gtk_rekey"
msgstr ""
msgid "wifi-iface.wps_pbc"
msgstr ""
msgid "wifi-iface.wmf_bss_enable"
msgstr ""
msgid "wifi-iface.bss_max"
msgstr ""
msgid "wifi-iface.instance"
msgstr ""
msgid "wifi-iface.up"
msgstr ""
msgid "wifi-iface.disabled"
msgstr ""
msgid "wifi-iface.macmode"
msgstr ""
msgid "wifi-iface.macfilter"
msgstr ""
msgid "wifi-iface.maclist"
msgstr ""
msgid "interface.macmode.allow"
msgstr ""
msgid "interface.macmode.deny"
msgstr ""

View file

@ -4,15 +4,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: \n"
#: htdocs/plugins/router/pages/internet.exposed_host.html:14
#: htdocs/plugins/internet/pages/internet.exposed_host.html:14
msgid "<span class=\"glyphicon glyphicon-exclamation-sign\" aria-hidden=\"true\"></span> Warning: By using the exposed host function you bypass the firewall of your {{config.friendly_name}}. Please make sure that your computer is protected against attacks from Internet. The following ports will not be forwarded: {{ nonforwardedPorts || 'None'}}."
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:57
msgid "ADSL"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.macfilter.edit.html:14
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:14
msgid "Access for listed devices"
msgstr ""
@ -24,14 +20,18 @@ msgstr ""
msgid "Active Stations"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.macfilter.edit.html:46
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:46
msgid "Add clients to MAC filtering list"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.macfilter.edit.html:41
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:41
msgid "Add currently connected hosts to the list"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:57
msgid "ADSL"
msgstr ""
#: htdocs/plugins/phone/pages/phone.call_log.js:26
msgid "All Numbers"
msgstr ""
@ -40,7 +40,7 @@ msgstr ""
msgid "Automated Diagnostics"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:10
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:10
msgid "Bandwidth"
msgstr ""
@ -60,7 +60,7 @@ msgstr ""
msgid "Buffered"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.macfilter.edit.html:46
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:46
msgid "Cancel"
msgstr ""
@ -72,7 +72,7 @@ msgstr ""
msgid "Change Password"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:16
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:16
msgid "Channel"
msgstr ""
@ -80,23 +80,23 @@ msgstr ""
msgid "Check for Update"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:12
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:12
msgid "Choose Bandwidth"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:18
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:18
msgid "Choose Channel"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:15
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:15
msgid "Choose Device"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:6
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:6
msgid "Choose Mode"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:21
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:21
msgid "Choose Protection"
msgstr ""
@ -104,6 +104,10 @@ msgstr ""
msgid "Configuration"
msgstr ""
#: htdocs/plugins/router/pages/status.status.tv.html:6
msgid "Connection Status"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:30
msgid "Connection Type"
msgstr ""
@ -120,14 +124,31 @@ msgstr ""
msgid "Current password"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.macfilter.edit.html:19
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:19
msgid "Currently added devices"
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:3
msgid "Device"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:17
msgid "DHCP Leases"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:10
msgid "Diagnose"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:4
msgid "Diagnostic Utility"
msgstr ""
#: htdocs/plugins/router/pages/settings.password.html:12
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:27
msgid "Display Characters"
msgstr ""
#: htdocs/plugins/router/pages/status.status.dsl.html:9
msgid "DSL Connection"
msgstr ""
@ -144,24 +165,11 @@ msgstr ""
msgid "DSL Status Information"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:10
msgid "Diagnose"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:4
msgid "Diagnostic Utility"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:27
#: htdocs/plugins/router/pages/settings.password.html:12
msgid "Display Characters"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:11
msgid "Enable WiFi On/Off button on EasyBox"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:4
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:4
msgid "Enabled"
msgstr ""
@ -181,11 +189,11 @@ msgstr ""
msgid "Expert Mode"
msgstr ""
#: htdocs/plugins/router/pages/internet.exposed_host.html:3
#: htdocs/plugins/internet/pages/internet.exposed_host.html:3
msgid "Exposed Host"
msgstr ""
#: htdocs/plugins/router/pages/internet.exposed_host.html:7
#: htdocs/plugins/internet/pages/internet.exposed_host.html:7
msgid "Exposed Host Function"
msgstr ""
@ -230,12 +238,7 @@ msgstr ""
msgid "Hostname"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:22
#: htdocs/plugins/router/pages/status.status.js:28
msgid "IPv4-Address"
msgstr ""
#: htdocs/plugins/router/pages/internet.exposed_host.html:4
#: htdocs/plugins/internet/pages/internet.exposed_host.html:4
msgid "If you have a local network device that cannot run an Internet application properly behind the firewall, you can allow unrestricted Internet access to the network device (Exposed Host)."
msgstr ""
@ -243,6 +246,19 @@ msgstr ""
msgid "Install Upgrade"
msgstr ""
#: htdocs/plugins/internet/pages/internet.firewall.html:5
msgid "internet.firewall.info"
msgstr ""
#: htdocs/plugins/internet/pages/internet.firewall.html:4
msgid "internet.firewall.title"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:22
#: htdocs/plugins/router/pages/status.status.js:28
msgid "IPv4-Address"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:50
msgid "Kernel Version"
msgstr ""
@ -263,18 +279,24 @@ msgstr ""
msgid "Loading"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:6
#: htdocs/plugins/router/pages/internet.port_mapping.html:6
msgid "Local IP"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:51
msgid "Local Time"
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:18
msgid "Local IP Address"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:6
#: htdocs/plugins/router/pages/internet.port_mapping.html:6
msgid "Local port"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:51
msgid "Local Time"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:4
#: htdocs/plugins/core/widgets/luci.top_bar.js:16
msgid "Log out"
@ -284,18 +306,18 @@ msgstr ""
msgid "Login Account"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "MAC address"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.mac_filter.html:4
msgid "MAC Filter"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.macfilter.edit.html:4
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:4
msgid "MAC Filtering"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "MAC address"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:22
msgid "MAC-Address"
msgstr ""
@ -312,6 +334,13 @@ msgstr ""
msgid "Model"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:56
#: htdocs/plugins/router/pages/status.status.js:57
#: htdocs/plugins/router/pages/status.status.js:58
#: htdocs/plugins/router/pages/status.status.js:59
msgid "no"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:24
#: htdocs/plugins/router/pages/status.status.js:88
msgid "No active leases"
@ -325,6 +354,10 @@ msgstr ""
msgid "Noise"
msgstr ""
#: htdocs/plugins/core/widgets/luci.footer.js:46
msgid "Not connected"
msgstr ""
#: htdocs/plugins/phone/pages/phone.number_blocking.html:4
msgid "Number Blocking"
msgstr ""
@ -346,6 +379,14 @@ msgstr ""
msgid "Password"
msgstr ""
#: htdocs/plugins/phone/pages/phone.number_blocking.html:5
msgid "phone.number_blocking.info"
msgstr ""
#: htdocs/plugins/phone/pages/phone.ringing_schedule.html:5
msgid "phone.schedule.info"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:22
msgid "Ping"
msgstr ""
@ -354,6 +395,10 @@ msgstr ""
msgid "Ping Test"
msgstr ""
#: htdocs/plugins/core/widgets/luci.input.port.html:9
msgid "Please add"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.js:80
msgid "Please enter correct username and password!"
msgstr ""
@ -362,14 +407,24 @@ msgstr ""
msgid "Please sign in"
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:41
msgid "Port"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:3
#: htdocs/plugins/router/pages/internet.port_mapping.html:3
msgid "Port Mapping"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:4
#: htdocs/plugins/router/pages/internet.port_mapping.html:4
msgid "Port mapping allows remote computers to connect to a specific device within your private network."
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:45
msgid "Port Range"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:13
msgid "Power-LED"
msgstr ""
@ -378,18 +433,17 @@ msgstr ""
msgid "Power-LED Brightness"
msgstr ""
#: htdocs/plugins/core/widgets/uci.firewall.nat.rule.edit.html:22
#: htdocs/plugins/internet/pages/internet.port_mapping.html:6
#: htdocs/plugins/router/pages/internet.port_mapping.html:6
msgid "Protocol"
msgstr ""
#: htdocs/plugins/internet/pages/internet.port_mapping.html:6
#: htdocs/plugins/router/pages/internet.port_mapping.html:6
msgid "Public Port"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "RX Rate"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:17
msgid "Reset"
msgstr ""
@ -411,8 +465,12 @@ msgstr ""
msgid "Root Usage (/)"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.macfilter.edit.html:46
#: htdocs/plugins/router/pages/status.status.js:28
msgid "RX Rate"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:8
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.macfilter.edit.html:46
msgid "Save"
msgstr ""
@ -432,137 +490,6 @@ msgstr ""
msgid "Settings"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:17
msgid "Setup"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:65
msgid "Shared"
msgstr ""
#: htdocs/plugins/phone/pages/phone.call_log.html:7
msgid "Show calls for"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:30
msgid "Sign in"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "Signal"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:10
msgid "Status-LED"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:11
msgid "Storage"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:67
msgid "Swap"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:5
msgid "System"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "TX Rate"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:71
msgid "Temporary Usage (/tmp)"
msgstr ""
#: htdocs/plugins/core/widgets/luci.navbar.html:28
msgid "Theme"
msgstr ""
#: htdocs/plugins/core/widgets/luci.navbar.html:4
msgid "Toggle navigation"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:27
msgid "Tracing Tool"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:25
msgid "USB Firmware Upgrade"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:7
msgid "USB Port"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:14
msgid "Upload file"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:52
msgid "Uptime"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:64
msgid "Usage"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:18
msgid "Username"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:58
msgid "VDSL"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:59
msgid "Voice"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:60
msgid "Voice Ports"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.wps.html:5
msgid "WPS"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.wps.html:8
msgid "WPS Function"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:56
msgid "Wifi"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.device.edit.html:4
msgid "Wifi Mode"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:8
msgid "Wifi Network"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:3
msgid "You are logged in!"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:56
#: htdocs/plugins/router/pages/status.status.js:57
#: htdocs/plugins/router/pages/status.status.js:58
#: htdocs/plugins/router/pages/status.status.js:59
msgid "no"
msgstr ""
#: htdocs/plugins/phone/pages/phone.number_blocking.html:5
msgid "phone.number_blocking.info"
msgstr ""
#: htdocs/plugins/phone/pages/phone.ringing_schedule.html:5
msgid "phone.schedule.info"
msgstr ""
#: htdocs/plugins/router/pages/settings.configuration.html:5
msgid "settings.config.info"
msgstr ""
@ -591,6 +518,30 @@ msgstr ""
msgid "settings.upgrade.usb.info"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:17
msgid "Setup"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:65
msgid "Shared"
msgstr ""
#: htdocs/plugins/phone/pages/phone.call_log.html:7
msgid "Show calls for"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:30
msgid "Sign in"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "Signal"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:10
msgid "Status-LED"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:7
msgid "status.diagnostics.auto.info"
msgstr ""
@ -611,24 +562,120 @@ msgstr ""
msgid "status.dsl.offline"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:10
#: htdocs/plugins/router/pages/status.status.tv.html:5
msgid "status.tv.info"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:11
msgid "Storage"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:67
msgid "Swap"
msgstr ""
#: htdocs/plugins/router/pages/status.status.html:5
msgid "System"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:71
msgid "Temporary Usage (/tmp)"
msgstr ""
#: htdocs/plugins/core/widgets/luci.navbar.html:28
msgid "Theme"
msgstr ""
#: htdocs/plugins/core/widgets/luci.navbar.html:4
msgid "Toggle navigation"
msgstr ""
#: htdocs/plugins/internet/pages/internet.firewall.html:7
msgid "toggle-all-rules"
msgstr ""
#: htdocs/plugins/router/pages/status.diagnostics.html:27
msgid "Tracing Tool"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:28
msgid "TX Rate"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:14
msgid "Upload file"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:52
msgid "Uptime"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:64
msgid "Usage"
msgstr ""
#: htdocs/plugins/router/pages/settings.upgrade.html:25
msgid "USB Firmware Upgrade"
msgstr ""
#: htdocs/plugins/router/pages/settings.energy.html:7
msgid "USB Port"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:18
msgid "Username"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:58
msgid "VDSL"
msgstr ""
#: htdocs/plugins/router/pages/status.status.tv.html:7
msgid "Vodaphone TV Channels"
msgstr ""
#: htdocs/plugins/router/pages/status.status.tv.html:4
msgid "Vodaphone TV Status"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:59
msgid "Voice"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:60
msgid "Voice Ports"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:56
msgid "Wifi"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.device.edit.html:4
msgid "Wifi Mode"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.general.html:8
msgid "Wifi Network"
msgstr ""
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:10
msgid "wifi-iface.closed"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:13
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:13
msgid "wifi-iface.device"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:19
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:19
msgid "wifi-iface.encryption"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:25
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:26
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:25
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:26
msgid "wifi-iface.key"
msgstr ""
#: htdocs/plugins/core/widgets/uci.wireless.interface.html:7
#: htdocs/plugins/wifi/widgets/uci.wireless.interface.html:7
msgid "wifi-iface.ssid"
msgstr ""
@ -652,9 +699,21 @@ msgstr ""
msgid "wifi.wps.info"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.wps.html:5
msgid "WPS"
msgstr ""
#: htdocs/plugins/wifi/pages/wifi.wps.html:8
msgid "WPS Function"
msgstr ""
#: htdocs/plugins/router/pages/status.status.js:56
#: htdocs/plugins/router/pages/status.status.js:57
#: htdocs/plugins/router/pages/status.status.js:58
#: htdocs/plugins/router/pages/status.status.js:59
msgid "yes"
msgstr ""
#: htdocs/plugins/core/widgets/luci.login.html:3
msgid "You are logged in!"
msgstr ""

View file

@ -21,7 +21,7 @@
"index": 30
},
"internet/dns": {
"title": "DNS",
"title": "DNS & DDNS",
"modes": [ "expert" ],
"acls": [ "hostnames" ],
"index": 50

View file

@ -5,7 +5,7 @@
"index": 20
},
"status/status/tv": {
"title": "Vodaphone TV",
"title": "Vodafone TV",
"acls": [ "status" ],
"index": 30
}