/** * @return CsbHttpBl */ public static function getInstance() { if (!self::$_instance) { self::$_instance = new self(); } return self::$_instance; }
public function isBlockIp($ip, $details = array()) { $visitorType = CsbHttpBl::getInstance()->getVisitorType($ip); // for now only check is it search engine if ($visitorType === CsbHttpBl::VISITOR_SEARCH_ENGINE) { $tillTime = date('Y-m-d H:i:s', strtotime("+ " . self::SEARCH_ENGINE_CACHE_TIME_DAYS . " days")); $this->addIpInfo($ip, self::TYPE_SEARCH_ENGINE, $tillTime); CsbLog::model()->log($ip, CsbLog::TYPE_SEARCH_ENGINE, $tillTime, $details); return false; } else { if (empty($details['block time'])) { throw new App_Exception_System("Param 'blockTime' is not set"); } $blockTillTime = date('Y-m-d H:i:s', strtotime("+ " . $details['block time'] . " second")); $this->addIpInfo($ip, self::TYPE_BLOCKED, $blockTillTime); CsbLog::model()->log($ip, CsbLog::TYPE_LOCK, $blockTillTime, $details); return true; } }
/** * @param $ip * @param $type * @param $tillTime * @param $details * @return mixed */ public function log($ip, $type, $tillTime, $details) { $ipInfo = CsbHttpBl::getInstance()->getHttpBlInfo($ip); $model = new CsbLog(); $model->setAttributes(array('ip' => ip2long($ip), 'type' => $type, 'create_time' => date('Y-m-d H:i:s'), 'till_time' => $tillTime, 'account_id' => Yii::app()->user->getId(), 'request_info' => CsbYaml::dump($this->_filterServerInfo()), 'ip_info' => CsbYaml::dump($ipInfo), 'details' => CsbYaml::dump($details))); $model->save(); return $model; }