summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/monkey/mk_bin
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/monkey/mk_bin')
-rw-r--r--fluent-bit/lib/monkey/mk_bin/CMakeLists.txt21
-rw-r--r--fluent-bit/lib/monkey/mk_bin/mk_signals.c103
-rw-r--r--fluent-bit/lib/monkey/mk_bin/mk_signals.h27
-rw-r--r--fluent-bit/lib/monkey/mk_bin/monkey.c328
-rw-r--r--fluent-bit/lib/monkey/mk_bin/systemd.in13
5 files changed, 0 insertions, 492 deletions
diff --git a/fluent-bit/lib/monkey/mk_bin/CMakeLists.txt b/fluent-bit/lib/monkey/mk_bin/CMakeLists.txt
deleted file mode 100644
index b3edc2e92..000000000
--- a/fluent-bit/lib/monkey/mk_bin/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-set(src
- monkey.c
- mk_signals.c
- )
-
-add_executable(monkey-bin ${src})
-target_link_libraries(monkey-bin monkey-core-static)
-set_target_properties(monkey-bin PROPERTIES OUTPUT_NAME monkey)
-
-if(MK_BUILD_LOCAL)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../${CMAKE_CURRENT_BINARY_DIR}/")
-else()
- install(TARGETS monkey-bin RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_SBINDIR})
- configure_file (
- "${CMAKE_CURRENT_SOURCE_DIR}/systemd.in"
- "${PROJECT_SOURCE_DIR}/monkey.service"
- )
- if(SYSTEMD_DIR)
- install(FILES ${PROJECT_SOURCE_DIR}/monkey.service DESTINATION ${SYSTEMD_DIR})
- endif()
-endif()
diff --git a/fluent-bit/lib/monkey/mk_bin/mk_signals.c b/fluent-bit/lib/monkey/mk_bin/mk_signals.c
deleted file mode 100644
index b2c9eb6e8..000000000
--- a/fluent-bit/lib/monkey/mk_bin/mk_signals.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-/* Monkey HTTP Server
- * ==================
- * Copyright 2001-2015 Monkey Software LLC <eduardo@monkey.io>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <monkey/monkey.h>
-#include <monkey/mk_core.h>
-
-#include "monkey.h"
-#include <string.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-static struct mk_server *server_context;
-
-void mk_signal_context(struct mk_server *ctx)
-{
- server_context = ctx;
-}
-
-/* when we catch a signal and want to exit we call this function
- to do it gracefully */
-static void mk_signal_exit()
-{
- /* ignore future signals to properly handle the cleanup */
- signal(SIGTERM, SIG_IGN);
- signal(SIGINT, SIG_IGN);
- signal(SIGHUP, SIG_IGN);
-
- mk_user_undo_uidgid(server_context);
- mk_utils_remove_pid(server_context->path_conf_pidfile);
- mk_exit_all(server_context);
-
- mk_info("Exiting... >:(");
- _exit(EXIT_SUCCESS);
-}
-
-static void mk_signal_handler(int signo, siginfo_t *si, void *context UNUSED_PARAM)
-{
- switch (signo) {
- case SIGTERM:
- case SIGINT:
- mk_signal_exit();
- break;
- case SIGHUP:
- /*
- * TODO:
- * we should implement the httpd config reload here (not in SIGUSR2).
- * Daemon processes “overload” this signal with a mechanism to instruct them to
- * reload their configuration files. Sending SIGHUP to Apache, for example,
- * instructs it to reread httpd.conf.
- */
- mk_signal_exit();
- break;
- case SIGBUS:
- case SIGSEGV:
-#ifdef DEBUG
- mk_utils_stacktrace();
-#endif
- mk_err("%s (%d), code=%d, addr=%p",
- strsignal(signo), signo, si->si_code, si->si_addr);
- //close(sched->server_fd);
- //pthread_exit(NULL);
- abort();
- default:
- /* let the kernel handle it */
- kill(getpid(), signo);
- }
-
-}
-
-void mk_signal_init(void *context)
-{
- struct sigaction act;
- memset(&act, 0x0, sizeof(act));
-
- /* allow signals to be handled concurrently */
- act.sa_flags = SA_SIGINFO | SA_NODEFER;
- act.sa_sigaction = &mk_signal_handler;
-
- sigaction(SIGSEGV, &act, NULL);
- sigaction(SIGBUS, &act, NULL);
- sigaction(SIGHUP, &act, NULL);
- sigaction(SIGINT, &act, NULL);
- sigaction(SIGTERM, &act, NULL);
-
- mk_signal_context(context);
-}
diff --git a/fluent-bit/lib/monkey/mk_bin/mk_signals.h b/fluent-bit/lib/monkey/mk_bin/mk_signals.h
deleted file mode 100644
index a1eb731d5..000000000
--- a/fluent-bit/lib/monkey/mk_bin/mk_signals.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-/* Monkey HTTP Server
- * ==================
- * Copyright 2001-2015 Monkey Software LLC <eduardo@monkey.io>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MK_SIGNAL_H
-#define MK_SIGNAL_H
-
-void mk_signal_init(struct mk_server *server);
-void mk_signal_context(struct mk_server *ctx);
-void mk_signal_thread_sigpipe_safe(void);
-
-#endif
diff --git a/fluent-bit/lib/monkey/mk_bin/monkey.c b/fluent-bit/lib/monkey/mk_bin/monkey.c
deleted file mode 100644
index 15d695ba6..000000000
--- a/fluent-bit/lib/monkey/mk_bin/monkey.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-/* Monkey HTTP Server
- * ==================
- * Copyright 2001-2015 Monkey Software LLC <eduardo@monkey.io>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <monkey/monkey.h>
-
-#include "monkey.h"
-#include "mk_signals.h"
-
-#include <signal.h>
-#include <getopt.h>
-
-#if defined(__DATE__) && defined(__TIME__)
-static const char MONKEY_BUILT[] = __DATE__ " " __TIME__;
-#else
-static const char MONKEY_BUILT[] = "Unknown";
-#endif
-
-
-static void mk_version(void)
-{
- printf("Monkey HTTP Server v%s\n", MK_VERSION_STR);
- printf("Built : %s (%s %i.%i.%i)\n",
- MONKEY_BUILT, CC, __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
- printf("Home : http://monkey-project.com\n");
- fflush(stdout);
-}
-
-static void mk_build_info(void)
-{
- struct mk_list *head;
- struct mk_plugin *p;
- struct mk_server *server;
-
- mk_version();
-
- printf("\n");
- printf("%s[system: %s]%s\n", ANSI_BOLD, MK_BUILD_OS, ANSI_RESET);
- printf("%s", MK_BUILD_UNAME);
-
- printf("\n\n%s[configure]%s\n", ANSI_BOLD, ANSI_RESET);
- printf("%s", MK_BUILD_CMD);
-
- printf("\n\n%s[setup]%s\n", ANSI_BOLD, ANSI_RESET);
- printf("configuration dir: %s\n", MK_PATH_CONF);
-
- /* Initialize list */
- server = mk_mem_alloc(sizeof(struct mk_server));
- mk_list_init(&server->plugins);
- mk_plugin_load_static(server);
-
- printf("\n\n%s[built-in plugins]%s\n", ANSI_BOLD, ANSI_RESET);
- mk_list_foreach(head, &server->plugins) {
- p = mk_list_entry(head, struct mk_plugin, _head);
- printf("%-20s%s\n", p->shortname, p->name);
- }
- mk_mem_free(server);
- printf("\n");
-}
-
-static void mk_help(int rc)
-{
- printf("Usage : monkey [OPTION]\n\n");
- printf("%sAvailable Options%s\n", ANSI_BOLD, ANSI_RESET);
- printf(" -c, --configdir=DIR\t\t\tspecify configuration files directory\n");
- printf(" -s, --serverconf=FILE\t\t\tspecify main server configuration file\n");
- printf(" -D, --daemon\t\t\t\trun Monkey as daemon (background mode)\n");
- printf(" -I, --pid-file\t\t\tset full path for the PID file (override config)\n");
- printf(" -p, --port=PORT\t\t\tset listener TCP port (override config)\n");
- printf(" -o, --one-shot=DIR\t\t\tone-shot, serve a single directory\n");
- printf(" -t, --transport=TRANSPORT\t\tspecify transport layer (override config)\n");
- printf(" -w, --workers=N\t\t\tset number of workers (override config)\n");
- printf(" -m, --mimes-conf-file=FILE\t\tspecify mimes configuration file\n");
- printf(" -l, --plugins-load-conf-file=FILE\tspecify plugins.load configuration file\n");
- printf(" -S, --sites-conf-dir=dir\t\tspecify sites configuration directory\n");
- printf(" -P, --plugins-conf-dir=dir\t\tspecify plugin configuration directory\n");
- printf(" -B, --balancing-mode\t\t\tforce old balancing mode\n");
- printf(" -T, --allow-shared-sockets\t\tif Listen is busy, try shared TCP sockets\n\n");
-
- printf("%sInformational%s\n", ANSI_BOLD, ANSI_RESET);
- printf(" -b, --build\t\t\t\tprint build information\n");
- printf(" -v, --version\t\t\t\tshow version number\n");
- printf(" -h, --help\t\t\t\tprint this help\n\n");
-
- printf("%sDocumentation%s\n", ANSI_BOLD, ANSI_RESET);
- printf(" http://monkey-project.com/documentation\n\n");
-
- exit(rc);
-}
-
-/* MAIN */
-int main(int argc, char **argv)
-{
- int opt;
- char *port_override = NULL;
- int workers_override = -1;
- int run_daemon = 0;
- int balancing_mode = MK_FALSE;
- int allow_shared_sockets = MK_FALSE;
- char *one_shot = NULL;
- char *pid_file = NULL;
- char *transport_layer = NULL;
- char *path_config = NULL;
- char *server_conf_file = NULL;
- char *plugin_load_conf_file = NULL;
- char *sites_conf_dir = NULL;
- char *plugins_conf_dir = NULL;
- char *mimes_conf_file = NULL;
- struct mk_server *server;
-
- static const struct option long_opts[] = {
- { "configdir", required_argument, NULL, 'c' },
- { "serverconf", required_argument, NULL, 's' },
- { "build", no_argument, NULL, 'b' },
- { "daemon", no_argument, NULL, 'D' },
- { "pid-file", required_argument, NULL, 'I' },
- { "port", required_argument, NULL, 'p' },
- { "one-shot", required_argument, NULL, 'o' },
- { "transport", required_argument, NULL, 't' },
- { "workers", required_argument, NULL, 'w' },
- { "version", no_argument, NULL, 'v' },
- { "help", no_argument, NULL, 'h' },
- { "mimes-conf-file", required_argument, NULL, 'm' },
- { "plugin-load-conf-file", required_argument, NULL, 'l' },
- { "plugins-conf-dir", required_argument, NULL, 'P' },
- { "sites-conf-dir", required_argument, NULL, 'S' },
- { "balancing-mode", no_argument, NULL, 'B' },
- { "allow-shared-sockets", no_argument, NULL, 'T' },
- { NULL, 0, NULL, 0 }
- };
-
- while ((opt = getopt_long(argc, argv, "bDI:Svhp:o:t:w:c:s:m:l:P:S:BT",
- long_opts, NULL)) != -1) {
- switch (opt) {
- case 'b':
- mk_build_info();
- exit(EXIT_SUCCESS);
- case 'v':
- mk_version();
- exit(EXIT_SUCCESS);
- case 'h':
- mk_help(EXIT_SUCCESS);
- break;
- case 'D':
- run_daemon = 1;
- break;
- case 'I':
- pid_file = optarg;
- break;
- case 'p':
- port_override = optarg;
- break;
- case 'o':
- one_shot = optarg;
- break;
- case 't':
- transport_layer = mk_string_dup(optarg);
- break;
- case 'w':
- workers_override = atoi(optarg);
- break;
- case 'c':
- path_config = optarg;
- break;
- case 's':
- server_conf_file = optarg;
- break;
- case 'm':
- mimes_conf_file = optarg;
- break;
- case 'P':
- plugins_conf_dir = optarg;
- break;
- case 'S':
- sites_conf_dir = optarg;
- break;
- case 'B':
- balancing_mode = MK_TRUE;
- break;
- case 'T':
- allow_shared_sockets = MK_TRUE;
- break;
- case 'l':
- plugin_load_conf_file = optarg;
- break;
- case '?':
- mk_help(EXIT_FAILURE);
- }
- }
-
- /*
- * Initialize Monkey Server context. Once is created, we need to start
- * populating some relevant configuration fields that will affect the
- * server behavior.
- */
- server = mk_server_create();
-
- /* set configuration path */
- if (!path_config) {
- server->path_conf_root = MK_PATH_CONF;
- }
- else {
- server->path_conf_root = path_config;
- }
-
- /* set target configuration file for the server */
- if (!server_conf_file) {
- server->conf_main = MK_DEFAULT_CONFIG_FILE;
- }
- else {
- server->conf_main = server_conf_file;
- }
-
- if (!pid_file) {
- server->path_conf_pidfile = NULL;
- }
- else {
- server->path_conf_pidfile = pid_file;
- }
-
- if (run_daemon) {
- server->is_daemon = MK_TRUE;
- }
- else {
- server->is_daemon = MK_FALSE;
- }
-
- if (!mimes_conf_file) {
- server->conf_mimetype = MK_DEFAULT_MIMES_CONF_FILE;
- }
- else {
- server->conf_mimetype = mimes_conf_file;
- }
-
- if (!plugin_load_conf_file) {
- server->conf_plugin_load = MK_DEFAULT_PLUGIN_LOAD_CONF_FILE;
- }
- else {
- server->conf_plugin_load = plugin_load_conf_file;
- }
-
- if (!sites_conf_dir) {
- server->conf_sites = MK_DEFAULT_SITES_CONF_DIR;
- }
- else {
- server->conf_sites = sites_conf_dir;
- }
-
- if (!plugins_conf_dir) {
- server->conf_plugins = MK_DEFAULT_PLUGINS_CONF_DIR;
- }
- else {
- server->conf_plugins = plugins_conf_dir;
- }
-
- /* Override some configuration */
- server->one_shot = one_shot;
- server->port_override = port_override;
- server->transport_layer = transport_layer;
-
- mk_version();
- mk_signal_init(server);
-
- /* Override number of thread workers */
- if (workers_override >= 0) {
- server->workers = workers_override;
- }
- else {
- server->workers = -1;
- }
-
- if (balancing_mode == MK_TRUE) {
- server->scheduler_mode = MK_SCHEDULER_FAIR_BALANCING;
- }
-
-
- /* Running Monkey as daemon */
- if (server->is_daemon == MK_TRUE) {
- mk_utils_set_daemon();
- }
-
- if (server->scheduler_mode == MK_SCHEDULER_REUSEPORT &&
- mk_config_listen_check_busy(server) == MK_TRUE &&
- allow_shared_sockets == MK_FALSE) {
- mk_warn("Some Listen interface is busy, re-try using -T. Aborting.");
- exit(EXIT_FAILURE);
- }
-
- /*
- * Once the all configuration is set, let mk_server configure the
- * internals. Not accepting connections yet.
- */
- mk_server_setup(server);
-
- /* Register PID of Monkey */
- mk_utils_register_pid(server->path_conf_pidfile);
-
- /* Print server details */
- mk_server_info(server);
-
- /* Change process owner */
- mk_user_set_uidgid(server);
-
- /* Server loop, let's listen for incomming clients */
- mk_server_loop(server);
-
- /* Hang here, basically do nothing as threads are doing the job. */
- sigset_t mask;
- sigprocmask(0, NULL, &mask);
- sigsuspend(&mask);
-
- return 0;
-}
diff --git a/fluent-bit/lib/monkey/mk_bin/systemd.in b/fluent-bit/lib/monkey/mk_bin/systemd.in
deleted file mode 100644
index d51cef3a6..000000000
--- a/fluent-bit/lib/monkey/mk_bin/systemd.in
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=Monkey HTTP Server
-Requires=network.target
-After=network.target
-
-[Service]
-Type=forking
-ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/monkey --daemon
-PIDFile=@MK_PATH_PIDPATH@/@MK_PIDFILE@
-Restart=always
-
-[Install]
-WantedBy=multi-user.target