Drupal → Добавляем в системный журнал функцию блокировки по ip

22.02.2011

Код добавляет в записи системного журнала ссылку на блокировку адреса:

После клика на ссылке, адрес попадает в чёрный список (admin/user/rules).

/**
 * Implements hook_menu().
 */
function mymodule_menu() {
  $items = array();

  $items['ban/%'] = array(
    'page callback' => 'mymodule_ban_by_ip',
    'page arguments' => array(1),
    'access arguments' => array('administer permissions'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

/**
 * Implements template_preprocess_page().
 */
function mymodule_preprocess_page(&$vars) {
  $item = menu_get_item();
  if ($item['path'] == 'admin/reports/event/%') {
    $link = '<a href="' . $GLOBALS['base_path'] . 'ban/$1?destination=' . $_GET['q'] . '">забанить</a>';
    $vars['content'] = preg_replace(
      '#<th>' . t('Hostname') . '</th><td>(.+?)</td>#',
      '<th>' . t('Hostname') . '</th><td>$1&nbsp;&nbsp;[ ' . $link . ' ]</td>',
      $vars['content']
    );
  }
}

/**
 * Ban user by IP.
 */
function mymodule_ban_by_ip($ip) {
  if ($ip != ip_address()) {
    db_query("INSERT INTO {access} (mask, type, status) VALUES ('%s', '%s', %d)", $ip, 'host', 0);
    drupal_set_message('Адрес заблокирован');
  }

  drupal_goto();
}
Написанное актуально для
Drupal 6
Похожие записи

Комментарии

Эта функция есть только в данном модуле или в самом друпале? Проще говоря, модуль только добавляет ссылку на бан ип или добавляет функцию бана в друпал?

функция по ограничению доступа есть в ядре шестого друпала, из семёрки она убрана

вандам
14.12.2012, 15:49

у меня почему то при нажатии на линк пустая белая страница с адресом /ban/27.159.194.78?destination=admin/reports/event/3116

вандам
14.12.2012, 15:53

что я неправильно сделал? создал ipban папку, файлы ipban.module, ipban.info
функции переименовал в ipban_menu(), ipban_preprocess_page(&$vars), ipban_ban_by_ip($ip)

Гость
12.02.2013, 15:34

А можно по подробней, куда этот код вставить?

Гость
12.12.2015, 17:06

Переехал на новый сервер и чет перестал модуль работать. В записи системного журнала показывает ip адрес не посетителя-комментатора, а ip адрес сайта. Как исправить?

Первый раз самозабанился, пришлось в phpmyadmin вручную удалить запись в таблице acess))

Добавить комментарий