| 
<?php
declare(strict_types=1);
 
 /*
 * sync*gw SpamBot Bundle
 *
 * @copyright  https://syncgw.com, 2013 - 2022
 * @author     Florian Daeumling, https://syncgw.com
 * @license    http://opensource.org/licenses/lgpl-3.0.html
 */
 
 namespace syncgw\SpamBotBundle\Module;
 
 use Contao\Module;
 
 class SpamBotIP extends Module {
 
 /*
 * @var string
 */
 protected $strTemplate = 'mod_spambot';
 
 public function generate(): string {
 if (TL_MODE === 'BE') {
 $obj = new \Contao\BackendTemplate('be_wildcard');
 $obj->wildcard = '### SPAMBOT IP PROTECTION ###';
 $obj->title = $this->headline;
 $obj->id = $this->id;
 $obj->link = $this->name;
 
 return $obj->parse();
 }
 
 return parent::generate();
 }
 
 protected function compile(): void {
 
 // perform checking
 $obj = new SpamBotMod(intval($this->id));
 
 // get IP address
 $ip = $obj->getIP();
 
 // perform checking
 list($ptyp, $pstat) = $obj->checkIP($ip);
 if (!($ptyp & (SpamBot::SPAM | SpamBot::BLACKL)))
 return;
 
 // load/save information
 $v = [
 'clientIP' => $ip,
 'Typ'      => SpamBot::$Status[$ptyp],
 'Status'   => $pstat,
 ];
 $this->setCookie('SpamBot', base64_encode(serialize($v)), 0);
 
 if ($obj->spambot_page)
 $this->redirectToFrontendPage($obj->spambot_page);
 else {
 // set flag for SpamBot::clearTemplate()
 $GLOBALS['SpamBot']['Catch'] = !$obj->spambot_msg ? $ptyp : NULL;
 // make data available for template processing
 $this->Template->clientIP = $v['clientIP'];
 $this->Template->Typ = $v['Typ'];
 $this->Template->Status = $v['Status'];
 }
 }
 
 }
 
 ?>
 |