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

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

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

  1. TopicStarter Overlay

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

    Сообщения:
    673
    Лайки:
    457
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Дополнение к предыдущей теме - http://mmorpg-devs.ru/threads/free-pw-game-services-proxy.20065/
    Эта тема, в отличии от предыдущей, нацелена не на разработчиков, а уже на администраторов серверов.

    Здесь (по мере возможностей) я буду бесплатно выкладывать готовые реализации обработчиков для Game services proxy различных фиксов, "плюшек" и т. д. , которые будут собраны вместе в одной библиотеке.
    Сорцы - https://github.com/mvcbox/node-pw-service-proxy-handlers
    (Для использование решений, которые здесь описаны, вам необходимо выполнить установку Game services proxy, которая подробно описана в вышеуказанной теме).
    Приветствуются предложения и пожелания.
    P. S. Если возникли проблемы с установкой Proxy или использованием готовых решений - обращайтесь в личные сообщения.

    1) validatePacketGetSavedMsg
    В этом обработчике реализован фикс проблемы с пакетом GetSavedMsg, которая описана в этой теме - http://mmorpg-devs.ru/threads/Шара-Фикс-доса-трафиком.19288/
    Возможны 2 варианта поведения:
    1) Дропает все пакеты GetSavedMsg
    Код:
    'use strict';
    
    // Какой-то код ...
    
    const handlers = require('pw-service-proxy-handlers');
    
    let handler = handlers.validatePacketGetSavedMsg({
        mode: 'drop'
    });
    
    // Какой-то код ...
    
    2) Дропает пакаты GetSavedMsg, если их количество за единицу времени превышает допустимое значение (задается в конфиге).
    Код:
    'use strict';
    
    // Какой-то код ...
    
    const handlers = require('pw-service-proxy-handlers');
    
    let handler = handlers.validatePacketGetSavedMsg({
        mode: 'limit',
        limitModeOptions: {
            // Максимальное количество пакетов в секунду
            frequency: 10
        }
    });
    
    // Какой-то код ...
    
    ----------------------------------------------------------------------------------------------------------------------------
    2) validatePacketCreateRole
    Этот обработчик проверяет корректность пола для оборотня и друида при создании персонажа.
    Подходит для любой версии сервера.
    Код:
    'use strict';
    
    // Какой-то код ...
    
    const handlers = require('pw-service-proxy-handlers');
    
    let handler = handlers.validatePacketCreateRole();
    
    // Какой-то код ...
    
    Использовать для проверки пакетов, которые идут от glinkd к gdeliveryd.
    ----------------------------------------------------------------------------------------------------------------------------
    3) validateChat

    Этот обработчик контролирует количество сообщений игрока за единицу времени.
    Позволяет избавиться от OOG флуда из-за которого у игроков виснет клиент.
    Если игрок отправляет больше count сообщений за время time, то все последующие его сообщения будут дропаться.
    Подходит для любой версии сервера.
    Код:
    'use strict';
    
    // Какой-то код ...
    
    const handlers = require('pw-service-proxy-handlers');
    let handler = handlers.validateChat({
        count: 2, // количество сообщений
        time: 1000 // миллисекунды
    });
    
    // Какой-то код ...
    
    Использовать для проверки пакетов, которые идут от glinkd к остальным сервисам.

    ----------------------------------------------------------------------------------------------------------------------------
    4) frequencyControl

    Универсальный обработчик, который предназначен для контроля количества пакетов за единицу времени:
    0x4F: 'PublicChat',
    0x12C3: 'FactionChat',
    0x60: 'PrivateChat',
    0xE3: 'ChatRoomSpeak',
    0xFA1: 'TradeStart',
    0xCA: 'AddFriend',
    0хDD: 'ChatRoomInvite'

    Использовать для проверки пакетов, которые идут от glinkd к остальным сервисам.
    Последние данные очков репутации:
    int 3: 1 Очко (Однозначно ценная вещь) 21 ноя 2017
    Desmond Hume: 1 Очко (Отлично) 10 дек 2017
    Последнее редактирование: 21 дек 2017
    devbola, Denis-root, Шифер и 12 другим нравится это.
  2. Mr.Fleks Модератор Команда форума Модератор Old school Пользователи

    Сообщения:
    718
    Лайки:
    366
    Пол:
    Мужской
    Репутация:
    11
    Можно объединить сразу:
    Код:
    TradeStart | 0xFA1
    AddFriend | 0xCA

    1) Дропает все пакеты TradeStart
    2) Дропает пакаты TradeStart, если их количество за единицу времени превышает допустимое значение (задается в конфиге).

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    3) Дропает все пакеты AddFriend
    4) Дропает пакаты AddFriend, если их количество за единицу времени превышает допустимое значение (задается в конфиге).
    salitypw нравится это.
  3. int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    341
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Хорошая тема, полезная.
    Были уже попытки донести до людей полезные инструменты, но тут также важен порог входа. JS простой - и это хорошо.

    Немного критики:
    1. Не увидел взаимодействия с isec/osec. Ставим прокси = забываем про шифрование?
    2. Нужен сериализатор. Те же gs'ные пакеты имеют все один тип - 0x22, а внутри него уже настоящие "подтипы". Без знания о настоящих подтипах фильтровать/блочить будет бессмысленно.
    3. Я бы посмотрел на бенчмарки (RPS)
    Samuel, alexdnepro, salitypw и 2 другим нравится это.
  4. Penelope Пользователи

    Сообщения:
    124
    Лайки:
    74
    Репутация:
    1
    Еще про пакет, который карту владений запрашивает, забыли..
    Так уже для шары все просто вери гуд, и пойдут лесом те кто по 40к просит за это..
    Сериализатор аka ковыряться в содержимом пакете пилить придется, хотя бы для фикса создания оборов женского пола
    salitypw нравится это.
  5. Mr.Fleks Модератор Команда форума Модератор Old school Пользователи

    Сообщения:
    718
    Лайки:
    366
    Пол:
    Мужской
    Репутация:
    11
    Код:
    BattleGetMap | 0x352
    Penelope нравится это.
  6. TopicStarter Overlay

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

    Сообщения:
    673
    Лайки:
    457
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Критика очень приветствуется :)
    1) На данный момент да, это не реализовано. Но с другой стороны это увеличит нагрузку, так как данные надо будет расшифровать, проверить, а потом зашифровать обратно.
    2) Думаю, что это можно будет реализовать в виде обработчиков. Буду очень благодарен за любую информацию о пакете 0x22 :)
    3) Я бы тоже хотел посмотреть, но, к сожалению, на это не хватило вчера времени. В ближайшее время сделаю тесты. На сколько я знаю, то на данный момент Node.js - самое быстрое, что есть среди интерпретируемых решений. Быстрее Node.js только уже что-то компилируемое.
    --- добавлено: 20 ноя 2017 в 13:53 ---
    Спасибо, вечером добавлю :)
    Последнее редактирование модератором: 28 ноя 2017
  7. TopicStarter Overlay

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

    Сообщения:
    673
    Лайки:
    457
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Только что протестировал на ноуте (проц: i7 7700hq):
    1) Запустил "пустышку" - TCP сервер, который отправляет обратно полученные пакеты.
    2) Прокси с 2 обработчиками (для входящего и исходящего трафика).
    3) TCP клиент для генерации трафика.
    Если учитывать трафик, который шел через прокси в обе стороны, то суммарно обрабатывалось примерно до 155 000 пакетов в секунду.

    P. S. Естественно, что в "боевых" условиях это значение будет меньше из-за большего количества обработчиков и их более сложной логики.
    Последнее редактирование: 21 ноя 2017
    Mr.Fleks нравится это.
  8. TopicStarter Overlay

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

    Сообщения:
    673
    Лайки:
    457
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Обновил первое сообщение.
    Добавил обработчик validatePacketCreateRole, который не позволит создать оборотня женского пола или друида мужского пола (из-за чего падает gs).
    Если до этого вы уже устанавливали прокси, то в директории "proxy" просто выполните команды:
    npm install [email protected]
    npm install [email protected]


    Если возникают проблемы с установкой - обращайтесь в ЛС.

    P. S.
    Также хочу поблагодарить ГрУбОсТь и werewolf за предоставленные тестовые сервера :)
    Последнее редактирование: 24 ноя 2017
    Alovar, alexdnepro, Mr.Fleks и 2 другим нравится это.
  9. Penelope Пользователи

    Сообщения:
    124
    Лайки:
    74
    Репутация:
    1
    * Когда ждешь обновления темы от Салити больше чем новый сезон любимого сериала *
    Большущее спасибо за работу над дополнениями! Напишу на будующее.
    Есть такой не сложный баг даже ООГ не нужно - только ловкость рук. Опять проблема идет от расы зооморфов)) Оборотня посадить в образе на пета => скачем по городам, где онлайн и всех(у кого в настройках графики включены тени) выбивает светофором. Как сесть в образе? Просто. Выносят на горячие клавиши F1 "образ" F2 "вызов ездового пета" и одновременно жмутся с клавиатуры. Хот фикс: выключить в настройках тени. Работает на 1.3.6 На версиях выше 1.3.6 баг не проверялся.
  10. Unix Пользователи

    Сообщения:
    1.024
    Лайки:
    331
    Пол:
    Мужской
    Репутация:
    6
    Страна:
    Ukraine Ukraine
    Добавил тебя в скайп, можешь там ответить?
  11. TopicStarter Overlay

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

    Сообщения:
    673
    Лайки:
    457
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Обновил первое сообщение, добавил фикс OOG флуда в чат, из-за которого у игроков виснет клиент.
    Если до этого вы уже устанавливали прокси, то в директории "proxy" просто выполните команды:
    npm install [email protected]
    npm install [email protected]
    Denis-root, san4e3, Тыщ и 3 другим нравится это.
  12. TopicStarter Overlay

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

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

    Сообщения:
    32
    Лайки:
    10
    Пол:
    Мужской
    Репутация:
    0
    Использовать питон для всего этого дела будет целесообразно?
  14. TopicStarter Overlay

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

    Сообщения:
    673
    Лайки:
    457
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Зачем тебе питон?
  15. Шифер Пользователи

    Сообщения:
    32
    Лайки:
    10
    Пол:
    Мужской
    Репутация:
    0
    Обожаю питон.
  16. TopicStarter Overlay

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

    Сообщения:
    673
    Лайки:
    457
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Ну так напиши аналог на питоне, если так удобнее :)
    JonMagon, Denis-root и un712 нравится это.
Черновик сохранён Черновик удалён
Similar Threads
  1. Evgeniy
    Ответов:
    8
    Просмотров:
    2.411
  2. Fituchini
    Ответов:
    7
    Просмотров:
    1.651
  3. Destonk
    Ответов:
    16
    Просмотров:
    2.354
  4. freepvps
    Ответов:
    12
    Просмотров:
    3.995
  5. salitypw

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

    Ответов:
    6
    Просмотров:
    4.594
Загрузка...

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