lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

commit e3576f3d0f34b7e13167f8d368fa8c311eda35b9
parent d6dbd9739ac8aaa89442369aa3c024d4d8fd5742
Author: Etienne CHAMPETIER <champetier.etienne@gmail.com>
Date:   Sun, 21 Jun 2015 15:11:33 +0200

zabbix: add option to run daemon in foreground

this will allow us to switch to procd and use jailing ...
this patch come from https://support.zabbix.com/browse/ZBXNEXT-611
big thanks to Boris Manojlovic

Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>

Diffstat:
Aadmin/zabbix/patches/015-daemon-foreground.patch | 243+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 243 insertions(+), 0 deletions(-)

diff --git a/admin/zabbix/patches/015-daemon-foreground.patch b/admin/zabbix/patches/015-daemon-foreground.patch @@ -0,0 +1,243 @@ +--- a/include/common.h ++++ b/include/common.h +@@ -1081,4 +1081,7 @@ int parse_serveractive_element(char *str + #define ZBX_SESSION_ACTIVE 0 + #define ZBX_SESSION_PASSIVE 1 + ++#define ZBX_RUN_BACKGROUND 0 ++#define ZBX_RUN_FOREGROUND 1 ++ + #endif +--- a/include/daemon.h ++++ b/include/daemon.h +@@ -28,7 +28,7 @@ extern char *CONFIG_PID_FILE; + + #include "threads.h" + +-int daemon_start(int allow_root, const char *user); ++int daemon_start(int allow_root, const char *user, int run_foreground); + void daemon_stop(); + + int zbx_sigusr_send(int flags); +@@ -36,6 +36,6 @@ int zbx_sigusr_send(int flags); + #define ZBX_IS_RUNNING() 1 + #define ZBX_DO_EXIT() + +-#define START_MAIN_ZABBIX_ENTRY(a, u) daemon_start(a, u) ++#define START_MAIN_ZABBIX_ENTRY(a, u, f) daemon_start(a, u, f) + + #endif /* ZABBIX_DAEMON_H */ +--- a/src/libs/zbxnix/daemon.c ++++ b/src/libs/zbxnix/daemon.c +@@ -272,16 +272,17 @@ static void set_daemon_signal_handlers() + * * + * Purpose: init process as daemon * + * * +- * Parameters: allow_root - allow root permission for application * +- * user - user on the system to which to drop the * +- * privileges * ++ * Parameters: allow_root - allow root permission for application * ++ * user - user on the system to which to drop the * ++ * privileges * ++ * run_foreground - should it close its controling tty * + * * + * Author: Alexei Vladishev * + * * + * Comments: it doesn't allow running under 'root' if allow_root is zero * + * * + ******************************************************************************/ +-int daemon_start(int allow_root, const char *user) ++int daemon_start(int allow_root, const char *user, int run_foreground) + { + pid_t pid; + struct passwd *pwd; +@@ -336,15 +337,22 @@ int daemon_start(int allow_root, const c + #endif + } + +- if (0 != (pid = zbx_fork())) +- exit(EXIT_SUCCESS); ++ if ( ZBX_RUN_FOREGROUND != run_foreground) ++ if (0 != (pid = zbx_fork())) ++ exit(EXIT_SUCCESS); + + setsid(); + + signal(SIGHUP, SIG_IGN); + +- if (0 != (pid = zbx_fork())) +- exit(EXIT_SUCCESS); ++ if ( ZBX_RUN_FOREGROUND == run_foreground) { ++ zabbix_log(LOG_LEVEL_INFORMATION, "Running in foreground..."); ++ } else { ++ if (0 != (pid = zbx_fork())) ++ exit(EXIT_SUCCESS); ++ } ++ ++ + + if (-1 == chdir("/")) /* this is to eliminate warning: ignoring return value of chdir */ + assert(0); +--- a/src/zabbix_agent/zabbix_agentd.c ++++ b/src/zabbix_agent/zabbix_agentd.c +@@ -62,6 +62,8 @@ const char *progname = NULL; + static char DEFAULT_CONFIG_FILE[] = SYSCONFDIR "/zabbix_agentd.conf"; + #endif + ++int CONFIG_FOREGROUND = ZBX_RUN_BACKGROUND; ++ + /* application TITLE */ + const char title_message[] = APPLICATION_NAME + #if defined(_WIN64) +@@ -93,6 +95,7 @@ const char usage_message[] = + const char *help_message[] = { + "Options:", + " -c --config <config-file> Absolute path to the configuration file", ++ " -f --foreground Run in foreground don't fork", + " -p --print Print known items and exit", + " -t --test <item key> Test specified item and exit", + " -h --help Display help information", +@@ -127,6 +130,7 @@ const char *help_message[] = { + /* COMMAND LINE OPTIONS */ + static struct zbx_option longopts[] = + { ++ {"foreground", 0, NULL, 'f'}, + {"config", 1, NULL, 'c'}, + {"help", 0, NULL, 'h'}, + {"version", 0, NULL, 'V'}, +@@ -147,7 +151,7 @@ static struct zbx_option longopts[] = + }; + + static char shortopts[] = +- "c:hVpt:" ++ "c:hfVpt:" + #ifndef _WINDOWS + "R:" + #else +@@ -241,6 +245,9 @@ static void parse_commandline(int argc, + { + switch (ch) + { ++ case 'f': ++ CONFIG_FOREGROUND = ZBX_RUN_FOREGROUND; ++ break; + case 'c': + CONFIG_FILE = strdup(zbx_optarg); + break; +@@ -944,7 +951,7 @@ int main(int argc, char **argv) + break; + } + +- START_MAIN_ZABBIX_ENTRY(CONFIG_ALLOW_ROOT, CONFIG_USER); ++ START_MAIN_ZABBIX_ENTRY(CONFIG_ALLOW_ROOT, CONFIG_USER, CONFIG_FOREGROUND); + + exit(EXIT_SUCCESS); + } +--- a/src/zabbix_proxy/proxy.c ++++ b/src/zabbix_proxy/proxy.c +@@ -60,6 +60,7 @@ const char usage_message[] = "[-hV] [-c + + const char *help_message[] = { + "Options:", ++ " -f --foreground Run in foreground don't fork", + " -c --config <file> Absolute path to the configuration file", + " -R --runtime-control <option> Perform administrative functions", + "", +@@ -84,6 +85,7 @@ const char *help_message[] = { + /* long options */ + static struct zbx_option longopts[] = + { ++ {"foreground", 0, NULL, 'f'}, + {"config", 1, NULL, 'c'}, + {"runtime-control", 1, NULL, 'R'}, + {"help", 0, NULL, 'h'}, +@@ -92,7 +94,7 @@ static struct zbx_option longopts[] = + }; + + /* short options */ +-static char shortopts[] = "c:n:hVR:"; ++static char shortopts[] = "c:n:fhVR:"; + + /* end of COMMAND LINE OPTIONS */ + +@@ -202,6 +204,7 @@ char *CONFIG_LOAD_MODULE_PATH = NULL; + char **CONFIG_LOAD_MODULE = NULL; + + char *CONFIG_USER = NULL; ++int CONFIG_FOREGROUND = ZBX_RUN_BACKGROUND; + + /* web monitoring */ + #ifdef HAVE_LIBCURL +@@ -666,6 +669,9 @@ int main(int argc, char **argv) + { + switch (ch) + { ++ case 'f': ++ CONFIG_FOREGROUND = ZBX_RUN_FOREGROUND; ++ break; + case 'c': + CONFIG_FILE = zbx_strdup(CONFIG_FILE, zbx_optarg); + break; +@@ -705,7 +711,7 @@ int main(int argc, char **argv) + init_ipmi_handler(); + #endif + +- return daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER); ++ return daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER, CONFIG_FOREGROUND); + } + + int MAIN_ZABBIX_ENTRY() +--- a/src/zabbix_server/server.c ++++ b/src/zabbix_server/server.c +@@ -64,6 +64,7 @@ const char usage_message[] = "[-hV] [-c + + const char *help_message[] = { + "Options:", ++ " -f --foreground Run in foreground don't fork", + " -c --config <file> Absolute path to the configuration file", + " -R --runtime-control <option> Perform administrative functions", + "", +@@ -88,6 +89,7 @@ const char *help_message[] = { + /* long options */ + static struct zbx_option longopts[] = + { ++ {"foreground", 0, NULL, 'f'}, + {"config", 1, NULL, 'c'}, + {"runtime-control", 1, NULL, 'R'}, + {"help", 0, NULL, 'h'}, +@@ -96,7 +98,7 @@ static struct zbx_option longopts[] = + }; + + /* short options */ +-static char shortopts[] = "c:n:hVR:"; ++static char shortopts[] = "c:n:fhVR:"; + + /* end of COMMAND LINE OPTIONS */ + +@@ -197,6 +199,7 @@ char *CONFIG_LOAD_MODULE_PATH = NULL; + char **CONFIG_LOAD_MODULE = NULL; + + char *CONFIG_USER = NULL; ++int CONFIG_FOREGROUND = ZBX_RUN_BACKGROUND; + + /* web monitoring */ + #ifdef HAVE_LIBCURL +@@ -631,6 +634,9 @@ int main(int argc, char **argv) + { + switch (ch) + { ++ case 'f': ++ CONFIG_FOREGROUND = ZBX_RUN_FOREGROUND; ++ break; + case 'c': + CONFIG_FILE = zbx_strdup(CONFIG_FILE, zbx_optarg); + break; +@@ -670,7 +676,7 @@ int main(int argc, char **argv) + init_ipmi_handler(); + #endif + +- return daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER); ++ return daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER, CONFIG_FOREGROUND); + } + + int MAIN_ZABBIX_ENTRY()