Server : LiteSpeed System : Linux server 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : alsaif ( 1057) PHP Version : 7.4.33 Disable Function : show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/alsaif/public_html/components/com_convertforms/controllers/ |
<?php
/**
* @package Joomla.Site
* @subpackage com_contact
*
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use ConvertForms\Helper;
use Joomla\CMS\Log\Log;
/**
* Controller for single contact view
*
* @since 1.5.19
*/
class ConvertFormsControllerCron extends JControllerForm
{
/**
* Joomla Application Object
*
* Joomla 4 requires this to be protected or weaker.
*
* @var object
*/
protected $app;
/**
* The secret key configured in the configuration page
*
* @var string
*/
private $secret;
/**
* Class Constructor
*
* @param string $key User API Key
*/
public function __construct()
{
// Register a new generic Convert Forms CRON logger
Log::addLogger(['text_file' => 'convertforms_cron.php'], Log::ALL, ['convertforms.cron']);
$this->app = \JFactory::getApplication();
$this->secret = Helper::getComponentParams()->get('api_key');
parent::__construct();
}
/**
* Start the cron task
*
* @return void
*/
public function cron()
{
$this->log('Starting CRON job', Log::DEBUG);
// Makes sure SiteGround's SuperCache doesn't cache the CRON view
$this->app->setHeader('X-Cache-Control', 'False', true);
if (empty($this->secret))
{
$this->log('No secret key configured', Log::ERROR);
header('HTTP/1.1 503 Service unavailable due to configuration');
jexit();
}
// Authenticate request
if ($this->app->input->get('secret', null, 'raw') != $this->secret)
{
$this->log('Wrong secret key provided in URL', Log::ERROR);
header('HTTP/1.1 403 Forbidden');
jexit();
}
// Validate command to run
$command = $this->app->input->get('command', null, 'raw');
$command = trim(strtolower($command));
$commandEscaped = \JFilterInput::getInstance()->clean($command, 'cmd');
if (empty($command))
{
$this->log('No command provided in URL', Log::ERROR);
header('HTTP/1.1 501 Not implemented');
jexit();
}
// Register a new task-specific Convert Forms CRON logger
Log::addLogger(['text_file' => "convertforms_cron_$commandEscaped.php"], Log::ALL, ['convertforms.cron.' . $command]);
$this->log("Starting execution of command $commandEscaped", Log::DEBUG);
// Import plugins and trigger the cron task event
\JPluginHelper::importPlugin('system');
\JPluginHelper::importPlugin('convertforms');
\JPluginHelper::importPlugin('convertformstools');
$this->app->triggerEvent('onConvertFormsCronTask', [$command, ['time_limit' => 10]]);
$this->log("Finished running command $commandEscaped", Log::DEBUG);
echo $commandEscaped . ' OK';
jexit();
}
/**
* Log message to the default log file
*
* @param string $msg
* @param object $type
*
* @return void
*/
private function log($msg, $type)
{
try {
Log::add($msg, $type, 'convertforms.cron');
} catch (\Throwable $th) {
}
}
}