View source
<?php
namespace Drupal\ip2country\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Locale\CountryManagerInterface;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Drupal\Component\Serialization\Json;
use Drupal\ip2country\Ip2CountryLookupInterface;
use Drupal\ip2country\Ip2CountryManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Ip2CountryController extends ControllerBase {
protected $logger;
protected $countryManager;
protected $ip2countryLookup;
protected $ip2countryManager;
public function __construct(LoggerChannelFactoryInterface $logger, CountryManagerInterface $countryManager, Ip2CountryLookupInterface $ip2countryLookup, Ip2CountryManagerInterface $ip2countryManager) {
$this->logger = $logger;
$this->countryManager = $countryManager;
$this->ip2countryLookup = $ip2countryLookup;
$this->ip2countryManager = $ip2countryManager;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('logger.factory'), $container
->get('country_manager'), $container
->get('ip2country.lookup'), $container
->get('ip2country.manager'));
}
public function updateDatabaseAction($rir) {
$ip2country_config = $this
->config('ip2country.settings');
$watchdog = $ip2country_config
->get('watchdog');
$md5_checksum = $ip2country_config
->get('md5_checksum');
$batch_size = $ip2country_config
->get('batch_size');
$status = $this->ip2countryManager
->updateDatabase($rir, $md5_checksum, $batch_size);
if ($status != FALSE) {
if ($watchdog) {
$this->logger
->get('ip2country')
->notice('Manual database update from @registry server.', [
'@registry' => mb_strtoupper($rir),
]);
}
print Json::encode([
'count' => $this
->t('@rows rows affected.', [
'@rows' => $this->ip2countryManager
->getRowCount(),
]),
'server' => $rir,
'message' => $this
->t('The IP to Country database has been updated from @server.', [
'@server' => mb_strtoupper($rir),
]),
]);
}
else {
if ($watchdog) {
$this->logger
->get('ip2country')
->notice('Manual database update from @registry server FAILED.', [
'@registry' => mb_strtoupper($rir),
]);
}
print Json::encode([
'count' => $this
->t('@rows rows affected.', [
'@rows' => 0,
]),
'server' => $rir,
'message' => $this
->t('The IP to Country database update failed.'),
]);
}
exit;
}
public function lookupAction($ip_address) {
$country_code = $this->ip2countryLookup
->getCountry($ip_address);
if ($country_code) {
$country_list = $this->countryManager
->getList();
$country_name = $country_list[$country_code];
print Json::encode([
'message' => $this
->t('IP Address @ip is assigned to @country (@code).', [
'@ip' => $ip_address,
'@country' => $country_name,
'@code' => $country_code,
]),
]);
}
else {
print Json::encode([
'message' => $this
->t('IP Address @ip is not assigned to a country.', [
'@ip' => $ip_address,
]),
]);
}
exit;
}
}