Added captcha base and driver base
This commit is contained in:
parent
9acbbe4f00
commit
9d937ed146
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace vCaptcha\Abstracts;
|
||||||
|
|
||||||
|
abstract class CaptchaType
|
||||||
|
{
|
||||||
|
const ImageTextScramble = 'IMAGE_TEXT_SCRAMBLE';
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace vCaptcha\Abstracts;
|
||||||
|
|
||||||
|
abstract class CountryFilterMode
|
||||||
|
{
|
||||||
|
const Disabled = 'DISABLED';
|
||||||
|
|
||||||
|
const Whitelist = 'WHITELIST';
|
||||||
|
|
||||||
|
const Blacklist = 'BLACKLIST';
|
||||||
|
}
|
|
@ -4,7 +4,12 @@
|
||||||
|
|
||||||
namespace vCaptcha\Managers;
|
namespace vCaptcha\Managers;
|
||||||
|
|
||||||
|
use msqg\QueryBuilder;
|
||||||
|
use Symfony\Component\Uid\Uuid;
|
||||||
|
use vCaptcha\Objects\CaptchaInstance;
|
||||||
|
use vCaptcha\Objects\CaptchaInstance\FirewallOptions;
|
||||||
use vCaptcha\vCaptcha;
|
use vCaptcha\vCaptcha;
|
||||||
|
use ZiProto\ZiProto;
|
||||||
|
|
||||||
class CaptchaInstanceManager
|
class CaptchaInstanceManager
|
||||||
{
|
{
|
||||||
|
@ -17,4 +22,26 @@
|
||||||
{
|
{
|
||||||
$this->vcaptcha = $vcaptcha;
|
$this->vcaptcha = $vcaptcha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function createCaptcha(string $captcha_type, string $owner_id): CaptchaInstance
|
||||||
|
{
|
||||||
|
$CaptchaInstance = new CaptchaInstance();
|
||||||
|
$CaptchaInstance->ID = Uuid::v4()->toRfc4122();
|
||||||
|
$CaptchaInstance->CaptchaType = $captcha_type;
|
||||||
|
$CaptchaInstance->OwnerID = $owner_id;
|
||||||
|
$CaptchaInstance->Enabled = true;
|
||||||
|
$CaptchaInstance->FirewallOptions = new FirewallOptions();
|
||||||
|
$CaptchaInstance->CreatedTimestamp = time();
|
||||||
|
$CaptchaInstance->LastUpdatedTimestamp = time();
|
||||||
|
|
||||||
|
$Query = QUeryBuilder::insert_into('instances', [
|
||||||
|
'id' => $this->vcaptcha->getDatabase()->real_escape_string($CaptchaInstance->ID),
|
||||||
|
'captcha_type' => $this->vcaptcha->getDatabase()->real_escape_string($CaptchaInstance->CaptchaType),
|
||||||
|
'owner_id' => $this->vcaptcha->getDatabase()->real_escape_string($CaptchaInstance->OwnerID),
|
||||||
|
'enabled' => (int)$CaptchaInstance->Enabled,
|
||||||
|
'firewall_options' => $this->vcaptcha->getDatabase()->real_escape_string(ZiProto::encode($CaptchaInstance->FirewallOptions->toArray())),
|
||||||
|
'created_timestamp' => $this->vcaptcha->getDatabase()->real_escape_string($CaptchaInstance->CreatedTimestamp),
|
||||||
|
'last_updated_timestamp' => $this->vcaptcha->getDatabase()->real_escape_string($CaptchaInstance->LastUpdatedTimestamp)
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,123 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/** @noinspection PhpMissingFieldTypeInspection */
|
||||||
|
|
||||||
|
namespace vCaptcha\Objects;
|
||||||
|
|
||||||
|
use vCaptcha\Abstracts\CaptchaType;
|
||||||
|
use vCaptcha\Objects\CaptchaInstance\FirewallOptions;
|
||||||
|
|
||||||
|
class CaptchaInstance
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The ID of the captcha instance
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $ID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The ID of the owner of this captcha instance
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $OwnerID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The secret key used for creating and validating
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $SecretKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates if the captcha instance is enabled or not
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $Enabled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The captcha type that is used for this captcha
|
||||||
|
*
|
||||||
|
* @var string|CaptchaType
|
||||||
|
*/
|
||||||
|
public $CaptchaType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Firewall options for this captcha instance
|
||||||
|
*
|
||||||
|
* @var FirewallOptions
|
||||||
|
*/
|
||||||
|
public $FirewallOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Unix Timestamp for when this captcha instance was last updated
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
public $LastUpdatedTimestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Unix Timestamp for when this captcha instance was created
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
public $CreatedTimestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array representation of the object
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->ID,
|
||||||
|
'owner_id' => $this->OwnerID,
|
||||||
|
'secret_key' => $this->SecretKey,
|
||||||
|
'enabled' => $this->Enabled,
|
||||||
|
'captcha_type' => $this->CaptchaType,
|
||||||
|
'firewall_options' => $this->FirewallOptions->toArray(),
|
||||||
|
'last_updated_timestamp' => $this->LastUpdatedTimestamp,
|
||||||
|
'created_timestamp' => $this->CreatedTimestamp
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs object from an array representation
|
||||||
|
*
|
||||||
|
* @param array $data
|
||||||
|
* @return CaptchaInstance
|
||||||
|
*/
|
||||||
|
public static function fromArray(array $data): CaptchaInstance
|
||||||
|
{
|
||||||
|
$CaptchaInstanceObject = new CaptchaInstance();
|
||||||
|
|
||||||
|
if(isset($data['id']))
|
||||||
|
$CaptchaInstanceObject->ID = $data['id'];
|
||||||
|
|
||||||
|
if(isset($data['owner_id']))
|
||||||
|
$CaptchaInstanceObject->OwnerID = $data['owner_id'];
|
||||||
|
|
||||||
|
if(isset($data['secret_key']))
|
||||||
|
$CaptchaInstanceObject->SecretKey = $data['secret_key'];
|
||||||
|
|
||||||
|
if(isset($data['enabled']))
|
||||||
|
$CaptchaInstanceObject->Enabled = $data['enabled'];
|
||||||
|
|
||||||
|
if(isset($data['captcha_type']))
|
||||||
|
$CaptchaInstanceObject->CaptchaType = $data['captcha_type'];
|
||||||
|
|
||||||
|
if(isset($data['firewall_options']))
|
||||||
|
$CaptchaInstanceObject->FirewallOptions = FirewallOptions::fromArray($data['firewall_options']);
|
||||||
|
|
||||||
|
if(isset($data['last_updated_timestamp']))
|
||||||
|
$CaptchaInstanceObject->LastUpdatedTimestamp = $data['last_updated_timestamp'];
|
||||||
|
|
||||||
|
if(isset($data['created_timestamp']))
|
||||||
|
$CaptchaInstanceObject->CreatedTimestamp = $data['created_timestamp'];
|
||||||
|
|
||||||
|
return $CaptchaInstanceObject;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/** @noinspection PhpMissingFieldTypeInspection */
|
||||||
|
|
||||||
|
namespace vCaptcha\Objects\CaptchaInstance;
|
||||||
|
|
||||||
|
use vCaptcha\Abstracts\CountryFilterMode;
|
||||||
|
|
||||||
|
class FirewallOptions
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Indicates if tor connections should be blocked
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $DisallowTor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates if abusive hosts should be blocked
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $DisallowAbusiveHosts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* The list of country codes
|
||||||
|
*
|
||||||
|
* @var string[]
|
||||||
|
*/
|
||||||
|
public $CountryFilterList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string|CountryFilterMode
|
||||||
|
*/
|
||||||
|
public $CountryFilterMode;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->DisallowTor = false;
|
||||||
|
$this->DisallowAbusiveHosts = true;
|
||||||
|
$this->CountryFilterList = [];
|
||||||
|
$this->CountryFilterMode = CountryFilterMode::Disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'disallow_tor' => $this->DisallowTor,
|
||||||
|
'disallow_abusive_hosts' => $this->DisallowAbusiveHosts,
|
||||||
|
'country_filter_list' => $this->CountryFilterList,
|
||||||
|
'country_filter_mode' => $this->CountryFilterMode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs object from an array representation of the object
|
||||||
|
*
|
||||||
|
* @param array $data
|
||||||
|
* @return FirewallOptions
|
||||||
|
*/
|
||||||
|
public static function fromArray(array $data): FirewallOptions
|
||||||
|
{
|
||||||
|
$FirewallOptionsObject = new FirewallOptions();
|
||||||
|
|
||||||
|
if(isset($data['disallow_tor']))
|
||||||
|
$FirewallOptionsObject->DisallowTor = (bool)$data['disallow_tor'];
|
||||||
|
|
||||||
|
if(isset($data['disallow_abusive_hosts']))
|
||||||
|
$FirewallOptionsObject->DisallowAbusiveHosts = (bool)$data['disallow_abusive_hosts'];
|
||||||
|
|
||||||
|
if(isset($data['country_filter_list']))
|
||||||
|
$FirewallOptionsObject->CountryFilterList = $data['country_filter_list'];
|
||||||
|
|
||||||
|
if(isset($data['country_filter_mode']))
|
||||||
|
$FirewallOptionsObject->CountryFilterMode = $data['country_filter_mode'];
|
||||||
|
|
||||||
|
return $FirewallOptionsObject;
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,6 +25,12 @@
|
||||||
"version": "latest",
|
"version": "latest",
|
||||||
"source": "default@github/intellivoid/acm2",
|
"source": "default@github/intellivoid/acm2",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"package": "com.symfony.uid",
|
||||||
|
"version": "latest",
|
||||||
|
"source": "symfony@composer/uid",
|
||||||
|
"required": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"configuration": {
|
"configuration": {
|
||||||
|
|
Loading…
Reference in New Issue