LinuxForum.Fans
Тема

Уведомления о новых событиях на LFR для KDE

Автор: DiabloPC 28 сообщений 2178 просмотров
15.01.2017 19:15 #418968

Делал я эНто на предыдущем движке, вот, наконец-то, дошли руки переделать под этот...

Для запуска:
В каталоге ~/.config/autostart создать пустой файл. [highlight=black]~> touch ~/.config/autostart/some_file[/highlight]
В него скопировать код
В начале файла, в переменных USR и PSWD указать свои данные для входа на форум
За уведомления о пользователях отвечает переменная CHECK_USERS
Проверка ЛС - установите значение переменной CHECK_PM
и дать права на запуск [highlight=black]~> chmod +x ~/.config/autostart/some_file[/highlight]

Ну или с гитхаба https://github.com/Diablopc/LFR_NOTIFY







Дата последнего обновления: 28.01.2017 11:00 (GMT+2)

text

#!/bin/bash

#####==CONFIG==############################################################## USR=username ##You username PSWD=pa$$word ##You password CHECK_USERS=1 ##Valid values 0 (don't check), 1 (check) CHECK_PM=1 ##Valid values 0 (don't check), 1 (check) SLEEP_TIME=6 ##Set sleep time #####==CONFIG==##############################################################

#CHECK AND CREATE CONFIG WORKDIR=/tmp/LF ICON=$WORKDIR/favicon.ico COOKIE=$WORKDIR/cookie touch $WORKDIR/last_topic

if ! [ -d $WORKDIR ]; then mkdir $WORKDIR fi

if ! [ -f $ICON ]; then wget https://linuxforum.tech/favicon.ico -O $ICON fi PRE_PM_ID=0 ##FUNC----------------------------------------------------------------------------------------- #AUTHENTICATION AUTH () { CSRF=$(curl https://linuxforum.tech/login.php | grep csrf_token | sed 's/.*value="//' | sed 's/".*//') curl -X POST -c $COOKIE "https://linuxforum.tech/login.php" --data "form_sent=1&csrf_token=$CSRF&req_username=$USR&req_password=$PSWD&login=Войти" sleep 3 }

#GET AND SHOW USER INFO SHOWUSER () { LASTUSERDATA=`curl -b $COOKIE "$LAST_USER_LINK" |\ grep 'h2 class="hn"' -A35 |\ sed 's/.*<div.*//g' |\ sed 's/<.*\/div.*>//g' |\ sed 's/.*<ul.*//g' |\ sed 's/.*<\/ul>.*//g' |\ sed 's/<li>//g' |\ grep -v "^$" |\ sed 's/<h2 class="hn">//' |\ sed 's/<\/h2>//'` notify-send -t 0 --icon="$ICON" "$(echo -e "<b>Регистрация нового пользователя</b>")" "$(echo -e "$LASTUSERDATA")" echo "$LASTUNAME" > $WORKDIR/last_user PRELASTUNAME=`echo "$LASTUNAME"` }

#CREATE AND SHOW MESSAGE SHOWMSG () { MESSAGE=`curl -b $COOKIE $ALINK |\ grep "id=\"post$POST\"" -A1000 |\ grep 'class="postfoot"' -B1000` notify-send -t 0 --icon="$ICON" "$(echo -e "<b>@$LFUSER</b> $HEADER <br />$TOPICNAME")" "$(echo -e "$MESSAGE")" echo "$MSGCOUNT" > $WORKDIR/last_topic echo "$TOPICNAME" >> $WORKDIR/last_topic PREMSGCOUNT=`echo "$MSGCOUNT"` PRETOPICNAME=`echo "$TOPICNAME"` } #CHECK PRIVATE MESSAGES GETNEWPM () { PM_SENDER=`echo "$LAST_PM" |\ grep 'class="td3"'|\ sed 's/.*">//'|\ sed 's/<\/a>.*//'` PM_HEADER=`echo "$LAST_PM"|\ grep 'class="td4"'|\ sed 's/<.*a href="http:\/\/linuxforum.ru\/misc.php?section=pun_pm&amp;pmpage=inbox&amp;message_id=34099">//'|\ sed 's/<\/a>.*//'` PM_MESSAGE= PM_LINK='https://linuxforum.tech/misc.php?section=pun_pm&amp;pmpage=inbox&amp;message_id='$PM_ID notify-send -t 0 --icon="$ICON" "$(echo -e "Новое ЛС от @<b>$PM_SENDER</b> <br /> $PM_HEADER")" "$(echo -e "$PM_MESSAGE <br /> <a href=\"$PM_LINK\">Читать далее...</a>")" echo "##################################" echo $PM_ID # exit }

while true do { ##CHECK AUTH AND AUTHENTICATE CHECKAUTH=`curl -b $COOKIE https://linuxforum.tech/index.php |\ grep "Пожалуйста, войдите или зарегистрируйтесь."`

if [ "$CHECKAUTH" != "" ]; then AUTH fi

##GET NEW USERS DATA if [ "$CHECK_USERS" == "1" ]; then LASTUSERREG=`curl -b $COOKIE https://linuxforum.tech/index.php | grep "Последним зарегистрировался"` LASTUNAME=`echo "$LASTUSERREG" | sed 's/.*profile.php?id=.*">//' | sed 's/<\/a>.*//'` LAST_USER_LINK=`echo "$LASTUSERREG" | sed 's/.*href="//' | sed 's/">.*//'` fi

##CHECK PM LAST_PM=`curl -b $COOKIE "https://linuxforum.tech/misc.php?section=pun_pm&pmpage=inbox" |\ grep '<td class="td1"><input type="checkbox" name="pm_delete\[\]" value="' -A1000 -m1` PM_ID=`echo "$LAST_PM" |\ grep 'class="td1"'|\ sed 's/.*value="//'|\ sed 's/" \/>.*//'`

##GET DATA GETINDEX=`curl -b $COOKIE https://linuxforum.tech/search.php?action=show_recent`

##SORT DATA MSGCOUNT=`echo "$GETINDEX" | grep main-first-item -A10 |\ grep info-replies |\ sed 's/.*<strong>//' |\ sed 's/<\/strong.*//'` TOPICNAME=`echo "$GETINDEX" | grep main-first-item -A10 |\ grep 'class="item-num"' |\ sed 's/.*viewtopic.php.*">//' |\ sed 's/<.*//'` LFUSER=`echo "$GETINDEX" | grep main-first-item -A10 |\ grep info-lastpost |\ sed 's/.*<cite>//' |\ sed 's/<\/cite.*//'` TOPICSTARTER=`echo "$GETINDEX" | grep main-first-item -A10 |\ grep item-starter |\ sed 's/.*<cite>//' |\ sed 's/<\/.*//'` ALINK=`echo "$GETINDEX" | grep main-first-item -A10 |\ grep info-lastpost |\ sed 's/.*<a.href="//' |\ sed 's/">.*//'` POST=`echo $ALINK | sed 's/.*#p//'` PREMSGCOUNT=`head -n 1 $WORKDIR/last_topic` PRETOPICNAME=`tail -n 1 $WORKDIR/last_topic`

{ if [ -z $MSGCOUNT ]; then echo "No connection" sleep $SLEEP_TIME else

##SHOW NEW USERS if [ "$CHECK_USERS" == "1" ]; then if [ "$PRELASTUNAME" != "$LASTUNAME" ]; then SHOWUSER fi fi

##SHOW PM if [ "$CHECK_PM" == "1" ]; then if [ "$PRE_PM_ID" != "$PM_ID" ]; then GETNEWPM PRE_PM_ID=`echo "$PM_ID"` fi fi

##CHECK CHANGES AND SHOW MESSAGE if [ "$MSGCOUNT" = "0" ]; then HEADER="создал новую тему:" else HEADER="ответил в теме:" fi

if [ "$MSGCOUNT" != "$PREMSGCOUNT" ]; then SHOWMSG sleep $SLEEP_TIME elif [ "$TOPICNAME" != "$PRETOPICNAME" ] then SHOWMSG else echo No changes fi sleep $SLEEP_TIME fi } } done

ЗЫ
Огромная благодарность letnab, за помощь))

ЗЗЫ
Пока оно сырое до ****** %))
Правок еще будет куча....

В планах:

  • Сделать нормальную выдачу кода (Ибо сейчас оно на него неахти реагирует)
  • Уведомления о регистрации пользователей
  • Добавить цитаты
  • Добавить ЛС
  • Добавить текст ЛС в уведомление
  • Добавить ответы в своих темах
15.01.2017 20:54 #418974

Т.е. просто самому запускать периодически для проверки? :-/

15.01.2017 20:55 #418975

XliN, При правках, в шапке буду обновлять дату)

15.01.2017 22:35 #418980

С кодом разобрался, с длинными сообщениями с кучей цитат тоже )) UP в шапке

16.01.2017 10:11 #418991

Классная вещь!

16.01.2017 10:12 #418992

Writer, Пользуйся)

16.01.2017 10:48 #418994

На гитхаб это нельзя закинуть? Не удобно же копировать, обновлять код отсюда.

16.01.2017 16:51 #419005

А уведомления о регистрации новых пользователей? Никак?

16.01.2017 17:02 #419006
urfin написал:
А уведомления о регистрации новых пользователей? Никак?

А зачем это многим?
Если только тем у кого статус модератора/админа.
Форум позволяет отсылать письмо на указанную почту, но в движке много ошибок, например, при отключении расширения форум не работает-белая страница.

16.01.2017 17:05 #419007

"Zhenjka" написал:
А зачем это многим?
Если только тем у кого статус модератора/админа.
Так я и имел в виду модераторов, и то только пока нормально не будет происходить проверка новых пользователей на принадлежность к спам-ботам.
16.01.2017 17:16 #419008
"urfin" написал:
пока нормально не будет происходить проверка новых пользователей на принадлежность к спам-ботам

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

16.01.2017 17:58 #419011

А уведомления о регистрации новых пользователей? Никак?
urfin, почему-же никак) сделаем.
16.01.2017 18:01 #419012
"Zhenjka" написал:
при отключении расширения форум не работает

Какого? Дай код, я попробую разобраться.

16.01.2017 18:02 #419013

stranger написал:

Уверяю Вас, что наличие пары вменяемых админов и трёх-пяти качественных модераторов достаточно, чтобы эту гадость отстрелить.
Пока справляемся тем, что есть. Но лучше предупредить заразу до, чем потом ее лечить.
16.01.2017 21:40 #419027
"urfin" написал:
Пока справляемся тем, что есть. Но лучше предупредить заразу до, чем потом ее лечить.

Сделал уведомления о юзверях, UP в шапке, пользуйся))

18.01.2017 02:47 #419097
  • Ввел проверку печеньки перед авторизацией, что позволило исправить вот это: Регистрация, а так же снизилось к-во запросов.
  • Привел в читабельный вид.
19.01.2017 14:04 #419132

diablopc, как запустить просто так?
Создал файл, сделал его исполняемым, запускаю из консоли, он что то качает.

19.01.2017 14:25 #419133

Zhenjka, Ну так и должно быть.
В чём вопрос?

19.01.2017 14:37 #419134

Vascom, так он качает постоянно.

Войдите или зарегистрируйтесь, чтобы ответить.