Compare commits
67 commits
epel8-play
...
rawhide
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
98284f631b | ||
|
|
77706a32be | ||
|
|
069b76a3a8 | ||
|
|
7164fc2d6d | ||
|
|
4870df85c6 | ||
|
|
cc9daebf1e | ||
|
|
38f34fb51d | ||
|
|
1f502ae93a | ||
|
|
9867e18241 | ||
|
|
760ad72a05 | ||
|
|
91e5a19370 | ||
|
|
ce21c14155 | ||
|
|
7d3c0ad65d | ||
|
|
b278271309 | ||
|
|
3cb725a9a6 | ||
|
|
02a191e840 | ||
|
|
810e8f234e | ||
|
|
59f9744317 | ||
|
|
ada5bd73a7 | ||
|
|
17e960e140 | ||
|
|
03a2bff29b | ||
|
|
9b811d0688 | ||
|
|
0089d11277 | ||
|
|
f74346c47d | ||
|
|
182c96a020 | ||
|
|
f9d1f583d7 | ||
|
|
2572132723 | ||
|
|
d4f6d893fc | ||
|
|
ea13be436a | ||
|
|
d7132ee907 | ||
|
|
64fdb72282 | ||
|
|
dc7efebac0 | ||
|
|
aad68762c3 | ||
|
|
8debbe8226 | ||
|
|
4daa893965 | ||
|
|
0a29e563e3 | ||
|
|
6db1d50203 | ||
|
|
670632e3fd | ||
|
|
c1478deaf5 | ||
|
|
8f6b572231 | ||
|
|
a136d9db58 | ||
|
|
f68641b430 | ||
|
|
1e27db6337 | ||
|
|
4868536690 | ||
|
|
5c64b71173 | ||
|
|
d08ed319dd | ||
|
|
cdbcbed29f | ||
|
|
99495edf47 | ||
|
|
c8d877dae3 | ||
|
|
4db73a7664 | ||
|
|
4fe949d473 | ||
|
|
b05fc4a3e4 | ||
|
|
d6f674e2d5 | ||
|
|
82e198976e | ||
|
|
e056aaaff8 | ||
|
|
7c2f27590b | ||
|
|
beee923bc5 | ||
|
|
d0c4065968 | ||
|
|
24127d18ec | ||
|
|
be87309685 | ||
|
|
c06083e691 | ||
|
|
457d12308e | ||
|
|
625fa20c1a | ||
|
|
19a1c7c163 | ||
|
|
102a89ce81 | ||
|
|
2ef3bf834e | ||
|
|
cedf9ce549 |
17 changed files with 534 additions and 1096 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -9,3 +9,9 @@ nut-2.4.3.tar.gz
|
|||
/nut-2.7.2.tar.gz
|
||||
/nut-2.7.3.tar.gz
|
||||
/nut-2.7.4.tar.gz
|
||||
/nut-2.8.0.tar.gz
|
||||
/nut-2.8.1.tar.gz
|
||||
/nut-2.8.2.tar.gz
|
||||
/nut-2.8.2.1.tar.gz
|
||||
/nut-2.8.3.tar.gz
|
||||
/nut-2.8.4.tar.gz
|
||||
|
|
|
|||
2
libs.sh
2
libs.sh
|
|
@ -28,5 +28,5 @@ do
|
|||
echo "#define $( echo "$l" | tr '[a-z]-' '[A-Z]_')_PATH \"$rp\""
|
||||
done
|
||||
|
||||
VINFO=$(sed -e '/version-info/!d' -e 's/#.*$//' -e 's/^.*-version-info//' -e 's/[[:space:]]//g' clients/Makefile)
|
||||
VINFO=$(sed -e '/version-info/!d' -e 's/#.*$//' -e 's/^.*-version-info//' -e 's/[[:space:]]//g' -e 's/\\//g' clients/Makefile)
|
||||
echo "#define LIBUPSCLIENT_PATH \"libupsclient.so.$(( ${VINFO%%:*}-${VINFO##*:} ))\""
|
||||
|
|
|
|||
|
|
@ -1,22 +1,33 @@
|
|||
diff -up nut-2.7.4/scripts/systemd/nut-driver.service.in.tmpfiles nut-2.7.4/scripts/systemd/nut-driver.service.in
|
||||
--- nut-2.7.4/scripts/systemd/nut-driver.service.in.tmpfiles 2016-08-11 16:58:00.759001400 +0200
|
||||
+++ nut-2.7.4/scripts/systemd/nut-driver.service.in 2016-08-11 16:58:38.619248466 +0200
|
||||
@@ -4,6 +4,7 @@ After=local-fs.target network.target
|
||||
StopWhenUnneeded=yes
|
||||
diff -up nut-2.8.0/scripts/systemd/nut-driver-enumerator.service.in.tmpfiles nut-2.8.0/scripts/systemd/nut-driver-enumerator.service.in
|
||||
--- nut-2.8.0/scripts/systemd/nut-driver-enumerator.service.in.tmpfiles 2022-05-09 16:42:37.296229637 +0200
|
||||
+++ nut-2.8.0/scripts/systemd/nut-driver-enumerator.service.in 2022-05-09 16:42:51.139030657 +0200
|
||||
@@ -23,6 +23,7 @@ Type=oneshot
|
||||
# don't want it to fail the unit (when it can't restart).
|
||||
Environment=REPORT_RESTART_42=no
|
||||
EnvironmentFile=-@CONFPATH@/nut.conf
|
||||
+ExecStartPre=-/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common.conf
|
||||
ExecStart=@NUT_LIBEXECDIR@/nut-driver-enumerator.sh
|
||||
ExecReload=@NUT_LIBEXECDIR@/nut-driver-enumerator.sh
|
||||
|
||||
diff -up nut-2.8.0/scripts/systemd/nut-driver@.service.in.tmpfiles nut-2.8.0/scripts/systemd/nut-driver@.service.in
|
||||
--- nut-2.8.0/scripts/systemd/nut-driver@.service.in.tmpfiles 2022-05-09 16:41:00.952614514 +0200
|
||||
+++ nut-2.8.0/scripts/systemd/nut-driver@.service.in 2022-05-09 16:41:42.783013227 +0200
|
||||
@@ -40,6 +40,7 @@ PartOf=nut-driver.target
|
||||
[Service]
|
||||
+ExecStartPre=-/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-client.conf
|
||||
ExecStart=@SBINDIR@/upsdrvctl start
|
||||
ExecStop=@SBINDIR@/upsdrvctl stop
|
||||
Type=forking
|
||||
diff -up nut-2.7.4/scripts/systemd/nut-monitor.service.in.tmpfiles nut-2.7.4/scripts/systemd/nut-monitor.service.in
|
||||
--- nut-2.7.4/scripts/systemd/nut-monitor.service.in.tmpfiles 2015-12-29 09:42:34.000000000 +0100
|
||||
+++ nut-2.7.4/scripts/systemd/nut-monitor.service.in 2016-08-11 16:57:48.121918934 +0200
|
||||
@@ -3,6 +3,7 @@ Description=Network UPS Tools - power de
|
||||
After=local-fs.target network.target nut-server.service
|
||||
|
||||
EnvironmentFile=-@CONFPATH@/nut.conf
|
||||
SyslogIdentifier=%N
|
||||
+ExecStartPre=-/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common.conf
|
||||
ExecStart=/bin/sh -c 'NUTDEV="`@NUT_LIBEXECDIR@/nut-driver-enumerator.sh --get-device-for-service %i`" && [ -n "$NUTDEV" ] || { echo "FATAL: Could not find a NUT device section for service unit %i" >&2 ; exit 1 ; } ; @SBINDIR@/upsdrvctl start "$NUTDEV"'
|
||||
ExecStop=/bin/sh -c 'NUTDEV="`@NUT_LIBEXECDIR@/nut-driver-enumerator.sh --get-device-for-service %i`" && [ -n "$NUTDEV" ] || { echo "FATAL: Could not find a NUT device section for service unit %i" >&2 ; exit 1 ; } ; @SBINDIR@/upsdrvctl stop "$NUTDEV"'
|
||||
# Restart really always, do not stop trying:
|
||||
diff -up nut-2.8.0/scripts/systemd/nut-monitor.service.in.tmpfiles nut-2.8.0/scripts/systemd/nut-monitor.service.in
|
||||
--- nut-2.8.0/scripts/systemd/nut-monitor.service.in.tmpfiles 2022-05-09 12:57:35.160646121 +0200
|
||||
+++ nut-2.8.0/scripts/systemd/nut-monitor.service.in 2022-05-09 16:40:18.289227772 +0200
|
||||
@@ -18,6 +18,7 @@ PartOf=nut.target
|
||||
[Service]
|
||||
+ExecStartPre=-/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-client.conf
|
||||
ExecStart=@SBINDIR@/upsmon
|
||||
EnvironmentFile=-@CONFPATH@/nut.conf
|
||||
SyslogIdentifier=%N
|
||||
+ExecStartPre=-/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common.conf
|
||||
ExecStart=@SBINDIR@/upsmon -F
|
||||
ExecReload=@SBINDIR@/upsmon -c reload
|
||||
PIDFile=@PIDPATH@/upsmon.pid
|
||||
Type=forking
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
diff -up nut-2.7.4/tools/nut-scanner/scan_avahi.c.dlfix nut-2.7.4/tools/nut-scanner/scan_avahi.c
|
||||
diff -up nut-2.7.4/tools/nut-scanner/scan_ipmi.c.dlfix nut-2.7.4/tools/nut-scanner/scan_ipmi.c
|
||||
diff -up nut-2.7.4/tools/nut-scanner/scan_nut.c.dlfix nut-2.7.4/tools/nut-scanner/scan_nut.c
|
||||
diff -up nut-2.7.4/tools/nut-scanner/scan_snmp.c.dlfix nut-2.7.4/tools/nut-scanner/scan_snmp.c
|
||||
diff -up nut-2.7.4/tools/nut-scanner/scan_usb.c.dlfix nut-2.7.4/tools/nut-scanner/scan_usb.c
|
||||
diff -up nut-2.7.4/tools/nut-scanner/scan_xml_http.c.dlfix nut-2.7.4/tools/nut-scanner/scan_xml_http.c
|
||||
--- nut-2.7.4/tools/nut-scanner/scan_xml_http.c.dlfix 2016-03-08 13:01:11.000000000 +0100
|
||||
+++ nut-2.7.4/tools/nut-scanner/scan_xml_http.c 2016-03-12 00:23:02.554826665 +0100
|
||||
@@ -37,7 +37,6 @@
|
||||
#include <ltdl.h>
|
||||
|
||||
/* dynamic link library stuff */
|
||||
-static char * libname = "libneon";
|
||||
static lt_dlhandle dl_handle = NULL;
|
||||
static const char *dl_error = NULL;
|
||||
|
||||
@@ -102,7 +101,7 @@ int nutscan_load_neon_library(const char
|
||||
|
||||
return 1;
|
||||
err:
|
||||
- fprintf(stderr, "Cannot load XML library (%s) : %s. XML search disabled.\n", libname, dl_error);
|
||||
+ fprintf(stderr, "Cannot load XML library (%s) : %s. XML search disabled.\n", libname_path, dl_error);
|
||||
dl_handle = (void *)1;
|
||||
lt_dlexit();
|
||||
return 0;
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
diff -up nut-2.7.1/clients/upsmon.c.foreground nut-2.7.1/clients/upsmon.c
|
||||
--- nut-2.7.1/clients/upsmon.c.foreground 2013-07-26 21:41:10.000000000 +0200
|
||||
+++ nut-2.7.1/clients/upsmon.c 2014-02-27 11:39:58.158784578 +0100
|
||||
@@ -1645,6 +1645,7 @@ static void help(const char *progname)
|
||||
printf(" - reload: reread configuration\n");
|
||||
printf(" - stop: stop monitoring and exit\n");
|
||||
printf(" -D raise debugging level\n");
|
||||
+ printf(" -F run in foreground, do not daemonize\n");
|
||||
printf(" -h display this help\n");
|
||||
printf(" -K checks POWERDOWNFLAG, sets exit code to 0 if set\n");
|
||||
printf(" -p always run privileged (disable privileged parent)\n");
|
||||
@@ -1859,7 +1860,7 @@ static void check_parent(void)
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
const char *prog = xbasename(argv[0]);
|
||||
- int i, cmd = 0, checking_flag = 0;
|
||||
+ int i, cmd = 0, checking_flag = 0, foreground = 0;
|
||||
|
||||
printf("Network UPS Tools %s %s\n", prog, UPS_VERSION);
|
||||
|
||||
@@ -1870,7 +1871,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
run_as_user = xstrdup(RUN_AS_USER);
|
||||
|
||||
- while ((i = getopt(argc, argv, "+Dhic:f:pu:VK46")) != -1) {
|
||||
+ while ((i = getopt(argc, argv, "+DFhic:f:pu:VK46")) != -1) {
|
||||
switch (i) {
|
||||
case 'c':
|
||||
if (!strncmp(optarg, "fsd", strlen(optarg)))
|
||||
@@ -1887,6 +1888,9 @@ int main(int argc, char *argv[])
|
||||
case 'D':
|
||||
nut_debug_level++;
|
||||
break;
|
||||
+ case 'F':
|
||||
+ foreground = 1;
|
||||
+ break;
|
||||
case 'f':
|
||||
free(configfile);
|
||||
configfile = xstrdup(optarg);
|
||||
@@ -1962,9 +1966,9 @@ int main(int argc, char *argv[])
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
- if (nut_debug_level < 1) {
|
||||
+ if (!foreground && nut_debug_level < 1) {
|
||||
background();
|
||||
- } else {
|
||||
+ } else if (nut_debug_level >= 1) {
|
||||
upsdebugx(1, "debug level is '%d'", nut_debug_level);
|
||||
}
|
||||
|
||||
diff -up nut-2.7.1/scripts/systemd/nut-monitor.service.in.foreground nut-2.7.1/scripts/systemd/nut-monitor.service.in
|
||||
--- nut-2.7.1/scripts/systemd/nut-monitor.service.in.foreground 2014-02-27 11:39:58.141784438 +0100
|
||||
+++ nut-2.7.1/scripts/systemd/nut-monitor.service.in 2014-02-27 11:39:58.152784529 +0100
|
||||
@@ -4,9 +4,8 @@ After=local-fs.target network.target nut
|
||||
|
||||
[Service]
|
||||
ExecStartPre=-/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-client.conf
|
||||
-ExecStart=@SBINDIR@/upsmon
|
||||
-PIDFile=@PIDPATH@/upsmon.pid
|
||||
-Type=forking
|
||||
+ExecStart=@SBINDIR@/upsmon -F
|
||||
+Type=simple
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
diff -up nut-2.7.1/scripts/systemd/nut-server.service.in.foreground nut-2.7.1/scripts/systemd/nut-server.service.in
|
||||
--- nut-2.7.1/scripts/systemd/nut-server.service.in.foreground 2013-07-26 21:41:11.000000000 +0200
|
||||
+++ nut-2.7.1/scripts/systemd/nut-server.service.in 2014-02-27 11:39:58.152784529 +0100
|
||||
@@ -5,8 +5,8 @@ Requires=nut-driver.service
|
||||
Before=nut-monitor.service
|
||||
|
||||
[Service]
|
||||
-ExecStart=@SBINDIR@/upsd
|
||||
-Type=forking
|
||||
+ExecStart=@SBINDIR@/upsd -F
|
||||
+Type=simple
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
diff -up nut-2.7.1/server/upsd.c.foreground nut-2.7.1/server/upsd.c
|
||||
--- nut-2.7.1/server/upsd.c.foreground 2013-07-26 21:41:11.000000000 +0200
|
||||
+++ nut-2.7.1/server/upsd.c 2014-02-27 11:39:58.153784537 +0100
|
||||
@@ -827,6 +827,7 @@ static void help(const char *progname)
|
||||
printf(" - reload: reread configuration files\n");
|
||||
printf(" - stop: stop process and exit\n");
|
||||
printf(" -D raise debugging level\n");
|
||||
+ printf(" -F run in foreground, do not daemonize\n");
|
||||
printf(" -h display this help\n");
|
||||
printf(" -r <dir> chroots to <dir>\n");
|
||||
printf(" -q raise log level threshold\n");
|
||||
@@ -890,7 +891,7 @@ void check_perms(const char *fn)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
- int i, cmd = 0;
|
||||
+ int i, cmd = 0, foreground = 0;
|
||||
char *chroot_path = NULL;
|
||||
const char *user = RUN_AS_USER;
|
||||
struct passwd *new_uid = NULL;
|
||||
@@ -906,7 +907,7 @@ int main(int argc, char **argv)
|
||||
|
||||
printf("Network UPS Tools %s %s\n", progname, UPS_VERSION);
|
||||
|
||||
- while ((i = getopt(argc, argv, "+h46p:qr:i:fu:Vc:D")) != -1) {
|
||||
+ while ((i = getopt(argc, argv, "+hF46p:qr:i:fu:Vc:D")) != -1) {
|
||||
switch (i) {
|
||||
case 'h':
|
||||
help(progname);
|
||||
@@ -944,6 +945,10 @@ int main(int argc, char **argv)
|
||||
nut_debug_level++;
|
||||
break;
|
||||
|
||||
+ case 'F':
|
||||
+ foreground = 1;
|
||||
+ break;
|
||||
+
|
||||
case '4':
|
||||
opt_af = AF_INET;
|
||||
break;
|
||||
@@ -1031,7 +1036,7 @@ int main(int argc, char **argv)
|
||||
/* handle upsd.users */
|
||||
user_load();
|
||||
|
||||
- if (!nut_debug_level) {
|
||||
+ if (!nut_debug_level && !foreground) {
|
||||
background();
|
||||
writepid(pidfn);
|
||||
} else {
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up nut-2.7.3/configure.ac.quickfix nut-2.7.3/configure.ac
|
||||
--- nut-2.7.3/configure.ac.quickfix 2015-04-23 12:05:21.219228670 +0200
|
||||
+++ nut-2.7.3/configure.ac 2015-04-23 12:05:21.230228646 +0200
|
||||
@@ -1065,7 +1065,7 @@ dnl Override installation directory, wit
|
||||
dnl prefix. This is needed for 'distcheck*' targets, otherwise
|
||||
dnl files will try to get intalled to the actual system directories
|
||||
if test -n "${systemdsystemunitdir}"; then
|
||||
- systemdsystemshutdowndir="${libdir}/systemd/system-shutdown"
|
||||
+ systemdsystemshutdowndir="/lib/systemd/system-shutdown"
|
||||
AC_MSG_RESULT(using ${systemdsystemunitdir})
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
|
|
@ -1,59 +1,58 @@
|
|||
diff -up nut-2.7.1/clients/upsmon.c.rmpidf nut-2.7.1/clients/upsmon.c
|
||||
--- nut-2.7.1/clients/upsmon.c.rmpidf 2014-02-27 11:41:09.139369295 +0100
|
||||
+++ nut-2.7.1/clients/upsmon.c 2014-02-27 11:41:09.145369344 +0100
|
||||
@@ -2027,6 +2027,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
diff -up nut-2.8.2.1/clients/upsmon.c.rmpidf nut-2.8.2.1/clients/upsmon.c
|
||||
--- nut-2.8.2.1/clients/upsmon.c.rmpidf 2024-07-03 12:18:04.788135176 +0200
|
||||
+++ nut-2.8.2.1/clients/upsmon.c 2024-07-03 12:19:33.164964473 +0200
|
||||
@@ -3309,6 +3309,7 @@ int main(int argc, char *argv[])
|
||||
upslogx(LOG_INFO, "Signal %d: exiting", exit_flag);
|
||||
upsnotify(NOTIFY_STATE_STOPPING, "Signal %d: exiting", exit_flag);
|
||||
upsmon_cleanup();
|
||||
+ cleanpid(prog);
|
||||
|
||||
upsdebugx(1, "Finally exiting due to signal %d", exit_flag);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
diff -up nut-2.7.1/common/common.c.rmpidf nut-2.7.1/common/common.c
|
||||
--- nut-2.7.1/common/common.c.rmpidf 2013-11-20 20:53:31.000000000 +0100
|
||||
+++ nut-2.7.1/common/common.c 2014-02-27 11:41:09.146369353 +0100
|
||||
@@ -229,6 +229,20 @@ void writepid(const char *name)
|
||||
umask(mask);
|
||||
diff -up nut-2.8.2.1/common/common.c.rmpidf nut-2.8.2.1/common/common.c
|
||||
--- nut-2.8.2.1/common/common.c.rmpidf 2024-07-03 12:14:56.000000000 +0200
|
||||
+++ nut-2.8.2.1/common/common.c 2024-07-03 12:18:04.788135176 +0200
|
||||
@@ -1338,6 +1338,20 @@ pid_t parsepid(const char *buf)
|
||||
return pid;
|
||||
}
|
||||
|
||||
+/* remove pid file */
|
||||
+void cleanpid(const char *name)
|
||||
+{
|
||||
+ char fn[SMALLBUF];
|
||||
+ char fn[SMALLBUF];
|
||||
+
|
||||
+ /* use full path if present, else build filename in PIDPATH */
|
||||
+ if (*name == '/')
|
||||
+ snprintf(fn, sizeof(fn), "%s", name);
|
||||
+ else
|
||||
+ snprintf(fn, sizeof(fn), "%s/%s.pid", PIDPATH, name);
|
||||
+ /* use full path if present, else build filename in PIDPATH */
|
||||
+ if (*name == '/')
|
||||
+ snprintf(fn, sizeof(fn), "%s", name);
|
||||
+ else
|
||||
+ snprintf(fn, sizeof(fn), "%s/%s.pid", PIDPATH, name);
|
||||
+
|
||||
+ unlink(fn);
|
||||
+ unlink(fn);
|
||||
+}
|
||||
+
|
||||
/* open pidfn, get the pid, then send it sig */
|
||||
int sendsignalfn(const char *pidfn, int sig)
|
||||
{
|
||||
diff -up nut-2.7.1/include/common.h.rmpidf nut-2.7.1/include/common.h
|
||||
--- nut-2.7.1/include/common.h.rmpidf 2013-11-20 20:53:31.000000000 +0100
|
||||
+++ nut-2.7.1/include/common.h 2014-02-27 11:41:09.146369353 +0100
|
||||
@@ -70,6 +70,9 @@ void chroot_start(const char *path);
|
||||
/* open pidfn, get the pid, then send it sig
|
||||
* returns negative codes for errors, or
|
||||
* zero for a successfully sent signal
|
||||
diff -up nut-2.8.2.1/include/common.h.rmpidf nut-2.8.2.1/include/common.h
|
||||
--- nut-2.8.2.1/include/common.h.rmpidf 2024-07-03 12:14:56.000000000 +0200
|
||||
+++ nut-2.8.2.1/include/common.h 2024-07-03 12:18:04.788135176 +0200
|
||||
@@ -262,6 +262,9 @@ int checkprocname(pid_t pid, const char
|
||||
/* write a pid file - <name> is a full pathname *or* just the program name */
|
||||
void writepid(const char *name);
|
||||
|
||||
+/* remove pid file */
|
||||
+void cleanpid(const char *name);
|
||||
+
|
||||
/* send a signal to another running process */
|
||||
int sendsignal(const char *progname, int sig);
|
||||
/* parses string buffer into a pid_t if it passes
|
||||
* a few sanity checks; returns -1 on error */
|
||||
pid_t parsepid(const char *buf);
|
||||
diff -up nut-2.8.2.1/server/upsd.c.rmpidf nut-2.8.2.1/server/upsd.c
|
||||
--- nut-2.8.2.1/server/upsd.c.rmpidf 2024-07-03 12:14:56.000000000 +0200
|
||||
+++ nut-2.8.2.1/server/upsd.c 2024-07-03 12:18:04.789135186 +0200
|
||||
@@ -2304,5 +2304,6 @@ int main(int argc, char **argv)
|
||||
upsnotify(NOTIFY_STATE_STOPPING, "Signal %d: exiting", exit_flag);
|
||||
|
||||
diff -up nut-2.7.1/server/upsd.c.rmpidf nut-2.7.1/server/upsd.c
|
||||
--- nut-2.7.1/server/upsd.c.rmpidf 2014-02-27 11:41:09.146369353 +0100
|
||||
+++ nut-2.7.1/server/upsd.c 2014-02-27 11:42:03.715818754 +0100
|
||||
@@ -1050,6 +1050,7 @@ int main(int argc, char **argv)
|
||||
ssl_cleanup();
|
||||
|
||||
upslogx(LOG_INFO, "Signal %d: exiting", exit_flag);
|
||||
+ if (*pidfn) cleanpid(pidfn);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,39 +0,0 @@
|
|||
diff -up nut-2.6.5/scripts/python/app/NUT-Monitor.unreachable nut-2.6.5/scripts/python/app/NUT-Monitor
|
||||
--- nut-2.6.5/scripts/python/app/NUT-Monitor.unreachable 2012-07-31 19:38:56.000000000 +0200
|
||||
+++ nut-2.6.5/scripts/python/app/NUT-Monitor 2013-01-07 18:04:26.532531441 +0100
|
||||
@@ -674,6 +674,11 @@ class interface :
|
||||
self.gui_status_notification( _("Device '%s' not found on server") % self.__current_ups, "warning.png" )
|
||||
return
|
||||
|
||||
+ if not self.__ups_handler.CheckUPSAvailable( self.__current_ups ):
|
||||
+ self.gui_status_message( _("UPS '{0}' is not reachable").format( self.__current_ups ) )
|
||||
+ self.gui_status_notification( _("UPS '{0}' is not reachable").format( self.__current_ups ), "warning.png" )
|
||||
+ return
|
||||
+
|
||||
self.__connected = True
|
||||
self.__widgets["ups_connect"].hide()
|
||||
self.__widgets["ups_disconnect"].show()
|
||||
diff -up nut-2.6.5/scripts/python/module/PyNUT.py.unreachable nut-2.6.5/scripts/python/module/PyNUT.py
|
||||
--- nut-2.6.5/scripts/python/module/PyNUT.py.unreachable 2012-07-31 19:38:56.000000000 +0200
|
||||
+++ nut-2.6.5/scripts/python/module/PyNUT.py 2013-01-07 17:41:26.548440712 +0100
|
||||
@@ -158,6 +158,20 @@ available vars.
|
||||
|
||||
return( ups_vars )
|
||||
|
||||
+ def CheckUPSAvailable( self, ups="") :
|
||||
+ """ Check whether UPS is reachable
|
||||
+
|
||||
+Just tries to contact UPS with safe command.
|
||||
+The result is True (rechable) or False (unreachable)
|
||||
+ """
|
||||
+ self.__srv_handler.write( "LIST CMD %s\n" % ups )
|
||||
+ result = self.__srv_handler.read_until( "\n" )
|
||||
+ if result != "BEGIN LIST CMD %s\n" % ups :
|
||||
+ return False
|
||||
+
|
||||
+ self.__srv_handler.read_until( "END LIST CMD %s\n" % ups )
|
||||
+ return True
|
||||
+
|
||||
def GetUPSCommands( self, ups="" ) :
|
||||
""" Get all available commands for the specified UPS
|
||||
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
--- nut-2.7.4/common/parseconf.c.cloexec 2018-12-07 15:56:22.989381441 -0800
|
||||
+++ nut-2.7.4/common/parseconf.c 2018-12-07 16:48:33.912337591 -0800
|
||||
@@ -83,6 +83,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
+#include <fcntl.h>
|
||||
|
||||
#include "parseconf.h"
|
||||
|
||||
@@ -443,6 +444,9 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ /* prevent fd leaking to child processes */
|
||||
+ fcntl(fileno(ctx->f), F_SETFD, FD_CLOEXEC);
|
||||
+
|
||||
return 1; /* OK */
|
||||
}
|
||||
|
||||
--- nut-2.7.4/clients/upsmon.c.cloexec 2018-12-07 16:22:42.185376803 -0800
|
||||
+++ nut-2.7.4/clients/upsmon.c 2018-12-07 17:18:44.662093479 -0800
|
||||
@@ -24,6 +24,8 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/socket.h>
|
||||
+#include <unistd.h>
|
||||
+#include <fcntl.h>
|
||||
|
||||
#include "upsclient.h"
|
||||
#include "upsmon.h"
|
||||
@@ -1432,6 +1434,9 @@
|
||||
/* we're definitely connected now */
|
||||
setflag(&ups->status, ST_CONNECTED);
|
||||
|
||||
+ /* prevent connection leaking to NOTIFYCMD */
|
||||
+ fcntl(upscli_fd(&ups->conn), F_SETFD, FD_CLOEXEC);
|
||||
+
|
||||
/* now try to authenticate to upsd */
|
||||
|
||||
ret = do_upsd_auth(ups);
|
||||
@@ -1715,6 +1720,9 @@
|
||||
}
|
||||
|
||||
close(pipefd[0]);
|
||||
+
|
||||
+ /* prevent pipe leaking to NOTIFYCMD */
|
||||
+ fcntl(pipefd[1], F_SETFD, FD_CLOEXEC);
|
||||
}
|
||||
|
||||
static void delete_ups(utype_t *target)
|
||||
--- nut-2.7.4/clients/upssched.c.cloexec 2018-12-07 17:09:13.081914570 -0800
|
||||
+++ nut-2.7.4/clients/upssched.c 2018-12-07 18:28:54.380512191 -0800
|
||||
@@ -46,6 +46,8 @@
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#include <netinet/in.h>
|
||||
+#include <unistd.h>
|
||||
+#include <fcntl.h>
|
||||
|
||||
#include "upssched.h"
|
||||
#include "timehead.h"
|
||||
@@ -297,6 +299,9 @@
|
||||
if (ret < 0)
|
||||
fatal_with_errno(EXIT_FAILURE, "listen(%d, %d) failed", fd, US_LISTEN_BACKLOG);
|
||||
|
||||
+ /* don't leak socket to CMDSCRIPT */
|
||||
+ fcntl(fd, F_SETFD, FD_CLOEXEC);
|
||||
+
|
||||
return fd;
|
||||
}
|
||||
|
||||
@@ -370,6 +375,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
+ /* don't leak connection to CMDSCRIPT */
|
||||
+ fcntl(acc, F_SETFD, FD_CLOEXEC);
|
||||
+
|
||||
/* enable nonblocking I/O */
|
||||
|
||||
ret = fcntl(acc, F_GETFL, 0);
|
||||
50
nut-2.8.0-piddir-owner.patch
Normal file
50
nut-2.8.0-piddir-owner.patch
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
diff -up nut-2.8.1/configure.ac.piddir-owner nut-2.8.1/configure.ac
|
||||
--- nut-2.8.1/configure.ac.piddir-owner 2023-11-01 09:39:24.267596406 +0100
|
||||
+++ nut-2.8.1/configure.ac 2023-11-01 10:00:35.425987029 +0100
|
||||
@@ -4451,7 +4451,7 @@ AS_IF([test -n "$systemdtmpfilesdir"],
|
||||
|
||||
# See also: https://github.com/networkupstools/nut/wiki/Technicalities:-Work-with-PID-and-state-file-paths#pidpath-altpidpath-statepath
|
||||
# State file (e.g. upsd to driver pipes) and PID file location for NUT:
|
||||
-d @STATEPATH@ 0770 @RUN_AS_USER@ @RUN_AS_GROUP@ - -
|
||||
+d @STATEPATH@ 0770 root @RUN_AS_GROUP@ - -
|
||||
# Default PIPEFN and LOCKFN locations per upssched.conf:
|
||||
d @STATEPATH@/upssched 0770 @RUN_AS_USER@ @RUN_AS_GROUP@ - -
|
||||
X @STATEPATH@
|
||||
@@ -4461,7 +4461,7 @@ EOF
|
||||
[*/run|*/tmp|*/shm], [], dnl Do not intrude into system paths; TODO: add more if appropriate for some Linux distro
|
||||
[cat >> "${TOP_BUILDDIR}"/scripts/systemd/nut-common-tmpfiles.conf.in << EOF
|
||||
# Primarily used by upsmon and upslog, possibly running as root:
|
||||
-d @PIDPATH@ 0770 @RUN_AS_USER@ @RUN_AS_GROUP@ - -
|
||||
+d @PIDPATH@ 0770 root @RUN_AS_GROUP@ - -
|
||||
X @PIDPATH@
|
||||
EOF
|
||||
])])
|
||||
@@ -4469,14 +4469,14 @@ EOF
|
||||
[cat >> "${TOP_BUILDDIR}"/scripts/systemd/nut-common-tmpfiles.conf.in << EOF
|
||||
# Should be used as upsd and driver PID file location for NUT
|
||||
# (if ALTPIDPATH differs from STATEPATH):
|
||||
-d @ALTPIDPATH@ 0770 @RUN_AS_USER@ @RUN_AS_GROUP@ - -
|
||||
+d @ALTPIDPATH@ 0770 root @RUN_AS_GROUP@ - -
|
||||
X @ALTPIDPATH@
|
||||
EOF])
|
||||
dnl Generally added to support some forks
|
||||
AS_IF([test -n "$ALTSTATEPATH" && test "$STATEPATH" != "$ALTSTATEPATH" && test "$ALTSTATEPATH" != "$ALTPIDPATH" && test "$PIDPATH" != "$ALTSTATEPATH"],
|
||||
[cat >> "${TOP_BUILDDIR}"/scripts/systemd/nut-common-tmpfiles.conf.in << EOF
|
||||
# Some NUT variants also maintain an ALTSTATEPATH:
|
||||
-d @ALTSTATEPATH@ 0770 @RUN_AS_USER@ @RUN_AS_GROUP@ - -
|
||||
+d @ALTSTATEPATH@ 0770 root @RUN_AS_GROUP@ - -
|
||||
X @ALTSTATEPATH@
|
||||
EOF])
|
||||
])
|
||||
diff -up nut-2.8.1/scripts/systemd/nut-common-tmpfiles.conf.in.piddir-owner nut-2.8.1/scripts/systemd/nut-common-tmpfiles.conf.in
|
||||
--- nut-2.8.1/scripts/systemd/nut-common-tmpfiles.conf.in.piddir-owner 2023-10-31 23:05:03.000000000 +0100
|
||||
+++ nut-2.8.1/scripts/systemd/nut-common-tmpfiles.conf.in 2023-11-01 10:03:46.970845553 +0100
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
# See also: https://github.com/networkupstools/nut/wiki/Technicalities:-Work-with-PID-and-state-file-paths#pidpath-altpidpath-statepath
|
||||
# State file (e.g. upsd to driver pipes) and PID file location for NUT:
|
||||
-d @STATEPATH@ 0770 @RUN_AS_USER@ @RUN_AS_GROUP@ - -
|
||||
+d @STATEPATH@ 0770 root @RUN_AS_GROUP@ - -
|
||||
# Default PIPEFN and LOCKFN locations per upssched.conf:
|
||||
d @STATEPATH@/upssched 0770 @RUN_AS_USER@ @RUN_AS_GROUP@ - -
|
||||
X @STATEPATH@
|
||||
23
nut-2.8.3-rhinoname.patch
Normal file
23
nut-2.8.3-rhinoname.patch
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
diff -up nut-2.8.4-build/nut-2.8.4/drivers/Makefile.am.rhinoname nut-2.8.4-build/nut-2.8.4/drivers/Makefile.am
|
||||
--- nut-2.8.4-build/nut-2.8.4/drivers/Makefile.am.rhinoname 2025-08-14 11:08:48.763700333 +0200
|
||||
+++ nut-2.8.4-build/nut-2.8.4/drivers/Makefile.am 2025-08-14 11:29:43.803846801 +0200
|
||||
@@ -74,7 +74,7 @@ NUTSW_DRIVERLIST = $(NUTSW_DRIVERLIST_DU
|
||||
SERIAL_DRIVERLIST = al175 bcmxcp belkin belkinunv bestfcom \
|
||||
bestfortress bestuferrups bestups etapro everups \
|
||||
gamatronic genericups isbmex liebert liebert-esp2 liebert-gxe masterguard metasys \
|
||||
- mge-utalk microdowell microsol-apc mge-shut nutdrv_hashx oneac optiups powercom powervar_cx_ser rhino \
|
||||
+ mge-utalk microdowell microsol-apc mge-shut nutdrv_hashx oneac optiups powercom powervar_cx_ser nutdrv_rhino \
|
||||
safenet nutdrv_siemens-sitop solis tripplite tripplitesu upscode2 victronups powerpanel \
|
||||
blazer_ser ivtscd apcsmart apcsmart-old riello_ser sms_ser bicker_ser ve-direct
|
||||
if HAVE_LINUX_SERIAL_H
|
||||
@@ -198,8 +198,8 @@ powerpanel_SOURCES = powerpanel.c powerp
|
||||
powerpanel_LDADD = $(LDADD) -lm
|
||||
powervar_cx_ser_SOURCES = powervar_cx_ser.c powervar_cx.c
|
||||
powervar_cx_ser_CFLAGS = $(AM_CFLAGS) -DPVAR_SERIAL=1
|
||||
-rhino_SOURCES = rhino.c
|
||||
-rhino_LDADD = $(LDADD) -lm
|
||||
+nutdrv_rhino_SOURCES = rhino.c
|
||||
+nutdrv_rhino_LDADD = $(LDADD) -lm
|
||||
safenet_SOURCES = safenet.c
|
||||
nutdrv_siemens_sitop_SOURCES = nutdrv_siemens_sitop.c
|
||||
solis_SOURCES = solis.c
|
||||
17
nut-c99-strdup.patch
Normal file
17
nut-c99-strdup.patch
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
Fix strdup configure test: Remove a call to the undeclared free
|
||||
function.
|
||||
|
||||
Submitted upstream: <https://github.com/networkupstools/nut/pull/1720>
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 3aa26c24ebc99bb6..c93ccd1e494874d5 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -294,7 +294,6 @@ AC_CACHE_CHECK([for strdup(s)],
|
||||
char *t = "Test";
|
||||
char *s = strdup(t);
|
||||
if (!s || !(s[0]=='T'&&s[1]=='e'&&s[2]=='s'&&s[3]=='t'&&s[4]=='\0') || s == t) res = 1;
|
||||
-if (s) free (s);
|
||||
if (res != 0) return res
|
||||
/* autoconf adds ";return 0;" */
|
||||
]])],
|
||||
|
|
@ -1 +0,0 @@
|
|||
D /var/run/nut 0770 root nut -
|
||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
3ba53656933d7471f95140b32a5b8d5c nut-2.7.4.tar.gz
|
||||
SHA512 (nut-2.8.4.tar.gz) = 0d87c0006608f92ae54f8a500f93d9a81eac1d9abf57f32e7718dd72f265b8293a0b6cdba04c802b81eaf8907b52669c36b47b6875a4377f9752845ac6c5e8fa
|
||||
|
|
|
|||
147
ups.init
147
ups.init
|
|
@ -1,147 +0,0 @@
|
|||
#! /bin/bash
|
||||
#
|
||||
# ups: Starts the Network UPS Tools
|
||||
#
|
||||
# chkconfig: - 26 74
|
||||
# description: Network UPS Tools is a collection of programs which provide a common \
|
||||
# interface for monitoring and administering UPS hardware.
|
||||
# processname: upsd
|
||||
# config: /etc/ups/
|
||||
# config: /etc/sysconfig/ups
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: ups
|
||||
# Required-Start: $syslog $network $named
|
||||
# Required-Stop: $local_fs
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Starts the Network UPS tools
|
||||
# Description: Network UPS Tools is a collection of programs which provide a common \
|
||||
# interface for monitoring and administering UPS hardware.
|
||||
### END INIT INFO
|
||||
|
||||
# Source function library.
|
||||
if [ -f /etc/init.d/functions ]; then
|
||||
. /etc/init.d/functions
|
||||
elif [ -f /etc/rc.d/init.d/functions ]; then
|
||||
. /etc/rc.d/init.d/functions
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Get config.
|
||||
if [ -f /etc/sysconfig/ups ]; then
|
||||
. /etc/sysconfig/ups
|
||||
else
|
||||
SERVER="no"
|
||||
fi
|
||||
|
||||
start() {
|
||||
if [ "$SERVER" = "yes" ]; then
|
||||
echo -n $"Starting UPS driver controller: "
|
||||
daemon /sbin/upsdrvctl start > /dev/null 2>&1 && success || failure
|
||||
RETVAL=$?
|
||||
echo
|
||||
|
||||
prog="upsd"
|
||||
echo -n $"Starting $prog: "
|
||||
daemon /usr/sbin/upsd $UPSD_OPTIONS > /dev/null 2>&1 && success || failure
|
||||
if [ "$RETVAL" = 0 ]; then
|
||||
RETVAL=$?
|
||||
fi
|
||||
echo
|
||||
|
||||
echo -n $"Starting UPS monitor (master): "
|
||||
daemon --pidfile /var/run/nut/upsmon.pid /usr/sbin/upsmon > /dev/null 2>&1 && success || failure
|
||||
if [ "$RETVAL" = 0 ]; then
|
||||
RETVAL=$?
|
||||
fi
|
||||
echo
|
||||
else
|
||||
echo -n $"Starting UPS monitor (slave): "
|
||||
daemon --pidfile /var/run/nut/upsmon.pid /usr/sbin/upsmon > /dev/null 2>&1 && success || failure
|
||||
echo
|
||||
fi
|
||||
|
||||
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/ups
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Stopping UPS monitor: "
|
||||
killproc -p /var/run/nut/upsmon.pid upsmon
|
||||
echo
|
||||
|
||||
if [ "$SERVER" = "yes" ]; then
|
||||
prog="upsd"
|
||||
echo -n $"Stopping $prog: "
|
||||
killproc upsd > /dev/null 2>&1 && success || failure
|
||||
RETVAL=$?
|
||||
echo
|
||||
|
||||
echo -n $"Shutting down UPS driver controller: "
|
||||
/sbin/upsdrvctl stop > /dev/null 2>&1 && success || failure
|
||||
if [ "$RETVAL" = 0 ]; then
|
||||
RETVAL=$?
|
||||
fi
|
||||
echo
|
||||
fi
|
||||
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/ups
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
waitmore=5
|
||||
while [ -n "$(ls /var/run/nut/)" -a $waitmore -ge 1 ]
|
||||
do
|
||||
sleep 1
|
||||
waitmore=$((waitmore-1))
|
||||
done
|
||||
start
|
||||
}
|
||||
|
||||
reload() {
|
||||
# FIXME: upsd and upsmon always return 0
|
||||
# => can't tell if reload was successful
|
||||
if [ "$SERVER" = "yes" ]; then
|
||||
action "Reloading upsd:" /usr/sbin/upsd -c reload
|
||||
RETVAL=$?
|
||||
fi
|
||||
action "Reloading upsmon:" /usr/sbin/upsmon -c reload
|
||||
if [ "$RETVAL" = 0 ]; then
|
||||
RETVAL=$?
|
||||
fi
|
||||
}
|
||||
|
||||
# See how we are called.
|
||||
case "$1" in
|
||||
start)
|
||||
start ;;
|
||||
|
||||
stop)
|
||||
stop ;;
|
||||
|
||||
restart)
|
||||
restart ;;
|
||||
|
||||
try-restart)
|
||||
[ -f /var/lock/subsys/ups ] && restart || :
|
||||
;;
|
||||
|
||||
reload)
|
||||
reload ;;
|
||||
|
||||
force-reload)
|
||||
restart ;;
|
||||
|
||||
status)
|
||||
if [ "$SERVER" = "yes" ]; then
|
||||
status upsd
|
||||
fi
|
||||
status upsmon
|
||||
;;
|
||||
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|restart|try-restart|reload|force-reload|status}"
|
||||
RETVAL=3
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
# If the UPS is locally attached set it to "yes"
|
||||
SERVER=yes
|
||||
# Any options to pass to upsd
|
||||
UPSD_OPTIONS=
|
||||
# This *must* be the same as in /etc/ups/upsmon.conf
|
||||
POWERDOWNFLAG=/etc/killpower
|
||||
#
|
||||
# [End]
|
||||
Loading…
Add table
Add a link
Reference in a new issue