АнтиРеконнект по IP
#1


Здравствуйте.

Решил написать АнтиРеконнект по IP, в этом случае можно защитить сервер сразу от двух видов атак:
1. Стандартный реконнект собейтом/ботом
2. Join Flood

И возник весьма важный вопрос, как лучше хранить IP игрока (в массиве, enum`e, или как еще?) в течении n-секунд? :bn:
А так же как спустя n-секунд удалять этот IP

Была идея использовать таймер, но каким методом чтобы спустя n-секунд удалять нужный IP из массива/enum`a/или еще откуда то xD. Да и если создавать таймер для каждого вышедшего игрока, может быть плохо :ak:

Главный вопрос: В чём хранить IP игрока, и как его удалить спустя n-секунд

И еще, пробовал использовать вот этот метод: https://sampforum.blast.hk/showthread.php?tid=470156
Не совсем то что нужно.

Заранее спасибо за советы!

Reply
#2

Для начала не использовать тэги форматирование строк там где это не нужно!

И подобных скриптов столько, что хоть *опой жуй!
Reply
#3

Элементарно.
Двухмерный массив, который содержит IP, в виде INT числа и unixtime его удаления.
Ежесекундно проходимся циклом по массиву и проверяем значение unixtime.
Так-же при конекте ищем IP в этом массиве.

Придётся разве что написать несколько менеджеров массива, в частности поиск свободной ячейки или сортировка, поиск конкретного IP, поиск устаревших записей...

Способ хранения IP можете посмотреть в моём FS: https://sampforum.blast.hk/showthread.php?tid=374358 , в частности EncodeIP, DecodeIP.
Reply
#4

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Для начала не использовать тэги форматирование строк там где это не нужно!

И подобных скриптов столько, что хоть *опой жуй!
Я спросил совет, как лучше хранить и удалять IP через несколько секунд чтобы написать "мне понятный/доступный" код, а не есть ли в паблике! Во всяком случае, спасибо за внимание
Reply
#5

Quote:
Originally Posted by -Stranger-
Посмотреть сообщение
Элементарно.
Двухмерный массив, который содержит IP, в виде INT числа и unixtime его удаления.
Ежесекундно проходимся циклом по массиву и проверяем значение unixtime.
Так-же при конекте ищем IP в этом массиве.

Придётся разве что написать несколько менеджеров массива, в частности поиск свободной ячейки или сортировка, поиск конкретного IP, поиск устаревших записей...

Способ хранения IP можете посмотреть в моём FS: https://sampforum.blast.hk/showthread.php?tid=374358 , в частности EncodeIP, DecodeIP.
Спасибо за совет, сейчас попробую воплотить "слова в код"
Удачного дня
Reply
#6

Quote:
Originally Posted by VaReNiX
Посмотреть сообщение
Я спросил совет, как лучше хранить и удалять IP через несколько секунд чтобы написать "мне понятный/доступный" код, а не есть ли в паблике! Во всяком случае, спасибо за внимание
это главная ошибка всех скриптов, зачем удалять через несколько секунд, храните информация о том когда был последний раз, и берите разницу во времени с текущим, меньше разрешенного лочим, больше, пропускаем и удаляем запись.
Reply
#7

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
это главная ошибка всех скриптов, зачем удалять через несколько секунд, храните информация о том когда был последний раз, и берите разницу во времени с текущим, меньше разрешенного лочим, больше, пропускаем и удаляем запись.
Тоесть, при добавлении нового IP в массив, проверяем все, если какой то устаревший то удаляем его?
Reply
#8

Stepashka, иногда, что-бы понять суть проблемы, нужно пройти через эту проблему.

"Удалять через" не очень хороший вариант, но если TS хочет именно так, пусть делает. Потом поймёт как сделать более оптимизировано, но по пути к этому понимаю осознает ещё кучу всего полезного.

VaReNiX, делайте ровно так, как задумали. Это будет работать, а по ходу реализации будете править уже написанный код, это вполне нормально.
Reply
#9

Quote:
Originally Posted by VaReNiX
Посмотреть сообщение
Тоесть, при добавлении нового IP в массив, проверяем все, если какой то устаревший то удаляем его?
не надо проверять все, нашли нужный, его и обработали. Если удалили, то тут два варианта, сдвинули все остальные или оставили это для момента когда массив заполнился, так сказать сборщик мусора.
Reply
#10

Спасибо всем за советы и подсказки, няшку дал
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)