diff --git a/AUTHORS b/AUTHORS index f8444f5..e51c18d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,6 +1,6 @@ * Findeisen, Johannes - Founder, core developer and maintainer. + Role: Founder, developer and maintainer Email: you@hanez.org - Homepage: http://hanez.org/ + Homepage: https://hanez.org/ Git: https://git.unixpeople.org/hanez GitHub: https://github.com/hanez/> diff --git a/etc/hostgroups/.gitkeep b/etc/hostgroups/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/etc/hostgroups/testgroup1.conf b/etc/hostgroups/testgroup1.conf new file mode 100644 index 0000000..226f3ef --- /dev/null +++ b/etc/hostgroups/testgroup1.conf @@ -0,0 +1,2 @@ +[hostgroups] +testgroup1 = host1,host2,host3,192.168.2.1>192.168.2.127 \ No newline at end of file diff --git a/etc/linspector.conf b/etc/linspector.conf index c1ae0c0..f135d1d 100644 --- a/etc/linspector.conf +++ b/etc/linspector.conf @@ -7,20 +7,38 @@ log_level= verbose log_count = 5 log_size = 10485760 pid_file = /var/run/user/1000/linspector.pid -; plugins separated by ','. no whitespaces allowed -plugins = lish,httpserver +; plugins separated by ','. no whitespaces allowed. not case sensitive. +plugins = Lish,HTTPServer ; globally configured tasks will always run on all monitors when no task is configured there. if tasks are configured in ; a monitor then maybe only run tasks from the dedicated monitor. maybe it is a good idea to run global tasks in every ; monitor and the monitor can add tasks to the global settings... need to think about it. ; tasks separated by ','. no whitespaces allowed -tasks = sqlite +tasks = SQLite notification = SMS ; 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 -; every notification can be configured in it's own ini file in etc/notifications; there no notification name as prefix -; is needed. see email example. +; a flexible way to define groups of hosts which can be used by monitors as target for monitoring for easily monitor +; groups without adding a monitor for each host. for some more information see the "hosts" section in gateway.conf. +; hostgroups can be defined in separate files in etc/hostgroups to be more flexible. +[hostgroups] +; add single hosts +group1 = host1,host2,host3 +; add a range of ip addresses. maybe a different range operator should be chosen but for now i think ">" is sexy... :) +group2 = 192.168.1.1>192.168.1.127 +; add a combination of hosts and ranges +group3 = host1,host2,host3,192.168.1.1>192.168.1.127 + +; just an idea taken from the old Linspector design. not tried but seems a good idea to add global options to monitor +; groups. no idea of an implementation yet. +[monitorgroups] +; members of monitors to automatically send notifications to all without need to set them in each monitor. members can +; be added to monitors in the configuration of each monitor though. +network1_members = admin1@example.com,admin2@example.com,admin3@example.com + +; every notification can be configured in it's own configuration file in etc/notifications; there no notification +; name as prefix is needed. see email example. [notifications] ; values can be overridden in each defined monitor sms_receivers = +number1,+number2 diff --git a/etc/monitors/network1/gateway.conf b/etc/monitors/network1/gateway.conf index eb6b009..597928d 100644 --- a/etc/monitors/network1/gateway.conf +++ b/etc/monitors/network1/gateway.conf @@ -1,10 +1,10 @@ [monitor] ; currently i get errors when the service option is not spelled correct. error handling need to fix this. same for ; notifications and tasks. -service = fritzboxuplink +service = net.FritzboxUplink interval = 60 ; notifications separated by ','. no whitespaces allowed. the case is not important. -notifications = sMs,Email +notifications = sMs,EmaiL ; values from main configuration can be overridden for each defined monitor ; email_receivers separated by ','. no whitespaces allowed email_receivers = admin@example.com,fallback@example.com @@ -13,11 +13,12 @@ sms_receivers = +329084320984,+39804932409 ; setting to None fails. just do not set this option. currently i get an error when tasks is not set here. need to be ; fixed. setting it like below works but is no good design for optional options. same for notifications. tasks = redis -; maybe this should be some kind of range too, for example for the ping service like: 10.0.0.1-10.0.0.42 or more +; maybe this should be some kind of range too, for example for the ping service like: 10.0.0.1>10.0.0.42 or more ; sophisticated kind of ranges... i will find a solution for that... like host groups in the old version of Linspector -; so we don't need to add a monitor for each host... but it would be a good idea to expose these hosts to become a -; monitor for each host internally. ;) -host = 192.168.0.1 +; so we don't need to add a monitor for each host... but it would be a good idea to expose these to hostgroups +; internally to single hosts to become a monitor for each host internally. some more ideas are in ;) +; hosts with added hostgroup defined in main configuration file +hosts = 192.168.0.1,192.168.23.24,@group1,@testgroup1 user = USERNAME password = PASSWORD info = Cable Provider \ No newline at end of file diff --git a/etc/monitors/network2/gateway.conf b/etc/monitors/network2/gateway.conf index 14faedf..a2813a7 100644 --- a/etc/monitors/network2/gateway.conf +++ b/etc/monitors/network2/gateway.conf @@ -1,12 +1,12 @@ [monitor] identifier = dsl -service = FritzboxUplink +service = Net.FritzboxUplink interval = 60 notifications = Email email_receivers = admin@example.com,fallback@example.com sms_receivers = +329084320984,+39804932409 tasks = MariaDB,FileLogger -host = 192.168.1.1 +hosts = 192.168.1.1 user = USERNAME password = PASSWORD info = Cable Provider \ No newline at end of file diff --git a/etc/monitors/test/test1 b/etc/monitors/test/test1 index e69de29..766b1c0 100644 --- a/etc/monitors/test/test1 +++ b/etc/monitors/test/test1 @@ -0,0 +1 @@ +this file should not raise an error because it does has the .conf suffix. only .conf files should be processed. \ No newline at end of file diff --git a/etc/monitors/test/test1.conf b/etc/monitors/test/test1.conf new file mode 100644 index 0000000..f0b9f1e --- /dev/null +++ b/etc/monitors/test/test1.conf @@ -0,0 +1,2 @@ +[monitor] +service = misc.dummy \ No newline at end of file diff --git a/linspector/core/configuration.py b/linspector/core/configuration.py index edabd19..302f99d 100644 --- a/linspector/core/configuration.py +++ b/linspector/core/configuration.py @@ -20,7 +20,6 @@ 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. """ - import configparser import glob import os diff --git a/linspector/core/daemon.py b/linspector/core/daemon.py index 4b9853e..65bd5cf 100644 --- a/linspector/core/daemon.py +++ b/linspector/core/daemon.py @@ -20,7 +20,6 @@ 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. """ - import atexit import os import signal diff --git a/linspector/core/environment.py b/linspector/core/environment.py index eb4bb88..1db4104 100644 --- a/linspector/core/environment.py +++ b/linspector/core/environment.py @@ -20,7 +20,6 @@ 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 logger = getLogger('linspector') diff --git a/linspector/core/linspectord.py b/linspector/core/linspectord.py index 82af911..e714350 100644 --- a/linspector/core/linspectord.py +++ b/linspector/core/linspectord.py @@ -20,8 +20,8 @@ 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.core.daemon import Daemon logger = getLogger('linspector') diff --git a/linspector/core/logger.py b/linspector/core/logger.py index 10b188d..7caef19 100644 --- a/linspector/core/logger.py +++ b/linspector/core/logger.py @@ -20,7 +20,6 @@ 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 logger = getLogger('linspector') diff --git a/linspector/core/model.py b/linspector/core/model.py index cb421fc..965f06f 100644 --- a/linspector/core/model.py +++ b/linspector/core/model.py @@ -20,15 +20,15 @@ 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 logger = getLogger('linspector') +# This class can maybe be used for a general data model for Linspector data processing. currently +# the is no use for it and no place known where it could be used with sense. class Model: def __init__(self, configuration, environment): - super().__init__() self.__configuration = configuration self._environment = environment diff --git a/linspector/core/monitor.py b/linspector/core/monitor.py index c5d6602..d17a048 100644 --- a/linspector/core/monitor.py +++ b/linspector/core/monitor.py @@ -20,7 +20,6 @@ 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. """ - import importlib from logging import getLogger diff --git a/linspector/core/notification.py b/linspector/core/notification.py new file mode 100644 index 0000000..f48a284 --- /dev/null +++ b/linspector/core/notification.py @@ -0,0 +1,33 @@ +""" +This file is part of Linspector (https://linspector.org/) +Copyright (c) 2022 Johannes Findeisen . All Rights Reserved. + +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 + +logger = getLogger('linspector') + + +class Notification: + + def __init__(self, configuration, environment): + super().__init__() + self.__configuration = configuration + self._environment = environment diff --git a/linspector/core/plugin.py b/linspector/core/plugin.py new file mode 100644 index 0000000..ad60fe7 --- /dev/null +++ b/linspector/core/plugin.py @@ -0,0 +1,33 @@ +""" +This file is part of Linspector (https://linspector.org/) +Copyright (c) 2022 Johannes Findeisen . All Rights Reserved. + +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 + +logger = getLogger('linspector') + + +class Plugin: + + def __init__(self, configuration, environment, linspector): + self.__configuration = configuration + self._environment = environment + self.__linspector = linspector diff --git a/linspector/core/service.py b/linspector/core/service.py new file mode 100644 index 0000000..d04ec33 --- /dev/null +++ b/linspector/core/service.py @@ -0,0 +1,33 @@ +""" +This file is part of Linspector (https://linspector.org/) +Copyright (c) 2022 Johannes Findeisen . All Rights Reserved. + +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 + +logger = getLogger('linspector') + + +class Service: + + def __init__(self, configuration, environment): + super().__init__() + self.__configuration = configuration + self._environment = environment diff --git a/linspector/core/task.py b/linspector/core/task.py new file mode 100644 index 0000000..5d00aa8 --- /dev/null +++ b/linspector/core/task.py @@ -0,0 +1,32 @@ +""" +This file is part of Linspector (https://linspector.org/) +Copyright (c) 2022 Johannes Findeisen . All Rights Reserved. + +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 + +logger = getLogger('linspector') + + +class Task: + + def __init__(self, configuration, environment): + self.__configuration = configuration + self._environment = environment diff --git a/linspector/notifications/call.py b/linspector/notifications/call.py index c82ddd7..f0c0540 100644 --- a/linspector/notifications/call.py +++ b/linspector/notifications/call.py @@ -20,9 +20,10 @@ 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.core.notification import Notification + logger = getLogger('linspector') @@ -30,8 +31,9 @@ def get(configuration, environment): return CallNotification(configuration, environment) -class CallNotification: +class CallNotification(Notification): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/notifications/email.py b/linspector/notifications/email.py index a82fe2c..f1bf916 100644 --- a/linspector/notifications/email.py +++ b/linspector/notifications/email.py @@ -20,9 +20,10 @@ 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.core.notification import Notification + logger = getLogger('linspector') @@ -30,8 +31,9 @@ def get(configuration, environment): return EmailNotification(configuration, environment) -class EmailNotification: +class EmailNotification(Notification): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/notifications/sms.py b/linspector/notifications/sms.py index 84520a2..a46e7b1 100644 --- a/linspector/notifications/sms.py +++ b/linspector/notifications/sms.py @@ -20,9 +20,10 @@ 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.core.notification import Notification + logger = getLogger('linspector') @@ -30,8 +31,9 @@ def get(configuration, environment): return SMSNotification(configuration, environment) -class SMSNotification: +class SMSNotification(Notification): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/notifications/twitter.py b/linspector/notifications/twitter.py index 2e3adbb..6108725 100644 --- a/linspector/notifications/twitter.py +++ b/linspector/notifications/twitter.py @@ -20,9 +20,10 @@ 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.core.notification import Notification + logger = getLogger('linspector') @@ -30,8 +31,9 @@ def get(configuration, environment): return TwitterNotification(configuration, environment) -class TwitterNotification: +class TwitterNotification(Notification): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/notifications/xmpp.py b/linspector/notifications/xmpp.py index 2a4a2de..90b130b 100644 --- a/linspector/notifications/xmpp.py +++ b/linspector/notifications/xmpp.py @@ -20,9 +20,10 @@ 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.core.notification import Notification + logger = getLogger('linspector') @@ -30,8 +31,9 @@ def get(configuration, environment): return XMPPNotification(configuration, environment) -class XMPPNotification: +class XMPPNotification(Notification): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/plugins/httpserver.py b/linspector/plugins/httpserver.py index cce0a80..cc3ba33 100644 --- a/linspector/plugins/httpserver.py +++ b/linspector/plugins/httpserver.py @@ -20,12 +20,13 @@ 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. """ - import cherrypy import json from logging import getLogger +from linspector.core.plugin import Plugin + logger = getLogger('linspector') @@ -34,9 +35,10 @@ def get(configuration, environment, linspector): # TODO: check for all required configuration options and set defaults if needed. -class HTTPServerPlugin: +class HTTPServerPlugin(Plugin): def __init__(self, configuration, environment, linspector): + super().__init__(configuration, environment, linspector) self.__configuration = configuration self.__environment = environment self.__linspector = linspector diff --git a/linspector/plugins/lish.py b/linspector/plugins/lish.py index 84a447a..82a59c6 100644 --- a/linspector/plugins/lish.py +++ b/linspector/plugins/lish.py @@ -20,9 +20,10 @@ 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.core.plugin import Plugin + logger = getLogger('linspector') @@ -31,9 +32,10 @@ def get(configuration, environment, linspector): # TODO: check for all required configuration options and set defaults if needed. -class LishPlugin: +class LishPlugin(Plugin): def __init__(self, configuration, environment, linspector): + super().__init__(configuration, environment, linspector) self.__configuration = configuration self.__environment = environment self.__linspector = linspector 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/httpkeyword.py b/linspector/services/http/httpkeyword.py similarity index 92% rename from linspector/services/httpkeyword.py rename to linspector/services/http/httpkeyword.py index 8794a92..22b72de 100644 --- a/linspector/services/httpkeyword.py +++ b/linspector/services/http/httpkeyword.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class HTTPKeywordService: +class HTTPKeywordService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment 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/dummy.py b/linspector/services/misc/dummy.py similarity index 92% rename from linspector/services/dummy.py rename to linspector/services/misc/dummy.py index 0d09a75..dc60bb2 100644 --- a/linspector/services/dummy.py +++ b/linspector/services/misc/dummy.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class DummyService: +class DummyService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/services/random.py b/linspector/services/misc/random.py similarity index 92% rename from linspector/services/random.py rename to linspector/services/misc/random.py index 7c53708..81c656a 100644 --- a/linspector/services/random.py +++ b/linspector/services/misc/random.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class RandomService: +class RandomService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment 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/fritzboxuplink.py b/linspector/services/net/fritzboxuplink.py similarity index 88% rename from linspector/services/fritzboxuplink.py rename to linspector/services/net/fritzboxuplink.py index defad84..0b14773 100644 --- a/linspector/services/fritzboxuplink.py +++ b/linspector/services/net/fritzboxuplink.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,11 +32,12 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class FritzboxUplinkService: +class FritzboxUplinkService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment - def execute(self): - print(__file__ + ' (37): ' + 'test...') + #def execute(self): + # print(__file__ + ' (37): ' + 'test...') diff --git a/linspector/services/ping.py b/linspector/services/net/ping.py similarity index 92% rename from linspector/services/ping.py rename to linspector/services/net/ping.py index 95cbdcf..dc03056 100644 --- a/linspector/services/ping.py +++ b/linspector/services/net/ping.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class PingService: +class PingService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/services/port.py b/linspector/services/net/port.py similarity index 92% rename from linspector/services/port.py rename to linspector/services/net/port.py index 28f7568..a092883 100644 --- a/linspector/services/port.py +++ b/linspector/services/net/port.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class PortService: +class PortService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/services/shell.py b/linspector/services/net/shell.py similarity index 92% rename from linspector/services/shell.py rename to linspector/services/net/shell.py index b0b1d1f..ac40831 100644 --- a/linspector/services/shell.py +++ b/linspector/services/net/shell.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class ShellService: +class ShellService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/services/speedtest.py b/linspector/services/net/speedtest.py similarity index 96% rename from linspector/services/speedtest.py rename to linspector/services/net/speedtest.py index 6aa63ee..b7c2358 100644 --- a/linspector/services/speedtest.py +++ b/linspector/services/net/speedtest.py @@ -20,13 +20,14 @@ 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. """ - import calendar import requests import time from logging import getLogger +from linspector.core.service import Service + logger = getLogger('linspector') @@ -35,9 +36,10 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class SpeedtestService: +class SpeedtestService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment @@ -91,6 +93,3 @@ class SpeedtestService: logger.warning('could not calculate download speed!') time.sleep(self.__configuration.get_speedtest_interval()) - - def write_to_db(self): - return diff --git a/linspector/services/ssh.py b/linspector/services/net/ssh.py similarity index 92% rename from linspector/services/ssh.py rename to linspector/services/net/ssh.py index 91fb22e..9a8e7f1 100644 --- a/linspector/services/ssh.py +++ b/linspector/services/net/ssh.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class SSHService: +class SSHService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/services/tcpconnect.py b/linspector/services/net/tcpconnect.py similarity index 92% rename from linspector/services/tcpconnect.py rename to linspector/services/net/tcpconnect.py index 2a564ec..f204095 100644 --- a/linspector/services/tcpconnect.py +++ b/linspector/services/net/tcpconnect.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class TCPConnectService: +class TCPConnectService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment 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/snmpget.py b/linspector/services/snmp/snmpget.py similarity index 92% rename from linspector/services/snmpget.py rename to linspector/services/snmp/snmpget.py index b43acc6..09a4a22 100644 --- a/linspector/services/snmpget.py +++ b/linspector/services/snmp/snmpget.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class SNMPGetService: +class SNMPGetService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment 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/tcpconnect.py b/linspector/services/ssh/tcpconnect.py new file mode 100644 index 0000000..f204095 --- /dev/null +++ b/linspector/services/ssh/tcpconnect.py @@ -0,0 +1,40 @@ +""" +This file is part of Linspector (https://linspector.org/) +Copyright (c) 2022 Johannes Findeisen . All Rights Reserved. + +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.core.service import Service + +logger = getLogger('linspector') + + +def get(configuration, environment): + return TCPConnectService(configuration, environment) + + +# TODO: check for all required configuration options and set defaults if needed. +class TCPConnectService(Service): + + def __init__(self, configuration, environment): + super().__init__(configuration, environment) + self.__configuration = configuration + self.__environment = environment diff --git a/linspector/services/sys/__init__.py b/linspector/services/sys/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/linspector/services/uptime.py b/linspector/services/sys/uptime.py similarity index 92% rename from linspector/services/uptime.py rename to linspector/services/sys/uptime.py index 5065fac..ad5f02d 100644 --- a/linspector/services/uptime.py +++ b/linspector/services/sys/uptime.py @@ -20,9 +20,10 @@ 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.core.service import Service + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class UptimeService: +class UptimeService(Service): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/tasks/filelogger.py b/linspector/tasks/filelogger.py index be4dec7..239057f 100644 --- a/linspector/tasks/filelogger.py +++ b/linspector/tasks/filelogger.py @@ -20,9 +20,10 @@ 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.core.task import Task + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class FileLoggerTask: +class FileLoggerTask(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/mariadb.py index e8988d7..f2d101b 100644 --- a/linspector/tasks/mariadb.py +++ b/linspector/tasks/mariadb.py @@ -20,9 +20,10 @@ 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.core.task import Task + logger = getLogger('linspector') @@ -31,8 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class MariaDBTask: +class MariaDBTask(Task): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment diff --git a/linspector/tasks/redis.py b/linspector/tasks/redis.py index 6737ba6..666136f 100644 --- a/linspector/tasks/redis.py +++ b/linspector/tasks/redis.py @@ -20,9 +20,10 @@ 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.core.task import Task + logger = getLogger('linspector') @@ -31,9 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class RedisTask: +class RedisTask(Task): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment - diff --git a/linspector/tasks/sqlite.py b/linspector/tasks/sqlite.py index e9e6100..a5e51ea 100644 --- a/linspector/tasks/sqlite.py +++ b/linspector/tasks/sqlite.py @@ -20,9 +20,10 @@ 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.core.task import Task + logger = getLogger('linspector') @@ -31,9 +32,9 @@ def get(configuration, environment): # TODO: check for all required configuration options and set defaults if needed. -class SQLiteTask: +class SQLiteTask(Task): def __init__(self, configuration, environment): + super().__init__(configuration, environment) self.__configuration = configuration self.__environment = environment -