shell bypass 403
<?php
/**
* @package RSForm! Pro
* @copyright (C) 2022 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die;
use Joomla\Application\ApplicationEvents;
use Joomla\Application\Event\ApplicationEvent;
use Joomla\CMS\Console\Loader\WritableLoaderInterface;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Event\SubscriberInterface;
use Joomla\CMS\Factory;
use Joomla\DI\Container;
use Rsjoomla\Plugin\System\Rsformconsole\BackupformsCommand;
use Rsjoomla\Plugin\System\Rsformconsole\PurgesubmissionsCommand;
use Rsjoomla\Plugin\System\Rsformconsole\ExportcsvCommand;
class plgSystemRsformconsole extends CMSPlugin implements SubscriberInterface
{
protected $autoloadLanguage = true;
public static function getSubscribedEvents(): array
{
return [
ApplicationEvents::BEFORE_EXECUTE => 'registerCommand',
];
}
public function registerCommand(ApplicationEvent $event): void
{
$serviceId = 'rsform.backup-forms';
Factory::getContainer()->share(
$serviceId,
function (Container $container) {
// do stuff to create command class and return it
return new BackupformsCommand();
},
true
);
Factory::getContainer()->get(WritableLoaderInterface::class)->add(BackupformsCommand::getDefaultName(), $serviceId);
$serviceId = 'rsform.purge-submissions';
Factory::getContainer()->share(
$serviceId,
function (Container $container) {
// do stuff to create command class and return it
return new PurgesubmissionsCommand();
},
true
);
Factory::getContainer()->get(WritableLoaderInterface::class)->add(PurgesubmissionsCommand::getDefaultName(), $serviceId);
$serviceId = 'rsform.export-csv';
Factory::getContainer()->share(
$serviceId,
function (Container $container) {
// do stuff to create command class and return it
return new ExportcsvCommand();
},
true
);
Factory::getContainer()->get(WritableLoaderInterface::class)->add(ExportcsvCommand::getDefaultName(), $serviceId);
}
}