summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2015-10-12 23:26:10 +0200
committermh <mh@immerda.ch>2015-10-12 23:26:10 +0200
commitbbda7cef0b0d6d68c9d2c393592cbfbef9f3534e (patch)
treed6e9b8d10602ca97af5964c9f9ecae3607291307
parent5e92209e5b284e0f0d99c30e555cc498a39c396e (diff)
introduce horde_login checks
-rw-r--r--files/plugins/check_horde_login69
-rw-r--r--manifests/plugins/horde_login.pp9
-rw-r--r--manifests/service/horde_login.pp18
3 files changed, 96 insertions, 0 deletions
diff --git a/files/plugins/check_horde_login b/files/plugins/check_horde_login
new file mode 100644
index 0000000..4c63daa
--- /dev/null
+++ b/files/plugins/check_horde_login
@@ -0,0 +1,69 @@
+#!/bin/env python
+# vi:si:et:sw=4:sts=4:ts=4
+# -*- coding: UTF-8 -*-
+# -*- Mode: Python -*-
+#
+# Copyright (C) 2015 mh <mh@immerda.ch>
+
+# This file may be distributed and/or modified under the terms of
+# the GNU General Public License version 2 as published by
+# the Free Software Foundation.
+# This file is distributed without any warranty; without even the implied
+# warranty of merchantability or fitness for a particular purpose.
+#
+
+import sys, os, requests, getopt
+
+def usage():
+ print sys.argv[0] + " -u username "+ \
+ "-p password " + \
+ "-s server path"
+ sys.exit(1)
+
+def main():
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "u:p:s:h")
+ except getopt.GetoptError:
+ usage()
+ return 3
+
+ user = url = password = None
+
+ for o, a in opts:
+ if o == "-u":
+ user = a
+ elif o == "-p":
+ password = a
+ elif o == "-s":
+ url = a + "/login.php"
+ elif o == '-h':
+ usage()
+
+ if user == None or password == None or url == None:
+ usage()
+
+ params = { 'horde_user': user,
+ 'horde_pass': password,
+ 'horde_select_view': 'auto',
+ 'anchor_string': '',
+ 'app': '',
+ 'login_post': 1,
+ 'new_lang': 'en_US',
+ 'url': '',
+ }
+
+
+ r = requests.post(url, data=params, allow_redirects=False)
+ # on a successfully login we are redirected to the mailbox
+ if r.status_code == 302:
+ print "OK"
+ sys.exit(0)
+ else:
+ print "Error"
+ sys.exit(2)
+
+
+if __name__ == "__main__":
+ sys.exit(main())
+
+
diff --git a/manifests/plugins/horde_login.pp b/manifests/plugins/horde_login.pp
new file mode 100644
index 0000000..908b57b
--- /dev/null
+++ b/manifests/plugins/horde_login.pp
@@ -0,0 +1,9 @@
+# check_horde_login
+class nagios::plugins::horde_login {
+ nagios::plugin { 'check_horde_login':
+ source => 'nagios/plugins/check_horde_login',
+ } -> nagios_command {
+ 'check_horde_login':
+ command_line => "\$USER1\$/check_horde_login -s \$ARG1\$ -u \$ARG2\$ -p \$ARG3\$",
+ }
+}
diff --git a/manifests/service/horde_login.pp b/manifests/service/horde_login.pp
new file mode 100644
index 0000000..876ce2b
--- /dev/null
+++ b/manifests/service/horde_login.pp
@@ -0,0 +1,18 @@
+# a horde login check
+define nagios::service::horde_login(
+ $username,
+ $password,
+ $url,
+ $ensure = 'present',
+){
+ nagios::service{
+ "horde_${name}":
+ ensure => $ensure;
+ }
+
+ if $ensure != 'absent' {
+ Nagios::Service["horde_${name}"]{
+ check_command => "check_horde_login!${url}!${username}!${password}",
+ }
+ }
+}