AMX MOD X
Суббота, 27.04.2024, 00:41:29



Приветствую Вас Гость | RSS
[ Главная ] [ IP functions - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Скрипты » IP functions (Функции для работы с IP адресами)
IP functions
VENДата: Воскресенье, 25.03.2007, 15:22:08 | Сообщение # 1
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
На данный момент функций не много: get_dsubip_val, get_dsubip_range, is_d_subnet, format_ipp, но в будущем могут добавиться новые. Описание и пример использования прилагаются.

EDIT: думаю, не стоит говорить, что inc-файл должен быть помещен в amxmodx/scripting/include директорию...

Прикрепления: 03737845.zip (1.3 Kb)


Сообщение отредактировал VEN - Воскресенье, 25.03.2007, 16:11:29
 
VENДата: Понедельник, 26.03.2007, 12:41:24 | Сообщение # 2
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Допустим, имеется два IP адреса: A1.B1.C1.D1 и A2.B2.C2.D2. Адреса принадлежат к сети класса D, если A1 == A2, B1 == B2 и C1 == C2, это проверяет функция is_d_subnet().

D - это последняя часть IP адреса (т.н. D sub-IP), численное значение которой определяет функция get_dsubip_val().

get_dsubip_range() предназначена, чтобы получить минимальное и максимальное значение D sub-IP диапазона, указанного в виде: A.B.C.Dmin*Dmax", где * - символ-разделитель, может быть любым символом (за исключением точки), который следует указывать в параметре token данной функции.

Как определить, что некий IP адрес принадлежит к некому IP диапазону, указано в скрипте-примере ip_functions_test.sma. Это не конечный скрипт, а пример использования для некоторых конкретных значений IP/диапазона.

Если у нас есть IP (ip) и IP диапазон (iprange). И требуется определить, принадлежит ли данный IP адрес к данному IP диапазону, можно сконструировать т.н. "функцию-обертку" для данного случая.

Code
bool:is_ip_belong_to_iprange(const ip[], const iprange[], token = '-') {
          if (!is_d_subnet(ip, iprange))
                  return false
            
          new min, max
          get_dsubip_range(iprange, min, max, token)
          return min <= get_dsubip_val(ip) <= max
}

В приципе, функциональность вышеприведенной функции скрипт-пример ip_functions_test.sma и иллюстрирует, только в несколько другом виде.

Сообщение отредактировал VEN - Понедельник, 26.03.2007, 12:45:15
 
PomanoBДата: Понедельник, 10.11.2008, 21:55:31 | Сообщение # 3
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Хотелось бы увидеть ip2int и наоборот :)

http://romanov4400.mybrute.com
 
mozartДата: Четверг, 27.11.2008, 23:44:12 | Сообщение # 4
Лейтенант
Группа: Пользователи
Сообщений: 46
Репутация: 0
Статус: Не в сети
хотелось 6ы .ini сдо6авлением на3вания подсетей )
спс VEN !
 
draftДата: Среда, 17.12.2008, 18:07:56 | Сообщение # 5
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
ip2int - это как?
 
PomanoBДата: Среда, 17.12.2008, 18:39:30 | Сообщение # 6
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Из символьного представления в числовое

http://romanov4400.mybrute.com
 
slogicДата: Среда, 17.12.2008, 18:43:36 | Сообщение # 7
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
навреное, имелось в виду ip2long. ip занимает 4 байта.
 
PomanoBДата: Среда, 17.12.2008, 19:01:37 | Сообщение # 8
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
int ведь тоже 4

http://romanov4400.mybrute.com
 
draftДата: Среда, 17.12.2008, 20:26:27 | Сообщение # 9
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
я не очень понял, вот, например, IP = 192.168.0.1 - как ты его представляешь себе в формате INT?
 
PomanoBДата: Среда, 17.12.2008, 20:50:32 | Сообщение # 10
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
IP-адрес представляет собой 32-битовое (по версии IPv4) или 128-битовое (по версии IPv6) двоичное число. Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например, 192.168.0.1. (или 128.10.2.30 — традиционная десятичная форма представления адреса, а 10000000 00001010 00000010 00011110 — двоичная форма представления этого же адреса).
© Wikipedia
http://ru.wikipedia.org/wiki/IP-адрес


http://romanov4400.mybrute.com
 
draftДата: Среда, 17.12.2008, 21:34:52 | Сообщение # 11
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
И что нового ты мне открыл? Переводить из десятичную в двоичную и обратно все умеют. В Int ты никак не запихнёшь такой двоичный код (тем более, с пробелами - а без пробелов это, вообще, теряет смысл).
 
PomanoBДата: Среда, 17.12.2008, 22:07:57 | Сообщение # 12
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Ну может не инт а лонг факт в том что символьное представление удобно для людей а в компьютерах в виде числа
Пробелами разделены байты только для удобства написания


http://romanov4400.mybrute.com

Сообщение отредактировал PomanoB - Среда, 17.12.2008, 22:11:25
 
draftДата: Среда, 17.12.2008, 22:37:05 | Сообщение # 13
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
Так а как ты планируешь это использовать? Допустим, преобразовал, а дальше-то что?
 
PomanoBДата: Среда, 17.12.2008, 22:42:49 | Сообщение # 14
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Как минимум, занимает гораздо меньше места, гораздо легче хранить и использовать.

http://romanov4400.mybrute.com
 
draftДата: Среда, 17.12.2008, 22:44:49 | Сообщение # 15
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
С этим согласен, но тут, например, не понятно, как сделать тот же бан подсети. Возможно, я просто торможу и не вижу очевидного...
 
AMX Mod X Форум » Скриптинг » Скрипты » IP functions (Функции для работы с IP адресами)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

AMX Mod X Russian Community © 2006-2024