Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

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

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Раздел для общения на любые темы, для которых не нашлось места в остальных разделах. Если Вашу тему можно отнести по смыслу к другому разделу, лучше создайте её там, иначе Вас накажут.

В данном форуме немного понижены требования к Общим правилам форума, а именно:
1. Информативность темы
2. Отходить от первоначального смысла темы

!
В разделе запрещено создавать темы связанные с раскруткой игровых серверов

Монитор сообщений на форуме

Статус пользователя Gecko
сообщение 25.5.2023, 1:47
Сообщение #1
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

И так, имеем полноценную программу которая умеет отслеживать состояние веб-страничек.
По умолчанию скрипт отслеживает этот форум, если кто-то опубликует сообщение, то программа уведомит Вас об этом.
Вот одно из применений:
Отслеживать баны с вашего сайта, достаточно добавить вот эти метки:
<!-- боковая панель -->

<!-- боковая панель -->
Просто установить в шаблон csbans или любого другого движка чтобы программа смогла отслеживать весь контент внутри этих меток, главное чтобы не было между этими метками никаких динамических скриптов.
Метка называется "<!-- боковая панель -->" по одной простой причине, программу я писал под этот форум вот и всё, и тут она как раз установлена именно там где нужно.

Просто как я понял bash тут не сильно любят, поэтому переписал всё на golang

В архиве 2 каталога, Linux и соответственно Windows, в корне каждого каталога есть подкаталог src, в них находятся исходники, а исполняемые файлы csnet_linux и csnet_win.exe в корне соответствующих названиям файлов - каталогах.
В архиве также есть небольшое README для пользователей Linux.

В общем, там всё просто, клацнул мышкой и всё заработает.

Параметры запуска:
Код
./csnet_linux -h


Работает так:
Код
./csnet_linux  -url http://адрес-сайта

С интервалом времени в 10 секунд:
Код
./csnet_linux -url https://адрес-сайта -interval 10s

csnet_linux поменяйте на csnet_win.exe - если у Вас винда

Если вам нужно запустить множественные проверки, просто сделайте симлинк или скопируйте файл csnet_linux/csnet_win.exe в нужный вам каталог и там запустите, программа всё создает/держит в том каталоге в котором запущена, и не позволит запустить более одного экземпляра программы в одном каталоге.

Цитата
index.html - это проверочный файл удаленного ресурса
checksum.txt - сюда программа записывает md5 сумму проверочного файла index.html
logo.png - это иконка которая будет соответствовать проверочному сайту.


Если нужно переписать или дописать определённый функционал, вся помощь исключительно в рамках этого топика.
Debian 9 KDE
Прикрепленное изображение


Ubuntu 22.04 Gnome
Прикрепленное изображение


Win10
Прикрепленное изображение


Скачать архив

Отредактировал: Gecko, - 28.5.2023, 10:32


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   Цитировать сообщение
Статус пользователя Gecko
сообщение 25.5.2023, 2:09
Сообщение #2
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

А это на bash, оставлю его на всякий случай.

csnet.sh
Код
#!/bin/bash

fileName="csnet.txt"
logName="csnet.log"
urlCheck="https://c-s.net.ua/"
urlOpen="C-S.Net.Ua"
weblog="/tmp/weblog"
userAgent="Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.02"


function _lang() {

    if (locale | grep -e 'ru_RU') >/dev/null 2>&1; then
        exemple_lang='$'
        access_lang="Запустите \"$(basename ${0})\" без прав суперпользователя"
        newMsg_lang='Новое на'
    else
        exemple_lang='$'
        access_lang="Run \"$(basename ${0})\" without root privileges"
        newMsg_lang='New on'
    fi

}

function checkroot() {

    _lang

    if [ "$(whoami)" = 'root' ]; then
        clear && echo -e "\n${access_lang}"
        echo -e "${exemple_lang} bash $(basename ${0})"
        exit
    fi

}

function check() {

    # Debian/Ubuntu
    if [ ! -f "$(which notify-send)" ] || [ ! -f "$(sudo which curl)" ]; then
        sudo apt update
    fi

    if [ ! -f "$(which notify-send)" ]; then
        sudo apt install libnotify-bin -y
    fi

    if [ ! -f "$(which curl)" ]; then
        sudo apt install curl -y
    fi

}

function main() {

_lang

    if [ ! -d "${weblog}" ]; then
        mkdir -p "${weblog}"
    fi

    curl -s -A "${userAgent}" -o "${weblog}/${fileName}" "${urlCheck}" && sed -n -i "/<\!-- боковая панель -->/,/<\!-- боковая панель -->/p" "${weblog}/${fileName}" &&


    if [ -f "${weblog}/${logName}" ]; then
        md5sum -c ${weblog}/${logName}
    
        if [ $? -ne 0 ]; then
            export DISPLAY=:0.0 &&
            XDG_RUNTIME_DIR=/run/user/$(id -u) \
            notify-send -i "terminal" -u low "${newMsg_lang} ${urlOpen}"
        fi
    fi

    md5sum "${weblog}/${fileName}" > "${weblog}/${logName}"
    exit 0
}

checkroot
# check
main


Отредактировал: Gecko, - 27.5.2023, 17:47


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 27.5.2023, 17:48
Сообщение #3
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Обновил первый пост, всё переписал на Go, в том числе и под Windows.
Повторюсь ещё раз, это универсальное решение для сайтов без API и определенного функционала.
Если кто-то полезет код ковырять, то вся основная "магия" вот тут:

Код
htmlString := string(htmlBytes)
    startIndex := strings.Index(htmlString, "<!-- боковая панель -->")
    endIndex := strings.LastIndex(htmlString, "<!-- боковая панель -->")

    if startIndex != -1 && endIndex != -1 && endIndex > startIndex {
        # trimmedHTML := htmlString[startIndex+len("<!-- боковая панель -->"):endIndex]
            # Так ещё проще, чтобы у вас не было вопроса, зачем это тут.
            trimmedHTML := htmlString[startIndex:endIndex]
           htmlBytes = []byte(trimmedHTML)
    }


Всё остальное лучше не трогать, если конечно не стоит вопрос расширения функционала.

Отредактировал: Gecko, - 27.5.2023, 18:23


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 28.5.2023, 13:08
Сообщение #4
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Небольшая инструкция
Устанавлеваем Go

Компилируем:
Код
GOOS=linux GOARCH=amd64 go build -o csnet_linux csnet_linux.go
GOOS=windows GOARCH=amd64 go build -o csnet_win.exe csnet_win.go

и выполняем
Код
./csnet_win.exe -url https://site.local


В следующую версию программы я добавлю возможность проверять те или иные данные с параметра, в том числе с указанием меток.
Пример:
Код
./csnet_win.exe -url https://site.local -interval 30s -startteg \"table class=\"uk-table uk-table-condensed uk-table-hover\" id=\"players_list">" -endteg "</table>" -findword "Любое слово"

Если будет указан параметр -findword, то уведомления будут приходить только тогда когда будет найдено это слово

Отредактировал: Gecko, - 28.5.2023, 15:46


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: