Add Multi-Language Support (almost finished)

approx. 90% are already translated. At the moment 2 languages are included. English and German. If you are interested, feel free to add more translations. See the maintenance.php for more information. The Frontend is almost done. Some translations in the notification system are still pending.

I am aware that the language files still have some optimization potential, but after 3 days of localization, I don't feel like doing that right now.
This commit is contained in:
leiweibau
2022-07-05 21:16:10 +02:00
parent d01e1a15db
commit e117b16f29
9 changed files with 276 additions and 472 deletions

View File

@@ -69,13 +69,13 @@ A web frontal that allows:
| ![Screen 5][screen5] | ![Screen 6][screen6] |
With the work of [jokob-sk/Pi.Alert](https://github.com/jokob-sk/Pi.Alert) and own extensions, the new maintenance page was added with various possibilities for maintenance and settings:
- DB Backup and Restore
- Pause arp-scan
- Status Infos (active scans, database size, backup counter)
- Theme Selection (blue, red, green, yellow, black, purple)
- Language Selection (english, german)
- Light/Dark-Mode Switch
- Pause arp-scan
- DB maintenance tools
In addition, some information is available (active scans, database size, backup counter).
- DB Backup and Restore
![Maintain screen dark][maintain_dark]

View File

@@ -25,11 +25,11 @@
<!-- period selector -->
<span class="breadcrumb" style="top: 0px;">
<select class="form-control" id="period" onchange="javascript: periodChanged();">
<option value="1 day">Today</option>
<option value="7 days">Last Week</option>
<option value="1 month" selected>Last Month</option>
<option value="1 year">Last Year</option>
<option value="100 years">All info</option>
<option value="1 day"><?php echo $pia_lang['DevDetail_Periodselect_today'];?></option>
<option value="7 days"><?php echo $pia_lang['DevDetail_Periodselect_LastWeek'];?></option>
<option value="1 month" selected><?php echo $pia_lang['DevDetail_Periodselect_LastMonth'];?></option>
<option value="1 year"><?php echo $pia_lang['DevDetail_Periodselect_LastYear'];?></option>
<option value="100 years"><?php echo $pia_lang['DevDetail_Periodselect_All'];?></option>
</select>
</span>
</section>
@@ -45,7 +45,7 @@
<div class="small-box bg-aqua pa-small-box-aqua pa-small-box-2">
<div class="inner"> <h3 id="deviceStatus" style="margin-left: 0em"> -- </h3> </div>
<div class="icon"> <i id="deviceStatusIcon" class=""></i> </div>
<div class="small-box-footer pa-small-box-footer"> Current Status <i class="fa fa-arrow-circle-right"></i> </div>
<div class="small-box-footer pa-small-box-footer"> <?php echo $pia_lang['DevDetail_Shortcut_CurrentStatus'];?> <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
@@ -56,7 +56,7 @@
<div class="small-box bg-green pa-small-box-green pa-small-box-2">
<div class="inner"> <h3 id="deviceSessions"> -- </h3> </div>
<div class="icon"> <i class="fa fa-plug"></i> </div>
<div class="small-box-footer pa-small-box-footer"> Sessions <i class="fa fa-arrow-circle-right"></i> </div>
<div class="small-box-footer pa-small-box-footer"> <?php echo $pia_lang['DevDetail_Shortcut_Sessions'];?> <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
@@ -67,7 +67,7 @@
<div class="small-box bg-yellow pa-small-box-yellow pa-small-box-2">
<div class="inner"> <h3 id="deviceEvents" style="margin-left: 0em"> -- </h3> </div>
<div id="deviceEventsIcon" class="icon"> <i class="fa fa-calendar"></i> </div>
<div class="small-box-footer pa-small-box-footer"> Presence <i class="fa fa-arrow-circle-right"></i> </div>
<div class="small-box-footer pa-small-box-footer"> <?php echo $pia_lang['DevDetail_Shortcut_Presence'];?> <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
@@ -78,7 +78,7 @@
<div class="small-box bg-red pa-small-box-red pa-small-box-2">
<div class="inner"> <h3 id="deviceDownAlerts"> -- </h3> </div>
<div class="icon"> <i class="fa fa-warning"></i> </div>
<div class="small-box-footer pa-small-box-footer"> Down Alerts <i class="fa fa-arrow-circle-right"></i> </div>
<div class="small-box-footer pa-small-box-footer"> <?php echo $pia_lang['DevDetail_Shortcut_DownAlerts'];?> <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
@@ -94,11 +94,11 @@
<div id="navDevice" class="nav-tabs-custom">
<ul class="nav nav-tabs" style="fon t-size:16px;">
<li> <a id="tabDetails" href="#panDetails" data-toggle="tab"> Details </a></li>
<li> <a id="tabNmap" href="#panNmap" data-toggle="tab"> Nmap </a></li>
<li> <a id="tabSessions" href="#panSessions" data-toggle="tab"> Sessions </a></li>
<li> <a id="tabPresence" href="#panPresence" data-toggle="tab"> Presence </a></li>
<li> <a id="tabEvents" href="#panEvents" data-toggle="tab"> Events </a></li>
<li> <a id="tabDetails" href="#panDetails" data-toggle="tab"> <?php echo $pia_lang['DevDetail_Tab_Details'];?> </a></li>
<li> <a id="tabNmap" href="#panNmap" data-toggle="tab"> <?php echo $pia_lang['DevDetail_Tab_Nmap'];?> </a></li>
<li> <a id="tabSessions" href="#panSessions" data-toggle="tab"> <?php echo $pia_lang['DevDetail_Tab_Sessions'];?> </a></li>
<li> <a id="tabPresence" href="#panPresence" data-toggle="tab"> <?php echo $pia_lang['DevDetail_Tab_Presence'];?> </a></li>
<li> <a id="tabEvents" href="#panEvents" data-toggle="tab"> <?php echo $pia_lang['DevDetail_Tab_Events'];?> </a></li>
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" style="padding: 10px; min-width: 30px;"
@@ -125,12 +125,12 @@
<div class="row">
<!-- column 1 -->
<div class="col-lg-4 col-sm-6 col-xs-12">
<h4 class="bottom-border-aqua">Main Info</h4>
<h4 class="bottom-border-aqua"><?php echo $pia_lang['DevDetail_MainInfo_Title'];?></h4>
<div class="box-body form-horizontal">
<!-- MAC -->
<div class="form-group">
<label class="col-sm-3 control-label">MAC</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_mac'];?></label>
<div class="col-sm-9">
<input class="form-control" id="txtMAC" type="text" readonly value="--">
</div>
@@ -138,7 +138,7 @@
<!-- Name -->
<div class="form-group">
<label class="col-sm-3 control-label">Name</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Name'];?></label>
<div class="col-sm-9">
<input class="form-control" id="txtName" type="text" value="--">
</div>
@@ -146,7 +146,7 @@
<!-- Owner -->
<div class="form-group">
<label class="col-sm-3 control-label">Owner</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Owner'];?></label>
<div class="col-sm-9">
<div class="input-group">
<input class="form-control" id="txtOwner" type="text" value="--">
@@ -162,7 +162,7 @@
<!-- Type -->
<div class="form-group">
<label class="col-sm-3 control-label">Type</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Type'];?></label>
<div class="col-sm-9">
<div class="input-group">
<input class="form-control" id="txtDeviceType" type="text" value="--">
@@ -182,7 +182,7 @@
<!-- Vendor -->
<div class="form-group">
<label class="col-sm-3 control-label">Vendor</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Vendor'];?></label>
<div class="col-sm-9">
<input class="form-control" id="txtVendor" type="text" value="--">
</div>
@@ -190,7 +190,7 @@
<!-- Favorite -->
<div class="form-group">
<label class="col-sm-3 control-label">Favorite</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Favorite'];?></label>
<div class="col-sm-9" style="padding-top:6px;">
<input class="checkbox blue hidden" id="chkFavorite" type="checkbox">
</div>
@@ -198,7 +198,7 @@
<!-- Group -->
<div class="form-group">
<label class="col-sm-3 control-label">Group</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Group'];?></label>
<div class="col-sm-9">
<div class="input-group">
<input class="form-control" id="txtGroup" type="text" value="--">
@@ -219,7 +219,7 @@
<!-- Location -->
<div class="form-group">
<label class="col-sm-3 control-label">Location</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Location'];?></label>
<div class="col-sm-9">
<div class="input-group">
<input class="form-control" id="txtLocation" type="text" value="--">
@@ -242,7 +242,7 @@
<!-- Comments -->
<div class="form-group">
<label class="col-sm-3 control-label">Comments</label>
<label class="col-sm-3 control-label"><?php echo $pia_lang['DevDetail_MainInfo_Comments'];?></label>
<div class="col-sm-9">
<textarea class="form-control" rows="3" id="txtComments"></textarea>
</div>
@@ -253,12 +253,12 @@
<!-- column 2 -->
<div class="col-lg-4 col-sm-6 col-xs-12">
<h4 class="bottom-border-aqua">Session Info</h4>
<h4 class="bottom-border-aqua"><?php echo $pia_lang['DevDetail_SessionInfo_Title'];?></h4>
<div class="box-body form-horizontal">
<!-- Status -->
<div class="form-group">
<label class="col-sm-5 control-label">Status</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_SessionInfo_Status'];?></label>
<div class="col-sm-7">
<input class="form-control" id="txtStatus" type="text" readonly value="--">
</div>
@@ -266,7 +266,7 @@
<!-- First Session -->
<div class="form-group">
<label class="col-sm-5 control-label">First Session</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_SessionInfo_FirstSession'];?></label>
<div class="col-sm-7">
<input class="form-control" id="txtFirstConnection" type="text" readonly value="--">
</div>
@@ -274,7 +274,7 @@
<!-- Last Session -->
<div class="form-group">
<label class="col-sm-5 control-label">Last Session</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_SessionInfo_LastSession'];?></label>
<div class="col-sm-7">
<input class="form-control" id="txtLastConnection" type="text" readonly value="--">
</div>
@@ -282,7 +282,7 @@
<!-- Last IP -->
<div class="form-group">
<label class="col-sm-5 control-label">Last IP</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_SessionInfo_LastIP'];?></label>
<div class="col-sm-7">
<input class="form-control" id="txtLastIP" type="text" readonly value="--">
</div>
@@ -290,7 +290,7 @@
<!-- Static IP -->
<div class="form-group">
<label class="col-sm-5 control-label">Static IP</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_SessionInfo_StaticIP'];?></label>
<div class="col-sm-7" style="padding-top:6px;">
<input class="checkbox blue hidden" id="chkStaticIP" type="checkbox">
</div>
@@ -301,12 +301,12 @@
<!-- column 3 -->
<div class="col-lg-4 col-sm-6 col-xs-12">
<h4 class="bottom-border-aqua">Events & Alerts config</h4>
<h4 class="bottom-border-aqua"><?php echo $pia_lang['DevDetail_EveandAl_Title'];?></h4>
<div class="box-body form-horizontal">
<!-- Scan Cycle -->
<div class="form-group">
<label class="col-sm-5 control-label">Scan Cycle</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_EveandAl_ScanCycle'];?></label>
<div class="col-sm-7">
<div class="input-group">
<input class="form-control" id="txtScanCycle" type="text" value="--" readonly >
@@ -315,7 +315,7 @@
<span class="fa fa-caret-down"></span></button>
<ul id="dropdownScanCycle" class="dropdown-menu dropdown-menu-right">
<li><a href="javascript:void(0)" onclick="setTextValue('txtScanCycle','1 min')"> Scan 1 min every 5 min</a></li>
<li><a href="javascript:void(0)" onclick="setTextValue('txtScanCycle','15 min');"> Scan 12 min every 15 min</a></li>
<!-- <li><a href="javascript:void(0)" onclick="setTextValue('txtScanCycle','15 min');"> Scan 12 min every 15 min</a></li> -->
<li><a href="javascript:void(0)" onclick="setTextValue('txtScanCycle','0 min');"> Don't Scan</a></li>
</ul>
</div>
@@ -325,7 +325,7 @@
<!-- Alert events -->
<div class="form-group">
<label class="col-sm-5 control-label">Alert All Events</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_EveandAl_AlertAllEvents'];?></label>
<div class="col-sm-7" style="padding-top:6px;">
<input class="checkbox blue hidden" id="chkAlertEvents" type="checkbox">
</div>
@@ -333,7 +333,7 @@
<!-- Alert Down -->
<div class="form-group">
<label class="col-sm-5 control-label">Alert Down</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_EveandAl_AlertDown'];?></label>
<div class="col-sm-7" style="padding-top:6px;">
<input class="checkbox red hidden" id="chkAlertDown" type="checkbox">
</div>
@@ -341,7 +341,7 @@
<!-- Skip Notifications -->
<div class="form-group">
<label class="col-sm-5 control-label" style="padding-top: 0px; padding-left: 0px;">Skip repeated notifications during</label>
<label class="col-sm-5 control-label" style="padding-top: 0px; padding-left: 0px;"><?php echo $pia_lang['DevDetail_EveandAl_Skip'];?></label>
<div class="col-sm-7">
<div class="input-group">
<input class="form-control" id="txtSkipRepeated" type="text" value="--" readonly >
@@ -362,7 +362,7 @@
<!-- New Device -->
<div class="form-group">
<label class="col-sm-5 control-label">New Device:</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_EveandAl_NewDevice'];?>:</label>
<div class="col-sm-7" style="padding-top:6px;">
<input class="checkbox orange hidden" id="chkNewDevice" type="checkbox">
</div>
@@ -370,7 +370,7 @@
<!-- Archived -->
<div class="form-group">
<label class="col-sm-5 control-label">Archived:</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_EveandAl_Archived'];?>:</label>
<div class="col-sm-7" style="padding-top:6px;">
<input class="checkbox blue hidden" id="chkArchived" type="checkbox">
</div>
@@ -378,7 +378,7 @@
<!-- Randomized MAC -->
<div class="form-group" >
<label class="col-sm-5 control-label">Random MAC:</label>
<label class="col-sm-5 control-label"><?php echo $pia_lang['DevDetail_EveandAl_RandomMAC'];?>:</label>
<div class="col-sm-7" style="padding-top:6px;">
<span id="iconRandomMACinactive" data-toggle="tooltip" data-placement="right" title="Random MAC is Inactive">
<i style="font-size: 24px;" class="text-gray glyphicon glyphicon-random"></i> &nbsp &nbsp </span>
@@ -386,7 +386,7 @@
<span id="iconRandomMACactive" data-toggle="tooltip" data-placement="right" title="Random MAC is Active" class="hidden">
<i style="font-size: 24px;" class="text-yellow glyphicon glyphicon-random"></i> &nbsp &nbsp </span>
<a href="https://github.com/pucherot/Pi.Alert/blob/main/docs/RAMDOM_MAC.md" target="_blank" style="color: #777;">
<a href="https://github.com/leiweibau/Pi.Alert/blob/main/docs/RAMDOM_MAC.md" target="_blank" style="color: #777;">
<i class="fa fa-info-circle"></i> </a>
</div>
</div>
@@ -398,11 +398,11 @@
<div class="col-xs-12">
<div class="pull-right">
<button type="button" class="btn btn-default pa-btn pa-btn-delete" style="margin-left:0px;"
id="btnDelete" onclick="askDeleteDevice()"> Delete Device </button>
id="btnDelete" onclick="askDeleteDevice()"> <?php echo $pia_lang['DevDetail_button_Delete'];?> </button>
<button type="button" class="btn btn-default pa-btn" style="margin-left:6px;"
id="btnRestore" onclick="getDeviceData(true)"> Reset Changes </button>
id="btnRestore" onclick="getDeviceData(true)"> <?php echo $pia_lang['DevDetail_button_Reset'];?> </button>
<button type="button" disabled class="btn btn-primary pa-btn" style="margin-left:6px; "
id="btnSave" onclick="setDeviceData()" > Save </button>
id="btnSave" onclick="setDeviceData()" > <?php echo $pia_lang['DevDetail_button_Save'];?> </button>
</div>
</div>
@@ -416,12 +416,12 @@
<table id="tableSessions" class="table table-bordered table-hover table-striped ">
<thead>
<tr>
<th>Order</th>
<th>Connection</th>
<th>Disconnection</th>
<th>Duration</th>
<th>IP</th>
<th>Additional info</th>
<th><?php echo $pia_lang['DevDetail_SessionTable_Order'];?></th>
<th><?php echo $pia_lang['DevDetail_SessionTable_Connection'];?></th>
<th><?php echo $pia_lang['DevDetail_SessionTable_Disconnection'];?></th>
<th><?php echo $pia_lang['DevDetail_SessionTable_Duration'];?></th>
<th><?php echo $pia_lang['DevDetail_SessionTable_IP'];?></th>
<th><?php echo $pia_lang['DevDetail_SessionTable_Additionalinfo'];?></th>
</tr>
</thead>
</table>
@@ -436,9 +436,9 @@
<div style="width:100%; text-align: center;">
<script>
setTimeout(function(){
document.getElementById('piamanualnmap_fast').innerHTML='Fast Scan (' + document.getElementById('txtLastIP').value +')';
document.getElementById('piamanualnmap_normal').innerHTML='Default Scan (' + document.getElementById('txtLastIP').value +')';
document.getElementById('piamanualnmap_detail').innerHTML='Detailed Scan (' + document.getElementById('txtLastIP').value +')';
document.getElementById('piamanualnmap_fast').innerHTML='<?php echo $pia_lang['DevDetail_Nmap_buttonFast'];?> (' + document.getElementById('txtLastIP').value +')';
document.getElementById('piamanualnmap_normal').innerHTML='<?php echo $pia_lang['DevDetail_Nmap_buttonDefault'];?> (' + document.getElementById('txtLastIP').value +')';
document.getElementById('piamanualnmap_detail').innerHTML='<?php echo $pia_lang['DevDetail_Nmap_buttonDetail'];?> (' + document.getElementById('txtLastIP').value +')';
}, 2000);
</script>
@@ -448,9 +448,9 @@
<div style="margin-top: 20px; text-align: left;">
<ul style="padding:20px;">
<li>Fast Scan: Scan fewer ports (100) than the default scan (a few seconds)</li>
<li>Default Scan: Nmap scans the top 1,000 ports for each scan protocol requested. This catches roughly 93% of the TCP ports and 49% of the UDP ports. (about 5 seconds)</li>
<li>Detailed Scan: Default scan with enabled OS detection, version detection, script scanning and traceroute (up to 30 seconds or more)</li>
<li><?php echo $pia_lang['DevDetail_Nmap_buttonFast_text'];?></li>
<li><?php echo $pia_lang['DevDetail_Nmap_buttonDefault_text'];?></li>
<li><?php echo $pia_lang['DevDetail_Nmap_buttonDetail_text'];?></li>
</ul>
</div>
</div>
@@ -503,7 +503,7 @@
<div class="text-center">
<label>
<input class="checkbox blue hidden" id="chkHideConnectionEvents" type="checkbox" checked>
Hide Connection Events
<?php echo $pia_lang['DevDetail_Events_CheckBox'];?>
</label>
</div>
@@ -558,6 +558,7 @@
<link rel="stylesheet" href="lib/AdminLTE/bower_components/fullcalendar/dist/fullcalendar.print.min.css" media="print">
<script src="lib/AdminLTE/bower_components/moment/moment.js"></script>
<script src="lib/AdminLTE/bower_components/fullcalendar/dist/fullcalendar.min.js"></script>
<script src="lib/AdminLTE/bower_components/fullcalendar/dist/locale-all.js"></script>
<!-- Dark-Mode Patch -->
<?php
@@ -836,7 +837,14 @@ function initializeDatatables () {
processing: '<table><td width="130px" align="middle">Loading...</td>'+
'<td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw">'+
'</td></table>',
emptyTable: 'No data'
emptyTable: 'No data',
"lengthMenu": "<?php echo $pia_lang['Events_Tablelenght'];?>",
"search": "<?php echo $pia_lang['Events_Searchbox'];?>: ",
"paginate": {
"next": "<?php echo $pia_lang['Events_Table_nav_next'];?>",
"previous": "<?php echo $pia_lang['Events_Table_nav_prev'];?>"
},
"info": "<?php echo $pia_lang['Events_Table_info'];?>",
}
});
@@ -868,7 +876,14 @@ function initializeDatatables () {
processing: '<table><td width="130px" align="middle">Loading...</td>'+
'<td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw">'+
'</td></table>',
emptyTable: 'No data'
emptyTable: 'No data',
"lengthMenu": "<?php echo $pia_lang['Events_Tablelenght'];?>",
"search": "<?php echo $pia_lang['Events_Searchbox'];?>: ",
"paginate": {
"next": "<?php echo $pia_lang['Events_Table_nav_next'];?>",
"previous": "<?php echo $pia_lang['Events_Table_nav_prev'];?>"
},
"info": "<?php echo $pia_lang['Events_Table_info'];?>",
}
});
@@ -907,7 +922,7 @@ function initializeCalendar () {
slotLabelInterval : '04:00:00',
slotLabelFormat : 'H:mm',
timeFormat : 'H:mm',
locale : '<?php echo $pia_lang['Presence_CalHead_lang'];?>',
header: {
left : 'prev,next today',
center : 'title',
@@ -918,14 +933,14 @@ function initializeCalendar () {
agendaYear: {
type : 'agenda',
duration : { year: 1 },
buttonText : 'year',
buttonText : '<?php echo $pia_lang['Presence_CalHead_year'];?>',
columnHeaderFormat : ''
},
agendaMonth: {
type : 'agenda',
duration : { month: 1 },
buttonText : 'month',
buttonText : '<?php echo $pia_lang['Presence_CalHead_month'];?>',
columnHeaderFormat : 'D'
}
},

View File

@@ -121,18 +121,18 @@
<table id="tableEvents" class="table table-bordered table-hover table-striped ">
<thead>
<tr>
<th>Order</th>
<th>Device</th>
<th>Owner</th>
<th>Date</th>
<th>Event Type</th>
<th>Connection</th>
<th>Disconnection</th>
<th>Duration</th>
<th>Duration Order</th>
<th>IP</th>
<th>IP Order</th>
<th>Additional Info</th>
<th><?php echo $pia_lang['Events_TableHead_Order'];?></th>
<th><?php echo $pia_lang['Events_TableHead_Device'];?></th>
<th><?php echo $pia_lang['Events_TableHead_Owner'];?></th>
<th><?php echo $pia_lang['Events_TableHead_Date'];?></th>
<th><?php echo $pia_lang['Events_TableHead_EventType'];?></th>
<th><?php echo $pia_lang['Events_TableHead_Connection'];?></th>
<th><?php echo $pia_lang['Events_TableHead_Disconnection'];?></th>
<th><?php echo $pia_lang['Events_TableHead_Duration'];?></th>
<th><?php echo $pia_lang['Events_TableHead_DurationOrder'];?></th>
<th><?php echo $pia_lang['Events_TableHead_IP'];?></th>
<th><?php echo $pia_lang['Events_TableHead_IPOrder'];?></th>
<th><?php echo $pia_lang['Events_TableHead_AdditionalInfo'];?></th>
</tr>
</thead>
</table>

View File

@@ -1,342 +0,0 @@
<!-- ---------------------------------------------------------------------------
# Pi.Alert
# Open Source Network Guard / WIFI & LAN intrusion detector
#
# devices.php - Front module. Devices list page
#-------------------------------------------------------------------------------
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
#--------------------------------------------------------------------------- -->
<?php
require 'php/templates/header.php';
?>
<!-- Page ------------------------------------------------------------------ -->
<div class="content-wrapper">
<!-- Content header--------------------------------------------------------- -->
<section class="content-header">
<h1 id="pageTitle">
Devices
</h1>
</section>
<!-- Main content ---------------------------------------------------------- -->
<section class="content">
<!-- top small box 1 ------------------------------------------------------- -->
<div class="row">
<div class="col-lg-2 col-sm-4 col-xs-6">
<a href="#" onclick="javascript: getDevicesList('all');">
<div class="small-box bg-aqua pa-small-box-aqua pa-small-box-2">
<div class="inner"> <h3 id="devicesAll"> -- </h3> </div>
<div class="icon"> <i class="fa fa-laptop text-aqua-20"></i> </div>
<div class="small-box-footer pa-small-box-footer"> All Devices <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
<!-- top small box 2 ------------------------------------------------------- -->
<div class="col-lg-2 col-sm-4 col-xs-6">
<a href="#" onclick="javascript: getDevicesList('connected');">
<div class="small-box bg-green pa-small-box-green pa-small-box-2">
<div class="inner"> <h3 id="devicesConnected"> -- </h3> </div>
<div class="icon"> <i class="fa fa-plug text-green-20"></i> </div>
<div class="small-box-footer pa-small-box-footer"> Connected <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
<!-- top small box 3 ------------------------------------------------------- -->
<div class="col-lg-2 col-sm-4 col-xs-6">
<a href="#" onclick="javascript: getDevicesList('favorites');">
<div class="small-box bg-yellow pa-small-box-yellow pa-small-box-2">
<div class="inner"> <h3 id="devicesFavorites"> -- </h3> </div>
<div class="icon"> <i class="fa fa-star text-yellow-20"></i> </div>
<div class="small-box-footer pa-small-box-footer"> Favorites <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
<!-- top small box 4 ------------------------------------------------------- -->
<div class="col-lg-2 col-sm-4 col-xs-6">
<a href="#" onclick="javascript: getDevicesList('new');">
<div class="small-box bg-yellow pa-small-box-yellow pa-small-box-2">
<div class="inner"> <h3 id="devicesNew"> -- </h3> </div>
<div class="icon"> <i class="ion ion-plus-round text-yellow-20"></i> </div>
<div class="small-box-footer pa-small-box-footer"> New Devices <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
<!-- top small box 5 ------------------------------------------------------- -->
<div class="col-lg-2 col-sm-4 col-xs-6">
<a href="#" onclick="javascript: getDevicesList('down');">
<div class="small-box bg-red pa-small-box-red pa-small-box-2">
<div class="inner"> <h3 id="devicesDown"> -- </h3> </div>
<div class="icon"> <i class="fa fa-warning text-red-20"></i> </div>
<div class="small-box-footer pa-small-box-footer"> Down Alerts <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
<!-- top small box 6 ------------------------------------------------------- -->
<div class="col-lg-2 col-sm-4 col-xs-6">
<a href="#" onclick="javascript: getDevicesList('archived');">
<div class="small-box bg-gray pa-small-box-gray pa-small-box-2">
<div class="inner"> <h3 id="devicesArchived"> -- </h3> </div>
<div class="icon"> <i class="fa fa-eye-slash text-gray-20"></i> </div>
<div class="small-box-footer pa-small-box-footer"> Archived <i class="fa fa-arrow-circle-right"></i> </div>
</div>
</a>
</div>
</div>
<!-- /.row -->
<!-- datatable ------------------------------------------------------------- -->
<div class="row">
<div class="col-xs-12">
<div id="tableDevicesBox" class="box">
<!-- box-header -->
<div class="box-header">
<h3 id="tableDevicesTitle" class="box-title text-gray">Devices</h3>
</div>
<!-- table -->
<div class="box-body table-responsive">
<table id="tableDevices" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Name</th>
<th>Owner</th>
<th>Type</th>
<th>Favorite</th>
<th>Group</th>
<th>First Session</th>
<th>Last Session</th>
<th>Last IP</th>
<th>MAC</th>
<th>Status</th>
<!-- <th>MAC</th> -->
<!-- <th>Last IP Order</th> -->
<!-- <th>Rowid</th> -->
</tr>
</thead>
</table>
</div>
<!-- /.box-body -->
</div>
<!-- /.box -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
<!-- ----------------------------------------------------------------------- -->
</section>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
<!-- ----------------------------------------------------------------------- -->
<?php
require 'php/templates/footer.php';
?>
<!-- ----------------------------------------------------------------------- -->
<!-- Datatable -->
<link rel="stylesheet" href="lib/AdminLTE/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css">
<script src="lib/AdminLTE/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="lib/AdminLTE/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
<!-- page script ----------------------------------------------------------- -->
<script>
var deviceStatus = 'all';
var parTableRows = 'Front_Devices_Rows';
var parTableOrder = 'Front_Devices_Order';
var tableRows = 10;
var tableOrder = [[3,'desc'], [0,'asc']];
// Read parameters & Initialize components
main();
// -----------------------------------------------------------------------------
function main () {
// get parameter value
$.get('php/server/parameters.php?action=get&parameter='+ parTableRows, function(data) {
var result = JSON.parse(data);
if (Number.isInteger (result) ) {
tableRows = result;
}
// get parameter value
$.get('php/server/parameters.php?action=get&parameter='+ parTableOrder, function(data) {
var result = JSON.parse(data);
result = JSON.parse(result);
if (Array.isArray (result) ) {
tableOrder = result;
}
// Initialize components with parameters
initializeDatatable();
// query data
getDevicesTotals();
getDevicesList (deviceStatus);
});
});
}
// -----------------------------------------------------------------------------
function initializeDatatable () {
var table=
$('#tableDevices').DataTable({
'paging' : true,
'lengthChange' : true,
'lengthMenu' : [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, 'All']],
'searching' : true,
'ordering' : true,
'info' : true,
'autoWidth' : false,
// Parameters
'pageLength' : tableRows,
'order' : tableOrder,
// 'order' : [[3,'desc'], [0,'asc']],
'columnDefs' : [
{visible: false, targets: [10, 11, 12] },
{className: 'text-center', targets: [3, 8, 9] },
{width: '80px', targets: [5, 6] },
{width: '0px', targets: 9 },
{orderData: [11], targets: 7 },
// Device Name
{targets: [0],
'createdCell': function (td, cellData, rowData, row, col) {
$(td).html ('<b><a href="deviceDetails.php?mac='+ rowData[10] +'" class="">'+ cellData +'</a></b>');
} },
// Favorite
{targets: [3],
'createdCell': function (td, cellData, rowData, row, col) {
if (cellData == 1){
$(td).html ('<i class="fa fa-star text-yellow" style="font-size:16px"></i>');
} else {
$(td).html ('');
}
} },
// Dates
{targets: [5, 6],
'createdCell': function (td, cellData, rowData, row, col) {
$(td).html (translateHTMLcodes (cellData));
} },
// Random MAC
{targets: [8],
'createdCell': function (td, cellData, rowData, row, col) {
if (cellData == 1){
$(td).html ('<i data-toggle="tooltip" data-placement="right" title="Random MAC" style="font-size: 16px;" class="text-yellow glyphicon glyphicon-random"></i>');
} else {
$(td).html ('');
}
} },
// Status color
{targets: [9],
'createdCell': function (td, cellData, rowData, row, col) {
switch (cellData) {
case 'Down': color='red'; break;
case 'New': color='yellow'; break;
case 'On-line': color='green'; break;
case 'Off-line': color='gray text-white'; break;
case 'Archived': color='gray text-white'; break;
default: color='aqua'; break;
};
$(td).html ('<a href="deviceDetails.php?mac='+ rowData[10] +'" class="badge bg-'+ color +'">'+ cellData.replace('-', '') +'</a>');
} },
],
// Processing
'processing' : true,
'language' : {
processing: '<table> <td width="130px" align="middle">Loading...</td><td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw"></td> </table>',
emptyTable: 'No data'
}
});
// Save cookie Rows displayed, and Parameters rows & order
$('#tableDevices').on( 'length.dt', function ( e, settings, len ) {
setParameter (parTableRows, len);
} );
$('#tableDevices').on( 'order.dt', function () {
setParameter (parTableOrder, JSON.stringify (table.order()) );
setCookie ('devicesList',JSON.stringify (table.column(12, { 'search': 'applied' }).data().toArray()) );
} );
$('#tableDevices').on( 'search.dt', function () {
setCookie ('devicesList', JSON.stringify (table.column(12, { 'search': 'applied' }).data().toArray()) );
} );
};
// -----------------------------------------------------------------------------
function getDevicesTotals () {
// stop timer
stopTimerRefreshData();
// get totals and put in boxes
$.get('php/server/devices.php?action=getDevicesTotals', function(data) {
var totalsDevices = JSON.parse(data);
$('#devicesAll').html (totalsDevices[0].toLocaleString());
$('#devicesConnected').html (totalsDevices[1].toLocaleString());
$('#devicesFavorites').html (totalsDevices[2].toLocaleString());
$('#devicesNew').html (totalsDevices[3].toLocaleString());
$('#devicesDown').html (totalsDevices[4].toLocaleString());
$('#devicesArchived').html (totalsDevices[5].toLocaleString());
// Timer for refresh data
newTimerRefreshData (getDevicesTotals);
} );
}
// -----------------------------------------------------------------------------
function getDevicesList (status) {
// Save status selected
deviceStatus = status;
// Define color & title for the status selected
switch (deviceStatus) {
case 'all': tableTitle = 'All Devices'; color = 'aqua'; break;
case 'connected': tableTitle = 'Connected Devices'; color = 'green'; break;
case 'favorites': tableTitle = 'Favorites'; color = 'yellow'; break;
case 'new': tableTitle = 'New Devices'; color = 'yellow'; break;
case 'down': tableTitle = 'Down Alerts'; color = 'red'; break;
case 'archived': tableTitle = 'Archived Devices'; color = 'gray'; break;
default: tableTitle = 'Devices'; color = 'gray'; break;
}
// Set title and color
$('#tableDevicesTitle')[0].className = 'box-title text-'+ color;
$('#tableDevicesBox')[0].className = 'box box-'+ color;
$('#tableDevicesTitle').html (tableTitle);
// Define new datasource URL and reload
$('#tableDevices').DataTable().ajax.url(
'php/server/devices.php?action=getDevicesList&status=' + deviceStatus).load();
};
</script>

View File

@@ -9,6 +9,34 @@
// jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3
//------------------------------------------------------------------------------
// Language selector config ----------------------------------------------------
//
// For security reasons, new language files must be entered into this array.
// The files in the language directory are compared with this array and only
// then accepted.
//
$pia_installed_langs = array('en_us',
'de_de');
// Skin selector config ----------------------------------------------------
//
// For security reasons, new language files must be entered into this array.
// The files in the language directory are compared with this array and only
// then accepted.
//
$pia_installed_skins = array('skin-black-light',
'skin-black',
'skin-blue-light',
'skin-blue',
'skin-green-light',
'skin-green',
'skin-purple-light',
'skin-purple',
'skin-red-light',
'skin-red',
'skin-yellow-light',
'skin-yellow');
//------------------------------------------------------------------------------
?>
@@ -77,12 +105,10 @@ $latestbackup_date = date ("Y-m-d H:i:s", filemtime($latestbackup));
if (submit && isset($_POST['skinselector_set'])) {
$pia_skin_set_dir = '../db/';
$pia_skin_selector = htmlspecialchars($_POST['skinselector']);
$pia_installed_skins = array('skin-black-light', 'skin-black', 'skin-blue-light', 'skin-blue', 'skin-green-light', 'skin-green', 'skin-purple-light', 'skin-purple', 'skin-red-light', 'skin-red', 'skin-yellow-light', 'skin-yellow',);
if (in_array($pia_skin_selector, $pia_installed_skins)) {
foreach ($pia_installed_skins as $file) {
unlink ($pia_skin_set_dir.'/setting_'.$file);
}
foreach ($pia_installed_skins as $file) {
if (file_exists($pia_skin_set_dir.'/setting_'.$file)) {
$pia_skin_error = True;
@@ -91,7 +117,6 @@ if (submit && isset($_POST['skinselector_set'])) {
$pia_skin_error = False;
}
}
if ($pia_skin_error == False) {
$testskin = fopen($pia_skin_set_dir.'setting_'.$pia_skin_selector, 'w');
$pia_skin_test = '';
@@ -103,17 +128,15 @@ if (submit && isset($_POST['skinselector_set'])) {
}
}
// Language selector -----------------------------------------------------------------
if (submit && isset($_POST['langselector_set'])) {
$pia_lang_set_dir = '../db/';
$pia_lang_selector = htmlspecialchars($_POST['langselector']);
$pia_installed_langs = array('en_us', 'de_de');
if (in_array($pia_lang_selector, $pia_installed_langs)) {
foreach ($pia_installed_langs as $file) {
unlink ($pia_lang_set_dir.'/setting_language_'.$file);
}
foreach ($pia_installed_langs as $file) {
if (file_exists($pia_lang_set_dir.'/setting_language_'.$file)) {
$pia_lang_error = True;
@@ -122,7 +145,6 @@ if (submit && isset($_POST['langselector_set'])) {
$pia_lang_error = False;
}
}
if ($pia_lang_error == False) {
$testlang = fopen($pia_lang_set_dir.'setting_language_'.$pia_lang_selector, 'w');
$pia_lang_test = '';
@@ -133,9 +155,7 @@ if (submit && isset($_POST['langselector_set'])) {
}
}
}
?>
?>
<div class="db_info_table">
<div class="db_info_table_row">

View File

@@ -20,9 +20,7 @@ if (strlen($pia_skin_selected) == 0) {$pia_skin_selected = 'skin-blue';}
foreach (glob("../db/setting_language*") as $filename) {
$pia_lang_selected = str_replace('setting_language_','',basename($filename));
}
if (strlen($pia_lang_selected) == 0) {$pia_lang_selected = 'en_us';}
require 'php/templates/language/'.$pia_lang_selected.'.php';
?>
@@ -75,7 +73,6 @@ require 'php/templates/language/'.$pia_lang_selected.'.php';
<!-- For better UX on Mobile Devices using the Shortcut on the Homescreen -->
<link rel="manifest" href="img/manifest.json">
<!-- Dark-Mode Patch -->
<?php
if ($ENABLED_DARKMODE === True) {

View File

@@ -17,7 +17,7 @@ $pia_lang['Device_Shortcut_Archived'] = 'Archiviert';
$pia_lang['Device_Shortcut_Devices'] = 'Geräte';
$pia_lang['Device_TableHead_Name'] = 'Name';
$pia_lang['Device_TableHead_Owner'] = 'Eigentümer';
$pia_lang['Device_TableHead_Type'] = 'Type';
$pia_lang['Device_TableHead_Type'] = 'Typ';
$pia_lang['Device_TableHead_Favorite'] = 'Favorit';
$pia_lang['Device_TableHead_Group'] = 'Gruppe';
$pia_lang['Device_TableHead_FirstSession'] = 'Erste Sitzg.';
@@ -48,6 +48,7 @@ $pia_lang['Presence_Shortcut_Archived'] = 'Archiviert';
$pia_lang['Presence_Shortcut_Devices'] = 'Geräte';
// Localizationfiles under pialert/front/lib/AdminLTE/bower_components/fullcalendar/dist/locale
$pia_lang['Presence_CallHead_Devices'] = 'Geräte';
$pia_lang['Presence_CalHead_lang'] = 'de';
$pia_lang['Presence_CalHead_year'] = 'Jahr';
$pia_lang['Presence_CalHead_quarter'] = 'Quartal';
@@ -64,7 +65,6 @@ $pia_lang['Events_Periodselect_LastWeek'] = 'Letzte Woche';
$pia_lang['Events_Periodselect_LastMonth'] = 'Letzter Monat';
$pia_lang['Events_Periodselect_LastYear'] = 'Letztes Jahr';
$pia_lang['Events_Periodselect_All'] = 'Alle Ereignisse';
$pia_lang['Events_Shortcut_AllEvents'] = 'Alle Ereignisse';
$pia_lang['Events_Shortcut_Sessions'] = 'Sitzungen';
$pia_lang['Events_Shortcut_MissSessions'] = 'fehlende Sitzg.';
@@ -72,20 +72,18 @@ $pia_lang['Events_Shortcut_VoidSessions'] = 'beendete Sitzg.';
$pia_lang['Events_Shortcut_NewDevices'] = 'Neue Geräte';
$pia_lang['Events_Shortcut_DownAlerts'] = 'Down Meldung';
$pia_lang['Events_Shortcut_Events'] = 'Ereignisse';
$pia_lang['Events_TableHead_Name'] = 'Name';
$pia_lang['Events_TableHead_Order'] = 'Order';
$pia_lang['Events_TableHead_Device'] = 'Gerät';
$pia_lang['Events_TableHead_Owner'] = 'Eigentümer';
$pia_lang['Events_TableHead_Type'] = 'Type';
$pia_lang['Events_TableHead_Favorite'] = 'Favorit';
$pia_lang['Events_TableHead_Group'] = 'Gruppe';
$pia_lang['Events_TableHead_FirstSession'] = 'Erste Sitzg.';
$pia_lang['Events_TableHead_LastSession'] = 'Letzte Sitzg.';
$pia_lang['Events_TableHead_LastIP'] = 'Letzte IP';
$pia_lang['Events_TableHead_MAC'] = 'MAC';
$pia_lang['Events_TableHead_LastIPOrder'] = 'Last IP Order';
$pia_lang['Events_TableHead_Rowid'] = 'Zeilennummer';
$pia_lang['Events_TableHead_Status'] = 'Status';
$pia_lang['Events_TableHead_Date'] = 'Datum';
$pia_lang['Events_TableHead_EventType'] = 'Ereignis Typ';
$pia_lang['Events_TableHead_Connection'] = 'Verbindung';
$pia_lang['Events_TableHead_Disconnection'] = 'Trennung';
$pia_lang['Events_TableHead_Duration'] = 'Dauer';
$pia_lang['Events_TableHead_DurationOrder'] = 'Duration Order';
$pia_lang['Events_TableHead_IP'] = 'IP';
$pia_lang['Events_TableHead_IPOrder'] = 'IP Order';
$pia_lang['Events_TableHead_AdditionalInfo'] = 'Zusätzliche Info';
$pia_lang['Events_Searchbox'] = 'Suche';
$pia_lang['Events_Tablelenght'] = 'Zeige _MENU_ Einträge';
$pia_lang['Events_Tablelenght_all'] = 'Alle';
@@ -93,6 +91,65 @@ $pia_lang['Events_Table_info'] = 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen
$pia_lang['Events_Table_nav_next'] = 'Nächste';
$pia_lang['Events_Table_nav_prev'] = 'Zurück';
//////////////////////////////////////////////////////////////////
// Device Details Page
//////////////////////////////////////////////////////////////////
$pia_lang['DevDetail_Periodselect_today'] = 'Heute';
$pia_lang['DevDetail_Periodselect_LastWeek'] = 'Letzte Woche';
$pia_lang['DevDetail_Periodselect_LastMonth'] = 'Letzter Monat';
$pia_lang['DevDetail_Periodselect_LastYear'] = 'Letztes Jahr';
$pia_lang['DevDetail_Periodselect_All'] = 'Alle Infos';
$pia_lang['DevDetail_Shortcut_CurrentStatus'] = 'aktueller Status';
$pia_lang['DevDetail_Shortcut_Sessions'] = 'Sitzungen';
$pia_lang['DevDetail_Shortcut_Presence'] = 'Anwesenheit';
$pia_lang['DevDetail_Shortcut_DownAlerts'] = 'Down Meldung';
$pia_lang['DevDetail_Tab_Details'] = 'Details';
$pia_lang['DevDetail_Tab_Nmap'] = 'Nmap';
$pia_lang['DevDetail_Tab_Sessions'] = 'Sitzungen';
$pia_lang['DevDetail_Tab_Presence'] = 'Anwesenheit';
$pia_lang['DevDetail_Tab_Events'] = 'Ereignisse';
$pia_lang['DevDetail_MainInfo_Title'] = 'Haupt Infos';
$pia_lang['DevDetail_MainInfo_mac'] = 'MAC';
$pia_lang['DevDetail_MainInfo_Name'] = 'Name';
$pia_lang['DevDetail_MainInfo_Owner'] = 'Eigen-&shy;tümer';
$pia_lang['DevDetail_MainInfo_Type'] = 'Typ';
$pia_lang['DevDetail_MainInfo_Vendor'] = 'Hersteller';
$pia_lang['DevDetail_MainInfo_Favorite'] = 'Favorit';
$pia_lang['DevDetail_MainInfo_Group'] = 'Gruppe';
$pia_lang['DevDetail_MainInfo_Location'] = 'Standort';
$pia_lang['DevDetail_MainInfo_Comments'] = 'Notiz';
$pia_lang['DevDetail_SessionInfo_Title'] = 'Sitzungsinfos';
$pia_lang['DevDetail_SessionInfo_Status'] = 'Status';
$pia_lang['DevDetail_SessionInfo_FirstSession'] = 'Erste Sitzung';
$pia_lang['DevDetail_SessionInfo_LastSession'] = 'Letzte Sitzung';
$pia_lang['DevDetail_SessionInfo_LastIP'] = 'Letzte IP';
$pia_lang['DevDetail_SessionInfo_StaticIP'] = 'Statische IP';
$pia_lang['DevDetail_EveandAl_Title'] = 'Ereignisse & Alarme einstellen';
$pia_lang['DevDetail_EveandAl_ScanCycle'] = 'Scan Abstand';
$pia_lang['DevDetail_EveandAl_AlertAllEvents'] = 'Melde alle Ereignisse';
$pia_lang['DevDetail_EveandAl_AlertDown'] = 'Melde Down';
$pia_lang['DevDetail_EveandAl_Skip'] = 'pausiere wiederhol. Meldungen für';
$pia_lang['DevDetail_EveandAl_NewDevice'] = 'Neues Gerät';
$pia_lang['DevDetail_EveandAl_Archived'] = 'Archivierung';
$pia_lang['DevDetail_EveandAl_RandomMAC'] = 'Zufällige MAC';
$pia_lang['DevDetail_button_Delete'] = 'Lösche Gerät';
$pia_lang['DevDetail_button_Reset'] = 'Verwerfen';
$pia_lang['DevDetail_button_Save'] = 'Speichern';
$pia_lang['DevDetail_SessionTable_Order'] = 'Order';
$pia_lang['DevDetail_SessionTable_Connection'] = 'Verbindung';
$pia_lang['DevDetail_SessionTable_Disconnection'] = 'Trennung';
$pia_lang['DevDetail_SessionTable_Duration'] = 'Dauer';
$pia_lang['DevDetail_SessionTable_IP'] = 'IP';
$pia_lang['DevDetail_SessionTable_Additionalinfo'] = 'Zusätzliche Info';
$pia_lang['DevDetail_Events_CheckBox'] = 'Blende Verbindungs-Ereignisse aus';
$pia_lang['DevDetail_Nmap_buttonFast'] = 'Schneller Scan';
$pia_lang['DevDetail_Nmap_buttonDefault'] = 'Standard Scan';
$pia_lang['DevDetail_Nmap_buttonDetail'] = 'Detailierter Scan';
$pia_lang['DevDetail_Nmap_buttonFast_text'] = 'Schneller Scan: Überprüft nur die wichtigsten 100 Ports (wenige Sekunden)';
$pia_lang['DevDetail_Nmap_buttonDefault_text'] = 'Standard Scan: Nmap scannt die ersten 1.000 Ports für jedes angeforderte Scan-Protokoll. Damit werden etwa 93 % der TCP-Ports und 49 % der UDP-Ports erfasst. (ca. 5-10 Sekunden)';
$pia_lang['DevDetail_Nmap_buttonDetail_text'] = 'Detailierter Scan: Standardscan mit aktivierter Betriebssystemerkennung, Versionserkennung, Skript-Scan und Traceroute (bis zu 30 oder mehr Sekunden)';
//////////////////////////////////////////////////////////////////
// Maintenance Page
//////////////////////////////////////////////////////////////////
@@ -102,8 +159,8 @@ $pia_lang['Maintenance_database_path'] = 'Datenbank-Pfad';
$pia_lang['Maintenance_database_size'] = 'Datenbank-Größe';
$pia_lang['Maintenance_database_lastmod'] = 'Letzte Änderung';
$pia_lang['Maintenance_database_backup'] = 'DB Sicherungen';
$pia_lang['Maintenance_database_backup_found'] = 'Sicherungen wurden gefunden';
$pia_lang['Maintenance_database_backup_total'] = 'gesamter Speicherplatz';
$pia_lang['Maintenance_database_backup_found'] = 'Sicherungen verfügbar';
$pia_lang['Maintenance_database_backup_total'] = 'Speicherplatz insgesamt';
$pia_lang['Maintenance_arp_status'] = 'Scan Status';
$pia_lang['Maintenance_arp_status_off'] = 'ist im Moment deaktiviert';
$pia_lang['Maintenance_arp_status_on'] = 'Scan(s) sind gerade aktiv';
@@ -116,7 +173,7 @@ $pia_lang['Maintenance_lang_en_us'] = 'Englisch (US)';
$pia_lang['Maintenance_lang_de_de'] = 'Deutsch (DE)';
$pia_lang['Maintenance_lang_selector_text'] = 'Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.';
$pia_lang['Maintenance_Tool_darkmode'] = 'Darstellungswechsel (Dunkel/Hell)';
$pia_lang['Maintenance_Tool_darkmode_text'] = 'Wechselt zwischen der hellen und der dunklen Darstellung. Wenn die Umschaltung nicht ordentlich funktionieren sollte, versuchen Sie den Browsercache zu löschen. Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.';
$pia_lang['Maintenance_Tool_darkmode_text'] = 'Wechselt zwischen der hellen und der dunklen Darstellung. Wenn der Wechsel nicht richtig funktionieren sollte, versuchen Sie den Browsercache zu löschen. Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.';
$pia_lang['Maintenance_Tool_darkmode_noti'] = 'Darstellungswechsel';
$pia_lang['Maintenance_Tool_darkmode_noti_text'] = 'Wechselt zwischen der hellen und der dunklen Darstellung. Wenn die Umschaltung nicht ordentlich funktionieren sollte, versuchen Sie den Browsercache zu löschen.';
$pia_lang['Maintenance_Tool_arpscansw'] = 'arp-Scan stoppen/starten';
@@ -124,27 +181,27 @@ $pia_lang['Maintenance_Tool_arpscansw_text'] = 'Schaltet den arp-Scan an oder au
$pia_lang['Maintenance_Tool_arpscansw_noti'] = 'arp-Scan stoppen/starten';
$pia_lang['Maintenance_Tool_arpscansw_noti_text'] = 'Wenn der Scan aus ist, bleibt er so lange aus bis er wieder aktiviert wird.';
$pia_lang['Maintenance_Tool_del_empty_macs'] = 'Alle Geräte ohne MAC löschen';
$pia_lang['Maintenance_Tool_del_empty_macs_text'] = 'Bevor Sie diese Funktion nutzen, machen Sie bitte ein Backup. Die Löschung kann ohne Backup nicht rückgängig gemacht werden. Alle Geäte ohne MAC-Adresse werden aus der Datenbank gelöscht.';
$pia_lang['Maintenance_Tool_del_empty_macs_text'] = 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Geäte ohne MAC-Adresse werden aus der Datenbank ge&shy;löscht.';
$pia_lang['Maintenance_Tool_del_empty_macs_noti'] = 'Geräte löschen';
$pia_lang['Maintenance_Tool_del_empty_macs_noti_text'] = 'Sind Sie sicher, dass Sie alle Geräte ohne MAC-Adresse löschen wollen?<br>(Vielleicht bevorzugenn Sie eine Archivierung.)';
$pia_lang['Maintenance_Tool_del_alldev'] = 'Alle Geräte löschen';
$pia_lang['Maintenance_Tool_del_alldev_text'] = 'Bevor Sie diese Funktion nutzen, machen Sie bitte ein Backup. Die Löschung kann ohne Backup nicht rückgängig gemacht werden. Alle Geräte werden in der Datenbank gelöscht.';
$pia_lang['Maintenance_Tool_del_alldev_text'] = 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Geräte werden in der Datenbank ge&shy;löscht.';
$pia_lang['Maintenance_Tool_del_alldev_noti'] = 'Geräte löschen';
$pia_lang['Maintenance_Tool_del_alldev_noti_text'] = 'Sind Sie sich sicher, dass Sie alle Geräte löschen wollen?';
$pia_lang['Maintenance_Tool_del_unknowndev'] = 'Löschen der (unknown) Geräte';
$pia_lang['Maintenance_Tool_del_unknowndev_text'] = 'Bevor Sie diese Funktion nutzen, machen Sie bitte ein Backup. Die Löschung kann ohne Backup nicht rückgängig gemacht werden. Alle Gräte mit dem Namen (unknown) werden aus der Datenbank gelöscht..';
$pia_lang['Maintenance_Tool_del_unknowndev_text'] = 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Gräte mit dem Namen (unknown) werden aus der Datenbank ge&shy;löscht.';
$pia_lang['Maintenance_Tool_del_unknowndev_noti'] = 'Lösche (unknown) Geräte';
$pia_lang['Maintenance_Tool_del_unknowndev_noti_text'] = 'Sind Sie sicher, dass Sie alle (unknown) Geräte aus der Datenbank löschen wollen?';
$pia_lang['Maintenance_Tool_del_allevents'] = 'Alle Ereignisse löschen';
$pia_lang['Maintenance_Tool_del_allevents_text'] = 'Bevor Sie diese Funktion nutzen, machen Sie bitte ein Backup. Die Löschung kann ohne Backup nicht rückgängig gemacht werden. Alle Ereignisse werden aus der Datenbank gelöscht. Dies setzt auch die Anwesenheit zurück. Es kann ab dem Moment zu ungültigen Sitzungen kommen. Ein Scan, während das betreffende Gerät "online" ist, sollte das Problem lösen.';
$pia_lang['Maintenance_Tool_del_allevents_text'] = 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Ereignisse werden aus der Datenbank ge&shy;löscht. Dies setzt auch die Anwesenheit zu&shy;rück. Es kann ab dem Moment zu ungültigen Sitzungen kommen. Ein Scan, während das betreffende Gerät "online" ist, sollte das Problem lösen.';
$pia_lang['Maintenance_Tool_del_allevents_noti'] = 'Alle Ereignisse löschen';
$pia_lang['Maintenance_Tool_del_allevents_noti_text'] = 'Sind Sie sicher, dass Sie alle Ereignisse aus der Datenbank löschen wollen. Dies setzt die Anwesenheit aller Geräte zurück.';
$pia_lang['Maintenance_Tool_backup'] = 'DB Sicherung';
$pia_lang['Maintenance_Tool_backup_text'] = 'Die Datenbank-Sicherungen befinden sich im Datenbank-Verzeichnis, gepackt als zip-Archive, benannt mit dem Erstellungsdatum. Es gibt keine maximale Anzahl von Backups.';
$pia_lang['Maintenance_Tool_backup_text'] = 'Die Datenbank-Sicher&shy;ungen befinden sich im Datenbank-Ver&shy;zeich&shy;nis, gepackt als zip-Archive, benannt mit dem Erstellungs&shy;datum. Es gibt keine maximale Anzahl von Backups.';
$pia_lang['Maintenance_Tool_backup_noti'] = 'DB Sicherung';
$pia_lang['Maintenance_Tool_backup_noti_text'] = 'Sind Sie sicher, dass Sie die Datenbank jetzt sichern möchten. Prüfen Sie, dass gerade keine Scans stattfinden.';
$pia_lang['Maintenance_Tool_restore'] = 'DB Wiederherstellung';
$pia_lang['Maintenance_Tool_restore_text'] = 'Das neuste Backup kann über diese Funktion wiederhergestellt werden. Ältere Sicherungen müssen manuell wiederhergestellt werden. Es empfiehlt sich eine Integritätsprüfung nach der Wiederherstellung zu machen, falls die Datenbank bei der Sicherung geöffnet war.';
$pia_lang['Maintenance_Tool_restore_text'] = 'Das neuste Backup kann über diese Funk&shy;tion wiederhergestellt werden. Ältere Sicher&shy;ungen müssen manuell wieder&shy;hergestellt wer&shy;den. Es empfiehlt sich eine Integritäts&shy;prüfung nach der Wieder&shy;her&shy;stellung zu machen, falls die Datenbank bei der Sicherung geöffnet war.';
$pia_lang['Maintenance_Tool_restore_noti'] = 'DB Wiederherstellung';
$pia_lang['Maintenance_Tool_restore_noti_text'] = 'Sind Sie sicher, dass Sie die Datenbank aus der neusten Sicherung wiederherstellen möchten? Prüfen Sie, dass gerade keine Scans stattfinden.';

View File

@@ -48,6 +48,7 @@ $pia_lang['Presence_Shortcut_Archived'] = 'Archived';
$pia_lang['Presence_Shortcut_Devices'] = 'Devices';
// Localizationfiles under pialert/front/lib/AdminLTE/bower_components/fullcalendar/dist/locale
$pia_lang['Presence_CallHead_Devices'] = 'Devices';
$pia_lang['Presence_CalHead_lang'] = 'en-us';
$pia_lang['Presence_CalHead_year'] = 'year';
$pia_lang['Presence_CalHead_quarter'] = 'quarter';
@@ -64,7 +65,6 @@ $pia_lang['Events_Periodselect_LastWeek'] = 'Last Week';
$pia_lang['Events_Periodselect_LastMonth'] = 'Last Month';
$pia_lang['Events_Periodselect_LastYear'] = 'Last Year';
$pia_lang['Events_Periodselect_All'] = 'All Info';
$pia_lang['Events_Shortcut_AllEvents'] = 'All Events';
$pia_lang['Events_Shortcut_Sessions'] = 'Sessions';
$pia_lang['Events_Shortcut_MissSessions'] = 'Missing Sessions';
@@ -72,20 +72,18 @@ $pia_lang['Events_Shortcut_VoidSessions'] = 'Voided Sessions';
$pia_lang['Events_Shortcut_NewDevices'] = 'New Devices';
$pia_lang['Events_Shortcut_DownAlerts'] = 'Down Alerts';
$pia_lang['Events_Shortcut_Events'] = 'Events';
$pia_lang['Events_TableHead_Name'] = 'Name';
$pia_lang['Events_TableHead_Owner'] = 'Eigentümer';
$pia_lang['Events_TableHead_Type'] = 'Type';
$pia_lang['Events_TableHead_Favorite'] = 'Favorit';
$pia_lang['Events_TableHead_Group'] = 'Gruppe';
$pia_lang['Events_TableHead_FirstSession'] = 'Erste Sitzg.';
$pia_lang['Events_TableHead_LastSession'] = 'Letzte Sitzg.';
$pia_lang['Events_TableHead_LastIP'] = 'Letzte IP';
$pia_lang['Events_TableHead_MAC'] = 'MAC';
$pia_lang['Events_TableHead_LastIPOrder'] = 'Last IP Order';
$pia_lang['Events_TableHead_Rowid'] = 'Zeilennummer';
$pia_lang['Events_TableHead_Status'] = 'Status';
$pia_lang['Events_TableHead_Order'] = 'Order';
$pia_lang['Events_TableHead_Device'] = 'Device';
$pia_lang['Events_TableHead_Owner'] = 'Owner';
$pia_lang['Events_TableHead_Date'] = 'Date';
$pia_lang['Events_TableHead_EventType'] = 'Event Type';
$pia_lang['Events_TableHead_Connection'] = 'Connection';
$pia_lang['Events_TableHead_Disconnection'] = 'Disconnection';
$pia_lang['Events_TableHead_Duration'] = 'Duration';
$pia_lang['Events_TableHead_DurationOrder'] = 'Duration Order';
$pia_lang['Events_TableHead_IP'] = 'IP';
$pia_lang['Events_TableHead_IPOrder'] = 'IP Order';
$pia_lang['Events_TableHead_AdditionalInfo'] = 'Additional Info';
$pia_lang['Events_Searchbox'] = 'Search';
$pia_lang['Events_Tablelenght'] = 'Show _MENU_ entries';
$pia_lang['Events_Tablelenght_all'] = 'All';
@@ -93,6 +91,65 @@ $pia_lang['Events_Table_info'] = 'Showing _START_ to _END_ of _TOTAL_ entries';
$pia_lang['Events_Table_nav_next'] = 'Next';
$pia_lang['Events_Table_nav_prev'] = 'Previous';
//////////////////////////////////////////////////////////////////
// Device Details Page
//////////////////////////////////////////////////////////////////
$pia_lang['DevDetail_Periodselect_today'] = 'Today';
$pia_lang['DevDetail_Periodselect_LastWeek'] = 'Last Week';
$pia_lang['DevDetail_Periodselect_LastMonth'] = 'Last Month';
$pia_lang['DevDetail_Periodselect_LastYear'] = 'Last Year';
$pia_lang['DevDetail_Periodselect_All'] = 'All Info';
$pia_lang['DevDetail_Shortcut_CurrentStatus'] = 'Current Status';
$pia_lang['DevDetail_Shortcut_Sessions'] = 'Sessions';
$pia_lang['DevDetail_Shortcut_Presence'] = 'Presence';
$pia_lang['DevDetail_Shortcut_DownAlerts'] = 'Down Alerts';
$pia_lang['DevDetail_Tab_Details'] = 'Details';
$pia_lang['DevDetail_Tab_Nmap'] = 'Nmap';
$pia_lang['DevDetail_Tab_Sessions'] = 'Sessions';
$pia_lang['DevDetail_Tab_Presence'] = 'Presence';
$pia_lang['DevDetail_Tab_Events'] = 'Events';
$pia_lang['DevDetail_MainInfo_Title'] = 'Main Info';
$pia_lang['DevDetail_MainInfo_mac'] = 'MAC';
$pia_lang['DevDetail_MainInfo_Name'] = 'Name';
$pia_lang['DevDetail_MainInfo_Owner'] = 'Owner';
$pia_lang['DevDetail_MainInfo_Type'] = 'Type';
$pia_lang['DevDetail_MainInfo_Vendor'] = 'Vendor';
$pia_lang['DevDetail_MainInfo_Favorite'] = 'Favorite';
$pia_lang['DevDetail_MainInfo_Group'] = 'Group';
$pia_lang['DevDetail_MainInfo_Location'] = 'Location';
$pia_lang['DevDetail_MainInfo_Comments'] = 'Comments';
$pia_lang['DevDetail_SessionInfo_Title'] = 'Session Info';
$pia_lang['DevDetail_SessionInfo_Status'] = 'Status';
$pia_lang['DevDetail_SessionInfo_FirstSession'] = 'First Session';
$pia_lang['DevDetail_SessionInfo_LastSession'] = 'Last Session';
$pia_lang['DevDetail_SessionInfo_LastIP'] = 'Last IP';
$pia_lang['DevDetail_SessionInfo_StaticIP'] = 'Static IP';
$pia_lang['DevDetail_EveandAl_Title'] = 'Events & Alerts config';
$pia_lang['DevDetail_EveandAl_ScanCycle'] = 'Scan Cycle';
$pia_lang['DevDetail_EveandAl_AlertAllEvents'] = 'Alert All Events';
$pia_lang['DevDetail_EveandAl_AlertDown'] = 'Alert Down';
$pia_lang['DevDetail_EveandAl_Skip'] = 'Skip repeated notifications during';
$pia_lang['DevDetail_EveandAl_NewDevice'] = 'New Device';
$pia_lang['DevDetail_EveandAl_Archived'] = 'Archived';
$pia_lang['DevDetail_EveandAl_RandomMAC'] = 'Random MAC';
$pia_lang['DevDetail_button_Delete'] = 'Delete Device';
$pia_lang['DevDetail_button_Reset'] = 'Reset Changes';
$pia_lang['DevDetail_button_Save'] = 'Save';
$pia_lang['DevDetail_SessionTable_Order'] = 'Order';
$pia_lang['DevDetail_SessionTable_Connection'] = 'Connection';
$pia_lang['DevDetail_SessionTable_Disconnection'] = 'Disconnection';
$pia_lang['DevDetail_SessionTable_Duration'] = 'Duration';
$pia_lang['DevDetail_SessionTable_IP'] = 'IP';
$pia_lang['DevDetail_SessionTable_Additionalinfo'] = 'Additional info';
$pia_lang['DevDetail_Events_CheckBox'] = 'Hide Connection Events';
$pia_lang['DevDetail_Nmap_buttonFast'] = 'Fast Scan';
$pia_lang['DevDetail_Nmap_buttonDefault'] = 'Default Scan';
$pia_lang['DevDetail_Nmap_buttonDetail'] = 'Detailed Scan';
$pia_lang['DevDetail_Nmap_buttonFast_text'] = 'Fast Scan: Scan fewer ports (100) than the default scan (a few seconds)';
$pia_lang['DevDetail_Nmap_buttonDefault_text'] = 'Default Scan: Nmap scans the top 1,000 ports for each scan protocol requested. This catches roughly 93% of the TCP ports and 49% of the UDP ports. (about 5 seconds)';
$pia_lang['DevDetail_Nmap_buttonDetail_text'] = 'Detailed Scan: Default scan with enabled OS detection, version detection, script scanning and traceroute (up to 30 seconds or more)';
//////////////////////////////////////////////////////////////////
// Maintenance Page
//////////////////////////////////////////////////////////////////

View File

@@ -206,7 +206,7 @@ function initializeCalendar () {
allDaySlot : false,
timeFormat : 'H:mm',
resourceLabelText : 'Devices',
resourceLabelText : '<?php echo $pia_lang['Presence_CallHead_Devices'];?>',
resourceAreaWidth : '160px',
slotWidth : '1px',