Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Скрипты для RusHub'а _ Url Info

Автор: Saymon21 9.5.2012, 14:18

Название: Url Info
Автор: Saymon21
Описание: Некоторые люди любят блокировать ссылки в чате хаба без описания, я считаю, что этого не нужно делать, ибо надо давать больше свободы юзерам. (Холивары, доказательства, что это не так, пожалуйста, оставьте себе.) Сегодня один %секретный% IRC-канал мне подал идею, что лучше не блокировать, а лучше "пропарсить" теги http://mydc.ru/r/?http://www.w3.org/Provider/Style/TITLE.html, на сайте, на который идёт эта ссылка, в итоге отправить в чат описание, которое в этом теге.
Конечно, учитывая мною выше сказанное, всёравно не стоит быть слишком доверчивым, и даже если юзер прокомментировал ссылку, лучше дополнительно отправить инфо, которе на сайте... И собственно вот, на быструю руку накидал простой скрипт..


ToDo;
Сделать проверку заголовка Content-Type;

DON'T USE THIS/НЕ ИСПОЛЬЗОВАТЬ!

Автор: Setuper 10.5.2012, 9:54

А если в предложении несколько ссылок?
Как вариант: можно описание вставлять в скобках после ссылки big_smile.gif

Автор: KCAHDEP 11.5.2012, 11:04

Цитата(Setuper @ 10.5.2012, 10:54) *
А если в предложении несколько ссылок?
Как вариант: можно описание вставлять в скобках после ссылки big_smile.gif

а для ptokax возможно сделать?

Автор: Ksan 11.5.2012, 13:04

Saymon21, я бы поспорил насчёт необходимости этого скрипта и причин его появления, но не стану, раз ты не хочешь обсуждать, но всё же по самому скрипту есть коммент (ты сам должен был обратить на него внимание) - если в сообщении юзера при ссылке присутствует комментарий к ссылке, незачем напрягать скрипт. Пусть лезет проверять титл только когда ссылка без описания. Иначе загадится весь чат. И второе - чаще всего титл не имеет ничего общего с отправленной ссылкой, то есть, речь вообще-то изначально шла не про валидность/безопасность ресурса, а просто об элементарном неуважении и возможной рекламе. Скрипт тут не поможет.

KCAHDEP, я думаю, там всего 3 строки изменить для Птоки:
Один - заменить строку

Код
bot = Config.sHubBot
на
Код
bot = SetMan.GetString(21)
Два - строку
Код
function OnChat(UID,sData)
заменить на
Код
function ChatArrival(tUser,sData)
Три - в самом конце заменить строки
Код
Core.SendToProfile(0,s)
return true
на
Код
Core.SendToOpChat(s)

Я так думаю. Не проверял.

Автор: Saymon21 11.5.2012, 13:34

Цитата
И второе - чаще всего титл не имеет ничего общего с отправленной ссылкой, то есть, речь вообще-то изначально шла не про валидность/безопасность ресурса

Наборот. Нормальный владелец сайта всегда бы старался оформить этот title, и оформить его правильно. На говносайты не стоит обращать внимания. Имхо.

Автор: Enyby 17.5.2012, 9:22

Имхо, это брешь в безопасности. Во-первых, этот текст не проходит никаких проверок, во-вторых, его длина неограниченна и, в-третьих, он приходит от бота хаба, что, автоматически, повышает уровень доверия к данному тексту.

В тексте может быть все что угодно. Спам, флуд, ссылки на хабы, маты и т. д.

Далее. Нет блокировки обработки сообщения последующими скриптами. Можно пытаться писать такой текст, с адресами, который будет выводит INFO, но, в то же время, сам текст, будет блокироваться последующими скриптами. Со стороны это будет выглядеть как рассылка на хабе в чате от бота.

Но это не вся проблема. В титул сайта можно вставить "|" и выполнить произвольную команду DC протокола от имени хаба. Например, редирект или еще что.

Автор: Setuper 17.5.2012, 9:48

действительно, символы | и $ нужно заменить на их кодовые эквиваленты

Автор: Saymon21 17.5.2012, 10:04

В ближайшие дни постораюсь поправить, как время будет...

13.3.2013, 0:17 Fixed

Автор: Enyby 17.5.2012, 10:12

Код
function get_title(url)
    local data, http_status = http.request(url)
    if http_status and http_status == 200 then
        return data:match("<title>(.-)</title>"):gsub("&", "&".."#38;"):gsub("%$", "&".."#36;"):gsub("|", "&".."#124;")
    end
end


PS:
Чертов форум пожирает эйскейпированный вариант. Пришлось разбить строку конкатенацией.

Автор: Setuper 17.5.2012, 12:30

Просто нужно писать так: &#38;#124;. И тогда будет нормально отображаться, правда только до первого редактирования поста (при редактировании нужно опять также заменять).

Автор: Enyby 17.5.2012, 20:27

Я так и писал. Использовал быстрое редактирование. Все равно пожирало.
Ладно. Не суть. Это оффтоп.