Server IP : 195.201.23.43 / Your IP : 18.218.44.61 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/thread-self/cwd/administrator/components/com_akeeba/Controller/ |
Upload File : |
<?php /** * @package akeebabackup * @copyright Copyright (c)2006-2019 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ namespace Akeeba\Backup\Admin\Controller; // Protect from unauthorized access defined('_JEXEC') or die(); use Akeeba\Backup\Admin\Controller\Mixin\CustomACL; use Akeeba\Backup\Admin\Model\Profiles; use Akeeba\Engine\Platform; use FOF30\Controller\Controller; use JFactory; use JText; use JUri; /** * Configuration page controller */ class Configuration extends Controller { use CustomACL; /** * Handle the apply task which saves the configuration settings and shows the page again */ public function apply() { // CSRF prevention $this->csrfProtection(); // Get the var array from the request $data = $this->input->get('var', array(), 'array', 4); $data['akeeba.flag.confwiz'] = 1; /** @var \Akeeba\Backup\Admin\Model\Configuration $model */ $model = $this->getModel(); $model->setState('engineconfig', $data); $model->saveEngineConfig(); // Finally, save the profile description if it has changed $profileid = Platform::getInstance()->get_active_profile(); // Get profile name /** @var Profiles $profileRecord */ $profileRecord = $this->container->factory->model('Profiles')->tmpInstance(); $profileRecord->findOrFail($profileid); $oldProfileName = $profileRecord->description; $oldQuickIcon = $profileRecord->quickicon; $profileName = $this->input->getString('profilename', null); $profileName = trim($profileName); $quickIconValue = $this->input->getCmd('quickicon', ''); $quickIcon = (int) !empty($quickIconValue); $mustSaveProfile = !empty($profileName) && ($profileName != $oldProfileName); $mustSaveProfile = $mustSaveProfile || ($quickIcon != $oldQuickIcon); if ($mustSaveProfile) { $profileRecord->save([ 'description' => $profileName, 'quickicon' => $quickIcon ]); } $this->setRedirect(JUri::base() . 'index.php?option=com_akeeba&view=Configuration', JText::_('COM_AKEEBA_CONFIG_SAVE_OK')); } /** * Handle the save task which saves the configuration settings and returns to the Control Panel page */ public function save() { $this->apply(); $this->setRedirect(JUri::base() . 'index.php?option=com_akeeba', JText::_('COM_AKEEBA_CONFIG_SAVE_OK')); } /** * Handle the save & new task which saves settings, creates a new backup profile, activates it and proceed to the * configuration page once more. */ public function savenew() { // Save the current profile $this->apply(); // Create a new profile $profileid = Platform::getInstance()->get_active_profile(); /** @var Profiles $profile */ $profile = $this->container->factory->model('Profiles')->tmpInstance(); $profile // Load and clone the record we just saved ->findOrFail($profileid) ->getClone() ; // Must unset ID before save. The ID cannot be bound with bind()/save(), hence the need to do it the hard way. $profile->id = null; $profile ->save([ 'description' => JText::_('COM_AKEEBA_CONFIG_SAVENEW_DEFAULT_PROFILE_NAME') ]) ; // Activate and edit the new profile $returnUrl = base64_encode($this->redirect); $token = $this->container->platform->getToken(true); $url = JUri::base() . 'index.php?option=com_akeeba&task=SwitchProfile&profileid=' . $profile->getId() . '&returnurl=' . $returnUrl . '&' . $token . '=1'; $this->setRedirect($url); } /** * Handle the cancel task which doesn't save anything and returns to the Control Panel page */ public function cancel() { // CSRF prevention $this->csrfProtection(); $this->setRedirect(JUri::base() . 'index.php?option=com_akeeba'); } /** * Tests the validity of the FTP connection details */ public function testftp() { /** @var \Akeeba\Backup\Admin\Model\Configuration $model */ $model = $this->getModel(); $model->setState('isCurl', $this->input->get('isCurl', 0, 'int')); $model->setState('host', $this->input->get('host', '', 'raw', 2)); $model->setState('port', $this->input->get('port', 21, 'int')); $model->setState('user', $this->input->get('user', '', 'raw', 2)); $model->setState('pass', $this->input->get('pass', '', 'raw', 2)); $model->setState('initdir', $this->input->get('initdir', '', 'raw', 2)); $model->setState('usessl', $this->input->get('usessl', '', 'raw', 2) == 'true'); $model->setState('passive', $this->input->get('passive', '', 'raw', 2) == 'true'); $model->setState('passive_mode_workaround', $this->input->get('passive_mode_workaround', '', 'raw', 2) == 'true'); try { $model->testFTP(); $testResult = true; } catch (\RuntimeException $e) { $testResult = $e->getMessage(); } @ob_end_clean(); echo '###' . json_encode($testResult) . '###'; flush(); $this->container->platform->closeApplication(); } /** * Tests the validity of the SFTP connection details */ public function testsftp() { /** @var \Akeeba\Backup\Admin\Model\Configuration $model */ $model = $this->getModel(); $model->setState('isCurl', $this->input->get('isCurl', 0, 'int')); $model->setState('host', $this->input->get('host', '', 'raw', 2)); $model->setState('port', $this->input->get('port', 21, 'int')); $model->setState('user', $this->input->get('user', '', 'raw', 2)); $model->setState('pass', $this->input->get('pass', '', 'raw', 2)); $model->setState('privkey', $this->input->get('privkey', '', 'raw', 2)); $model->setState('pubkey', $this->input->get('pubkey', '', 'raw', 2)); $model->setState('initdir', $this->input->get('initdir', '', 'raw', 2)); try { $model->testSFTP(); $testResult = true; } catch (\RuntimeException $e) { $testResult = $e->getMessage(); } @ob_end_clean(); echo '###' . json_encode($testResult) . '###'; flush(); $this->container->platform->closeApplication(); } /** * Opens an OAuth window for the selected data processing engine */ public function dpeoauthopen() { /** @var \Akeeba\Backup\Admin\Model\Configuration $model */ $model = $this->getModel(); $model->setState('engine', $this->input->get('engine', '', 'raw')); $model->setState('params', $this->input->get('params', array(), 'array', 2)); @ob_end_clean(); $model->dpeOuthOpen(); flush(); $this->container->platform->closeApplication(); } /** * Runs a custom API call against the selected data processing engine and returns the JSON encoded result */ public function dpecustomapi() { /** @var \Akeeba\Backup\Admin\Model\Configuration $model */ $model = $this->getModel(); $model->setState('engine', $this->input->get('engine', '', 'raw', 2)); $model->setState('method', $this->input->get('method', '', 'raw', 2)); $model->setState('params', $this->input->get('params', array(), 'array', 2)); @ob_end_clean(); echo '###' . json_encode($model->dpeCustomAPICall()) . '###'; flush(); $this->container->platform->closeApplication(); } /** * Runs a custom API call against the selected data processing engine and returns the raw result */ public function dpecustomapiraw() { /** @var \Akeeba\Backup\Admin\Model\Configuration $model */ $model = $this->getModel(); $model->setState('engine', $this->input->get('engine', '', 'raw', 2)); $model->setState('method', $this->input->get('method', '', 'raw', 2)); $model->setState('params', $this->input->get('params', array(), 'array', 2)); @ob_end_clean(); echo $model->dpeCustomAPICall(); flush(); $this->container->platform->closeApplication(); } }Private