1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Любая версия [Free][PW] Game services proxy

Тема в разделе 'PW Разработки', создана пользователем salitypw, 19 ноя 2017.

  1. TopicStarter Overlay

    salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Запилил на досуге Proxy для сервисов сервера.
    Proxy позволит следить за всеми пакетами, которые передаются между сервисами и (при необходимости) их модифицировать, дропать или же использовать кастомные обработчики для определенных пакетов.

    Область применения самая разнообразная - от банального мгновенного автобана за мат и до фиксов различных уязвимостей, которые можно решить "валидацией" пакетов (создание оборов/друлей с женским/мужским полом, OOG флуд в чат из-за которого у игроков виснет клиент, и т. д.), что особо актуально для владельцев серверов старых версий.
    Или же можно использовать для отладки - реализовать обработчик, который бы сохранял последние N пакетов пришедших к GS перед падением, чтобы потом среди них искать "виновника" и потом запилить фикс.

    Также можно реализовать различные свистоперделки для сервера, начиная от, к примеру, вывода игрового чата на сайте и заканчивая какой-то сложной логикой.
    К примеру, можно реализовать что-то вроде автоматизированной "викторины" для игроков - в системный чат в рандомное время писать вопросы и ждать ответ в мировой чат. Первому, кто правильно ответил, присылать определенное вознаграждение.
    Все лишь ограничивается фантазией администратора сервера и возможностью реализации идеи на пакетном уровне.

    Установка:
    1) Сначала на сервер необходимо установить Node.js и NPM

    https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04
    2) Далее выполняем команды:
    sudo npm install -g n
    sudo n latest
    sudo npm install -g npm
    sudo npm install -g pm2
    3) Далее в любом удобном месте создаем директорию "proxy", где будут лежать все наши файлы.
    Я бы создал ее прямо в директории с сервером.
    Переходим в директорию "proxy" и выполняем команды:
    npm install pw-service-proxy
    npm install pw-service-proxy-handlers

    После всех этих действий у вас будет готово окружение для запуска proxy.

    Пример использования:
    Для примера сделаем Proxy для gamedbd с выводом в консоль всех пакетов, которых приходят и уходят.
    1) Переходим в директорию gamedbd и открываем файл gamesys.conf
    2) В секции [GameDBServer] меняем значение для port из 29400 на 39400
    3) Переходим в созданную нами директорию proxy
    4) Создаем файл gamedbd-proxy.js и копируем в него следующий код:
    Код:
    'use strict';
    
    const PwServiceProxy = require('pw-service-proxy');
    const handlers = require('pw-service-proxy-handlers');
    
    let proxy = new PwServiceProxy;
    
    proxy.setServerHandlers([
        handlers.consolePacketLogger({
            title: '------------------- GameDB => Client -------------------'
        })
    ]).setClientHandlers([
        handlers.consolePacketLogger({
            title: '------------------- Client => GameDB -------------------'
        })
    ]).start({
        listen: {
            host: '127.0.0.1',
            port: 29400
        },
        connect: {
            host: '127.0.0.1',
            port: 39400
        }
    });
    
    5) Далее запускаем Proxy командой:
    node ./gamedbd-proxy.js
    6) Запускаем сервер игры.

    Далее просто наблюдаете за Proxy.
    В консоли будет что-то подобное:
    [​IMG]
    (Client - другой сервис, который установил соединение с GameDB)

    Подобным образом можно поступить и с остальными сервисами (кроме glinkd)

    Сорцы - https://github.com/mvcbox/node-pw-service-proxy

    P. S.
    Хочу еще раз напомнить, что это не какой-то уже готовый античит с фиксом всех багов, а инструмент, на базе которого можно много чего реализовать.

    Многие могут спросить - зачем это надо, если есть другие подобные решения?
    Ответ:
    1) Это бесплатно.
    2) Простота - все написано на JS, что позволит самостоятельно попытаться написать свои обработчики для Proxy, или же найти того, кто сделает это относительно недорого. Инфу о пакетах можно найти здесь - http://pwdev.ru/

    Благодарю за внимание :)
    Последние данные очков репутации:
    Гадес: 1 Очко 19 ноя 2017
    Mr.Fleks: 5 Очки 21 ноя 2017
    Последнее редактирование: 17 окт 2018
    Шифер, JonMagon, Denis-root и 10 другим нравится это.
  2. Penelope Пользователи

    Сообщения:
    124
    Лайки:
    74
    Репутация:
    1
    Умничка! Та самая идея, которую давно пора было реализовать. Поздравляю с релизом! Бегом делать fork проекта на гите
  3. TopicStarter Overlay

    salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Спасибо конечно, но я бы это не назвал релизом :D
    Там меньше 200 строк кода, которые написаны спонтанно после того, как я решил поностальгировать и поиграть на одном старом сервере, где меня хорошо "встретили" местные OOG'шники :D
    Penelope нравится это.
  4. TopicStarter Overlay

    salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Обновлено до версии 3.0.3
    1) Работает на последней версии Node.js
    2) Выпиливание лишних зависимостей
    3) Список обработчиков можно менять "на лету" (соответственно - без обрыва подключений) при помощи всё тех де методов setServerHandlers и setClientHandlers
    4) Различные мелкие правки без потери обратной совместимости
    Denis-root нравится это.
  5. TopicStarter Overlay

    salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Обновлено до версии 3.1.1
    Увеличена пропускная способность с 150 000 - 180 000 до 220 000 - 250 000 пакетов в секунду.
    Denis-root и alexdnepro нравится это.
  6. JonMagon Программист Пользователи Open Source Contributor

    Сообщения:
    805
    Лайки:
    809
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    Опять же в рекламу дискорда :3
    Можно к этому делу прилепить бота на ноде, который будет кидать уведомления в сервер дискорда и обрабатывать команды.
    Там уже на что фантазии хватит.
  7. TopicStarter Overlay

    salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Да, была такая идея запилить чат-бота внутри игры :D
Черновик сохранён Черновик удалён
Similar Threads
  1. Evgeniy
    Ответов:
    8
    Просмотров:
    2.923
  2. Fituchini
    Ответов:
    7
    Просмотров:
    2.038
  3. Destonk
    Ответов:
    16
    Просмотров:
    2.970
  4. freepvps
    Ответов:
    12
    Просмотров:
    5.157
  5. salitypw
    Ответов:
    15
    Просмотров:
    6.149
Загрузка...

Поделиться этой страницей