Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

проверка на начало ИП адреса

Статус пользователя ssx
сообщение 20.8.2017, 13:46
Сообщение #1


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Привет Всем!

Как сделать на проверку на ИП адрес но не полный а только начало, к примеру, 192.168.* ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ssx
сообщение 20.8.2017, 16:10
Сообщение #2


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Так будет работать ?
Код
            new pIP[23]
            get_user_ip(id, pIP, 22,1)
            if (equali(pIP, "46.253.0.0") || equali(pIP, "94.230.0.0") || equali(pIP, "78.152.0.0"))


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя jtiq
сообщение 20.8.2017, 16:45
Сообщение #3


Иконка группы

Стаж: 18 лет

Сообщений: 1717
Благодарностей: 767
Полезность: 979

Меценат Меценат

ssx, эта функция для сравнения двух строк не зависимо от регистра.

тебе надо искать функцию для IP подсетей
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 20.8.2017, 16:51
Сообщение #4


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Вот так еще пробую - не прокатывает.

Код
            new pIP[6]
            get_user_ip(user, pIP, 5,1)
            if (equali(pIP, "46.253") || equali(pIP, "94.230") || equali(pIP, "78.152"))
            {

У меня 3 диапазона, и как видно - у всех по 6 символов первых нужно проверять.


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя artist666
сообщение 20.8.2017, 16:57
Сообщение #5


Стаж: 11 лет

Сообщений: 17
Благодарностей: 7
Полезность: 0

ssx,

Код:
if (equali(pIP, "46.253", 6))


3й аргумент - количество символов, для проверки.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя jtiq
сообщение 20.8.2017, 17:03
Сообщение #6


Иконка группы

Стаж: 18 лет

Сообщений: 1717
Благодарностей: 767
Полезность: 979

Меценат Меценат

ssx, что то вроде такого:
Код:
#include <amxmodx>
#include <amxmisc>
#include <iptools>

public plugin_init() {
register_plugin("Subnet IP", "0.1", "jtiq")
}

public client_putinserver(id) {
get_subnet_addr(id)
return PLUGIN_CONTINUE
}

public get_subnet_addr(id) {
if (!is_user_bot(id)) {
new len, pos
new subnet_addr_start[16]
new subnet_addr_end[16]
new userip[16]
new readdata[50]

get_user_ip(id, userip, 16, 1)

while (read_file("addons/amxmodx/configs/subnet_addr.ini", pos++, readdata, 50, len)) {
if (readdata[0] == ';' || readdata[0] == '#') continue

replace(readdata, 50, "/", " ")
parse(readdata, subnet_addr_start, 16, subnet_addr_end, 16)

if ((ip_to_number(userip) >= ip_to_number(subnet_addr_start)) && (ip_to_number(userip) <= ip_to_number(subnet_addr_end))) {
// Здесь код если входит в подсеть
} else {
// Здесь иначе
}
}
}
}


создай файл addons/amxmodx/configs/subnet_addr.ini и пропиши в него:
Код
# Комментарий пропускается
46.253.0.0/46.253.255.255
94.230.0.0/94.230.255.255
; Так тоже пропускаем строку
78.152.0.0/78.152.255.255
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 20.8.2017, 17:15
Сообщение #7


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ssx, если заранее известно что проверяется, то делается так
equal(ip, "123.123", 7)
ну если задача именно начало проверять, а не подсеть


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 20.8.2017, 17:52
Сообщение #8


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Я понял почему у меня изначально не работало - не 46.253 а 46.252 у меня ща ип ..

Вот так заработало:
Код
            new pIP[23]
            get_user_ip(user, pIP, 22,1)
            if (equali(pIP, "46.252", 6) || equali(pIP, "94.230", 6) || equali(pIP, "78.152", 6))
            {


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя maidanov98
сообщение 22.8.2017, 21:55
Сообщение #9
Стаж: 11 лет

Сообщений: 48
Благодарностей: 6
Полезность: < 0

/del

Отредактировал: maidanov98, - 23.8.2017, 21:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: