shell bypass 403
<?php
/**
* @package admintools
* @copyright Copyright (c)2010-2024 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU General Public License version 3, or later
*/
namespace Akeeba\Component\AdminTools\Administrator\Model;
defined('_JEXEC') or die;
use Akeeba\Component\AdminTools\Administrator\Mixin\ModelCopyTrait;
use Akeeba\Component\AdminTools\Administrator\Mixin\RunPluginsTrait;
use Joomla\CMS\Application\CMSApplication;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Form\FormFactoryInterface;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\CMS\MVC\Model\AdminModel;
use Joomla\CMS\Plugin\PluginHelper;
#[\AllowDynamicProperties]
class AllowlistModel extends AdminModel
{
use ModelCopyTrait;
use RunPluginsTrait;
public function __construct($config = [], MVCFactoryInterface $factory = null, FormFactoryInterface $formFactory = null)
{
parent::__construct($config, $factory, $formFactory);
$this->_parent_table = '';
}
/**
* @inheritDoc
*/
public function getForm($data = [], $loadData = true)
{
$form = $this->loadForm(
'com_admintools.allowlist',
'allowlist',
[
'control' => 'jform',
'load_data' => $loadData,
]
) ?: false;
if (empty($form))
{
return false;
}
return $form;
}
protected function loadFormData()
{
/** @var CMSApplication $app */
$app = Factory::getApplication();
$data = $app->getUserState('com_admintools.edit.allowlist.data', []);
$pk = (int) $this->getState($this->getName() . '.id');
$item = ($pk ? (object) $this->getItem()->getProperties() : false) ?: [];
$data = $data ?: $item;
$this->preprocessData('com_admintools.allowlist', $data);
return $data;
}
protected function preprocessForm(Form $form, $data, $group = 'content')
{
/** @var ControlpanelModel $cpanelModel */
$cpanelModel = $this->getMVCFactory()->createModel('Controlpanel', 'Administrator', ['ignore_request' => true]);
$myIP = $cpanelModel->getVisitorIP();
$form->setFieldAttribute('your_ip', 'description', sprintf("<code>%s</code>", htmlentities($myIP)));
// Import the appropriate plugin group.
PluginHelper::importPlugin($group);
// Trigger the form preparation event.
$this->triggerPluginEvent('onContentPrepareForm', [$form, $data]);
}
}