You are here

httpbl.install in http:BL 8

Same filename and directory in other branches
  1. 5 httpbl.install
  2. 6.2 httpbl.install
  3. 6 httpbl.install
  4. 7 httpbl.install

Install, update and uninstall functions for the httpbl module.

File

httpbl.install
View source
<?php

/**
 * @file
 * Install, update and uninstall functions for the httpbl module.
 */

/**
 * Implements hook_requirements().
 *
 * Shows some basic usage statistics for the module in the Status Report.
 */
function httpbl_requirements($phase) {
  $requirements = array();
  if ($phase == 'runtime') {

    // Checks for Access Key, and Comment or Page Checking enabled.
    if (!\Drupal::state()
      ->get('httpbl.accesskey') ?: NULL || !\Drupal::state()
      ->get('httpbl.check') ?: HTTPBL_CHECK_NONE) {

      // Make Config page link.
      $config_link = \Drupal\Core\Link::fromTextAndUrl(t('Http:BL config'), \Drupal\Core\Url::fromRoute('httpbl.admin_config'))
        ->toString();
      $requirements['httpbl'] = array(
        'description' => t('IP blacklist lookups are currently disabled; enter your access key on the @settings page and enable checks to enable blacklist lookups.', array(
          '@settings' => $config_link,
        )),
        'severity' => REQUIREMENT_WARNING,
        'value' => t('Disabled'),
      );

      // Checks for page bottom honeypot links.
      if (\Drupal::state()
        ->get('httpbl.footer') ?: FALSE) {
        $requirements['httpbl']['severity'] = REQUIREMENT_INFO;
      }
    }
    else {

      // Gather the stats to be displayed.
      $stat_black = \Drupal::state()
        ->get('httpbl.stat_black');
      $stat_comment = \Drupal::state()
        ->get('httpbl.stat_comment');
      $stat_grey = \Drupal::state()
        ->get('httpbl.stat_grey');

      // Check of stats collecting/display is enabled.
      if (!\Drupal::state()
        ->get('httpbl.stats') ?: FALSE) {
        $requirements['httpbl'] = array(
          'description' => t('Http:BL is enabled.'),
          'severity' => REQUIREMENT_OK,
          'value' => t('Enabled'),
        );
      }
      elseif (\Drupal::state()
        ->get('httpbl.check') == HTTPBL_CHECK_COMMENTS) {
        $requirements['httpbl'] = array(
          'description' => t('Http:BL is enabled and has blocked @c comments.', array(
            '@c' => $stat_comment,
          )),
          'severity' => REQUIREMENT_OK,
          'value' => t('Enabled'),
        );
      }
      elseif (\Drupal::state()
        ->get('httpbl.check') == HTTPBL_CHECK_ALL) {
        $requirements['httpbl'] = array(
          'description' => t('Http:BL is enabled and has blocked @t visits (@b blacklisted and @g greylisted).', array(
            '@t' => $stat_grey + $stat_black,
            '@b' => $stat_black,
            '@g' => $stat_grey,
          )),
          'severity' => REQUIREMENT_OK,
          'value' => t('Enabled'),
        );

        // Show a status error if core Internal Page Cache (page_cache) is enabled.
        if (\Drupal::hasService('http_middleware.page_cache')) {
          $requirements['httpbl'] = array(
            'title' => t('Http:BL'),
            'description' => t('Using HttpBL for evaluating page requests is allowed but NOT recommended when core extension Internal Page Cache (page_cache) enabled.', array()),
            'severity' => REQUIREMENT_ERROR,
          );
          $requirements['httpbl']['description'] .= ' ' . t('Recommended action: Configure Http:BL for comment blocking only or uninstall page_cache. Note: Use with Internal Dynamic Page Cache (dynamic_page_cache) is ok.');
          return $requirements;
        }

        // Checks if also auto-banning blacklisted IPs (via the Core Ban module).
        if (\Drupal::state()
          ->get('httpbl.storage') == HTTPBL_DB_HH_DRUPAL) {
          $requirements['httpbl']['severity'] = REQUIREMENT_INFO;
          $requirements['httpbl']['description'] .= ' ' . t('Auto-banning of blacklisted IPs enabled.');
        }
        else {
          $requirements['httpbl']['severity'] = REQUIREMENT_INFO;
          $requirements['httpbl']['description'] .= ' ' . t('Auto-banning of blacklisted IPs DISABLED.');
        }
      }

      // Checks if also using honeypot page bottom links.
      if (!\Drupal::state()
        ->get('httpbl.footer') ?: FALSE) {
        $requirements['httpbl']['severity'] = REQUIREMENT_INFO;
        $requirements['httpbl']['description'] .= ' ' . t('Page bottom Honeypot links are DISABLED.');
      }
      else {
        $requirements['httpbl']['severity'] = REQUIREMENT_INFO;
        $requirements['httpbl']['description'] .= ' ' . t('Page bottom Honeypot links enabled.');
      }
    }
    $requirements['httpbl']['title'] = t('Http:BL');
  }
  return $requirements;
}

/**
 * Implements hook_uninstall().
 */
function httpbl_uninstall() {

  // Clean up any remaining variables (located in key_value table).
  // @todo Is this even needed anymore?  Find out.
  db_delete('key_value')
    ->condition('name', 'httpbl.%%', 'LIKE')
    ->execute();
}

Functions