Add Multi-Language Support (in progress)

approx. 60-70% are already translated. At the moment 2 languages are included. English and German
This commit is contained in:
leiweibau
2022-07-04 22:58:56 +02:00
parent 3dff85c0e8
commit d01e1a15db
8 changed files with 538 additions and 130 deletions

View File

@@ -23,7 +23,7 @@
<section class="content-header">
<?php require 'php/templates/notification.php'; ?>
<h1 id="pageTitle">
Maintenance tools
<?php echo $pia_lang['Maintenance_Title'];?>
</h1>
</section>
@@ -33,28 +33,38 @@
<?php
// Size and last mod of DB ------------------------------------------------------
$pia_db = str_replace('front', 'db', getcwd()).'/pialert.db';
//echo $pia_db;
$pia_db_size = number_format(filesize($pia_db),0,",",".") . ' Byte';
//echo $pia_db_size;
$pia_db_size = number_format((filesize($pia_db) / 1000000),2,",",".") . ' MB';
$pia_db_mod = date ("F d Y H:i:s", filemtime($pia_db));
// Pause Arp Scan ---------------------------------------------------------------
if (!file_exists('../db/setting_stoparpscan')) {
$execstring = 'ps -f -u root | grep "sudo arp-scan" 2>&1';
$pia_arpscans = "";
exec($execstring, $pia_arpscans);
$pia_arpscans_result = sizeof($pia_arpscans).' scan(s) currently running';
$pia_arpscans_result = sizeof($pia_arpscans).' '.$pia_lang['Maintenance_arp_status_on'];
} else {
$pia_arpscans_result = '<span style="color:red;">arp-scan is currently disabled</span>';
$pia_arpscans_result = '<span style="color:red;">arp-Scan '.$pia_lang['Maintenance_arp_status_off'] .'</span>';
}
// Count and Calc Backups -------------------------------------------------------
$Pia_Archive_Path = str_replace('front', 'db', getcwd()).'/';
$Pia_Archive_count = 0;
$Pia_Archive_diskusage = 0;
$files = glob($Pia_Archive_Path."*.zip");
if ($files){
$Pia_Archive_count = count($files);
}
foreach ($files as $result) {
$Pia_Archive_diskusage = $Pia_Archive_diskusage + filesize($result);
}
$Pia_Archive_diskusage = number_format(($Pia_Archive_diskusage / 1000000),2,",",".") . ' MB';
// Find latest Backup for restore -----------------------------------------------
$latestfiles = glob($Pia_Archive_Path."*.zip");
natsort($latestfiles);
@@ -62,17 +72,19 @@ $latestfiles = array_reverse($latestfiles,False);
$latestbackup = $latestfiles[0];
$latestbackup_date = date ("Y-m-d H:i:s", filemtime($latestbackup));
if (submit) {
// Skin selector -----------------------------------------------------------------
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.'/'.$file);
unlink ($pia_skin_set_dir.'/setting_'.$file);
}
foreach ($pia_installed_skins as $file) {
if (file_exists($pia_skin_set_dir.'/'.$file)) {
if (file_exists($pia_skin_set_dir.'/setting_'.$file)) {
$pia_skin_error = True;
break;
} else {
@@ -81,7 +93,7 @@ if (submit) {
}
if ($pia_skin_error == False) {
$testskin = fopen($pia_skin_set_dir.$pia_skin_selector, 'w');
$testskin = fopen($pia_skin_set_dir.'setting_'.$pia_skin_selector, 'w');
$pia_skin_test = '';
echo("<meta http-equiv='refresh' content='1'>");
} else {
@@ -90,35 +102,68 @@ if (submit) {
}
}
}
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;
break;
} else {
$pia_lang_error = False;
}
}
if ($pia_lang_error == False) {
$testlang = fopen($pia_lang_set_dir.'setting_language_'.$pia_lang_selector, 'w');
$pia_lang_test = '';
echo("<meta http-equiv='refresh' content='1'>");
} else {
$pia_lang_test = '';
echo("<meta http-equiv='refresh' content='1'>");
}
}
}
?>
<div class="db_info_table">
<div class="db_info_table_row">
<div class="db_info_table_cell">Database-Path</div>
<div class="db_info_table_cell" style="min-width: 140px"><?php echo $pia_lang['Maintenance_database_path'];?></div>
<div class="db_info_table_cell">
<?php echo $pia_db;?>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell">Database-Size</div>
<div class="db_info_table_cell"><?php echo $pia_lang['Maintenance_database_size'];?></div>
<div class="db_info_table_cell">
<?php echo $pia_db_size;?>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell">last Modification</div>
<div class="db_info_table_cell"><?php echo $pia_lang['Maintenance_database_lastmod'];?></div>
<div class="db_info_table_cell">
<?php echo $pia_db_mod;?>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell">DB Backup</div>
<div class="db_info_table_cell"><?php echo $pia_lang['Maintenance_database_backup'];?></div>
<div class="db_info_table_cell">
<?php echo $Pia_Archive_count.' backups where found';?>
<?php echo $Pia_Archive_count.' '.$pia_lang['Maintenance_database_backup_found'].' / '.$pia_lang['Maintenance_database_backup_total'].': '.$Pia_Archive_diskusage;?>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell">Scan Status (arp)</div>
<div class="db_info_table_cell"><?php echo $pia_lang['Maintenance_arp_status'];?></div>
<div class="db_info_table_cell">
<?php echo $pia_arpscans_result;?></div>
</div>
@@ -127,11 +172,11 @@ if (submit) {
<form method="post" action="maintenance.php">
<div class="db_info_table">
<div class="db_info_table_row">
<div class="db_info_table_cell" style="height:50px; text-align:center; vertical-align: middle;">
<div style="display: inline-block; margin-right: 10px;">Theme Selection:</div>
<div class="db_info_table_cell" style="padding-left: 5px; height:50px; text-align:center; vertical-align: middle;">
<div style="display: inline-block; margin-right: 10px;"><?php echo $pia_lang['Maintenance_themeselector_lable'];?>:</div>
<div style="display: inline-block;">
<select name="skinselector">
<option value="">--Choose a theme--</option>
<option value=""><?php echo $pia_lang['Maintenance_themeselector_empty'];?></option>
<option value="skin-black-light">black light</option>
<option value="skin-black">black</option>
<option value="skin-blue-light">blue light</option>
@@ -145,64 +190,95 @@ if (submit) {
<option value="skin-yellow-light">yellow light</option>
<option value="skin-yellow">yellow</option>
</select></div>
<div style="display: inline-block;"><input type="submit" value="Set">
<div style="display: inline-block;"><input type="submit" name="skinselector_set" value="Okay">
<?php echo $pia_skin_test; ?>
</div>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell" style="padding: 10px; height:40px; text-align:center; vertical-align: middle;">
<?php echo $pia_lang['Maintenance_themeselector_text'];?>
</div>
</div>
</div>
</form>
<form method="post" action="maintenance.php">
<div class="db_info_table">
<div class="db_info_table_row">
<div class="db_info_table_cell" style="padding-left: 5px; height:50px; text-align:center; vertical-align: middle;">
<div style="display: inline-block; margin-right: 10px;"><?php echo $pia_lang['Maintenance_lang_selector_lable'];?>:</div>
<div style="display: inline-block;">
<select name="langselector">
<option value=""><?php echo $pia_lang['Maintenance_lang_selector_empty'];?></option>
<option value="en_us"><?php echo $pia_lang['Maintenance_lang_en_us'];?></option>
<option value="de_de"><?php echo $pia_lang['Maintenance_lang_de_de'];?></option>
</select></div>
<div style="display: inline-block;"><input type="submit" name="langselector_set" value="Okay">
<?php echo $pia_lang_test; ?>
</div>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell" style="padding: 10px; height:40px; text-align:center; vertical-align: middle;">
<?php echo $pia_lang['Maintenance_lang_selector_text'];?>
</div>
</div>
</div>
</form>
<div class="db_info_table">
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" style="">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-green dbtools-button" id="btnPiaEnableDarkmode" style="border-top: solid 3px #00a65a;" onclick="askPiaEnableDarkmode()">Toggle Modes (Dark/Light)</button>
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-green dbtools-button" id="btnPiaEnableDarkmode" style="border-top: solid 3px #00a65a;" onclick="askPiaEnableDarkmode()"><?php echo $pia_lang['Maintenance_Tool_darkmode'];?></button>
</div>
<div class="db_tools_table_cell_b" style="">Toggle between dark mode and light mode. If the switch does not work properly, try to clear the browser cache.</div>
<div class="db_tools_table_cell_b" style=""><?php echo $pia_lang['Maintenance_Tool_darkmode_text'];?></div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-yellow dbtools-button" id="btnPiaToggleArpScan" style="border-top: solid 3px #ffd080;" onclick="askPiaToggleArpScan()"><?php echo $pia_lang['Maintenance_Tool_arpscansw'];?></button>
</div>
<div class="db_tools_table_cell_b" style=""><?php echo $pia_lang['Maintenance_Tool_arpscansw_text'];?></div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" style="">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-yellow dbtools-button" id="btnPiaToggleArpScan" style="border-top: solid 3px #ffd080;" onclick="askPiaToggleArpScan()">Toggle arp-Scan (on/off)</button>
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnDeleteMAC" style="border-top: solid 3px #dd4b39;" onclick="askDeleteDevicesWithEmptyMACs()"><?php echo $pia_lang['Maintenance_Tool_del_empty_macs'];?></button>
</div>
<div class="db_tools_table_cell_b" style="">Switching the arp-scan on or off. When the scan has been switched off it remains off until it is activated again. Active scans are not canceled.</div>
<div class="db_tools_table_cell_b"><?php echo $pia_lang['Maintenance_Tool_del_empty_macs_text'];?></div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" style="">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnDeleteMAC" style="border-top: solid 3px #dd4b39;" onclick="askDeleteDevicesWithEmptyMACs()">Delete Devices with empty MACs</button>
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnDeleteMAC" style="border-top: solid 3px #dd4b39;" onclick="askDeleteAllDevices()"><?php echo $pia_lang['Maintenance_Tool_del_alldev'];?></button>
</div>
<div class="db_tools_table_cell_b">Before using this function, please make a backup. The deletion cannot be undone. All devices without MAC will be deleted from the database.</div>
<div class="db_tools_table_cell_b"><?php echo $pia_lang['Maintenance_Tool_del_alldev_text'];?></div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" style="">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnDeleteMAC" style="border-top: solid 3px #dd4b39;" onclick="askDeleteAllDevices()">Delete all Devices</button>
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnDeleteUnknown" style="border-top: solid 3px #dd4b39;" onclick="askDeleteUnknown()"><?php echo $pia_lang['Maintenance_Tool_del_unknowndev'];?></button>
</div>
<div class="db_tools_table_cell_b">Before using this function, please make a backup. The deletion cannot be undone. All devices will be deleted from the database.</div>
<div class="db_tools_table_cell_b"><?php echo $pia_lang['Maintenance_Tool_del_unknowndev_text'];?></div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" style="">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnDeleteUnknown" style="border-top: solid 3px #dd4b39;" onclick="askDeleteUnknown()">Delete (unknown) Devices</button>
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnDeleteEvents" style="border-top: solid 3px #dd4b39;" onclick="askDeleteEvents()"><?php echo $pia_lang['Maintenance_Tool_del_allevents'];?></button>
</div>
<div class="db_tools_table_cell_b">Before using this function, please make a backup. The deletion cannot be undone. All devices named (unknown) will be deleted from the database.</div>
<div class="db_tools_table_cell_b"><?php echo $pia_lang['Maintenance_Tool_del_allevents_text'];?></div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" style="">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnDeleteEvents" style="border-top: solid 3px #dd4b39;" onclick="askDeleteEvents()">Delete all Events (Reset Presence)</button>
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnPiaBackupDBtoArchive" style="border-top: solid 3px #dd4b39;" onclick="askPiaBackupDBtoArchive()"><?php echo $pia_lang['Maintenance_Tool_backup'];?></button>
</div>
<div class="db_tools_table_cell_b">Before using this function, please make a backup. The deletion cannot be undone. All events in the database will be deleted. At that moment the presence of all devices will be reset. This can lead to invalid sessions.
This means that devices are displayed as "present" although they are offline. A scan while the device in question is online solves the problem.</div>
<div class="db_tools_table_cell_b"><?php echo $pia_lang['Maintenance_Tool_backup_text'];?></div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" style="">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnPiaBackupDBtoArchive" style="border-top: solid 3px #dd4b39;" onclick="askPiaBackupDBtoArchive()">DB Backup</button>
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnPiaRestoreDBfromArchive" style="border-top: solid 3px #dd4b39;" onclick="askPiaRestoreDBfromArchive()"><?php echo $pia_lang['Maintenance_Tool_restore'];?><br><?php echo $latestbackup_date;?></button>
</div>
<div class="db_tools_table_cell_b">The database backups are located in the database directory as a zip-archive, named with the creation date. There is no maximum number of backups.</div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" style="">
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnPiaRestoreDBfromArchive" style="border-top: solid 3px #dd4b39;" onclick="askPiaRestoreDBfromArchive()">DB Restore<br><?php echo $latestbackup_date;?></button>
</div>
<div class="db_tools_table_cell_b">The latest backup can be restored via the button, but older backups can only be restored manually. After the restore, make an integrity check on
the database for safety, in case the db was currently in write access when the backup was created.</div>
<div class="db_tools_table_cell_b"><?php echo $pia_lang['Maintenance_Tool_restore_text'];?></div>
</div>
</div>
@@ -227,7 +303,7 @@ if (submit) {
// delete devices with emty macs
function askDeleteDevicesWithEmptyMACs () {
// Ask
showModalWarning('Delete Devices', 'Are you sure you want to delete all devices with empty MAC addresses?<br>(maybe you prefer to archive it)',
showModalWarning('<?php echo $pia_lang['Maintenance_Tool_del_empty_macs_noti'];?>', '<?php echo $pia_lang['Maintenance_Tool_del_empty_macs_noti_text'];?>',
'Cancel', 'Delete', 'deleteDevicesWithEmptyMACs');
}
function deleteDevicesWithEmptyMACs()
@@ -241,7 +317,7 @@ function deleteDevicesWithEmptyMACs()
// delete all devices
function askDeleteAllDevices () {
// Ask
showModalWarning('Delete Devices', 'Are you sure you want to delete all devices?',
showModalWarning('<?php echo $pia_lang['Maintenance_Tool_del_alldev_noti'];?>', '<?php echo $pia_lang['Maintenance_Tool_del_alldev_noti_text'];?>',
'Cancel', 'Delete', 'deleteAllDevices');
}
function deleteAllDevices()
@@ -255,7 +331,7 @@ function deleteAllDevices()
// delete all (unknown) devices
function askDeleteUnknown () {
// Ask
showModalWarning('Delete (unknown) Devices', 'Are you sure you want to delete all (unknown) devices?',
showModalWarning('<?php echo $pia_lang['Maintenance_Tool_del_unknowndev_noti'];?>', '<?php echo $pia_lang['Maintenance_Tool_del_unknowndev_noti_text'];?>',
'Cancel', 'Delete', 'deleteUnknownDevices');
}
function deleteUnknownDevices()
@@ -269,7 +345,7 @@ function deleteUnknownDevices()
// delete all Events
function askDeleteEvents () {
// Ask
showModalWarning('Delete Events', 'Are you sure you want to delete all Events?',
showModalWarning('<?php echo $pia_lang['Maintenance_Tool_del_allevents_noti'];?>', '<?php echo $pia_lang['Maintenance_Tool_del_allevents_noti_text'];?>',
'Cancel', 'Delete', 'deleteEvents');
}
function deleteEvents()
@@ -284,7 +360,7 @@ function deleteEvents()
// Backup DB to Archive
function askPiaBackupDBtoArchive () {
// Ask
showModalWarning('DB Backup', 'Are you sure you want to exectute the the DB Backup? Be sure that no scan is currently running.',
showModalWarning('<?php echo $pia_lang['Maintenance_Tool_backup_noti'];?>', '<?php echo $pia_lang['Maintenance_Tool_backup_noti_text'];?>',
'Cancel', 'Run Backup', 'PiaBackupDBtoArchive');
}
function PiaBackupDBtoArchive()
@@ -299,7 +375,7 @@ function PiaBackupDBtoArchive()
// Restore DB from Archive
function askPiaRestoreDBfromArchive () {
// Ask
showModalWarning('DB Restore', 'Are you sure you want to exectute the the DB Restore? Be sure that no scan is currently running.',
showModalWarning('<?php echo $pia_lang['Maintenance_Tool_restore_noti'];?>', '<?php echo $pia_lang['Maintenance_Tool_restore_noti_text'];?>',
'Cancel', 'Run Restore', 'PiaRestoreDBfromArchive');
}
function PiaRestoreDBfromArchive()
@@ -313,7 +389,7 @@ function PiaRestoreDBfromArchive()
// Restore DB from Archive
function askPiaEnableDarkmode () {
// Ask
showModalWarning('Switch Theme', 'After the theme switch, the page tries to reload itself to activate the change. If necessary, the cache must be cleared.',
showModalWarning('<?php echo $pia_lang['Maintenance_Tool_darkmode_noti'];?>', '<?php echo $pia_lang['Maintenance_Tool_darkmode_noti_text'];?>',
'Cancel', 'Switch', 'PiaEnableDarkmode');
}
function PiaEnableDarkmode()
@@ -327,7 +403,7 @@ function PiaEnableDarkmode()
// Toggle the Arp-Scans
function askPiaToggleArpScan () {
// Ask
showModalWarning('Toggle arp-Scan on or off', 'When the scan has been switched off it remains off until it is activated again.',
showModalWarning('<?php echo $pia_lang['Maintenance_Tool_arpscansw_noti'];?>', '<?php echo $pia_lang['Maintenance_Tool_arpscansw_noti_text'];?>',
'Cancel', 'Switch', 'PiaToggleArpScan');
}
function PiaToggleArpScan()