IP functions
|
|
VEN | Дата: Воскресенье, 25.03.2007, 15:22:08 | Сообщение # 1 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| На данный момент функций не много: get_dsubip_val, get_dsubip_range, is_d_subnet, format_ipp, но в будущем могут добавиться новые. Описание и пример использования прилагаются. EDIT: думаю, не стоит говорить, что inc-файл должен быть помещен в amxmodx/scripting/include директорию...
Сообщение отредактировал VEN - Воскресенье, 25.03.2007, 16:11:29 |
|
| |
VEN | Дата: Понедельник, 26.03.2007, 12:41:24 | Сообщение # 2 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Допустим, имеется два 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
Статус: Не в сети
| Хотелось бы увидеть ip2int и наоборот
http://romanov4400.mybrute.com
|
|
| |
mozart | Дата: Четверг, 27.11.2008, 23:44:12 | Сообщение # 4 |
Лейтенант
Группа: Пользователи
Сообщений: 46
Статус: Не в сети
| хотелось 6ы .ini сдо6авлением на3вания подсетей ) спс VEN !
|
|
| |
draft | Дата: Среда, 17.12.2008, 18:07:56 | Сообщение # 5 |
Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| ip2int - это как?
|
|
| |
PomanoB | Дата: Среда, 17.12.2008, 18:39:30 | Сообщение # 6 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Из символьного представления в числовое
http://romanov4400.mybrute.com
|
|
| |
slogic | Дата: Среда, 17.12.2008, 18:43:36 | Сообщение # 7 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| навреное, имелось в виду ip2long. ip занимает 4 байта.
|
|
| |
PomanoB | Дата: Среда, 17.12.2008, 19:01:37 | Сообщение # 8 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| int ведь тоже 4
http://romanov4400.mybrute.com
|
|
| |
draft | Дата: Среда, 17.12.2008, 20:26:27 | Сообщение # 9 |
Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| я не очень понял, вот, например, IP = 192.168.0.1 - как ты его представляешь себе в формате INT?
|
|
| |
PomanoB | Дата: Среда, 17.12.2008, 20:50:32 | Сообщение # 10 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| 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
Статус: Не в сети
| И что нового ты мне открыл? Переводить из десятичную в двоичную и обратно все умеют. В Int ты никак не запихнёшь такой двоичный код (тем более, с пробелами - а без пробелов это, вообще, теряет смысл).
|
|
| |
PomanoB | Дата: Среда, 17.12.2008, 22:07:57 | Сообщение # 12 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Ну может не инт а лонг факт в том что символьное представление удобно для людей а в компьютерах в виде числа Пробелами разделены байты только для удобства написания
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Среда, 17.12.2008, 22:11:25 |
|
| |
draft | Дата: Среда, 17.12.2008, 22:37:05 | Сообщение # 13 |
Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| Так а как ты планируешь это использовать? Допустим, преобразовал, а дальше-то что?
|
|
| |
PomanoB | Дата: Среда, 17.12.2008, 22:42:49 | Сообщение # 14 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Как минимум, занимает гораздо меньше места, гораздо легче хранить и использовать.
http://romanov4400.mybrute.com
|
|
| |
draft | Дата: Среда, 17.12.2008, 22:44:49 | Сообщение # 15 |
Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| С этим согласен, но тут, например, не понятно, как сделать тот же бан подсети. Возможно, я просто торможу и не вижу очевидного...
|
|
| |