| Server IP : 46.105.57.169 / Your IP : 216.73.217.35 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/123click/assets/ |
Upload File : |
recaptcha/postinstall/actions.php 0000644 00000003026 15075057055 0013235 0 ustar 00 <?php
/**
* @package Joomla.Plugin
* @subpackage Captcha
*
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*
* This file contains the functions used by the com_postinstall code to deliver
* the necessary post-installation messages for the end of life of reCAPTCHA V1.
*/
/**
* Checks if the plugin is enabled and reCAPTCHA V1 is being used. If true then the
* message about reCAPTCHA v1 EOL should be displayed.
*
* @return boolean
*
* @since 3.8.6
*/
function recaptcha_postinstall_condition()
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('1')
->from($db->qn('#__extensions'))
->where($db->qn('name') . ' = ' . $db->q('plg_captcha_recaptcha'))
->where($db->qn('enabled') . ' = 1')
->where($db->qn('params') . ' LIKE ' . $db->q('%1.0%'));
$db->setQuery($query);
$enabled_plugins = $db->loadObjectList();
return count($enabled_plugins) === 1;
}
/**
* Open the reCAPTCHA plugin so that they can update the settings to V2 and new keys.
*
* @return void
*
* @since 3.8.6
*/
function recaptcha_postinstall_action()
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('extension_id')
->from($db->qn('#__extensions'))
->where($db->qn('name') . ' = ' . $db->q('plg_captcha_recaptcha'));
$db->setQuery($query);
$e_id = $db->loadResult();
$url = 'index.php?option=com_plugins&task=plugin.edit&extension_id=' . $e_id;
JFactory::getApplication()->redirect($url);
}
recaptcha/recaptcha.php 0000604 00000012563 15075057055 0011155 0 ustar 00 <?php
/**
* @package Joomla.Plugin
* @subpackage Captcha
*
* @copyright (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Captcha\Google\HttpBridgePostRequestMethod;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Utilities\IpHelper;
use ReCaptcha\ReCaptcha;
/**
* Recaptcha Plugin
* Based on the official recaptcha library( https://packagist.org/packages/google/recaptcha )
*
* @since 2.5
*/
class PlgCaptchaRecaptcha extends CMSPlugin
{
/**
* Load the language file on instantiation.
*
* @var boolean
* @since 3.1
*/
protected $autoloadLanguage = true;
/**
* Application object.
*
* @var \Joomla\CMS\Application\CMSApplication
* @since 4.0.0
*/
protected $app;
/**
* Reports the privacy related capabilities for this plugin to site administrators.
*
* @return array
*
* @since 3.9.0
*/
public function onPrivacyCollectAdminCapabilities()
{
$this->loadLanguage();
return array(
Text::_('PLG_CAPTCHA_RECAPTCHA') => array(
Text::_('PLG_RECAPTCHA_PRIVACY_CAPABILITY_IP_ADDRESS'),
),
);
}
/**
* Initialise the captcha
*
* @param string $id The id of the field.
*
* @return Boolean True on success, false otherwise
*
* @since 2.5
* @throws \RuntimeException
*/
public function onInit($id = 'dynamic_recaptcha_1')
{
$pubkey = $this->params->get('public_key', '');
if ($pubkey === '')
{
throw new \RuntimeException(Text::_('PLG_RECAPTCHA_ERROR_NO_PUBLIC_KEY'));
}
$apiSrc = 'https://www.google.com/recaptcha/api.js?onload=JoomlainitReCaptcha2&render=explicit&hl='
. Factory::getLanguage()->getTag();
// Load assets, the callback should be first
$this->app->getDocument()->getWebAssetManager()
->registerAndUseScript('plg_captcha_recaptcha', 'plg_captcha_recaptcha/recaptcha.min.js', [], ['defer' => true])
->registerAndUseScript('plg_captcha_recaptcha.api', $apiSrc, [], ['defer' => true], ['plg_captcha_recaptcha']);
return true;
}
/**
* Gets the challenge HTML
*
* @param string $name The name of the field. Not Used.
* @param string $id The id of the field.
* @param string $class The class of the field.
*
* @return string The HTML to be embedded in the form.
*
* @since 2.5
*/
public function onDisplay($name = null, $id = 'dynamic_recaptcha_1', $class = '')
{
$dom = new \DOMDocument('1.0', 'UTF-8');
$ele = $dom->createElement('div');
$ele->setAttribute('id', $id);
$ele->setAttribute('class', ((trim($class) == '') ? 'g-recaptcha' : ($class . ' g-recaptcha')));
$ele->setAttribute('data-sitekey', $this->params->get('public_key', ''));
$ele->setAttribute('data-theme', $this->params->get('theme2', 'light'));
$ele->setAttribute('data-size', $this->params->get('size', 'normal'));
$ele->setAttribute('data-tabindex', $this->params->get('tabindex', '0'));
$ele->setAttribute('data-callback', $this->params->get('callback', ''));
$ele->setAttribute('data-expired-callback', $this->params->get('expired_callback', ''));
$ele->setAttribute('data-error-callback', $this->params->get('error_callback', ''));
$dom->appendChild($ele);
return $dom->saveHTML($ele);
}
/**
* Calls an HTTP POST function to verify if the user's guess was correct
*
* @param string $code Answer provided by user. Not needed for the Recaptcha implementation
*
* @return True if the answer is correct, false otherwise
*
* @since 2.5
* @throws \RuntimeException
*/
public function onCheckAnswer($code = null)
{
$input = Factory::getApplication()->input;
$privatekey = $this->params->get('private_key');
$version = $this->params->get('version', '2.0');
$remoteip = IpHelper::getIp();
$response = null;
$spam = false;
switch ($version)
{
case '2.0':
$response = $code ?: $input->get('g-recaptcha-response', '', 'string');
$spam = ($response === '');
break;
}
// Check for Private Key
if (empty($privatekey))
{
throw new \RuntimeException(Text::_('PLG_RECAPTCHA_ERROR_NO_PRIVATE_KEY'), 500);
}
// Check for IP
if (empty($remoteip))
{
throw new \RuntimeException(Text::_('PLG_RECAPTCHA_ERROR_NO_IP'), 500);
}
// Discard spam submissions
if ($spam)
{
throw new \RuntimeException(Text::_('PLG_RECAPTCHA_ERROR_EMPTY_SOLUTION'), 500);
}
return $this->getResponse($privatekey, $remoteip, $response);
}
/**
* Get the reCaptcha response.
*
* @param string $privatekey The private key for authentication.
* @param string $remoteip The remote IP of the visitor.
* @param string $response The response received from Google.
*
* @return bool True if response is good | False if response is bad.
*
* @since 3.4
* @throws \RuntimeException
*/
private function getResponse(string $privatekey, string $remoteip, string $response)
{
$version = $this->params->get('version', '2.0');
switch ($version)
{
case '2.0':
$apiResponse = (new ReCaptcha($privatekey, new HttpBridgePostRequestMethod))->verify($response, $remoteip);
if (!$apiResponse->isSuccess())
{
foreach ($apiResponse->getErrorCodes() as $error)
{
throw new \RuntimeException($error, 403);
}
return false;
}
break;
}
return true;
}
}
recaptcha/recaptcha.xml 0000604 00000005773 15075057055 0011173 0 ustar 00 <?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" group="captcha" method="upgrade">
<name>plg_captcha_recaptcha</name>
<version>3.4.0</version>
<creationDate>December 2011</creationDate>
<author>Joomla! Project</author>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<description>PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION</description>
<files>
<filename plugin="recaptcha">recaptcha.php</filename>
</files>
<languages>
<language tag="en-GB">language/en-GB/plg_captcha_recaptcha.ini</language>
<language tag="en-GB">language/en-GB/plg_captcha_recaptcha.sys.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="basic">
<field
name="version"
type="list"
label="PLG_RECAPTCHA_VERSION_LABEL"
default="2.0"
size="1"
validate="options"
>
<option value="2.0">PLG_RECAPTCHA_VERSION_V2</option>
</field>
<field
name="public_key"
type="text"
label="PLG_RECAPTCHA_PUBLIC_KEY_LABEL"
default=""
required="true"
filter="string"
size="100"
class="input-xxlarge"
/>
<field
name="private_key"
type="text"
label="PLG_RECAPTCHA_PRIVATE_KEY_LABEL"
default=""
required="true"
filter="string"
size="100"
class="input-xxlarge"
/>
<field
name="theme2"
type="list"
label="PLG_RECAPTCHA_THEME_LABEL"
default="light"
showon="version:2.0"
filter=""
validate="options"
>
<option value="light">PLG_RECAPTCHA_THEME_LIGHT</option>
<option value="dark">PLG_RECAPTCHA_THEME_DARK</option>
</field>
<field
name="size"
type="list"
label="PLG_RECAPTCHA_SIZE_LABEL"
default="normal"
showon="version:2.0"
filter=""
validate="options"
>
<option value="normal">PLG_RECAPTCHA_THEME_NORMAL</option>
<option value="compact">PLG_RECAPTCHA_THEME_COMPACT</option>
</field>
<field
name="tabindex"
type="number"
label="PLG_RECAPTCHA_TABINDEX_LABEL"
description="PLG_RECAPTCHA_TABINDEX_DESC"
filter="integer"
default="0"
showon="version:2.0"
min="0"
/>
<field
name="callback"
type="text"
label="PLG_RECAPTCHA_CALLBACK_LABEL"
description="PLG_RECAPTCHA_CALLBACK_DESC"
default=""
showon="version:2.0"
filter="string"
/>
<field
name="expired_callback"
type="text"
label="PLG_RECAPTCHA_EXPIRED_CALLBACK_LABEL"
description="PLG_RECAPTCHA_EXPIRED_CALLBACK_DESC"
default=""
showon="version:2.0"
filter="string"
/>
<field
name="error_callback"
type="text"
label="PLG_RECAPTCHA_ERROR_CALLBACK_LABEL"
description="PLG_RECAPTCHA_ERROR_CALLBACK_DESC"
default=""
showon="version:2.0"
filter="string"
/>
</fieldset>
</fields>
</config>
</extension>
recaptcha/.htaccess 0000444 00000000177 15075057055 0010310 0 ustar 00 <FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'>
Order allow,deny
Deny from all
</FilesMatch>