myDC.ru

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

 
 
Ответить в данную темуНачать новую тему

> Отправка сообщений в диапазон IP

Теги
Нет тегов для показа
SAG
сообщение 10.4.2010, 21:03
Сообщение #1


Активный участник
***

Группа: Пользователи
Сообщений: 65
Регистрация: 23.9.2009
Пользователь №: 4 532
Спасибо сказали: 1 раз




Что надо сделать, чтобы скрипт отсылал сообщения только определённному IP диапазону?
Конкретнее, нужно в скриптах FeedLogon и FeedWatch сделать так, чтобы сообщения приходили только юзерам с локальным адресом, а тем, кто заходит с внешним IPом сообщения не приходили (так как это новости локального ресурса).
Go to the top of the page
+Quote Post
Артём
сообщение 10.4.2010, 23:20
Сообщение #2


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




Зачем третий раз один и тот же вопрос писать?
Go to the top of the page
+Quote Post
SAG
сообщение 11.4.2010, 7:16
Сообщение #3


Активный участник
***

Группа: Пользователи
Сообщений: 65
Регистрация: 23.9.2009
Пользователь №: 4 532
Спасибо сказали: 1 раз




Цитата(Артём @ 10.4.2010, 23:20) *
Зачем третий раз один и тот же вопрос писать?


А там никто не ответил. Да и вообще, как это делается в скриптах?
Go to the top of the page
+Quote Post
Артём
сообщение 11.4.2010, 7:44
Сообщение #4


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




Цитата(SAG @ 11.4.2010, 7:16) *
А там никто не ответил.

Ну так и что, нада наплодить вопросов?
Go to the top of the page
+Quote Post
alex82
сообщение 11.4.2010, 9:48
Сообщение #5


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Цитата(SAG @ 11.4.2010, 7:16) *
Да и вообще, как это делается в скриптах?

Создаем таблицу с диапазонами:
Код
tLocal = {
    {"10.0.0.0","10.255.255.255",},
    {"172.16.0.0","172.31.255.255"},
    {"192.168.0.0","192.168.255.255"},
}

При запуске скрипта преобразовываем адреса в числовой формат:
Код
function OnStartup()
    for i in ipairs(tLocal) do
        tLocal[i][1] = tLocal[i][1]:iptonumber()
        tLocal[i][2] = tLocal[i][2]:iptonumber()
    end
end

Ну а дальше остается проверить принадлежность IP-адреса к одному из диапазонов:
Код
for _,range in ipairs(tLocal) do
    if range[1] <= ip and ip <= range[2] then
        -- Здесь выполняются действия, необходимые только для указанных диапазонов
        break
    end
end

Ну и, разумеется, нужна функция преобразования адреса в числовой формат:
Код
function string.iptonumber(ip)
    local i1, i2, i3, i4 = ip:match("^(%d+)%.(%d+)%.(%d+)%.(%d+)$")
    if i1 then
        return i1*16777216+i2*65536+i3*256+i4
    end
end



Спасибо сказали:
Go to the top of the page
+Quote Post
SAG
сообщение 11.4.2010, 14:14
Сообщение #6


Активный участник
***

Группа: Пользователи
Сообщений: 65
Регистрация: 23.9.2009
Пользователь №: 4 532
Спасибо сказали: 1 раз




alex82 покажи пожалуйста на примере одного из этих скриптов, как это сделать, а то у меня ничего не получается.
Go to the top of the page
+Quote Post
alex82
сообщение 11.4.2010, 18:42
Сообщение #7


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




http://mydc.ru/topic3167.html
http://mydc.ru/topic2816.html

PS. Совсем забыл - проверяемый айпи тоже нужно перевести в числовой формат
Код
local ip = user.sIP:iptonumber()
for _,range in ipairs(tLocal) do
    if range[1] <= ip and ip <= range[2] then
        -- Здесь выполняются действия, необходимые только для указанных диапазонов
        break
    end
end


Спасибо сказали:
Go to the top of the page
+Quote Post
SAG
сообщение 11.4.2010, 22:13
Сообщение #8


Активный участник
***

Группа: Пользователи
Сообщений: 65
Регистрация: 23.9.2009
Пользователь №: 4 532
Спасибо сказали: 1 раз




что-то я подзапутался .
ошибка: - \scripts\RSSFeed.lua:136: attempt to index global 'user' (a nil value)
вот кусок" -
Раскрывающийся текст

if next(New) then
local reply,cnt = "",0
for key,val in ipairs(New) do
local bool = true
for i,v in ipairs(Old) do if v[2] == val[2] then bool = false break end end
if bool then
cnt = cnt + 1
for i,v in ipairs(val) do reply = reply..v.."\n" end
reply = reply.."------------------------------------------------------------------------------------------------------------------------------------\n"
end
end
if reply:len() > 0 then
local plural = ""
if cnt > 1 then plural = "" end
Old = New
SaveFile(File,Old,"Old")
local s = tostring(cnt).." новых цитат"..plural.." с: "..Feed.."\n\n"..reply.."\n\n"
s = s:gsub("|", "&#".."124;")
local ip = user.sIP:iptonumber() -- вот 136 строка
for _,range in ipairs(tLocal) do
if range[1] <= ip and ip <= range[2] then
if DoMotd and Motd ~= "" then SetMan.SetMOTD(Motd.."\n\n\t"..s) end
return s

end
end
end
end
end

GetFeed = function()
local st = socket.gettime()

local s,fd,sz,hd = "",http.request(Feed)
if fd and sz then
local td,plural = socket.gettime()-st,"секунды."
if td > 1 then plural = "секунд." end
local time = string.format("%.2f "..plural,td)
local msg = ParseFeed(Decode(fd))
local Send = function(str)
local ip = user.sIP:iptonumber() -- 158 строка
for _,range in ipairs(tLocal) do
if range[1] <= ip and ip <= range[2] then
if OnlyPm then
Core.SendPmToAll(FeedNick,str.."|")
else
Core.SendToAll("<"..FeedNick.."> "..str.."|")
end

break
end
end
end
if msg and msg:len() > 0 then Send(msg.."\t\t\tОбработано за: "..time.."\n\n") end
Mem()
end
end



а в 158 строке до этого не выдавал ошибки, хотя я там тоже самое сделал.
Go to the top of the page
+Quote Post
alex82
сообщение 12.4.2010, 10:50
Сообщение #9


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




SAG

То, что ты выложил, невозможно читать. Для кода используй тег [code], или прикрепи весь скрипт.
Go to the top of the page
+Quote Post
SAG
сообщение 12.4.2010, 16:18
Сообщение #10


Активный участник
***

Группа: Пользователи
Сообщений: 65
Регистрация: 23.9.2009
Пользователь №: 4 532
Спасибо сказали: 1 раз




Вот рабочий мой скрипт -

Прикрепленный файл  Newssety.lua ( 7.37 килобайт ) Кол-во скачиваний: 5


а вот что я начудил -

Прикрепленный файл  Newssety1.lua ( 8.34 килобайт ) Кол-во скачиваний: 6
Go to the top of the page
+Quote Post
alex82
сообщение 12.4.2010, 19:29
Сообщение #11


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Угу, начудил...

Зачем было пихать проверку диапазона в функцию обработки rss? В ней нету таблицы user, да и результат работы она засовывает в сообщение дня птоки. А оно глобальное, т.е одинаковое для всех, вне зависимости от диапазона.

Как я понимаю, ты хочешь отправлять данные, полученные из rss-потока, юзерам из локалки при входе? Если да, то так делать нельзя:
Код
            local ip = user.sIP:iptonumber()
            for _,range in ipairs(tLocal) do
            if range[1] <= ip and ip <= range[2] then
            if DoMotd and Motd ~= "" then SetMan.SetMOTD(Motd.."\n\n\t"..s) end

Почему нельзя - написано одним абзацем выше.



Спасибо сказали:
Go to the top of the page
+Quote Post
SAG
сообщение 12.4.2010, 20:18
Сообщение #12


Активный участник
***

Группа: Пользователи
Сообщений: 65
Регистрация: 23.9.2009
Пользователь №: 4 532
Спасибо сказали: 1 раз




вот этот -
Прикрепленный файл  FeedLogon.lua ( 12.37 килобайт ) Кол-во скачиваний: 7


ошибок не выдает, но ...
... и не фильтрует, сообщения идут и в локалку и во внешку .
Go to the top of the page
+Quote Post
SAG
сообщение 15.4.2010, 16:05
Сообщение #13


Активный участник
***

Группа: Пользователи
Сообщений: 65
Регистрация: 23.9.2009
Пользователь №: 4 532
Спасибо сказали: 1 раз




Теперь скрипт, благодаря alex82, работает, как надо!
Отсылает сообщения определённому диапазону IP (указанному в tLocal), и может по времени отправлять сообщения (надо только раскомментировать строки с 248 по 257).
Вот работающий скрипт - Прикрепленный файл  FeedLogon.lua ( 12.23 килобайт ) Кол-во скачиваний: 12

Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsВывод последний N сообщений чата при входе
Verlihub
2 Vizunchik 9 593 13.9.2014, 9:53 Посл. сообщение: Ahton
No new Подлагивает чат при написании сообщений
40 po fenshyj' 31 176 6.6.2012, 19:14 Посл. сообщение: WINS
No new Скрипт рассылки сообщений
прошу помочь...
18 MaxFox 14 887 4.2.2012, 12:03 Посл. сообщение: MaxFox
No New Posts Скрипт рассылки сообщений
1 MaxFox 5 048 23.1.2012, 8:54 Посл. сообщение: MaxFox
No New Posts Скрипт рассылки сообщений
0 MaxFox 4 140 12.1.2012, 16:56 Посл. сообщение: MaxFox
No New Posts Скрипт вывода сообщений
2 Who.Is 7 072 5.7.2011, 20:02 Посл. сообщение: Who.Is
No New Posts Отправка информации с сайта по запросу
Отправка информации с сайта по запросу
4 sania 7 834 28.5.2011, 9:51 Посл. сообщение: sania
No new Topic has attachmentsОтправка сообщения в ПМ, в зависиммости от IP
14 MaxFox 14 267 21.4.2011, 19:48 Посл. сообщение: MaxFox
No New Posts Отправка личек по профилям
Отправка сообщений в личку по профилям
11 sania 12 167 8.4.2011, 23:25 Посл. сообщение: Ksan
No New Posts Как узнать диапазон ip-адресов другого пользователя?
Например когда забанишь интернет адрес,а он с другого зайдет.
2 STIVAN 9 588 19.3.2011, 14:35 Посл. сообщение: STIVAN
No New Posts Общий подсчет сообщений
2 Invisible 6 429 6.3.2011, 18:54 Посл. сообщение: Ksan
Closed дайте скрипт последнии 5 сообщений чата
4 Artem26 7 748 23.12.2010, 21:08 Посл. сообщение: Saymon21
No New Posts Перевод сообщений verlihub
1 Net_Strannik 6 788 7.11.2010, 1:19 Посл. сообщение: Nickolya
No New Posts Отправка POST-запросов на вебсервер
0 HackFresse 4 744 29.6.2010, 9:18 Посл. сообщение: HackFresse
No New Posts Отправка в ЛС боту
выводится почему то всем...
0 TIRAN 4 265 13.4.2010, 21:45 Посл. сообщение: TIRAN

 



RSS Сейчас: 19.4.2024, 23:30