Commit 101f09a3 authored by Steven Ayers's avatar Steven Ayers
Browse files

Issue #1936276 by bluegeek9: IPv6 in database

parent 7ab9823c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -98,7 +98,7 @@ class HitDetails extends ControllerBase {
          'title'  => $this->t('Whois lookup'),
        ],
      ];
      $ip   = inet_ntop($hit_details->visitors_ip);
      $ip   = $hit_details->visitors_ip;
      $user = $this->entityTypeManager()->getStorage('user')->load($hit_details->visitors_uid);
      // @TODO make url, referer and username as link
      $array = [
+2 −2
Original line number Diff line number Diff line
@@ -167,14 +167,14 @@ class Hits extends ControllerBase {
      ]
    );
    $query->fields('u', ['name', 'uid']);
    $query->condition('v.visitors_ip', inet_pton($host), '=');
    $query->condition('v.visitors_ip', $host, '=');
    visitors_date_filter_sql_condition($query);
    $query->orderByHeader($header);
    $query->limit($items_per_page);

    $count_query = $this->database->select('visitors', 'v');
    $count_query->addExpression('COUNT(*)');
    $count_query->condition('visitors_ip', inet_pton($host));
    $count_query->condition('visitors_ip', $host);
    visitors_date_filter_sql_condition($count_query);
    $query->setCountQuery($count_query);
    $results = $query->execute();
+1 −1
Original line number Diff line number Diff line
@@ -154,7 +154,7 @@ class Hosts extends ControllerBase {
    $i = 0 + $page * $items_per_page;

    foreach ($results as $data) {
      $ip = inet_ntop($data->visitors_ip);
      $ip = $data->visitors_ip;
      $visitors_host_url = Url::fromRoute('visitors.host_hits', ["host" => $ip]);
      $visitors_host_link = Link::fromTextAndUrl($ip, $visitors_host_url);
      $visitors_host_link = $visitors_host_link->toRenderable();
+1 −1
Original line number Diff line number Diff line
@@ -232,7 +232,7 @@ class KernelTerminateSubscriber implements EventSubscriberInterface {
   *   IPv4) Internet Protocol dotted address.
   */
  protected function getIpStr() {
    return inet_pton($this->request->getClientIp());
    return $this->request->getClientIp();
  }

  /**
+20 −7
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ function visitors_schema() {
      ],
      'visitors_ip' => [
        'type' => 'varchar',
        'length' => 32,
        'length' => 45,
        'not null' => TRUE,
        'default' => '',
      ],
@@ -141,9 +141,19 @@ function visitors_update_8213(&$sandbox) {
  $database = Database::getConnection();

  if (!isset($sandbox['progress'])) {
    $database->schema()
      ->changeField('visitors', 'visitors_ip', 'visitors_ip', [
        'type' => 'varchar',
        'length' => 45,
        'not null' => TRUE,
        'default' => '',
      ]);

    $sandbox['progress'] = 0;
    $sandbox['last_id'] = 0;
    $sandbox['max'] = $database->query('SELECT COUNT(visitors_id) FROM {visitors}')
    $sandbox['max'] = $database->select('visitors', 'v')
      ->countQuery()
      ->execute()
      ->fetchField();
  }

@@ -159,17 +169,20 @@ function visitors_update_8213(&$sandbox) {

  foreach ($logs as $log) {
    $ip_address = long2ip($log->visitors_ip);
    $packed = inet_pton($ip_address);

    if ($packed != FALSE) {
    if ($ip_address === FALSE) {
      continue;
    }
    try {
      $database->update('visitors')
        ->fields([
          'visitors_ip' => $packed,
          'visitors_ip' => $ip_address,
        ])
        ->condition('visitors_id', $log->visitors_id)
        ->execute();
    }

    catch (\Exception $e) {
      watchdog_exception('visitors', $e);
    }
    $sandbox['progress'] += 1;
    $sandbox['last_id'] = $log->visitors_id;
  }