Отправка сообщения в ПМ, в зависиммости от IP |
Здравствуйте, гость ( Вход | Регистрация )
Отправка сообщения в ПМ, в зависиммости от IP |
21.4.2011, 11:01
Сообщение
#1
|
|
Продвинутый участник Группа: Пользователи Сообщений: 120 Регистрация: 25.5.2009 Пользователь №: 3 432 Спасибо сказали: 20 раз |
Прошу помощи у местных гуру, в написании следующего скрипта. Необходимо, отправлять сообщения в ПМ только тем юзерам, IP которых не попадают в определенные промежутки IP. Отправлять по команде, из менюшки... собственно, честно не понимаю некоторых вещей, так и ненагуглил по этой теме, поэтому и прошу помочь.
мои изыскания на данную тему приведены ниже... Раскрывающийся текст Код -- IP адреса кому рассылка не производится local tRanks = { {"10.0.0.0","10.255.255.255"}, {"192.168.0.0","192.168.255.255"}, } -- Профили которые могут осуществлять расссылку tProfiles = { [0] = 1, [1] = 0, [2] = 0, [3] = 0, [-1] = 0, } --------------------------------------------------------------- function iIp(sIP) local a, b, c, d = sIP:match"^(%d+)%.(%d+)%.(%d+)%.(%d+)$" return a * 16777216 + b * 65536 + c * 256 + d end function OnStartup() for k, v in ipairs(tRanks) do tRanks[k][1], tRanks[k][2] = iIp(v[1]), iIp(v[2]) end sBot = SetMan.GetString(21) end function ChatArrival(tUser, sData) if tProfiles[tUser.iProfile] == 1 then local cmd = sData:match"%b<>%s+(%S+).*|" if sCmd then if sCmd == "!pmmsg" then local t = Core.GetOnlineUsers() or {} local iIP = iIp(tUser.sIP) local bIsLocal = false for _, v in ipairs(tRanks) do if iIP > v[1] and iIP < v[2] then bIsLocal = true break end end if not bIsLocal then Core.SendPmToNick(tUser.sNick, sbot, sMsg) end return true end end else Core.SendToUser(tUser, "<"..sBot.."> *** Вам недоступна данная функция") end end function OpConnected(tUser) Core.SendToUser(tUser, "$UserCommand 1 3 Управление\\Рассылка сообщений\\Сообщение в приват интернет пользователям $<%[mynick]> !pmmsg %[line:Сообщение:]|") end |
|
|
21.4.2011, 11:31
Сообщение
#2
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
1. local cmd = sData:match"%b<>%s+(%S+).*|" -- тут надо вместо cmd --> sCmd (исходя из последующего кода)
2. Ты не вытащил sMsg из sData и не подготовил его для дальнейшего применения в коде. 3. И да, зря ты сразу просле шапки функции ChatArrival(tUser, sData) написал проверку на право, это надо было сделать при отправке команды, примерно так: Код if sCmd == "!pmmsg" and tProfiles[tUser.iProfile] == 1 then логику завершения проверки додумай сам.4. В функции OpConnected(tUser) желательно создать проверку права на получение меню, как при отправке команды, иначе меню получат операторы, не имеющие права на команду, а это некорректно. |
|
|
21.4.2011, 12:32
Сообщение
#3
|
|
Продвинутый участник Группа: Пользователи Сообщений: 120 Регистрация: 25.5.2009 Пользователь №: 3 432 Спасибо сказали: 20 раз |
1. local cmd = sData:match"%b<>%s+(%S+).*|" -- тут надо вместо cmd --> sCmd (исходя из последующего кода) 2. Ты не вытащил sMsg из sData и не подготовил его для дальнейшего применения в коде. 3. И да, зря ты сразу просле шапки функции ChatArrival(tUser, sData) написал проверку на право, это надо было сделать при отправке команды, примерно так: Код if sCmd == "!pmmsg" and tProfiles[tUser.iProfile] == 1 then логику завершения проверки додумай сам.4. В функции OpConnected(tUser) желательно создать проверку права на получение меню, как при отправке команды, иначе меню получат операторы, не имеющие права на команду, а это некорректно. 2. Как прально вытащить и подготовить? |
|
|
21.4.2011, 12:41
Сообщение
#4
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
MaxFox, SendToRanges в этом скрипте можно отправлять сообщения интернет пользователям не трогая локальных и наоборот, даже отдельным диапазонам можно отправлять, чем он тебе не понравился?
|
|
|
21.4.2011, 12:50
Сообщение
#5
|
|
Продвинутый участник Группа: Пользователи Сообщений: 120 Регистрация: 25.5.2009 Пользователь №: 3 432 Спасибо сказали: 20 раз |
MaxFox, SendToRanges в этом скрипте можно отправлять сообщения интернет пользователям не трогая локальных и наоборот, даже отдельным диапазонам можно отправлять, чем он тебе не понравился? 1. В описание скрипта не вижу "можно отправлять всем, кроме указанных диапозонов" 2. Я его увидел 5 минут назад, еще до твоего поста. |
|
|
21.4.2011, 13:02
Сообщение
#6
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Цитата 1. В описание скрипта не вижу "можно отправлять всем, кроме указанных диапозонов" файл SendToRanges.txt с диапазонами тебе в помощь... Какие укажешь диапазоны, те и будут получать |
|
|
21.4.2011, 13:06
Сообщение
#7
|
|
Продвинутый участник Группа: Пользователи Сообщений: 120 Регистрация: 25.5.2009 Пользователь №: 3 432 Спасибо сказали: 20 раз |
файл SendToRanges.txt с диапазонами тебе в помощь... Какие укажешь диапазоны, те и будут получать да это и ежику понятно... а теперь подумай, что проще, записать те диапозоны которые не будут получать, или записать ВЕСЬ спектр диапозонов интернета, кроме тех которые не должны получать? как бэ... идиотский труд... на мой взгляд... почти как удаление гланд, через попу =) |
|
|
21.4.2011, 13:09
Сообщение
#8
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
MaxFox, сам себе ищешь трудности проще указать в локальном те кому не хочешь отправлять, а в интернет кому хочешь, а потом через менюшку отправлять сообщения только Интернет, и всё! Или для тебя и это
Цитата идиотский труд ? P.S. Вот тебе пример, IP моей локалки и остальные-интернет IP, если отправлять буду интернет, то получат все кроме локальных [Локальная сеть] 109.86.0.0-109.87.255.255 178.150.0.0-178.151.255.255 [Интернет] 0.0.0.0-109.85.255.255 109.88.0.0-178.149.255.255 178.152.0.0-255.255.255.255 |
|
|
21.4.2011, 13:31
Сообщение
#9
|
|
Продвинутый участник Группа: Пользователи Сообщений: 120 Регистрация: 25.5.2009 Пользователь №: 3 432 Спасибо сказали: 20 раз |
MaxFox, сам себе ищешь трудности проще указать в локальном те кому не хочешь отправлять, а в интернет кому хочешь, а потом через менюшку отправлять сообщения только Интернет, и всё! Или для тебя и это ? P.S. Вот тебе пример, IP моей локалки и остальные-интернет IP, если отправлять буду интернет, то получат все кроме локальных [Локальная сеть] 109.86.0.0-109.87.255.255 178.150.0.0-178.151.255.255 [Интернет] 0.0.0.0-109.85.255.255 109.88.0.0-178.149.255.255 178.152.0.0-255.255.255.255 согласен, так работать будет, но это неккоректно... ИМХО читать |
|
|
21.4.2011, 13:34
Сообщение
#10
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
В любом случае достаточно одного списка (для удобства - который короче)
Логика отправления - либо отправлять всем, кроме айпи из этого списка, либо отправлять только по айпи из этого списка. |
|
|
21.4.2011, 13:35
Сообщение
#11
|
|
Продвинутый участник Группа: Пользователи Сообщений: 120 Регистрация: 25.5.2009 Пользователь №: 3 432 Спасибо сказали: 20 раз |
В любом случае достаточно одного списка (для удобства - который короче) Логика отправления - либо отправлять всем, кроме айпи из этого списка, либо отправлять только по айпи из этого списка. так что насчет пральной подготовки? лучше ссыль, где можно подробно почитать... пока курю маны... |
|
|
21.4.2011, 13:57
Сообщение
#12
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Код local sCmd, sMsg = sData:match"%b<>%s+(%S+)%s+(.*)|" Где-то так. С последним знаком разберёшься сам, думаю. |
|
|
21.4.2011, 13:59
Сообщение
#13
|
|
Продвинутый участник Группа: Пользователи Сообщений: 120 Регистрация: 25.5.2009 Пользователь №: 3 432 Спасибо сказали: 20 раз |
|
|
|
21.4.2011, 14:56
Сообщение
#14
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Как-то так:
Msg2Inet.lua ( 1.63 килобайт )
Кол-во скачиваний: 12
UPD: Обновил. Сообщение отредактировал Alexey - 21.4.2011, 15:29 |
|
|
21.4.2011, 19:48
Сообщение
#15
|
|
Продвинутый участник Группа: Пользователи Сообщений: 120 Регистрация: 25.5.2009 Пользователь №: 3 432 Спасибо сказали: 20 раз |
спасибо, будем изучать... |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 1:52 |