shell bypass 403
Cubjrnet7 Shell
: /home/eklavya/www/administrator/components/com_akeebabackup/src/Model/UpgradeHandler/ [ drwxr-xr-x ]
<?php
/**
* @package akeebabackup
* @copyright Copyright 2006-2024 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU General Public License version 3, or later
*/
namespace Akeeba\Component\AkeebaBackup\Administrator\Model\UpgradeHandler;
use Akeeba\Component\AkeebaBackup\Administrator\Mixin\AkeebaEngineTrait;
use Akeeba\Component\AkeebaBackup\Administrator\Model\UpgradeModel;
use Akeeba\Engine\Factory;
use Akeeba\Engine\Platform;
use Joomla\CMS\Installer\InstallerAdapter;
use Joomla\Database\DatabaseDriver;
use Joomla\Database\DatabaseInterface;
class AngieToBrs
{
use AkeebaEngineTrait;
/**
* The UpgradeModel instance we belong to.
*
* @var UpgradeModel
* @since 9.0.0
*/
private $upgradeModel;
/**
* Joomla database driver object
*
* @var DatabaseInterface|DatabaseDriver
* @since 9.0.0
*/
private $dbo;
/**
* Constructor.
*
* @param UpgradeModel $upgradeModel The UpgradeModel instance we belong to
*
* @since 9.0.0
*/
public function __construct(UpgradeModel $upgradeModel, DatabaseDriver $dbo)
{
$this->upgradeModel = $upgradeModel;
$this->dbo = $dbo;
}
public function onUpdate(?string $type = null, ?InstallerAdapter $parent = null): void
{
// Get a list of all backup profiles
$db = $this->dbo;
$query = (method_exists($db, 'createQuery') ? $db->createQuery() : $db->getQuery(true))
->select($db->quoteName('id'))
->from($db->quoteName('#__akeebabackup_profiles'));
$profileIds = $db->setQuery($query)->loadColumn();
// Normally this should never happen as we're supposed to have at least profile #1
if (empty($profileIds))
{
return;
}
$this->loadAkeebaEngine($this->dbo);
$platform = Platform::getInstance();
$currentProfile = $platform->get_active_profile();
foreach ($profileIds as $profile)
{
// Load the profile configuration
try
{
$platform->load_configuration($profile);
$config = Factory::getConfiguration();
}
catch (\Throwable $e)
{
// Your database is broken :(
continue;
}
$currentInstaller = $config->get('akeeba.advanced.embedded_installer', 'brs');
if (strpos($currentInstaller, 'brs') === 0)
{
continue;
}
// Transcribe the local quota to remote quota settings if the legacy "Enable remote quotas" option is on.
$protected = $config->getProtectedKeys();
$config->setProtectedKeys([]);
$newInstaller = str_replace('angie', 'brs', $currentInstaller);
if (!in_array($newInstaller, ['brs', 'brs-generic']))
{
$newInstaller = 'brs';
}
$config->set('akeeba.advanced.embedded_installer', $newInstaller);
$config->setProtectedKeys($protected);
// Save the changes
try
{
$platform->save_configuration($profile);
}
catch (\Throwable $e)
{
// Your database is broken!
continue;
}
}
$platform->load_configuration($currentProfile);
}
}