Monitor changes on web pages, command results, GitHub & Gitlab repositories, Jamendo albums, RSS channels, custom user sources etc. With web ui and optionally sending report by mail.
Inspired by https://github.com/thp/urlwatch and http://miniflux.app/ (webmon2 gui)
- Python 3.11+
- Postgresql 10+
- psycopg3 & psycopg_pool
- requests
- yaml
- html2text (for html2text filter)
- markdown2 (for HTML output/reports/mails)
- defusedxml / ElementTree (for get-elements-* filters)
- feedparser (for rss input)
- github3py (for GitHub api; pip install --pre github3.py)
- cssselect & python3-lxml (for elements filtering)
- readability-lxml
- flask, Werkzeug, gevent and optional Flask_Minify
- python-gitlab (for gitlab api; pip install python3-gitlab)
- pyotp, pyqrcode for TOTP 2FA
- sdnotify (optional for systemd service)
- setproctitle (optional; python3-setproctitle)
- pip3 install webmon2<version>.whl
- create database (createuser -P webmon2; createdb -O webmon2 webmon2)
- create configuration file (see below)
- update schema: webmon2 update-schema
- launch webmon2 -h to see help
usage: webmon2.py [-h] [-s] [-v] [-d] [--log LOG] [-c CONF] [--database DATABASE] {abilities,update-schema,migrate,users,serve,write-config} ... webmon2 2.5.1 positional arguments: {abilities,update-schema,migrate,users,serve,write-config} Commands abilities show available filters/sources/comparators update-schema update database schema migrate migrate sources from file users manage users serve Start application write-config write default configuration file optional arguments: -h, --help show this help message and exit -s, --silent show only errors and warnings -v, --verbose show additional information -d, --debug print debug information --log LOG log file name -c CONF, --conf CONF configuration file name --database DATABASE database connection string
usage: webmon2.py serve [-h] [--app-root WEB_APP_ROOT] [--workers WORKERS] [--address WEB_ADDRESS] [--port WEB_PORT] [--smtp-server-address SMTP_SERVER_ADDRESS] [--smtp-server-port SMTP_SERVER_PORT] [--smtp-server-ssl] [--smtp-server-starttls] [--smtp-server-from SMTP_SERVER_FROM] [--smtp-server-login SMTP_SERVER_LOGIN] [--smtp-server-password SMTP_SERVER_PASSWORD] optional arguments: -h, --help show this help message and exit --app-root WEB_APP_ROOT root for url patch (for reverse proxy) --workers WORKERS number of background workers --address WEB_ADDRESS web interface listen address --port WEB_PORT web interface listen port --smtp-server-address SMTP_SERVER_ADDRESS smtp server address --smtp-server-port SMTP_SERVER_PORT smtp server port --smtp-server-ssl enable ssl for smtp serve --smtp-server-starttls enable starttls for smtp serve --smtp-server-from SMTP_SERVER_FROM email address for webmon --smtp-server-login SMTP_SERVER_LOGIN login for smtp authentication --smtp-server-password SMTP_SERVER_PASSWORD password for smtp authentication
usage: webmon2.py users [-h] {add,passwd,remove_totp} ... positional arguments: {add,passwd,remove_totp} user commands add add user passwd change user password remove_totp remove two factor authentication for user optional arguments: -h, --help show this help message and exit
Webmon2 requre Posrgresql database.
DATABASE - connection string in form: postgresql://<user>:<pass>@<host>:<port>/<database>
Some options may be configured globally in configuration file selected by -c --config argument. When no file is selected application try load configuration file from ~/.config/webmon2/webmon2.ini.
See webmon2.ini for example / defaults.
See write-config for write default configuration file.
User my define own filters, inputs, outputs and comparators by creating .py file in ~/.local/share/webmon2 and creating subclass of:
- webmon2.filters.AbstractFilter
- webmon2.sources.AbstractSource
Copyright (c) Karol Będkowski, 2016-2022
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
For details please see COPYING file.