NeoStats - заброшенный сервис ведения WEB статистики IRC сети, который умеет генерировать лишь один HTML файл. Его более функциональный и современный аналог - Denora Stats.

Установка NeoStats

Работаем через SSH клиент в Linux сервере Debian 7 от обычного пользователя.
  1. Переходим в папку, в которую будем устаналивать NeoStats:
    cd /home/dim/irc
  2. Скачиваем NeoStats:
    wget https://raw.githubusercontent.com/dimst/IRC/master/neostats-3.0.1.tar.gz
  3. Распаковываем скачанный архив:
    tar xf neostats-3.0.1.tar.gz
  4. Для удобства переименовываем распакованную директорию:
    mv NeoStats-3.0.1 neostats-src
  5. Входим в директорию с исходниками:
    cd neostats-src
  6. Запускаем конфирурацию с указанием папки, куда будет установлен NeoStats:
    ./configure --prefix=/home/dim/irc/neostats
  7. Запускаем компиляцию:
    make
    Если процесс завершается с ошибкой:
    Linking neostats: [ERROR]
    gcc -I../include -I../lib/pcre -I../lib/curl -DNEOSTATSCORE -D_REENTRANT -D_G
    NU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/
    include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/perl/5.14/CORE
    -I../lib/event -I../lib/nxml -g -O2 -g -rdynamic -I/usr/lib/perl/5.14/CORE -D
    NDEBUG -fno-strict-aliasing -fno-strict-aliasing -g -rdynamic -o .libs/neosta
    ts auth.o bans.o bots.o channels.o commands.o confuse.o confuselexer.o nsdba.
    o conf.o dl.o dns.o exclude.o hash.o ircstring.o ircprotocol.o ircsend.o ircr
    ecv.o lang.o list.o log.o main.o match.o misc.o modules.o nsevents.o helpstri
    ngs.o servers.o services.o signals.o sock.o support.o timer.o transfer.o user
    s.o modes.o ctcp.o dcc.o nsmemory.o base64.o numerics.o settings.o botinfo.o
    adnscheck.o adnsevent.o adnsg../lib/.libs/libneostats.so: undefined reference
    to `SSLv2_client_method'
    collect2: error: ld returned 1 exit status
    Заново запустим конфигурацию без поддержки SSL:
    ./configure --without-ssl --prefix=/home/dim/irc/neostats
    и повторим компиляцию:
    make
  8. Запускаем инсталляцию:
    make install
  9. Переходим в директорию с установленным NeoStats:
    cd ../neostats
  10. Создаём конфигурационный файл neostats.conf:
    nano neostats.conf

Настройка NeoStats

Редактируем neostats.conf под свой IRC сервер:
#######################################
# Конфигурационный файл neostats.conf
# для NeoStats 3.0.1
# Инструкция по установке и настройке
# https://dim.st/irc/neostats
#######################################

#######################################
# ОСНОВНЫЕ ПАРАМЕТРЫ
#######################################
ServerConfig 
{
  # название сервера NeoStats
  Name = "neostats.dreamterra.net"

  # описание сервера NeoStats
  Info = "Сервер статистики NeoStats"

  # служебный канал, куда будет логировать ConnectServ и другие модули
  ServiceChannel = "#services"

  # нумерик (номер) сервера NeoStats, который не должен совпадать с номером IRC-сервера
  ServerNumeric = 17

  # тип IRC-сервера
  Protocol = "unreal32"

  #BindTo = "0.0.0.0"
}


#######################################
# ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
#######################################

Options 
{
  # ник главного сервисного бота NeoStats
  RootNick = "NeoServ"

  # хост сервисных ботов NeoStats
  ServicesHost = "Service"

  # НЕ загружать главного сервисного бота NeoStats? true - да, false - нет
  NOLOAD = false

  # интервал перезапуска NeoStats после netsplit
  ReconnectTime = 10

  # использовать PRIVMSG? true - да, false - нет. Не рекомендуется включать
  UsePrivmsg = false

  # NeoStats и StatServ могут использовать только IRC-операторы? true - да, false - нет
  OperOnly = false

  # синхронизация NeoStats с временем сервера
  ServerSettime = 24

  # формат хранения баз данных. варианты: bdb или gdbm
  # по-умолчанию gdbm. лучше оставить как есть
  DatabaseType = "gdbm"

  # формат системных логов NeoStats. не столь важно, оставим как есть
  LogFileNameFormat = "-%m-%d"

}

#######################################
# ЛИНК-БЛОК
#######################################

Servers 
{
  # IP-адрес IRC-сервера
  IpAddress = "127.0.0.1"

  # порт для линка с IRC-сервером
  # этот порт должен быть открыт в IRC-сервере (listen)
  Port = 5555

  # пароль для линка с IRC-сервером
  # он должен совпадать с паролем в LINK-блоке IRC-сервера
  Password = "123456"
}

#######################################
# МАСКА РУТА (главного админа) NeoStats
#######################################

ServiceRoot { Mask = "DiM!*@*" }

#######################################
# МОДУЛИ
#######################################

Modules
{ 
  MODULENAME =
  {
    # собирает статистику о сети и, если включено,
    # пишет в html-файл для web-статистики
    "statserv",

    # на сервисном канале логирует подключения/отключения,
    # смены ников, уходы в away
    "connectserv",

    # управляет лимотом (мод +l) на канале,
    # если включить (/msg limitserv add #канал)
    "limitserv",

    # кривой модуль оповещения о разных видах флуда на сервере
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    #"floodserv",

    # кривой модуль логирования каналов
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    #"logserv",

    # модуль создавался для защиты IRC-сети от троянов и подобного.
    # проверяет версию подключающихся и банит, если что то находит
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    # читайте http://dimlife.com/NeoStats?Modules
    #"secureserv",

    # непонятно, зачем этот модуль. идет в стандартной сборке
    # можете раскомментировать и протестировать
    #"textserv",

    # модуль, который может подсказать, когда в сети был тот, или иной ник
    # работает примерно как скрипт у eggdrop'a !seen
    # этот модуль требует дополнительной установки
    #"seenserv",

    # логирует команды иркопов, применимые к NeoStats. по сути бесполезный модуль
    # можете раскомментировать и протестировать
    #"operlog",

    # авторизация пользователей на основе их модов
    # можете раскомментировать и протестировать
    #"ircdauth",

    # авторизация пользователей на основе их маски
    # можете раскомментировать и протестировать
    #"extauth",

    # какой-то модуль цитирования сообщений сервисов
    # можете раскомментировать и протестировать
    #"quoteserv",

    # аналог BOPM - сканер по черным листам
    # работает криво, можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    #"blsb",

    # аналог BOPM - сканер по портам. работает криво
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    #"opsb",

    # модуль обновления чего-то
    # можете раскомментировать и протестировать
    #"update",

    # модуль виртуальных хостов. работает криво
    # у Anope есть свой Hostserv
    # можете раскомментировать и протестировать
    #"hostserv",

    # непонятный модуль
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    #"profileserv",

    # IRC-игра
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    #"triviaserv",

    # тоже IRC-игра
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    # читайте http://dimlife.com/NeoStats?Modules
    #"warserv",

    # и это IRC-игра
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    #"gamesserv",

    # это тоже IRC-игра
    # можете раскомментировать и протестировать
    # этот модуль требует дополнительной установки
    #"yahtzeeserv",
  }
}

#######################################
# ПОДКЛЮЧЕНИЕ К СЕТИ NeoStats
#######################################

# это уже не актуально, потом что проект NeoStats закрыт и
# уже никакой сети NeoStats нет ( http://neostats.net/ )
#NeoNet { UserName = "dreamterra"
#         PassWord = "123456"
#         Port = 2960
#         Connect = "yes" }
                               
#######################################

Запуск NeoStats

./neostats start
В IRC проверяем, прилинковался ли сервис к IRC-серверу
/whois NeoServ
. Если нет, смотрим ошибки в логах сервиса
/home/dim/neostats/logs/
.

Настройка автозапуска NeoStats (crontab)

Crontab через каждый N промежуток времени запускает указанный в его списке файл.
Вызываем редактор crontab:
crontab -e
вставляем правило:
*/10 * * * * /home/dim/irc/neostats/neostats -c > /dev/null 2>&1
В конце файла обязательно оставляем пустую строку. Данное правило означает, что каждые 10 минут будет выполняться файл neostats.

Модули NeoStats

В стандартный пакет NeoStats входят следующие модули:

Установка дополнительного модуля

Для примера установим SecureServ.
  1. Скачиваем SecureServ:
    wget https://raw.githubusercontent.com/dimst/IRC/master/secureserv-3.0.a4-419.tar.gz
  2. Распаковываем скачанный архив:
    tar xf secureserv-3.0.a4-419.tar.gz
  3. Для удобства переименовываем распакованную директорию:
    mv SecureServ-3.0.a4-419 secureserv-src
  4. Входим в директорию с исходниками:
    cd secureserv-src
  5. Запускаем конфирурацию:
    ./configure
  6. Запускаем компиляцию:
    make
  7. Запускаем инсталляцию:
    make install
    Если инсталяция завершилась удачно, то файл secureserv.so должен появиться в директории
    /home/dim/irc/neostats/modules
    . Проверим:
    ls -1 /home/dim/irc/neostats/modules
Аналогично устанавливаются другие модули для NeoStats. Их можно найти в файлом архиве.