From 6aff090ca28ce2d21da826f7dc1a75e7c1d9c7e006ed0bf808d7ff474666ac8f Mon Sep 17 00:00:00 2001
From: Martin Hauke <mardnh@gmx.de>
Date: Thu, 14 Sep 2023 13:42:09 +0000
Subject: [PATCH] Accepting request 1093439 from home:kukuk:no-utmp

- systemd-not-utmp.patch: let check_users prefer systemd-logind
  over utmp (jsc#PED-3144)

OBS-URL: https://build.opensuse.org/request/show/1093439
OBS-URL: https://build.opensuse.org/package/show/server:monitoring/monitoring-plugins?expand=0&rev=108
---
 monitoring-plugins.changes |  6 +++
 monitoring-plugins.spec    |  6 +++
 systemd-not-utmp.patch     | 78 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 90 insertions(+)
 create mode 100644 systemd-not-utmp.patch

diff --git a/monitoring-plugins.changes b/monitoring-plugins.changes
index 7aaeae7..2cd6450 100644
--- a/monitoring-plugins.changes
+++ b/monitoring-plugins.changes
@@ -1,3 +1,9 @@
+-------------------------------------------------------------------
+Thu Jun 15 14:44:14 UTC 2023 - Thorsten Kukuk <kukuk@suse.com>
+
+- systemd-not-utmp.patch: let check_users prefer systemd-logind
+  over utmp (jsc#PED-3144)
+
 -------------------------------------------------------------------
 Wed May 31 21:57:07 UTC 2023 - David Disseldorp <ddiss@suse.com>
 
diff --git a/monitoring-plugins.spec b/monitoring-plugins.spec
index e920a46..02e6d04 100644
--- a/monitoring-plugins.spec
+++ b/monitoring-plugins.spec
@@ -86,6 +86,8 @@ Patch129:       monitoring-plugins-2.3.3-check_by_ssh.patch
 Patch130:       monitoring-plugins-2.3.3-check_http-proxy.patch
 # PATCH-FIX-UPSTREAM - simple fix for compiler error regarding no return value in function get_ip_address
 Patch131:       monitoring-plugins-2.3.3-check_icmp.patch
+# PATCH-FEATURE-SLE - Use systemd-logind instead of utmp (jsc#PED-3144)
+Patch132:       systemd-not-utmp.patch
 BuildRequires:  bind-utils
 BuildRequires:  dhcp-devel
 BuildRequires:  fping
@@ -114,6 +116,9 @@ BuildRequires:  perl(Net::SNMP)
 BuildRequires:  postfix
 BuildRequires:  postgresql-devel
 BuildRequires:  procps
+%if 0%{?suse_version} > 1599
+BuildRequires:  systemd-devel
+%endif
 BuildRequires:  samba-client
 %if 0%{?suse_version}
 %if 0%{?suse_version} > 1020
@@ -1139,6 +1144,7 @@ done
 %patch129 -p1
 %patch130 -p1
 %patch131 -p1
+%patch132 -p1
 find -type f -exec chmod 644 {} +
 
 %build
diff --git a/systemd-not-utmp.patch b/systemd-not-utmp.patch
new file mode 100644
index 0000000..a190ef6
--- /dev/null
+++ b/systemd-not-utmp.patch
@@ -0,0 +1,78 @@
+--- monitoring-plugins-2.3.3.old/configure.ac	2023-02-01 14:40:55.000000000 +0100
++++ monitoring-plugins-2.3.3/configure.ac	2023-06-15 16:21:19.637049416 +0200
+@@ -328,6 +328,25 @@
+   LIBS="$_SAVEDLIBS"
+ ])
+ 
++
++AC_ARG_WITH([systemd], [AS_HELP_STRING([--without-systemd], [Skips systemd support])])
++
++dnl Check for libsystemd
++AS_IF([test "x$with_systemd" != "xno"], [
++  _SAVEDLIBS="$LIBS"
++  AC_CHECK_LIB(systemd,sd_get_sessions,,,-lsystemd)
++  if test "$ac_cv_lib_systemd_sd_get_sessions" = "yes"; then
++    SYSTEMDLIBS="-lsystemd"
++    SYSTEMDINCLUDE=""
++    AC_SUBST(SYSTEMDLIBS)
++    AC_SUBST(SYSTEMDINCLUDE)
++  else
++    AC_MSG_WARN([Skipping systemd support])
++  fi
++  LIBS="$_SAVEDLIBS"
++])
++
++
+ dnl Check for headers used by check_ide_smart
+ case $host in
+   *linux*)
+diff -wur monitoring-plugins-2.3.3.old/plugins/check_users.c monitoring-plugins-2.3.3/plugins/check_users.c
+--- monitoring-plugins-2.3.3.old/plugins/check_users.c	2023-02-01 14:40:55.000000000 +0100
++++ monitoring-plugins-2.3.3/plugins/check_users.c	2023-06-15 16:16:34.879700400 +0200
+@@ -48,6 +48,11 @@
+ # include "popen.h"
+ #endif
+ 
++#ifdef HAVE_LIBSYSTEMD
++#include <systemd/sd-daemon.h>
++#include <systemd/sd-login.h>
++#endif
++
+ #define possibly_set(a,b) ((a) == 0 ? (b) : 0)
+ 
+ int process_arguments (int, char **);
+@@ -115,6 +120,11 @@
+ 
+ 	WTSFreeMemory(wtsinfo);
+ #elif HAVE_UTMPX_H
++#ifdef HAVE_LIBSYSTEMD
++	if (sd_booted () > 0)
++	        users = sd_get_sessions (NULL);
++	else {
++#endif
+ 	/* get currently logged users from utmpx */
+ 	setutxent ();
+ 
+@@ -123,6 +133,9 @@
+ 			users++;
+ 
+ 	endutxent ();
++#ifdef HAVE_LIBSYSTEMD
++	}
++#endif
+ #else
+ 	/* run the command */
+ 	child_process = spopen (WHO_COMMAND);
+Nur in monitoring-plugins-2.3.3/plugins: check_users.c~.
+diff -wur monitoring-plugins-2.3.3.old/plugins/Makefile.am monitoring-plugins-2.3.3/plugins/Makefile.am
+--- monitoring-plugins-2.3.3.old/plugins/Makefile.am	2023-02-01 14:40:55.000000000 +0100
++++ monitoring-plugins-2.3.3/plugins/Makefile.am	2023-06-15 16:23:36.925699810 +0200
+@@ -112,7 +112,7 @@
+ check_time_LDADD = $(NETLIBS)
+ check_ntp_time_LDADD = $(NETLIBS) $(MATHLIBS)
+ check_ups_LDADD = $(NETLIBS)
+-check_users_LDADD = $(BASEOBJS) $(WTSAPI32LIBS)
++check_users_LDADD = $(BASEOBJS) $(WTSAPI32LIBS) $(SYSTEMDLIBS)
+ check_by_ssh_LDADD = $(NETLIBS)
+ check_ide_smart_LDADD = $(BASEOBJS)
+ negate_LDADD = $(BASEOBJS)