mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-06-12 17:45:51 -04:00
* Properly replace key in config file when encryption key is updated This fixes a break caused if there is a commented out key in the .env. It's a more robust replacement. Signed-off-by: objec <objecttothis@gmail.com> * Guard against dropping constraint that doesn't exist - Updated wording in migration_helper.php PHPdoc - Use migration_helper function to drop key which only drops the constraint if it exists. The core logic was not changed here. It only adds a safety mechanism. Signed-off-by: objec <objecttothis@gmail.com> * Remove duplicate call to getResultArray in attribute_links loop Signed-off-by: objec <objecttothis@gmail.com> * PSR refactoring Signed-off-by: objec <objecttothis@gmail.com> * Remove dead parameter from reassignDuplicateAttributeValues method The attribute value was not needed and is never used since we have the attribute_ids and those are unique. Signed-off-by: objec <objecttothis@gmail.com> * Create potentially missing primary keys before attempting to add constraints. Signed-off-by: objec <objecttothis@gmail.com> * Guard datetime creation Signed-off-by: objec <objecttothis@gmail.com> * Update regex pattern to handle double-quoted and non-quoted encryption keys Signed-off-by: objec <objecttothis@gmail.com> * Issue warning and fallback on unparseable attribute_date during Signed-off-by: objec <objecttothis@gmail.com> --------- Signed-off-by: objec <objecttothis@gmail.com>
96 lines
2.7 KiB
PHP
96 lines
2.7 KiB
PHP
<?php
|
|
|
|
use CodeIgniter\Encryption\Encryption;
|
|
use Config\Services;
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
function check_encryption(): bool
|
|
{
|
|
$old_key = config('Encryption')->key;
|
|
|
|
if ((empty($old_key)) || (strlen($old_key) < 64)) {
|
|
$encryption = new Encryption();
|
|
$key = bin2hex($encryption->createKey());
|
|
config('Encryption')->key = $key;
|
|
|
|
$config_path = ROOTPATH . '.env';
|
|
$backup_path = WRITEPATH . '/backup/.env.bak';
|
|
$backup_folder = WRITEPATH . '/backup';
|
|
|
|
if (!file_exists($backup_folder)) {
|
|
@mkdir($backup_folder, 0750, true);
|
|
}
|
|
|
|
if (!file_exists($config_path)) {
|
|
$example_path = ROOTPATH . '.env.example';
|
|
if (file_exists($example_path)) {
|
|
@copy($example_path, $config_path);
|
|
} else {
|
|
@file_put_contents($config_path, "# OSPOS Configuration\n\n");
|
|
}
|
|
@chmod($config_path, 0640);
|
|
}
|
|
|
|
if (file_exists($config_path)) {
|
|
@copy($config_path, $backup_path);
|
|
@chmod($backup_path, 0640);
|
|
@chmod($config_path, 0640);
|
|
|
|
$config_file = file_get_contents($config_path);
|
|
|
|
if (preg_match('/^\s*encryption\.key\s*=/m', $config_file)) {
|
|
$config_file = preg_replace("/^(\s*encryption\.key\s*=\s*).*/m", "\$1'$key'", $config_file, 1);
|
|
} else {
|
|
$config_file .= "\nencryption.key = '$key'\n";
|
|
}
|
|
|
|
if (!empty($old_key)) {
|
|
$old_line = "# encryption.key = '$old_key' REMOVE IF UNNEEDED\r\n";
|
|
if (preg_match('/^encryption\.key\s*=/m', $config_file, $matches, PREG_OFFSET_CAPTURE)) {
|
|
$config_file = substr_replace($config_file, $old_line, $matches[0][1], 0);
|
|
}
|
|
}
|
|
|
|
@file_put_contents($config_path, $config_file);
|
|
@chmod($config_path, 0640);
|
|
|
|
log_message('info', "Updated encryption key in $config_path");
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
function abort_encryption_conversion(): void
|
|
{
|
|
$config_path = ROOTPATH . '.env';
|
|
$backup_path = WRITEPATH . '/backup/.env.bak';
|
|
|
|
if (!file_exists($backup_path)) {
|
|
return;
|
|
}
|
|
|
|
@chmod($config_path, 0640);
|
|
$config_file = file_get_contents($backup_path);
|
|
@file_put_contents($config_path, $config_file);
|
|
log_message('info', "Restored $config_path from backup");
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
function remove_backup(): void
|
|
{
|
|
$backup_path = WRITEPATH . '/backup/.env.bak';
|
|
if (!file_exists($backup_path)) {
|
|
return;
|
|
}
|
|
@unlink($backup_path);
|
|
log_message('info', "Removed $backup_path");
|
|
}
|