From d94f83d1bf4035d1e4299c96a381f1f288c98c37 Mon Sep 17 00:00:00 2001 From: Vincent Li Date: Wed, 30 Oct 2024 17:42:01 +0000 Subject: [PATCH] haproxy: add safe call to haproxy init script Signed-off-by: Vincent Li --- src/misc-progs/Makefile | 3 ++- src/misc-progs/haproxyctrl.c | 42 ++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/misc-progs/haproxyctrl.c diff --git a/src/misc-progs/Makefile b/src/misc-progs/Makefile index 0450a0cbf..bb7507dc6 100644 --- a/src/misc-progs/Makefile +++ b/src/misc-progs/Makefile @@ -32,7 +32,8 @@ SUID_PROGS = squidctrl sshctrl ipfirereboot \ smartctrl clamavctrl addonctrl pakfire mpfirectrl wlanapctrl \ setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes \ getconntracktable wirelessclient torctrl ddnsctrl unboundctrl \ - captivectrl ddosctrl loxilbctrl keepalivedctrl xdpdnsctrl xdpsnictrl xdpgeoipctrl + captivectrl ddosctrl loxilbctrl keepalivedctrl haproxyctrl \ + xdpdnsctrl xdpsnictrl xdpgeoipctrl OBJS = $(patsubst %,%.o,$(PROGS) $(SUID_PROGS)) diff --git a/src/misc-progs/haproxyctrl.c b/src/misc-progs/haproxyctrl.c new file mode 100644 index 000000000..cbdf00f7d --- /dev/null +++ b/src/misc-progs/haproxyctrl.c @@ -0,0 +1,42 @@ +/* This file is part of the IPFire Firewall. + * + * This program is distributed under the terms of the GNU General Public + * Licence. See the file COPYING for details. + * + */ + +#include +#include +#include +#include +#include +#include +#include "setuid.h" + +int main(int argc, char *argv[]) { + + if (!(initsetuid())) + exit(1); + + if (argc < 2) { + fprintf(stderr, "\nNo argument given.\n\nhaproxyctrl (start|stop|reload|restart|status)\n\n"); + exit(1); + } + + if (strcmp(argv[1], "start") == 0) { + safe_system("/etc/rc.d/init.d/haproxy start"); + } else if (strcmp(argv[1], "stop") == 0) { + safe_system("/etc/rc.d/init.d/haproxy stop"); + } else if (strcmp(argv[1], "status") == 0) { + safe_system("/etc/rc.d/init.d/haproxy status"); + } else if (strcmp(argv[1], "restart") == 0) { + safe_system("/etc/rc.d/init.d/haproxy restart"); + } else if (strcmp(argv[1], "reload") == 0) { + safe_system("/etc/rc.d/init.d/haproxy reload"); + } else { + fprintf(stderr, "\nBad argument given.\n\nhaproxyctrl (start|stop|restart|reload|status)\n\n"); + exit(1); + } + + return 0; +}