From 98dc7c58d561217fede4033147bc1fbd578728dc Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 1 Jan 2023 17:36:45 +0100 Subject: [PATCH 01/10] impl: rcon check --- rcon-check.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 rcon-check.py diff --git a/rcon-check.py b/rcon-check.py new file mode 100755 index 0000000..b862b69 --- /dev/null +++ b/rcon-check.py @@ -0,0 +1,32 @@ +#!/usr/bin/python3 +import sys +import argparse +import subprocess + +PW_FILE="/etc/rcon.pass" + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Monitor Source Server', + formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.add_argument('--host', '-H', default="127.0.0.1", help='Target Source-Server') + parser.add_argument('--port', '-p', type=int, default=27015, help='Target Port') + args = parser.parse_args() + + password = None + with open(PW_FILE) as f: + password = f.read().strip() + + cmd = [ "/usr/local/bin/rcon", "-P{}".format(password), "-a{}".format(args.host), + "-p{}".format(port), "sm plugins info Skillbird" ] + + p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding=ENCODING) + out = p.stdout.encode("ascii") + if p.returncode != 0: + print("Insurgency CRITICAL - {}".format(out)) + sys.exit(1) + elif "not loaded" in out: + print("Insurgency WARNING - {}".format(out)) + sys.exit(2) + else: + print("Insurgency OK") + sys.exit(0) From 855337405b7d5a3ae037a7e9e0f0990f650ba6b7 Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 1 Jan 2023 17:37:04 +0100 Subject: [PATCH 02/10] feat: gitignore swp --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1377554 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.swp From 8f86786c660b187c88344187594e3d1ca4173d5b Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 1 Jan 2023 19:03:02 +0100 Subject: [PATCH 03/10] fix: fail gracefully on missing pw file --- rcon-check.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rcon-check.py b/rcon-check.py index b862b69..a889bc9 100755 --- a/rcon-check.py +++ b/rcon-check.py @@ -2,6 +2,7 @@ import sys import argparse import subprocess +import os PW_FILE="/etc/rcon.pass" @@ -13,6 +14,10 @@ if __name__ == "__main__": args = parser.parse_args() password = None + if not os.path.isfile(PW_FILE): + print("Insurgency CRITICAL - Missing /etc/rcon.pass". + sys.exit(1) + with open(PW_FILE) as f: password = f.read().strip() From 1f9a2b8104c69b328689018eb5149fea0dd29adc Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 1 Jan 2023 19:06:33 +0100 Subject: [PATCH 04/10] update: change rcon pass file checking --- rcon-check.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/rcon-check.py b/rcon-check.py index a889bc9..b0e6e63 100755 --- a/rcon-check.py +++ b/rcon-check.py @@ -14,16 +14,18 @@ if __name__ == "__main__": args = parser.parse_args() password = None - if not os.path.isfile(PW_FILE): + try: + with open(PW_FILE) as f: + password = f.read().strip() + except PermissionError as e: + print("Insurgency CRITICAL - Permission Error on /etc/rcon.pass". + sys.exit(1) + except FileNotFoundError as e: print("Insurgency CRITICAL - Missing /etc/rcon.pass". sys.exit(1) - with open(PW_FILE) as f: - password = f.read().strip() - cmd = [ "/usr/local/bin/rcon", "-P{}".format(password), "-a{}".format(args.host), - "-p{}".format(port), "sm plugins info Skillbird" ] - + "-p{}".format(port), "sm plugins info Skillbird" ] p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding=ENCODING) out = p.stdout.encode("ascii") if p.returncode != 0: From ad86e38727a4728cae8fba99430cac1f5c07fa60 Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 1 Jan 2023 19:07:02 +0100 Subject: [PATCH 05/10] fix: missing bracket syntax --- rcon-check.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rcon-check.py b/rcon-check.py index b0e6e63..403f036 100755 --- a/rcon-check.py +++ b/rcon-check.py @@ -18,10 +18,10 @@ if __name__ == "__main__": with open(PW_FILE) as f: password = f.read().strip() except PermissionError as e: - print("Insurgency CRITICAL - Permission Error on /etc/rcon.pass". + print("Insurgency CRITICAL - Permission Error on /etc/rcon.pass") sys.exit(1) except FileNotFoundError as e: - print("Insurgency CRITICAL - Missing /etc/rcon.pass". + print("Insurgency CRITICAL - Missing /etc/rcon.pass") sys.exit(1) cmd = [ "/usr/local/bin/rcon", "-P{}".format(password), "-a{}".format(args.host), From 09806752ef6e2a0dc76ed0e9bbdf3db6cb0d2533 Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 1 Jan 2023 19:07:34 +0100 Subject: [PATCH 06/10] fix: use args port --- rcon-check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rcon-check.py b/rcon-check.py index 403f036..3d2f1d9 100755 --- a/rcon-check.py +++ b/rcon-check.py @@ -25,7 +25,7 @@ if __name__ == "__main__": sys.exit(1) cmd = [ "/usr/local/bin/rcon", "-P{}".format(password), "-a{}".format(args.host), - "-p{}".format(port), "sm plugins info Skillbird" ] + "-p{}".format(args.port), "sm plugins info Skillbird" ] p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding=ENCODING) out = p.stdout.encode("ascii") if p.returncode != 0: From e20d6ab1a5f0f37d34def2708cdbcc57b70d5c13 Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 1 Jan 2023 19:10:26 +0100 Subject: [PATCH 07/10] update: subprocess run direct encoding --- rcon-check.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/rcon-check.py b/rcon-check.py index 3d2f1d9..7612b57 100755 --- a/rcon-check.py +++ b/rcon-check.py @@ -26,12 +26,11 @@ if __name__ == "__main__": cmd = [ "/usr/local/bin/rcon", "-P{}".format(password), "-a{}".format(args.host), "-p{}".format(args.port), "sm plugins info Skillbird" ] - p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding=ENCODING) - out = p.stdout.encode("ascii") + p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8") if p.returncode != 0: - print("Insurgency CRITICAL - {}".format(out)) + print("Insurgency CRITICAL - {}".format(p.stdout)) sys.exit(1) - elif "not loaded" in out: + elif "not loaded" in p.stdout: print("Insurgency WARNING - {}".format(out)) sys.exit(2) else: From a994658e4a038eb34ccf695dca1dffffcd29758e Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Sun, 1 Jan 2023 19:15:11 +0100 Subject: [PATCH 08/10] fix: use auto encoded output everywhere --- rcon-check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rcon-check.py b/rcon-check.py index 7612b57..914d8a0 100755 --- a/rcon-check.py +++ b/rcon-check.py @@ -31,7 +31,7 @@ if __name__ == "__main__": print("Insurgency CRITICAL - {}".format(p.stdout)) sys.exit(1) elif "not loaded" in p.stdout: - print("Insurgency WARNING - {}".format(out)) + print("Insurgency WARNING - {}".format(p.stdout)) sys.exit(2) else: print("Insurgency OK") From b93f65a1a7613e82d44cdc4097f8019ea6f2b56d Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Fri, 6 Jan 2023 01:13:09 +0100 Subject: [PATCH 09/10] update: rename signal gateway script --- telegram-notify.py => signal-gateway-client.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename telegram-notify.py => signal-gateway-client.py (100%) diff --git a/telegram-notify.py b/signal-gateway-client.py similarity index 100% rename from telegram-notify.py rename to signal-gateway-client.py From ef7fdb41e901157d2f608714bd70c74fcc41e5dc Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Fri, 6 Jan 2023 01:15:53 +0100 Subject: [PATCH 10/10] fix: update command with new path --- commands.d/signal-notify.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands.d/signal-notify.conf b/commands.d/signal-notify.conf index dfb99aa..9cabd3c 100644 --- a/commands.d/signal-notify.conf +++ b/commands.d/signal-notify.conf @@ -1,5 +1,5 @@ object NotificationCommand "signal-service-notification" { - command = [ "/etc/icinga2/monitoring-tools/signal-notify.py" ] + command = [ "/etc/icinga2/monitoring-tools/signal-gateway-client.py" ] arguments += { "-4" = "$notification_address$"