Merge pull request #56 from phl0/lotwUploadPermissions

Show hint about upload permissions on LotW page
This commit is contained in:
Florian (DF2ET)
2024-01-31 17:29:31 +01:00
committed by GitHub
19 changed files with 96 additions and 30 deletions

View File

@@ -12,6 +12,7 @@ class Debug extends CI_Controller {
/* User Facing Links to Backup URLs */
public function index()
{
$this->load->library('Permissions');
$this->load->helper('file');
$this->load->model('MigrationVersion');
@@ -19,15 +20,15 @@ class Debug extends CI_Controller {
$data['migration_version'] = $this->MigrationVersion->getMigrationVersion();
// Test writing to backup folder
$backup_folder = $this->is_really_writable('backup');
$backup_folder = $this->permissions->is_really_writable('backup');
$data['backup_folder'] = $backup_folder;
// Test writing to updates folder
$updates_folder = $this->is_really_writable('updates');
$updates_folder = $this->permissions->is_really_writable('updates');
$data['updates_folder'] = $updates_folder;
// Test writing to uploads folder
$uploads_folder = $this->is_really_writable('uploads');
$uploads_folder = $this->permissions->is_really_writable('uploads');
$data['uploads_folder'] = $uploads_folder;
$data['page_title'] = "Debug";
@@ -37,31 +38,4 @@ class Debug extends CI_Controller {
$this->load->view('interface_assets/footer');
}
private function is_really_writable($folder)
{
// Get the absolute path to the folder
$path = FCPATH . $folder;
// Check if the folder exists
if (!file_exists($path)) {
return false;
}
// Check if the folder is writable
if (is_writable($path)) {
// Check if the subdirectories are writable (recursive check)
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach ($iterator as $item) {
if ($item->isDir() && basename($item->getPathName()) != '..') {
if (!is_writable($item->getRealPath())) {
return false;
}
}
}
return true;
}
return false;
}
}

View File

@@ -38,6 +38,7 @@ class Lotw extends CI_Controller {
|
*/
public function index() {
$this->load->library('Permissions');
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
@@ -55,6 +56,10 @@ class Lotw extends CI_Controller {
// Set Page Title
$data['page_title'] = "Logbook of the World";
// Check folder permissions
$uploads_folder = $this->permissions->is_really_writable('uploads');
$data['uploads_folder'] = $uploads_folder;
// Load Views
$this->load->view('interface_assets/header', $data);
$this->load->view('lotw_views/index');

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'At least one of your LoTW certificates is expired!
// Lotw User
$lang['lotw_user'] = 'This station uses LoTW.';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = '至少有一个LoTW证书已经过期!';
// Lotw User
$lang['lotw_user'] = '这个电台使用 LOTW';
$lang['lotw_last_upload'] = '最后一次上传是';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'At least one of your LoTW certificates is expired!
// Lotw User
$lang['lotw_user'] = 'This station uses LoTW.';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'At least one of your LoTW certificates is expired!
// Lotw User
$lang['lotw_user'] = 'This station uses LoTW.';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'At least one of your LoTW certificates is expired!
// Lotw User
$lang['lotw_user'] = 'This station uses LoTW.';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'Vähintään yksi LoTW:n kutsumerkin varmenteesi o
// Lotw User
$lang['lotw_user'] = 'Tämä asmea käyttää LoTW-palvelua. Viimeinen yhteyksien lähetys oli';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = "Au moins un de vos certificats LoTW est expiré !"
// Lotw User
$lang['lotw_user'] = "Cette station utilise LoTW";
$lang['lotw_last_upload'] = "Dernier téléchargement";
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'Mindestens eines deiner LoTW-Zertifikate ist abgel
// Lotw User
$lang['lotw_user'] = 'Diese Station nutzt LoTW.';
$lang['lotw_last_upload'] = 'Letzter Upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Das Upload-Verzeichnis ist nicht beschreibbar. Bitte kontaktiere den Administrator.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'Τουλάχιστον ένα από τα πιστ
// Lotw User
$lang['lotw_user'] = 'This station uses LoTW.';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'At least one of your LoTW certificates is expired!
// Lotw User
$lang['lotw_user'] = 'This station uses LoTW.';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'At least one of your LoTW certificates is expired!
// Lotw User
$lang['lotw_user'] = 'This station uses LoTW.';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'Один из ваших сертификатов
// Lotw User
$lang['lotw_user'] = 'Эта станция использует LoTW.';
$lang['lotw_last_upload'] = 'Последняя загрузка';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -64,3 +64,6 @@ $lang['lotw_last_upload'] = 'Última subida';
$lang['lotw_active'] = 'activos';
$lang['lotw_not_found'] = 'no encontrado';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'Minst ett av dina LoTW-certifikat har löpt ut!';
// Lotw User
$lang['lotw_user'] = 'Denna station använder LoTW. Den senaste uppladdningen var';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -61,3 +61,6 @@ $lang['lotw_cert_expired'] = 'At least one of your LoTW certificates is expired!
// Lotw User
$lang['lotw_user'] = 'This station uses LoTW.';
$lang['lotw_last_upload'] = 'Last upload';
// Upload folder permissions
$lang['lotw_upload_folder_permissions'] = 'Upload folder is not writable. Please contact your admin.';

View File

@@ -0,0 +1,37 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Permissions {
/*
* Class Description: Provide functions for checking file and folder permissions
*/
function is_really_writable($folder) {
// Get the absolute path to the folder
$path = FCPATH . $folder;
// Check if the folder exists
if (!file_exists($path)) {
return false;
}
// Check if the folder is writable
if (is_writable($path)) {
// Check if the subdirectories are writable (recursive check)
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach ($iterator as $item) {
if ($item->isDir() && basename($item->getPathName()) != '..') {
if (!is_writable($item->getRealPath())) {
return false;
}
}
}
return true;
}
return false;
}
}
/* End of file Permissions.php */

View File

@@ -1,4 +1,9 @@
<div class="container lotw">
<?php if($uploads_folder != true) { ?>
<div class="alert alert-warning" role="alert" style="margin-top: 1rem;">
<span class="badge text-bg-info"><?php echo lang('general_word_important'); ?></span> <i class="fas fa-ban"></i> <?php echo lang('lotw_upload_folder_permissions'); ?>
</div>
<?php } ?>
<br>
<a class="btn btn-outline-primary btn-sm float-end" href="<?php echo site_url('/lotw/import'); ?>" role="button"><i class="fas fa-cloud-download-alt"></i> <?php echo lang('lotw_btn_lotw_import'); ?></a>
<h2><?php echo lang('lotw_title'); ?></h2>