Files
opensourcepos/app/Helpers/security_helper.php
objecttothis 622a5e93ed Plugins configuration
- Renamed view from integrations_config to plugins_config.php
- Added Plugin
- Added todo in the code for refactoring
- Refactored config.php strings
- Moved mailchimp strings to Plugins.php for en.  We will need to do this for all the languages perhaps to retain current translations.
- Refactored view to use plugins naming
- Refactored Savefunction name
- Refactored view identifiers to be more generic
- Added Plugins folders in Controllers, Models and Views
- Refactored check_encryption function for PSR-12 compliance

Signed-off-by: objecttothis <objecttothis@gmail.com>
2025-06-01 01:07:48 +04:00

122 lines
3.3 KiB
PHP

<?php
use CodeIgniter\Encryption\Encryption;
use Config\Services;
/**
* @return bool
*/
function checkEncryption(): bool
{
$old_key = config('Encryption')->key;
if ((empty($old_key)) || (strlen($old_key) < 64)) {
// Create Key
$encryption = new Encryption();
$key = bin2hex($encryption->createKey());
config('Encryption')->key = $key;
// Write to .env
$config_path = ROOTPATH . '.env';
$new_config_path = WRITEPATH . '/backup/.env';
$backup_path = WRITEPATH . '/backup/.env.bak';
$backup_folder = WRITEPATH . '/backup';
if (!file_exists($backup_folder) && !mkdir($backup_folder)) {
log_message('error', 'Could not create backup folder');
return false;
}
if (!copy($config_path, $backup_path)) {
log_message('error', "Unable to copy $config_path to $backup_path");
}
// Copy to backup
@chmod($config_path, 0660);
@chmod($backup_path, 0660);
$config_file = file_get_contents($config_path);
$config_file = preg_replace("/(encryption\.key.*=.*)('.*')/", "$1'$key'", $config_file);
if (!empty($old_key)) {
$old_line = "# encryption.key = '$old_key' REMOVE IF UNNEEDED\r\n";
$insertion_point = stripos($config_file, 'encryption.key');
$config_file = substr_replace($config_file, $old_line, $insertion_point, 0);
}
$handle = @fopen($config_path, 'w+');
if (empty($handle)) {
log_message('error', "Unable to open $config_path for updating");
return false;
}
@chmod($config_path, 0660);
$write_failed = !fwrite($handle, $config_file);
fclose($handle);
if ($write_failed) {
log_message('error', "Unable to write to $config_path for updating.");
return false;
}
log_message('info', "File $config_path has been updated.");
}
return true;
}
/**
* @return void
*/
function abort_encryption_conversion(): void
{
$config_path = ROOTPATH . '.env';
$backup_path = WRITEPATH . '/backup/.env.bak';
$config_file = file_get_contents($backup_path);
$handle = @fopen($config_path, 'w+');
if (empty($handle)) {
log_message('error', "Unable to open $config_path to undo encryption conversion");
} else {
@chmod($config_path, 0660);
$write_failed = !fwrite($handle, $config_file);
fclose($handle);
if ($write_failed) {
log_message('error', "Unable to write to $config_path to undo encryption conversion.");
return;
}
log_message('info', "File $config_path has been updated to undo encryption conversion");
}
}
/**
* @return void
*/
function remove_backup(): void
{
$backup_path = WRITEPATH . '/backup/.env.bak';
if (! file_exists($backup_path)) {
return;
}
if (!unlink($backup_path)) {
log_message('error', "Unable to remove $backup_path.");
return;
}
log_message('info', "File $backup_path has been removed");
}
function purifyHtml($data)
{
if (is_array($data)) {
return array_map('purifyHtml', $data);
} elseif (is_string($data)) {
return Services::HtmlPurifier()->purify($data);
}
return $data;
}