From cb6488d7da760d9a484144c9a5692caa54660f9b Mon Sep 17 00:00:00 2001 From: Johannes Findeisen Date: Sun, 25 Sep 2022 06:31:36 +0200 Subject: [PATCH] Added lot more Linspector design conepts. --- etc/linspector/linspector.ini | 2 +- etc/linspector/monitors/network1/gateway.ini | 7 ++-- etc/linspector/monitors/network2/gateway.ini | 6 ++-- etc/linspector/{types => services}/.gitkeep | 0 etc/linspector/tasks/.gitkeep | 0 linspector/core/__init__.py | 0 linspector/monitors/__init__.py | 0 linspector/{core => monitors}/monitor.py | 0 linspector/{core => monitors}/monitors.py | 0 linspector/notications/net/__init__.py | 0 linspector/notications/{ => net}/email.py | 0 linspector/notications/{ => net}/twitter.py | 0 linspector/notications/{ => net}/xmpp.py | 2 +- .../{core => notications}/notification.py | 0 .../{core => notications}/notifications.py | 1 - linspector/notications/phone/__init__.py | 0 linspector/notications/phone/call.py | 0 linspector/notications/{ => phone}/sms.py | 2 +- linspector/plugins/backend/__init__.py | 0 .../plugins/{ => backend}/httpserver.py | 2 +- linspector/plugins/frontend/__init__.py | 0 linspector/plugins/{ => frontend}/lish.py | 2 +- linspector/{core => plugins}/plugin.py | 0 linspector/{core => plugins}/plugins.py | 0 linspector/services/http/__init__.py | 0 linspector/services/http/keyword.py | 0 linspector/services/misc/__init__.py | 0 linspector/services/misc/dummy.py | 0 linspector/services/misc/random.py | 0 linspector/services/misc/shell.py | 0 linspector/services/net/__init__.py | 0 linspector/services/{ => net}/fritzbox.py | 2 +- linspector/services/{ => net}/ping.py | 2 +- linspector/services/{ => net}/port.py | 2 +- linspector/services/{ => net}/speedtest.py | 2 +- linspector/{core => services}/service.py | 0 linspector/{core => services}/services.py | 0 linspector/services/snmp/__init__.py | 0 linspector/services/snmp/get.py | 0 linspector/services/ssh/__init__.py | 0 linspector/services/ssh/ssh.py | 0 linspector/tasks/storage/__init__.py | 0 linspector/tasks/storage/logger.py | 36 +++++++++++++++++++ linspector/tasks/{ => storage}/mariadb.py | 2 +- linspector/tasks/{ => storage}/redis.py | 2 +- linspector/tasks/{ => storage}/sqlite.py | 2 +- linspector/{core => tasks}/task.py | 0 linspector/{core => tasks}/tasks.py | 0 48 files changed, 55 insertions(+), 19 deletions(-) rename etc/linspector/{types => services}/.gitkeep (100%) create mode 100644 etc/linspector/tasks/.gitkeep create mode 100644 linspector/core/__init__.py create mode 100644 linspector/monitors/__init__.py rename linspector/{core => monitors}/monitor.py (100%) rename linspector/{core => monitors}/monitors.py (100%) create mode 100644 linspector/notications/net/__init__.py rename linspector/notications/{ => net}/email.py (100%) rename linspector/notications/{ => net}/twitter.py (100%) rename linspector/notications/{ => net}/xmpp.py (95%) rename linspector/{core => notications}/notification.py (100%) rename linspector/{core => notications}/notifications.py (98%) create mode 100644 linspector/notications/phone/__init__.py create mode 100644 linspector/notications/phone/call.py rename linspector/notications/{ => phone}/sms.py (95%) create mode 100644 linspector/plugins/backend/__init__.py rename linspector/plugins/{ => backend}/httpserver.py (98%) create mode 100644 linspector/plugins/frontend/__init__.py rename linspector/plugins/{ => frontend}/lish.py (97%) rename linspector/{core => plugins}/plugin.py (100%) rename linspector/{core => plugins}/plugins.py (100%) create mode 100644 linspector/services/http/__init__.py create mode 100644 linspector/services/http/keyword.py create mode 100644 linspector/services/misc/__init__.py create mode 100644 linspector/services/misc/dummy.py create mode 100644 linspector/services/misc/random.py create mode 100644 linspector/services/misc/shell.py create mode 100644 linspector/services/net/__init__.py rename linspector/services/{ => net}/fritzbox.py (96%) rename linspector/services/{ => net}/ping.py (96%) rename linspector/services/{ => net}/port.py (96%) rename linspector/services/{ => net}/speedtest.py (98%) rename linspector/{core => services}/service.py (100%) rename linspector/{core => services}/services.py (100%) create mode 100644 linspector/services/snmp/__init__.py create mode 100644 linspector/services/snmp/get.py create mode 100644 linspector/services/ssh/__init__.py create mode 100644 linspector/services/ssh/ssh.py create mode 100644 linspector/tasks/storage/__init__.py create mode 100644 linspector/tasks/storage/logger.py rename linspector/tasks/{ => storage}/mariadb.py (97%) rename linspector/tasks/{ => storage}/redis.py (97%) rename linspector/tasks/{ => storage}/sqlite.py (97%) rename linspector/{core => tasks}/task.py (100%) rename linspector/{core => tasks}/tasks.py (100%) diff --git a/etc/linspector/linspector.ini b/etc/linspector/linspector.ini index d1b3f19..5b8ce0b 100644 --- a/etc/linspector/linspector.ini +++ b/etc/linspector/linspector.ini @@ -13,7 +13,7 @@ log_count = 5 log_size = 10485760 pid_file = /var/run/user/1000/linspector.pid ; default delimiters '=' and ':' should be changed to ',' to be more native -plugins = HTTPServer,MariaDB +plugins = HTTPServer:MariaDB ; maybe the run_mode is obsolete because this will be a daemon but maybe it is useful for one time execution? ; in uplink the available run_modes were cron, daemon and foreground run_mode = cron diff --git a/etc/linspector/monitors/network1/gateway.ini b/etc/linspector/monitors/network1/gateway.ini index 2dc14ab..324799e 100644 --- a/etc/linspector/monitors/network1/gateway.ini +++ b/etc/linspector/monitors/network1/gateway.ini @@ -1,11 +1,12 @@ [main] ; identifiers must be unique in the whole configuration so maybe it is better to create a random string for this -; dynamically. +; dynamically. identifiers should maybe a checksum of some options so they will not change when small changes to +; the configurations changes and will remain even when doing a fresh install. identifier = cable -service = fritzbox +service = net.Fritzbox interval = 60 # default delimiters '=' and ':' should be changed to ',' to be more native -notifications = sms:email +notifications = SMS:Email email_receivers = admin@example.com:fallback@example.com sms_receivers = +329084320984:+39804932409 host = 192.168.0.1 diff --git a/etc/linspector/monitors/network2/gateway.ini b/etc/linspector/monitors/network2/gateway.ini index 0eb8074..b636479 100644 --- a/etc/linspector/monitors/network2/gateway.ini +++ b/etc/linspector/monitors/network2/gateway.ini @@ -1,12 +1,12 @@ [main] identifier = dsl -service = fritzbox +service = net.Fritzbox interval = 60 # default delimiters '=' and ':' should be changed to ',' to be more native -notifications = sms:email +notifications = phone.SMS:net.Email email_receivers = admin@example.com:fallback@example.com sms_receivers = +329084320984:+39804932409 host = 192.168.1.1 user = USERNAME password = PASSWORD -info = Cable Provider +info = Cable Provider \ No newline at end of file diff --git a/etc/linspector/types/.gitkeep b/etc/linspector/services/.gitkeep similarity index 100% rename from etc/linspector/types/.gitkeep rename to etc/linspector/services/.gitkeep diff --git a/etc/linspector/tasks/.gitkeep b/etc/linspector/tasks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/linspector/core/__init__.py b/linspector/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/monitors/__init__.py b/linspector/monitors/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/core/monitor.py b/linspector/monitors/monitor.py similarity index 100% rename from linspector/core/monitor.py rename to linspector/monitors/monitor.py diff --git a/linspector/core/monitors.py b/linspector/monitors/monitors.py similarity index 100% rename from linspector/core/monitors.py rename to linspector/monitors/monitors.py diff --git a/linspector/notications/net/__init__.py b/linspector/notications/net/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/notications/email.py b/linspector/notications/net/email.py similarity index 100% rename from linspector/notications/email.py rename to linspector/notications/net/email.py diff --git a/linspector/notications/twitter.py b/linspector/notications/net/twitter.py similarity index 100% rename from linspector/notications/twitter.py rename to linspector/notications/net/twitter.py diff --git a/linspector/notications/xmpp.py b/linspector/notications/net/xmpp.py similarity index 95% rename from linspector/notications/xmpp.py rename to linspector/notications/net/xmpp.py index 94e0404..b93c4d4 100644 --- a/linspector/notications/xmpp.py +++ b/linspector/notications/net/xmpp.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.notification import Notification +from linspector.notifications.notification import Notification logger = getLogger('linspector') diff --git a/linspector/core/notification.py b/linspector/notications/notification.py similarity index 100% rename from linspector/core/notification.py rename to linspector/notications/notification.py diff --git a/linspector/core/notifications.py b/linspector/notications/notifications.py similarity index 98% rename from linspector/core/notifications.py rename to linspector/notications/notifications.py index ef6da94..0b9eb5a 100644 --- a/linspector/core/notifications.py +++ b/linspector/notications/notifications.py @@ -29,6 +29,5 @@ logger = getLogger('linspector') class Notifications: def __init__(self, configuration, environment): - super().__init__() self.__configuration = configuration self.__environment = environment diff --git a/linspector/notications/phone/__init__.py b/linspector/notications/phone/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/notications/phone/call.py b/linspector/notications/phone/call.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/notications/sms.py b/linspector/notications/phone/sms.py similarity index 95% rename from linspector/notications/sms.py rename to linspector/notications/phone/sms.py index 1f47070..3266967 100644 --- a/linspector/notications/sms.py +++ b/linspector/notications/phone/sms.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.notification import Notification +from linspector.notifications.notification import Notification logger = getLogger('linspector') diff --git a/linspector/plugins/backend/__init__.py b/linspector/plugins/backend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/plugins/httpserver.py b/linspector/plugins/backend/httpserver.py similarity index 98% rename from linspector/plugins/httpserver.py rename to linspector/plugins/backend/httpserver.py index 1bec6c6..561fe79 100644 --- a/linspector/plugins/httpserver.py +++ b/linspector/plugins/backend/httpserver.py @@ -25,7 +25,7 @@ import cherrypy import json from logging import getLogger -from linspector.core.plugin import Plugin +from linspector.plugins.plugin import Plugin logger = getLogger('linspector') diff --git a/linspector/plugins/frontend/__init__.py b/linspector/plugins/frontend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/plugins/lish.py b/linspector/plugins/frontend/lish.py similarity index 97% rename from linspector/plugins/lish.py rename to linspector/plugins/frontend/lish.py index a4ec8cd..cb146e4 100644 --- a/linspector/plugins/lish.py +++ b/linspector/plugins/frontend/lish.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.plugin import Plugin +from linspector.plugins.plugin import Plugin logger = getLogger('linspector') diff --git a/linspector/core/plugin.py b/linspector/plugins/plugin.py similarity index 100% rename from linspector/core/plugin.py rename to linspector/plugins/plugin.py diff --git a/linspector/core/plugins.py b/linspector/plugins/plugins.py similarity index 100% rename from linspector/core/plugins.py rename to linspector/plugins/plugins.py diff --git a/linspector/services/http/__init__.py b/linspector/services/http/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/http/keyword.py b/linspector/services/http/keyword.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/misc/__init__.py b/linspector/services/misc/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/misc/dummy.py b/linspector/services/misc/dummy.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/misc/random.py b/linspector/services/misc/random.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/misc/shell.py b/linspector/services/misc/shell.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/net/__init__.py b/linspector/services/net/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/fritzbox.py b/linspector/services/net/fritzbox.py similarity index 96% rename from linspector/services/fritzbox.py rename to linspector/services/net/fritzbox.py index f07b4e7..2005764 100644 --- a/linspector/services/fritzbox.py +++ b/linspector/services/net/fritzbox.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.monitor import Monitor +from linspector.monitors.monitor import Monitor logger = getLogger('linspector') diff --git a/linspector/services/ping.py b/linspector/services/net/ping.py similarity index 96% rename from linspector/services/ping.py rename to linspector/services/net/ping.py index f89c596..793ca26 100644 --- a/linspector/services/ping.py +++ b/linspector/services/net/ping.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.monitor import Monitor +from linspector.monitors.monitor import Monitor logger = getLogger('linspector') diff --git a/linspector/services/port.py b/linspector/services/net/port.py similarity index 96% rename from linspector/services/port.py rename to linspector/services/net/port.py index 6614e6e..5b08ed9 100644 --- a/linspector/services/port.py +++ b/linspector/services/net/port.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.monitor import Monitor +from linspector.monitors.monitor import Monitor logger = getLogger('linspector') diff --git a/linspector/services/speedtest.py b/linspector/services/net/speedtest.py similarity index 98% rename from linspector/services/speedtest.py rename to linspector/services/net/speedtest.py index bf9ece2..1733769 100644 --- a/linspector/services/speedtest.py +++ b/linspector/services/net/speedtest.py @@ -28,7 +28,7 @@ import time from logging import getLogger -from linspector.core.monitor import Monitor +from linspector.monitors.monitor import Monitor logger = getLogger('linspector') diff --git a/linspector/core/service.py b/linspector/services/service.py similarity index 100% rename from linspector/core/service.py rename to linspector/services/service.py diff --git a/linspector/core/services.py b/linspector/services/services.py similarity index 100% rename from linspector/core/services.py rename to linspector/services/services.py diff --git a/linspector/services/snmp/__init__.py b/linspector/services/snmp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/snmp/get.py b/linspector/services/snmp/get.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/ssh/__init__.py b/linspector/services/ssh/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/ssh/ssh.py b/linspector/services/ssh/ssh.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/tasks/storage/__init__.py b/linspector/tasks/storage/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/tasks/storage/logger.py b/linspector/tasks/storage/logger.py new file mode 100644 index 0000000..b7663ec --- /dev/null +++ b/linspector/tasks/storage/logger.py @@ -0,0 +1,36 @@ +""" +This file is part of Linspector (https://linspector.org/) +Copyright (c) 2022 Johannes Findeisen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" + +from logging import getLogger +from linspector.tasks.task import Task + +logger = getLogger('linspector') + + +# TODO: check for all required configuration options and set defaults if needed. +class LoggerTask(Task): + + def __init__(self, configuration, environment): + super().__init__(configuration, environment) + self.__configuration = configuration + self.__environment = environment diff --git a/linspector/tasks/mariadb.py b/linspector/tasks/storage/mariadb.py similarity index 97% rename from linspector/tasks/mariadb.py rename to linspector/tasks/storage/mariadb.py index 8799cd4..117dec1 100644 --- a/linspector/tasks/mariadb.py +++ b/linspector/tasks/storage/mariadb.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.task import Task +from linspector.tasks.task import Task logger = getLogger('linspector') diff --git a/linspector/tasks/redis.py b/linspector/tasks/storage/redis.py similarity index 97% rename from linspector/tasks/redis.py rename to linspector/tasks/storage/redis.py index fc94352..de2196f 100644 --- a/linspector/tasks/redis.py +++ b/linspector/tasks/storage/redis.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.task import Task +from linspector.tasks.task import Task logger = getLogger('linspector') diff --git a/linspector/tasks/sqlite.py b/linspector/tasks/storage/sqlite.py similarity index 97% rename from linspector/tasks/sqlite.py rename to linspector/tasks/storage/sqlite.py index afb74ff..a10f87d 100644 --- a/linspector/tasks/sqlite.py +++ b/linspector/tasks/storage/sqlite.py @@ -22,7 +22,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ from logging import getLogger -from linspector.core.task import Task +from linspector.tasks.task import Task logger = getLogger('linspector') diff --git a/linspector/core/task.py b/linspector/tasks/task.py similarity index 100% rename from linspector/core/task.py rename to linspector/tasks/task.py diff --git a/linspector/core/tasks.py b/linspector/tasks/tasks.py similarity index 100% rename from linspector/core/tasks.py rename to linspector/tasks/tasks.py