mirror of
https://github.com/wavelog/wavelog.git
synced 2026-03-22 10:24:14 +00:00
Merge pull request #56 from phl0/lotwUploadPermissions
Show hint about upload permissions on LotW page
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
37
application/libraries/Permissions.php
Normal file
37
application/libraries/Permissions.php
Normal 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 */
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user