diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b8c81a2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/apcupsd-*.tar.gz +/apcupsd-*.src.rpm +/apcupsd-*/ +/results_*/ diff --git a/99-apcupsd-xfer-glitch.patch b/99-apcupsd-xfer-glitch.patch new file mode 100644 index 0000000..2b2898d --- /dev/null +++ b/99-apcupsd-xfer-glitch.patch @@ -0,0 +1,61 @@ +diff -aruN apcupsd-3.14.14.orig/src/drivers/usb/usb.c apcupsd-3.14.14/src/drivers/usb/usb.c +--- apcupsd-3.14.14.orig/src/drivers/usb/usb.c 2024-02-24 20:22:42.007641242 +0100 ++++ apcupsd-3.14.14/src/drivers/usb/usb.c 2024-02-24 20:23:03.824987965 +0100 +@@ -42,7 +42,9 @@ + UpsDriver(ups), + _quirk_old_backups_pro(false), + _prev_time((struct timeval){0}), +- _bpcnt(0) ++ _bpcnt(0), ++ _bacnt(0), ++ _brcnt(0) + { + } + +@@ -410,8 +412,13 @@ + break; + + case CI_NeedReplacement: +- if (uval->iValue) +- _ups->set_replacebatt(uval->iValue); ++ if (uval->iValue) { ++ if (_brcnt++) { ++ _ups->set_replacebatt(uval->iValue); ++ } ++ } else { ++ _brcnt = 0; ++ } + Dmsg(200, "ReplaceBatt=%d\n", uval->iValue); + break; + +@@ -569,11 +576,15 @@ + * delayed. C'est la vie. + */ + if (uval->iValue) { +- if (_bpcnt++) ++ if (_bpcnt++) { ++ _bacnt = 0; + _ups->set_battpresent(); ++ } + } else { +- _bpcnt = 0; +- _ups->clear_battpresent(); ++ if (_bacnt++) { ++ _bpcnt = 0; ++ _ups->clear_battpresent(); ++ } + } + Dmsg(200, "BatteryPresent=%d\n", uval->iValue); + break; +diff -aruN apcupsd-3.14.14.orig/src/drivers/usb/usb.h apcupsd-3.14.14/src/drivers/usb/usb.h +--- apcupsd-3.14.14.orig/src/drivers/usb/usb.h 2024-02-24 20:22:42.007641242 +0100 ++++ apcupsd-3.14.14/src/drivers/usb/usb.h 2024-02-24 20:23:01.754956355 +0100 +@@ -86,6 +86,8 @@ + bool _quirk_old_backups_pro; + struct timeval _prev_time; + int _bpcnt; ++ int _bacnt; ++ int _brcnt; + }; + + /* Max rate to update volatile data */ diff --git a/apcupsd-3.14.1-cloexec.patch b/apcupsd-3.14.1-cloexec.patch new file mode 100644 index 0000000..2ab9c1f --- /dev/null +++ b/apcupsd-3.14.1-cloexec.patch @@ -0,0 +1,48 @@ +--- apcupsd-3.14.1/src/apcnis.c.cloexec 2006-08-13 11:00:15.000000000 -0600 ++++ apcupsd-3.14.1/src/apcnis.c 2007-08-01 16:26:35.000000000 -0600 +@@ -155,6 +155,9 @@ + sleep(5 * 60); + } + ++ /* Close the socket on exec - avoid leaked file descriptors */ ++ fcntl(sockfd, F_SETFD, FD_CLOEXEC); ++ + /* Reuse old sockets */ + #ifndef HAVE_MINGW + if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (void*)&turnon, sizeof(turnon)) < 0) { +--- apcupsd-3.14.1/src/apcupsd.c.cloexec 2006-09-23 11:42:47.000000000 -0600 ++++ apcupsd-3.14.1/src/apcupsd.c 2007-08-01 16:27:14.000000000 -0600 +@@ -280,6 +280,9 @@ + if (ups->event_fd < 0) { + log_event(ups, LOG_WARNING, "Could not open events file %s: %s\n", + ups->eventfile, strerror(errno)); ++ } else { ++ /* Close the file on exec - avoid leaked file descriptors */ ++ fcntl(ups->event_fd, F_SETFD, FD_CLOEXEC); + } + } + +--- apcupsd-3.14.1/src/drivers/usb/linux/linux-usb.c.cloexec 2007-08-01 16:30:28.000000000 -0600 ++++ apcupsd-3.14.1/src/drivers/usb/linux/linux-usb.c 2007-08-01 16:42:55.000000000 -0600 +@@ -182,8 +182,11 @@ + /* Retry 10 times */ + for (i = 0; i < 10; i++) { + my_data->fd = open_device(ups->device, ups); +- if (my_data->fd != -1) ++ if (my_data->fd != -1) { ++ /* Close the device on exec - avoid leaked file descriptors */ ++ fcntl(my_data->fd, F_SETFD, FD_CLOEXEC); + return 1; ++ } + sleep(1); + } + +@@ -206,6 +209,8 @@ + asnprintf(devname, sizeof(devname), "%s%d", hiddev[j], k); + my_data->fd = open_device(devname, ups); + if (my_data->fd != -1) { ++ /* Close the device on exec - avoid leaked file descriptors */ ++ fcntl(my_data->fd, F_SETFD, FD_CLOEXEC); + /* Successful open, save device name and return */ + astrncpy(ups->device, devname, sizeof(ups->device)); + return 1; diff --git a/apcupsd-3.14.3-init.patch b/apcupsd-3.14.3-init.patch new file mode 100644 index 0000000..388af70 --- /dev/null +++ b/apcupsd-3.14.3-init.patch @@ -0,0 +1,46 @@ +diff -up apcupsd-3.14.5/platforms/redhat/apcupsd.in.init apcupsd-3.14.5/platforms/redhat/apcupsd.in +--- apcupsd-3.14.5/platforms/redhat/apcupsd.in.init 2008-11-01 16:03:26.000000000 +0100 ++++ apcupsd-3.14.5/platforms/redhat/apcupsd.in 2009-01-22 10:58:00.429886991 +0100 +@@ -3,9 +3,19 @@ + # apcupsd This shell script takes care of starting and stopping + # the apcupsd UPS monitoring daemon. + # +-# chkconfig: 2345 60 99 ++# chkconfig: - 60 99 + # description: apcupsd monitors power and takes action if necessary + # ++### BEGIN INIT INFO ++# Provides: apcupsd ++# Required-Start: $syslog $local_fs ++# Required-Stop: $syslog $local_fs ++# Default-Start: ++# Default-Stop: 0 1 6 ++# Short-Description: apcupsd daemon ++# Description: APC UPS Power Control Daemon for Linux ++### END INIT INFO ++ + APCPID=@PIDDIR@/apcupsd.pid + + # Source function libarary +@@ -30,9 +40,11 @@ case "$1" in + ;; + restart|force-reload) + $0 stop +- sleep 15 + $0 start + ;; ++ condrestart) ++ [ -f @LOCKDIR@/subsys/apcupsd ] && $0 restart || : ++ ;; + reload) + echo "$0: reload not implemented" + exit 3 +@@ -48,7 +60,7 @@ case "$1" in + fi + ;; + *) +- echo "Usage: $0 {start|stop|restart|status}" ++ echo "Usage: $0 {start|stop|restart|condrestart|status}" + exit 1 + ;; + esac diff --git a/apcupsd-3.14.4-shutdown.patch b/apcupsd-3.14.4-shutdown.patch new file mode 100644 index 0000000..17671f0 --- /dev/null +++ b/apcupsd-3.14.4-shutdown.patch @@ -0,0 +1,19 @@ +This is needed to properly halt the machine without powering it down. + +See: + https://bugzilla.redhat.com/show_bug.cgi?id=348701 + https://bugzilla.redhat.com/show_bug.cgi?id=1442577 + + +diff -up apcupsd-3.14.4/platforms/apccontrol.in.shutdown apcupsd-3.14.4/platforms/apccontrol.in +--- apcupsd-3.14.4/platforms/apccontrol.in.shutdown 2008-05-28 09:15:47.000000000 +0200 ++++ apcupsd-3.14.4/platforms/apccontrol.in 2008-05-28 09:16:04.000000000 +0200 +@@ -104,7 +104,7 @@ case "$1" in + ;; + doshutdown) + echo "UPS ${2} initiated Shutdown Sequence" | ${WALL} +- ${SHUTDOWN} -h now "apcupsd UPS ${2} initiated shutdown" ++ ${SHUTDOWN} -h -H now "apcupsd UPS ${2} initiated shutdown" + ;; + annoyme) + echo "Power problems with UPS ${2}. Please logoff." | ${WALL} diff --git a/apcupsd-3.14.9-fixgui.patch b/apcupsd-3.14.9-fixgui.patch new file mode 100644 index 0000000..79551a1 --- /dev/null +++ b/apcupsd-3.14.9-fixgui.patch @@ -0,0 +1,158 @@ +--- apcupsd-3.14.9/src/gapcmon/gapcmon.c.timeout 2008-09-16 06:58:20.000000000 +0200 ++++ apcupsd-3.14.9/src/gapcmon/gapcmon.c 2011-10-12 20:10:52.986362156 +0200 +@@ -179,6 +179,54 @@ struct hostent * gethostname_re + */ + static gboolean lg_graph_debug = FALSE; + ++static GSList *timeout_list = NULL; ++ ++static inline timeout_t * new_timeout(guint id, timeout_type_t type, void *data) { ++ timeout_t *timeout = (timeout_t *) malloc(sizeof(timeout_t)); ++ ++ timeout->id = id; ++ timeout->type = type; ++ timeout->data = data; ++ return timeout; ++} ++ ++/* callback will check if timeout is associated with window ++ * which is about to be destroyed and it will call g_source_remove ++ * in order to prevent the callback associated with timeout to be executed ++ */ ++static void remove_timeout(gpointer tmo, gpointer data) { ++ timeout_t * timeout = (timeout_t *) tmo; ++ PGAPC_MONITOR monitor = (PGAPC_MONITOR) data; ++ int delete_timeout = 0; ++ ++ if (timeout == NULL) { ++ return; ++ } ++ ++ switch (timeout->type) { ++ case GRAPH: ++ if (timeout->data == (void *) monitor->phs.plg) { ++ delete_timeout = 1; ++ } ++ break; ++ case MONITOR: ++ if (timeout->data == (void *) monitor) { ++ delete_timeout = 1; ++ } ++ break; ++ ++ case HISTORY: ++ if (timeout->data == (void *) &(monitor->phs)) { ++ delete_timeout = 1; ++ } ++ break; ++ } ++ ++ if (delete_timeout) { ++ g_source_remove(timeout->id); ++ timeout_list = g_slist_remove(timeout_list, (gconstpointer) timeout); ++ } ++} + + /* ************************************************************************* */ + +@@ -1376,8 +1424,8 @@ static gint lg_graph_configure_event_cb + plg->x_range.i_minor_inc = plg->plot_box.width / plg->x_range.i_num_minor; + plg->x_range.i_major_inc = plg->plot_box.width / plg->x_range.i_num_major; + +- g_timeout_add (250, (GSourceFunc) lg_graph_draw, plg); +- ++ guint tid = g_timeout_add (250, (GSourceFunc) lg_graph_draw, plg); ++ timeout_list = g_slist_append(timeout_list, new_timeout(tid, GRAPH, (void *) plg)); + return TRUE; + } + +@@ -1745,7 +1793,8 @@ static gboolean cb_monitor_automatic_ref + return FALSE; /* stop timers */ + + if (pm->b_timer_control) { +- g_timeout_add(100, (GSourceFunc) cb_monitor_refresh_control, pm); ++ guint tid = g_timeout_add(100, (GSourceFunc) cb_monitor_refresh_control, pm); ++ timeout_list = g_slist_append(timeout_list, new_timeout(tid, MONITOR, (void *) pm)); + return FALSE; + } + +@@ -4543,9 +4592,9 @@ static void cb_monitor_interface_button_ + } + + g_async_queue_push(pm->q_network, pm); +- g_timeout_add(GAPC_REFRESH_FACTOR_ONE_TIME, ++ guint tid = g_timeout_add(GAPC_REFRESH_FACTOR_ONE_TIME, + (GSourceFunc) cb_monitor_dedicated_one_time_refresh, pm); +- ++ timeout_list = g_slist_append(timeout_list, new_timeout(tid, MONITOR, (void *) pm)); + return; + } + +@@ -5174,6 +5223,9 @@ static void cb_monitor_interface_destroy + g_source_remove(pm->tid_automatic_refresh); + } + ++ /* iterate through list of timers and remove all timers associated with this monitor */ ++ g_slist_foreach(timeout_list, remove_timeout, (gpointer) pm); ++ + if (pm->tid_thread_qwork != NULL) { + pm->b_thread_stop = TRUE; + g_async_queue_push(pm->q_network, pm); +@@ -5537,9 +5589,9 @@ static gint gapc_monitor_history_page(PG + + /* collect one right away */ + pphs->b_startup = TRUE; +- g_timeout_add((guint) (pm->d_refresh * GAPC_REFRESH_FACTOR_1K + 75), ++ guint tid = g_timeout_add((guint) (pm->d_refresh * GAPC_REFRESH_FACTOR_1K + 75), + (GSourceFunc) cb_util_line_chart_refresh, pphs); +- ++ timeout_list = g_slist_append(timeout_list, new_timeout(tid, HISTORY, (void *) pphs)); + return i_page; + } + +@@ -5565,7 +5617,8 @@ static gboolean cb_util_line_chart_refre + return FALSE; + + if (pm->b_graph_control) { +- g_timeout_add(100, (GSourceFunc) cb_util_line_chart_refresh_control, pm); ++ guint tid = g_timeout_add(100, (GSourceFunc) cb_util_line_chart_refresh_control, pm); ++ timeout_list = g_slist_append(timeout_list, new_timeout(tid, MONITOR, (void *) pm)); + return FALSE; + } + +@@ -6392,6 +6445,7 @@ extern int main(int argc, char *argv[]) + PGAPC_CONFIG pcfg = NULL; + GtkWidget *window = NULL; + ++ timeout_list = g_slist_alloc(); + /* + * Initialize GLib thread support, and GTK + */ +@@ -6435,5 +6489,6 @@ extern int main(int argc, char *argv[]) + gdk_flush(); + gdk_threads_leave(); + ++ g_slist_free(timeout_list); + return (0); + } +--- apcupsd-3.14.9/src/gapcmon/gapcmon.h 2011-10-12 20:12:54.584317583 +0200 ++++ apcupsd-3.14.9/src/gapcmon/gapcmon.h.timeout 2011-10-12 20:14:10.965669911 +0200 +@@ -403,6 +403,18 @@ typedef struct _System_Control_Data { + + } GAPC_CONFIG, *PGAPC_CONFIG; + ++typedef enum { ++ GRAPH, ++ MONITOR, ++ HISTORY ++} timeout_type_t; ++ ++typedef struct { ++ guint id; ++ timeout_type_t type; ++ void *data; ++} timeout_t; ++ + /* ************************************************************************* */ + + #define GAPC_GLOSSARY "GAPCMON\n \ diff --git a/apcupsd-httpd.conf b/apcupsd-httpd.conf new file mode 100644 index 0000000..26a5191 --- /dev/null +++ b/apcupsd-httpd.conf @@ -0,0 +1,32 @@ +# +# apcupsd configuration file for Apache Web server +# + +# files are off the documentroot of Web server +Alias /apcupsd /var/www/apcupsd + + AddHandler cgi-script cgi pl + Options ExecCGI + + +# +# Allow only local access at default +# Change the ".example.com" to match your domain or modify +# access rights to your needs to enable remote access also. +# + + DirectoryIndex upsstats.cgi + AllowOverride None + Options ExecCGI Indexes + + # Apache 2.4 + Require local + + + # Apache 2.2 + Order deny,allow + Deny from all + Allow from 127.0.0.1 + Allow from ::1 + + diff --git a/apcupsd.logrotate b/apcupsd.logrotate new file mode 100644 index 0000000..0bfef2a --- /dev/null +++ b/apcupsd.logrotate @@ -0,0 +1,5 @@ +/var/log/apcupsd.events { + missingok + copytruncate + notifempty +} diff --git a/apcupsd.service b/apcupsd.service new file mode 100644 index 0000000..2e199ff --- /dev/null +++ b/apcupsd.service @@ -0,0 +1,12 @@ +[Unit] +Description=APC UPS Power Control Daemon for Linux +After=syslog.target +After=network-online.target + +[Service] +ExecStartPre=-/bin/rm -f /etc/apcupsd/powerfail +ExecStart=/usr/bin/apcupsd -b -f /etc/apcupsd/apcupsd.conf +KillMode=process + +[Install] +WantedBy=multi-user.target diff --git a/apcupsd.spec b/apcupsd.spec new file mode 100644 index 0000000..dde0ac9 --- /dev/null +++ b/apcupsd.spec @@ -0,0 +1,537 @@ +# A change in RPM 4.15 causes the make_build macro to misbuild this package. +# See https://github.com/rpm-software-management/rpm/issues/798 +%global _make_verbose %nil + +Name: apcupsd +Version: 3.14.14 +Release: 40%{?dist} +Summary: APC UPS Power Control Daemon + +License: GPL-2.0-only +URL: http://www.apcupsd.com +Source0: https://downloads.sourceforge.net/apcupsd/apcupsd-%version.tar.gz +Source1: apcupsd.service +Source2: apcupsd_shutdown +Source3: apcupsd-httpd.conf +Source4: apcupsd.logrotate +Source5: apcupsd64x64.png + +# fix crash in gui, rhbz#578276 +Patch0: apcupsd-3.14.9-fixgui.patch +# Halt without powering off, rhbz#1442577 +Patch1: apcupsd-3.14.4-shutdown.patch +# Fix format-security error so we can enable the checks +Patch2: patch-format-security +Patch3: disable_nologin.patch +# fixes "increasing NUMXFERS" bug: +# https://sourceforge.net/p/apcupsd/mailman/apcupsd-users/thread/ad9afb27-30f9-443f-a9fb-982c41ad1325%40okazoo.eu/ +# https://www.reddit.com/r/homelab/comments/1c3eo9n/apcupsd_and_proxmox_frequent_battery_disconnected/ +# patch source: https://sourceforge.net/p/apcupsd/mailman/message/58741334/ +Patch4: 99-apcupsd-xfer-glitch.patch + +BuildRequires: gcc-c++ +BuildRequires: glibc-devel, gd-devel +%if %{defined fedora} || (%{defined rhel} && 0%{?rhel} > 9) +BuildRequires: libusb-compat-0.1-devel +%endif +%if (%{defined rhel} && 0%{?rhel} <= 9) +BuildRequires: libusb-devel +%endif +BuildRequires: net-snmp-devel, +BuildRequires: gtk2-devel, GConf2-devel, desktop-file-utils +# /sbin/shutdown is required to be present when building +# Somehow in F36 systemd is installed in mock but not in koji +BuildRequires: systemd +# This is part of util-linux in Fedora, but on EL7 it's in sysvinit-tools. +BuildRequires: /usr/bin/wall +BuildRequires: make +Requires: /bin/mail /usr/bin/wall +%{?systemd_requires} + +%description +Apcupsd can be used for controlling most APC UPSes. During a +power failure, apcupsd will inform the users about the power +failure and that a shutdown may occur. If power is not restored, +a system shutdown will follow when the battery is exausted, a +timeout (seconds) expires, or the battery runtime expires based +on internal APC calculations determined by power consumption +rates. If the power is restored before one of the above shutdown +conditions is met, apcupsd will inform users about this fact. +Some features depend on what UPS model you have (simple or smart). + + +%package cgi +Summary: Web interface for apcupsd +Requires: apcupsd = %version-%release +Requires: httpd + +%description cgi +A CGI interface to the APC UPS monitoring daemon. + + +%package gui +Summary: GUI interface for apcupsd +Requires: apcupsd = %version-%release + +%description gui +A GUI interface to the APC UPS monitoring daemon. + + +%prep +%autosetup -p1 + +# Override the provided platform makefile +printf 'install:\n\techo skipped\n' > platforms/redhat/Makefile + +%build +%configure \ + --sysconfdir="/etc/apcupsd" \ + --with-cgi-bin="/var/www/apcupsd" \ + --sbindir=%{_bindir} \ + --enable-cgi \ + --enable-pthreads \ + --enable-net \ + --enable-apcsmart \ + --enable-dumb \ + --enable-net-snmp \ + --enable-snmp \ + --enable-usb \ + --enable-modbus-usb \ + --enable-gapcmon \ + --enable-pcnet \ + --with-serial-dev= \ + --with-upstype=usb \ + --with-upscable=usb \ + --with-lock-dir=/var/lock \ + APCUPSD_MAIL=/bin/mail +%make_build + +%install +mkdir -p %buildroot/var/www/apcupsd +%make_install +install -m744 platforms/apccontrol \ + %buildroot/etc/apcupsd/apccontrol + +install -p -D -m0644 %SOURCE1 %buildroot/lib/systemd/system/apcupsd.service +install -p -D -m0755 %SOURCE2 %buildroot/lib/systemd/system-shutdown/apcupsd_shutdown +install -p -D -m0644 %SOURCE3 %buildroot/etc/httpd/conf.d/apcupsd.conf +install -p -D -m0644 %SOURCE4 %buildroot/etc/logrotate.d/apcupsd +install -p -D -m0644 %SOURCE5 %buildroot/usr/share/pixmaps/apcupsd64x64.png + +desktop-file-install \ + --vendor="fedora" \ + --dir=%buildroot/usr/share/applications \ + --set-icon=apcupsd64x64 \ + --delete-original \ + %buildroot/usr/share/applications/gapcmon.desktop + +# Cleanup for later %%doc processing +chmod -x examples/*.c +rm examples/*.in + +%files +%license COPYING +%doc ChangeLog examples ReleaseNotes +%dir /etc/apcupsd +/lib/systemd/system/apcupsd.service +/lib/systemd/system-shutdown/apcupsd_shutdown +%config(noreplace) /etc/apcupsd/apcupsd.conf +%attr(0755,root,root) /etc/apcupsd/apccontrol +%config(noreplace) /etc/apcupsd/changeme +%config(noreplace) /etc/apcupsd/commfailure +%config(noreplace) /etc/apcupsd/commok +%config(noreplace) /etc/apcupsd/offbattery +%config(noreplace) /etc/apcupsd/onbattery +%config(noreplace) /etc/logrotate.d/apcupsd +/usr/share/hal/fdi/policy/20thirdparty/80-apcupsd-ups-policy.fdi +%{_bindir}/apcaccess +%{_bindir}/apctest +%{_bindir}/apcupsd +%exclude %{_bindir}/smtp + +%{_mandir}/*/* + +%files cgi +%config(noreplace) /etc/apcupsd/apcupsd.css +%config(noreplace) /etc/httpd/conf.d/apcupsd.conf +%config(noreplace) /etc/apcupsd/hosts.conf +%config(noreplace) /etc/apcupsd/multimon.conf +/var/www/apcupsd/ + +%files gui +/usr/bin/gapcmon +/usr/share/applications/*gapcmon.desktop +/usr/share/pixmaps/apcupsd.png +/usr/share/pixmaps/apcupsd64x64.png +/usr/share/pixmaps/charging.png +/usr/share/pixmaps/gapc_prefs.png +/usr/share/pixmaps/onbatt.png +/usr/share/pixmaps/online.png +/usr/share/pixmaps/unplugged.png + + +%post +%systemd_post apcupsd.service + +%preun +%systemd_preun apcupsd.service + +%postun +%systemd_postun_with_restart apcupsd.service + + +%changelog +* Fri Jan 16 2026 Fedora Release Engineering - 3.14.14-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jul 23 2025 Fedora Release Engineering - 3.14.14-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu May 22 2025 Gwyn Ciesla - 3.14.14-38 +- Don't ship /usr/bin/smtp, not used, conflicts with opensmtpd. + +* Fri May 09 2025 Gwyn Ciesla - 3.14.14-37 +- Move binaries from sbin to bin, 2365293. + +* Wed Apr 23 2025 Davide Cavalca - 3.14.14-36 +- Fix libusb conditional to make it build on EPEL 10 + Fixes: RHBZ#2337139 + +* Wed Apr 09 2025 Germano Massullo - 3.14.14-35 +- Adds 99-apcupsd-xfer-glitch.patch + +* Thu Jan 16 2025 Fedora Release Engineering - 3.14.14-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Nov 08 2024 Germano Massullo - 3.14.14-33 +- Adds distinction between Fedora and EL <= 9 for BuildRequires: libusb + +* Fri Nov 08 2024 Germano Massullo - 3.14.14-32 +- release bump + +* Fri Nov 08 2024 Germano Massullo - 3.14.14-31 +- Adds disable_nologin.patch + +* Sun Jan 07 2024 Germano Massullo - 3.14.14-30 +- disables apcupsd-3.14.4-shutdown.patch + +* Wed Jul 19 2023 Fedora Release Engineering - 3.14.14-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jan 18 2023 Fedora Release Engineering - 3.14.14-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Aug 02 2022 Jason L Tibbitts III - 3.14.14-27 +- Depend on libusb-compat-0.1-devel to avoid build breakage. + +* Wed Jul 20 2022 Fedora Release Engineering - 3.14.14-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jan 25 2022 Jason L Tibbitts III - 3.14.14-25 +- Explicitly require systemd at build time to ensure that /sbin/shutdown is + present. + +* Wed Jan 19 2022 Fedora Release Engineering - 3.14.14-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 3.14.14-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sat Jan 30 2021 Jason L Tibbitts III - 3.14.14-22 +- Fix build on F33+. +- Allow build with format-security checking enabled. + +* Tue Jan 26 2021 Fedora Release Engineering - 3.14.14-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Aug 01 2020 Fedora Release Engineering - 3.14.14-20 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 3.14.14-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jun 08 2020 Germano Massullo - 3.14.14-18 +- Replaced BuildRequires: gnome-vfs2 with BuildRequires: GConf2-devel More infos at https://bugzilla.redhat.com/show_bug.cgi?id=1745727#c5 + +* Tue Jan 28 2020 Fedora Release Engineering - 3.14.14-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Jason L Tibbitts III - 3.14.14-16 +- Workaround change in RPM 4.15 which breaks the build. + +* Wed Jul 24 2019 Fedora Release Engineering - 3.14.14-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 3.14.14-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Dec 03 2018 Jason L Tibbitts III - 3.14.14-13 +- Fix broken zero-size icon. + +* Thu Jul 12 2018 Fedora Release Engineering - 3.14.14-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu May 17 2018 Jason L Tibbitts III - 3.14.14-11 +- Add KillMode=process to the systemd unit. + +* Mon Mar 26 2018 Till Maas - 3.14.14-10 +- rebuilt to drop tcp_wrappers dependency + https://bugzilla.redhat.com/show_bug.cgi?id=1518751 +- remove tcp_wrappers support + +* Wed Feb 07 2018 Fedora Release Engineering - 3.14.14-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jan 25 2018 Jason L Tibbitts III - 3.14.14-8 +- Use proper systemd dependencies. + +* Wed Aug 02 2017 Fedora Release Engineering - 3.14.14-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 3.14.14-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Apr 17 2017 Jason L Tibbitts III - 3.14.14-5 +- Reinstate patch to call shutdown with -H to halt instead of powering down. + +* Fri Mar 24 2017 Jason L Tibbitts III - 3.14.14-4 +- Depend on /usr/bin/wall to accommodate EL7. + +* Fri Feb 10 2017 Fedora Release Engineering - 3.14.14-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Jun 22 2016 Jason L Tibbitts III - 3.14.14-2 +- Clean up the spec a bit. +- Stop adding the unit file and shutdown script in a patch and just included + them as sources instead. +- Have the unit go after network-online.target instead of network.target. +- Remove apcupsd-3.14.4-shutdown.patch. Both the old and the new commands to + exactly the same thing for me (halt but not power down) on my test machines. + +* Thu Jun 02 2016 Michal Hlavinka - 3.14.14-1 +- updated to 3.14.14 + +* Wed Feb 03 2016 Fedora Release Engineering - 3.14.13-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Nov 23 2015 Michal Hlavinka - 3.14.13-4 +- fix apcaccess crash if apcupsd is not running (#1236367,#1197383) +- enabled modbus-usb (#1195071) +- add bigger icon (#1157532) + +* Wed Jun 17 2015 Fedora Release Engineering - 3.14.13-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat May 02 2015 Kalev Lember - 3.14.13-2 +- Rebuilt for GCC 5 C++11 ABI change + +* Tue Feb 03 2015 Michal Hlavinka - 3.14.13-1 +- apcupsd updated to 3.14.13 + +* Fri Aug 15 2014 Fedora Release Engineering - 3.14.12-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 3.14.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon Mar 31 2014 Michal Hlavinka - 3.14.12-1 +- apcupsd updated to 3.14.12 +- force lock dir to /var/lock (#1064099) + +* Mon Feb 17 2014 Michal Hlavinka - 3.14.11-1 +- apcupsd updated to 3.14.11 + +* Tue Jan 21 2014 Michal Hlavinka - 3.14.10-14 +- reduce amount of debug messages (#1053324) + +* Wed Aug 14 2013 Michal Hlavinka - 3.14.10-13 +- fix aarch64 support (#925007) + +* Sat Aug 03 2013 Fedora Release Engineering - 3.14.10-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Jun 11 2013 Remi Collet - 3.14.10-11 +- rebuild for new GD 2.1.0 + +* Fri May 17 2013 Michal Hlavinka - 3.14.10-10 +- make executables hardened (#955341) + +* Thu Feb 14 2013 Toshio Kuratomi - 3.14.10-9 +- Remove --vendor flag to desktop-file-install on F19+ + +* Tue Feb 05 2013 Michal Hlavinka - 3.14.10-8 +- remove obsolete documentation + +* Tue Oct 30 2012 Michal Hlavinka - 3.14.10-7 +- fix configuration for httpd 2.4 (#871361) + +* Fri Aug 24 2012 Michal Hlavinka - 3.14.10-6 +- scriptlets replaced with new systemd macros (#851227) + +* Wed Jul 18 2012 Fedora Release Engineering - 3.14.10-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Feb 13 2012 Michal Hlavinka - 3.14.10-4 +- start after network is up (#789191) + +* Thu Jan 12 2012 Fedora Release Engineering - 3.14.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Dec 19 2011 Michal Hlavinka - 3.14.10-2 +- remove powerfail flag on boot (#768684) + +* Mon Dec 12 2011 Michal Hlavinka - 3.14.10-1 +- apcupsd updated to 3.14.10 +- fix MODEL vs. APCMODEL confusion. Remove APCMODEL and rename old MODEL + aka 'mode' to DRIVER. + +* Thu Oct 20 2011 Michal Hlavinka - 3.14.9-2 +- fix crash in gui (#578276), patch by Michal Sekletar + +* Mon Jul 25 2011 Michal Hlavinka - 3.14.9-1 +- apcupsd updated to 3.14.9 + +* Fri Jul 08 2011 Michal Hlavinka - 3.14.8-9 +- rebuilt for net-snmp update + +* Thu Jun 16 2011 Michal Hlavinka - 3.14.8-8 +- move from SysV init script to systemd service file + +* Wed Feb 09 2011 Michal Hlavinka - 3.14.9-7 +- add readme file to doc explaining needed configuration of halt script + +* Mon Feb 07 2011 Fedora Release Engineering - 3.14.8-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Dec 02 2010 Michal Hlavinka - 3.14.8-5 +- do not attempt to invoke directory as a script (#659219) + +* Fri Nov 05 2010 Michal Hlavinka - 3.14.8-4 +- rebuilt for library update + +* Wed Sep 29 2010 jkeating - 3.14.8-3 +- Rebuilt for gcc bug 634757 + +* Wed Sep 22 2010 Michal Hlavinka - 3.14.8-2 +- fix c++ code linking (FTBFS) (#631288) + +* Mon Jan 18 2010 Michal Hlavinka - 3.14.8-1 +- updated to 3.14.8 + +* Fri Sep 18 2009 Michal Hlavinka - 3.14.7-3 +- fix building with new net-snmp version + +* Fri Aug 21 2009 Tomas Mraz - 3.14.7-2 +- rebuilt with new openssl + +* Mon Aug 03 2009 Michal Hlavinka - 3.14.7-1 +- updated to 3.14.7 + +* Fri Jul 24 2009 Fedora Release Engineering - 3.14.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon May 18 2009 Michal Hlavinka - 3.14.6-1 +- update to 3.14.6 + +* Tue Feb 24 2009 Michal Hlavinka - 3.14.5-3 +- fix build with gcc 4.4 + +* Mon Feb 23 2009 Fedora Release Engineering - 3.14.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Jan 22 2009 Michal Hlavinka - 3.14.5-1 +- update to 3.14.5 + +* Thu Jan 15 2009 Tomas Mraz - 3.14.4-3 +- rebuild with new openssl + +* Fri Jun 06 2008 Tomas Smetana - 3.14.4-2 +- drop useless build requirements +- fix #448637 - hosts.conf and multimon.conf should be in apcupsd-cgi +- move binaries to /sbin (related #346271) + +* Wed May 28 2008 Tomas Smetana - 3.14.4-1 +- new upstream version + +* Tue Feb 12 2008 Tomas Smetana - 3.14.3-2.1 +- rebuild (gcc-4.3) + +* Wed Jan 30 2008 Tomas Smetana - 3.14.3-2 +- fix #348701 - apcupsd control script does not invoke shutdown properly + +* Wed Jan 23 2008 Tomas Smetana - 3.14.3-1 +- Update to 3.14.3 + +* Wed Oct 10 2007 - Orion Poplawski - 3.14.2-1 +- Update to 3.14.2, remove upstreamed patches + +* Wed Aug 1 2007 - Orion Poplawski - 3.14.1-3 +- Add patch to close open file descriptors (bug #247162) +- Stop/restart service as needed on removal/upgrade + +* Mon Jun 04 2007 - Orion Poplawski - 3.14.1-2 +- Add patch for linux USB UPS detection (bug #245864) + +* Tue May 29 2007 - Orion Poplawski - 3.14.1-1 +- Update to 3.14.1 + +* Mon Apr 23 2007 - Orion Poplawski - 3.14.0-2 +- Fix init script for LSB compliance (bug #237532) + +* Mon Feb 12 2007 - Orion Poplawski - 3.14.0-1 +- Update to 3.14.0 + +* Fri Jan 5 2007 - Orion Poplawski - 3.13.9-2 +- Mark everything in /etc/apcupsd noreplace +- Change BR to tcp_wrappers-devel + +* Thu Nov 30 2006 - Orion Poplawski - 3.13.9-1 +- Update to 3.13.9, add gui package + +* Mon Oct 9 2006 - Orion Poplawski - 3.12.4-3 +- Fix /etc/httpd/conf.d/apcupsd.conf so DirectoryIndex works (bug #209952). + Patch from Clive Messer (clive@vacuumtube.org.uk) + +* Tue Aug 29 2006 - Orion Poplawski - 3.12.4-2 +- Rebuild for FC6 + +* Mon Aug 21 2006 - Orion Poplawski - 3.12.4-1 +- Update to 3.12.4 + +* Tue Jan 10 2006 - Orion Poplawski - 3.12.2-1 +- Update to 3.12.2 +- Don't strip binaries + +* Tue Jan 10 2006 - Orion Poplawski - 3.12.1-1 +- Update to 3.12.1 + +* Wed Jan 4 2006 - Orion Poplawski - 3.12.0-1 +- Update to 3.12.0 + +* Tue Jan 3 2006 - Orion Poplawski - 3.10.18-7 +- Rebuild + +* Wed Dec 21 2005 - Orion Poplawski - 3.10.18-6 +- Rebuild + +* Wed Nov 16 2005 - Orion Poplawski - 3.10.18-5 +- Bump for new openssl + +* Fri Nov 4 2005 - Orion Poplawski - 3.10.18-4 +- Add logrotate script for /var/log/apcupsd.events +- Add apache configuration script and change cgi directory to + /var/www/apcupsd +- Compile in snmp, net-snmp, powerflute, nls, add tcp_wrappers support + +* Mon Oct 17 2005 - Orion Poplawski - 3.10.18-3 +- Removed %%{_smp_mflags} from make, broke builds +- Patch init file to not start automatically and add reload +- Mark css file config +- Require /sbin/chkconfig + +* Mon Oct 17 2005 - Orion Poplawski - 3.10.18-2 +- Add %%defattr to -cgi package + +* Wed Aug 17 2005 - Orion Poplawski - 3.10.18-1 +- Initial Fedora Version diff --git a/apcupsd64x64.png b/apcupsd64x64.png new file mode 100644 index 0000000..ed65f35 Binary files /dev/null and b/apcupsd64x64.png differ diff --git a/apcupsd_shutdown b/apcupsd_shutdown new file mode 100644 index 0000000..4eff1ed --- /dev/null +++ b/apcupsd_shutdown @@ -0,0 +1,9 @@ +#!/bin/sh + +# See if this is a powerfail situation. +if [ -f /etc/apcupsd/powerfail ]; then + echo + echo "APCUPSD will now power off the UPS" + echo + /etc/apcupsd/apccontrol killpower +fi diff --git a/dead.package b/dead.package deleted file mode 100644 index 161cbda..0000000 --- a/dead.package +++ /dev/null @@ -1,3 +0,0 @@ -2016-10-19: Retired orphaned package, because it was orphaned for -more than six weeks. - diff --git a/disable_nologin.patch b/disable_nologin.patch new file mode 100644 index 0000000..81fefc7 --- /dev/null +++ b/disable_nologin.patch @@ -0,0 +1,18 @@ +diff -urNr apcupsd-3.14.14-orig/src/action.c apcupsd-3.14.14/src/action.c +--- apcupsd-3.14.14-orig/src/action.c 2015-03-20 04:59:41.000000000 +0100 ++++ apcupsd-3.14.14/src/action.c 2024-11-08 16:48:46.095910557 +0100 +@@ -189,13 +189,7 @@ + + static void prohibit_logins(UPSINFO *ups) + { +- if (ups->nologin_file) +- return; /* already done */ +- +- logonfail(ups, 0); +- ups->nologin_file = true; +- +- log_event(ups, LOG_ALERT, "User logins prohibited"); ++ return; + } + + static void do_shutdown(UPSINFO *ups, int cmdtype) diff --git a/patch-format-security b/patch-format-security new file mode 100644 index 0000000..d919a3c --- /dev/null +++ b/patch-format-security @@ -0,0 +1,13 @@ +diff --git a/src/gapcmon/gapcmon.c b/src/gapcmon/gapcmon.c +index 40bf29d..111fe1f 100644 +--- a/src/gapcmon/gapcmon.c ++++ b/src/gapcmon/gapcmon.c +@@ -2938,7 +2938,7 @@ static void gapc_util_log_app_msg(gchar * pch_func, gchar * pch_topic, + + pch = g_strdup_printf("%s(%s) emsg=%s", pch_func, pch_topic, pch_emsg); + +- g_message(pch); ++ g_message("%s", pch); + + g_free(pch); + diff --git a/rpmlint.cf b/rpmlint.cf new file mode 100644 index 0000000..8f28374 --- /dev/null +++ b/rpmlint.cf @@ -0,0 +1,3 @@ +setOption('NetworkEnabled', False) +addFilter('hardcoded-library-path in %buildroot/lib/systemd') +addFilter('hardcoded-library-path in /lib/systemd') diff --git a/sources b/sources new file mode 100644 index 0000000..4cc7ee2 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +cc8f5ced77f38906a274787acb9bc980 apcupsd-3.14.14.tar.gz