Module: check_mk
Branch: master
Commit: 6958613bf7925c623d64f0f72762cf45a5ac1ab0
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6958613bf7925c…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Apr 4 22:15:46 2018 +0200
5944 FIX Fixed broken HTTP header auth for not yet existing users
This was broken since ~1.5.0i3. When a user which has not been created
in Check_MK before is being authenticated using the optional HTTP header
authentication and logged in using the "default user profile", some
host- and service views were not working as expected. They were showing
some exception like "KeyError: u'<USER>'".
A workaround in the affected versions is to create the user accounts
before the user try to access the GUI.
Change-Id: I950453b8de15b2d5cc628169f84420e85591b1e3
---
.werks/5944 | 17 +++++++++++++++++
web/htdocs/userdb.py | 2 +-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/.werks/5944 b/.werks/5944
new file mode 100644
index 0000000..c8a3b2a
--- /dev/null
+++ b/.werks/5944
@@ -0,0 +1,17 @@
+Title: Fixed broken HTTP header auth for not yet existing users
+Level: 1
+Component: multisite
+Compatible: compat
+Edition: cre
+Version: 1.5.0i4
+Date: 1522872782
+Class: fix
+
+This was broken since ~1.5.0i3. When a user which has not been created
+in Check_MK before is being authenticated using the optional HTTP header
+authentication and logged in using the "default user profile", some
+host- and service views were not working as expected. They were showing
+some exception like "KeyError: u'<USER>'".
+
+A workaround in the affected versions is to create the user accounts
+before the user try to access the GUI.
diff --git a/web/htdocs/userdb.py b/web/htdocs/userdb.py
index ce3fca9..be52ffa 100644
--- a/web/htdocs/userdb.py
+++ b/web/htdocs/userdb.py
@@ -906,7 +906,7 @@ def contactgroups_of_user(user_id):
user = load_cached_profile()
if user == None:
# No cached profile present. Load all users to get the users data
- user = load_users(lock=False)[user_id]
+ user = load_users(lock=False).get(user_id, {})
return user.get("contactgroups", [])
Module: check_mk
Branch: master
Commit: bc3b3dd21bfd61085e3111b1a9aa7e76f89985e5
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=bc3b3dd21bfd61…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Apr 4 16:37:50 2018 +0200
Added todo note
Change-Id: Ia05ce96da44e8832a97d82fac9dab864097a3627
---
web/htdocs/login.py | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/web/htdocs/login.py b/web/htdocs/login.py
index 6e895ca..6e281a5 100644
--- a/web/htdocs/login.py
+++ b/web/htdocs/login.py
@@ -257,6 +257,14 @@ def auth_cookie_is_valid(cookie_name):
return False
+# TODO: Needs to be cleaned up. When using HTTP header auth or web server auth it is not
+# ensured that a user exists after letting the user in. This is a problem for the following
+# code! We need to define a point where the following code can rely on an existing user
+# object. userdb.hook_login() is doing some similar stuff
+# - It also checks the type() of the user_id (Not in the same way :-/)
+# - It also calls userdb.is_customer_user_allowed_to_login()
+# - It calls userdb.create_non_existing_user() but we don't
+# - It calls connection.is_locked() but we don't
def check_auth(mod_python_req):
user_id = check_auth_web_server(mod_python_req)
Module: check_mk
Branch: master
Commit: 1299c6d3820407c48db353c9e62195ec66c1dab0
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=1299c6d3820407…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Wed Apr 4 15:35:39 2018 +0200
5937 apc_system_events: New check which monitors active system events on an InRow Cooling device
Change-Id: Ideeb22fb8800bf2a6d25728a67adb0492162e7c7
---
.werks/5937 | 10 ++++++
checkman/apc_inrow_system_events | 12 ++++++++
checks/apc_inrow_system_events | 59 ++++++++++++++++++++++++++++++++++++
web/plugins/wato/check_parameters.py | 17 +++++++++++
4 files changed, 98 insertions(+)
diff --git a/.werks/5937 b/.werks/5937
new file mode 100644
index 0000000..c39a089
--- /dev/null
+++ b/.werks/5937
@@ -0,0 +1,10 @@
+Title: apc_system_events: New check which monitors active system events on an InRow Cooling device
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.5.0i4
+Date: 1522848872
+Class: feature
+
+
diff --git a/checkman/apc_inrow_system_events b/checkman/apc_inrow_system_events
new file mode 100644
index 0000000..caface8
--- /dev/null
+++ b/checkman/apc_inrow_system_events
@@ -0,0 +1,12 @@
+title: APC InRow Cooling Devices: System events
+agents: snmp
+catalog: hw/environment/apc
+license: GPL
+distribution: check_mk
+description:
+ This check monitors active system events on an InRow Cooling device.
+ In case of open events, the check takes a configurable state.
+
+inventory:
+ One check will be created for each host
+
diff --git a/checks/apc_inrow_system_events b/checks/apc_inrow_system_events
new file mode 100644
index 0000000..1362f80
--- /dev/null
+++ b/checks/apc_inrow_system_events
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2018 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk 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 in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# tails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+#.1.3.6.1.4.1.318.1.1.13.3.1.2.1.3.1 Power Source B Failure
+#.1.3.6.1.4.1.318.1.1.13.3.1.2.1.3.2 Fan Power Supply Right Fault
+
+def parse_apc_inrow_system_events(info):
+ parsed = {}
+ events = []
+ for line in info:
+ events.append(line[0])
+ parsed.update({"events":events})
+ return parsed
+
+
+def inventory_apc_inrow_system_events(parsed):
+ yield (None, {})
+
+
+def check_apc_inrow_system_events(_no_item, params, parsed):
+ if parsed["events"]:
+ state = params.get("state", 2)
+ return state, ", ".join(parsed["events"])
+ else:
+ return 0, "No service events"
+
+
+check_info["apc_inrow_system_events"] = {
+ "parse_function" : parse_apc_inrow_system_events,
+ "inventory_function" : inventory_apc_inrow_system_events,
+ "check_function" : check_apc_inrow_system_events,
+ "service_description" : "System events",
+ "snmp_info" : (".1.3.6.1.4.1.318.1.1.13.3.1.2.1", ["3"]), #airIRAlarmDescription
+ "snmp_scan_function" : lambda oid: oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.318.1.3"),
+ "group" : "apc_system_events",
+}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index b3db19b..2062898 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -5807,6 +5807,23 @@ register_check_parameters(
"dict",
)
+register_check_parameters(
+ subgroup_environment,
+ "apc_system_events",
+ _("APC Inrow System Events"),
+ Dictionary(
+ title = _("System Events on APX Inrow Devices"),
+ elements = [
+ ( "state",
+ MonitoringState(
+ title = _("State during active system events"),
+ default_value = 2,
+ )),
+ ]),
+ None,
+ "dict"
+)
+
#.
# .--Printing------------------------------------------------------------.
# | ____ _ _ _ |