mirror of
https://github.com/openappsec/openappsec.git
synced 2025-09-29 19:24:26 +03:00
central nginx manager
This commit is contained in:
34
nodes/central_nginx_manager/CMakeLists.txt
Executable file
34
nodes/central_nginx_manager/CMakeLists.txt
Executable file
@@ -0,0 +1,34 @@
|
||||
add_subdirectory(package)
|
||||
|
||||
add_executable(cp-nano-central-nginx-manager main.cc)
|
||||
|
||||
target_link_libraries(cp-nano-central-nginx-manager
|
||||
-Wl,--start-group
|
||||
${COMMON_LIBRARIES}
|
||||
|
||||
generic_rulebase
|
||||
generic_rulebase_evaluators
|
||||
ip_utilities
|
||||
version
|
||||
signal_handler
|
||||
|
||||
central_nginx_manager
|
||||
nginx_message_reader
|
||||
rate_limit_comp
|
||||
rate_limit_config
|
||||
nginx_utils
|
||||
http_transaction_data
|
||||
-Wl,--end-group
|
||||
)
|
||||
|
||||
add_dependencies(cp-nano-central-nginx-manager ngen_core)
|
||||
|
||||
install(TARGETS cp-nano-central-nginx-manager DESTINATION bin)
|
||||
install(TARGETS cp-nano-central-nginx-manager DESTINATION central_nginx_manager/bin)
|
||||
|
||||
gen_package(
|
||||
install-cp-nano-central-nginx-manager.sh
|
||||
central_nginx_manager
|
||||
./install-cp-nano-central-nginx-manager.sh
|
||||
Check Point Central NGINX Manager Nano Service Version ${PACKAGE_VERSION} Install Package
|
||||
)
|
31
nodes/central_nginx_manager/main.cc
Executable file
31
nodes/central_nginx_manager/main.cc
Executable file
@@ -0,0 +1,31 @@
|
||||
// Copyright (C) 2022 Check Point Software Technologies Ltd. All rights reserved.
|
||||
|
||||
// Licensed under the Apache License, Version 2.0 (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 "central_nginx_manager.h"
|
||||
|
||||
#include "components_list.h"
|
||||
#include "nginx_message_reader.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
NodeComponents<CentralNginxManager, NginxMessageReader> comps;
|
||||
|
||||
comps.registerGlobalValue<bool>("Is Rest primary routine", true);
|
||||
comps.registerGlobalValue<uint>("Nano service API Port Primary", 7555);
|
||||
comps.registerGlobalValue<uint>("Nano service API Port Alternative", 7556);
|
||||
|
||||
return comps.run("Central NGINX Manager", argc, argv);
|
||||
}
|
4
nodes/central_nginx_manager/package/CMakeLists.txt
Executable file
4
nodes/central_nginx_manager/package/CMakeLists.txt
Executable file
@@ -0,0 +1,4 @@
|
||||
install(FILES install-cp-nano-central-nginx-manager.sh DESTINATION central_nginx_manager PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ)
|
||||
install(FILES cp-nano-central-nginx-manager.cfg DESTINATION central_nginx_manager/conf PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ)
|
||||
install(FILES cp-nano-central-nginx-manager-conf.json DESTINATION central_nginx_manager/conf PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ)
|
||||
install(FILES cp-nano-central-nginx-manager-debug-conf.json DESTINATION central_nginx_manager/conf PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ)
|
@@ -0,0 +1 @@
|
||||
{}
|
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"Debug": [
|
||||
{
|
||||
"Streams": [
|
||||
{
|
||||
"Output": "/var/log/nano_agent/cp-nano-central-nginx-manager.dbg"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
2
nodes/central_nginx_manager/package/cp-nano-central-nginx-manager.cfg
Executable file
2
nodes/central_nginx_manager/package/cp-nano-central-nginx-manager.cfg
Executable file
@@ -0,0 +1,2 @@
|
||||
srv_debug_file=/var/log/nano_agent/cp-nano-central-nginx-manager.dbg
|
||||
srv_log_file=/var/log/nano_agent/cp-nano-central-nginx-manager.log
|
171
nodes/central_nginx_manager/package/install-cp-nano-central-nginx-manager.sh
Executable file
171
nodes/central_nginx_manager/package/install-cp-nano-central-nginx-manager.sh
Executable file
@@ -0,0 +1,171 @@
|
||||
#!/bin/sh
|
||||
|
||||
FORCE_STDOUT=true
|
||||
INSTALLATION_LOG_FILE="/var/log/nano_agent/install-cp-nano-central-nginx-manager.log"
|
||||
INSTALLATION_TIME=$(date)
|
||||
CONF_PATH=/etc/cp/conf
|
||||
SERVICE_PATH=/etc/cp/centralNginxManager
|
||||
WATCHDOG_PATH=/etc/cp/watchdog/cp-nano-watchdog
|
||||
NGINX_CONF_PATH="/etc/nginx/nginx.conf"
|
||||
CENTRAL_NGINX_CONF_PATH="/tmp/central_nginx.conf"
|
||||
|
||||
export INSTALL_COMMAND
|
||||
is_install="$(command -v install)"
|
||||
if [ -z ${is_install} ]; then
|
||||
INSTALL_COMMAND="cp -f"
|
||||
cp_print "[WARNING]: install command not found - using cp instead" ${FORCE_STDOUT}
|
||||
else
|
||||
INSTALL_COMMAND=install
|
||||
fi
|
||||
|
||||
mkdir -p /var/log/nano_agent
|
||||
mkdir -p /tmp/
|
||||
|
||||
cp_print()
|
||||
{
|
||||
var_text=${1}
|
||||
var_std_out=${2}
|
||||
touch ${INSTALLATION_LOG_FILE}
|
||||
if [ -n "${var_std_out}" ]; then
|
||||
if [ "${var_std_out}" = "true" ]; then
|
||||
printf "%b\n" "${var_text}"
|
||||
fi
|
||||
fi
|
||||
printf "%b\n" "${var_text}" >> ${INSTALLATION_LOG_FILE}
|
||||
}
|
||||
|
||||
cp_exec()
|
||||
{
|
||||
var_cmd=${1}
|
||||
var_std_out=${2}
|
||||
# Send exec output to RES
|
||||
RES=$(${var_cmd} 2>&1)
|
||||
if [ -n "${RES}" ]; then
|
||||
cp_print "${RES}" "${var_std_out}"
|
||||
fi
|
||||
}
|
||||
|
||||
is_nginx_installed()
|
||||
{
|
||||
if [ -x "$(command -v nginx)" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
get_nginx_conf_path()
|
||||
{
|
||||
if ! is_nginx_installed; then
|
||||
return
|
||||
fi
|
||||
|
||||
NGINX_CONF_PATH=$(nginx -V 2>&1 | grep -o '\--conf-path=[^ ]*' | cut -d= -f2)
|
||||
if [ -z "${NGINX_CONF_PATH}" ]; then
|
||||
NGINX_CONF_PATH="/etc/nginx/nginx.conf"
|
||||
fi
|
||||
}
|
||||
|
||||
run_installation()
|
||||
{
|
||||
cp_print "Starting installation of Check Point Central NGINX Manager [${INSTALLATION_TIME}]\n" ${FORCE_STDOUT}
|
||||
cp_exec "${WATCHDOG_PATH} --un-register ${SERVICE_PATH}/cp-nano-central-nginx-manager"
|
||||
cp_exec "mkdir -p ${SERVICE_PATH}"
|
||||
cp_exec "mkdir -p ${CONF_PATH}/centralNginxManager/shared"
|
||||
|
||||
cp_exec "touch ${CONF_PATH}/centralNginxManager/shared/central_nginx_shared.conf"
|
||||
cp_exec "${INSTALL_COMMAND} bin/cp-nano-central-nginx-manager ${SERVICE_PATH}/cp-nano-central-nginx-manager"
|
||||
cp_exec "${INSTALL_COMMAND} bin/cp-nano-nginx-conf-collector ${SERVICE_PATH}/cp-nano-nginx-conf-collector"
|
||||
cp_exec "${INSTALL_COMMAND} conf/cp-nano-central-nginx-manager.cfg ${CONF_PATH}/cp-nano-central-nginx-manager.cfg"
|
||||
cp_exec "${INSTALL_COMMAND} conf/cp-nano-central-nginx-manager-conf.json ${CONF_PATH}/cp-nano-central-nginx-manager-conf.json"
|
||||
cp_exec "${INSTALL_COMMAND} conf/cp-nano-central-nginx-manager-debug-conf.json ${CONF_PATH}/cp-nano-central-nginx-manager-debug-conf.json"
|
||||
cp_exec "chmod +x ${SERVICE_PATH}/cp-nano-central-nginx-manager"
|
||||
cp_exec "chmod +x ${SERVICE_PATH}/cp-nano-nginx-conf-collector"
|
||||
cp_exec "chmod 600 ${CONF_PATH}/cp-nano-central-nginx-manager.cfg"
|
||||
cp_exec "chmod 600 ${CONF_PATH}/cp-nano-central-nginx-manager-conf.json"
|
||||
|
||||
cp_exec "${WATCHDOG_PATH} --register ${SERVICE_PATH}/cp-nano-central-nginx-manager"
|
||||
cp_print "Installation completed successfully." ${FORCE_STDOUT}
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Check Point: available flags are"
|
||||
echo "--install : install central nginx manager"
|
||||
echo "--uninstall : remove central nginx manager"
|
||||
echo "--pre_install_test : run Pre-installation test for central nginx manager install package"
|
||||
echo "--post_install_test : run Post-installation test for central nginx manager install package"
|
||||
exit 255
|
||||
}
|
||||
|
||||
run_uninstall()
|
||||
{
|
||||
cp_print "Starting uninstall of Check Point Central NGINX Manager service [${INSTALLATION_TIME}]\n" ${FORCE_STDOUT}
|
||||
|
||||
cp_exec "${WATCHDOG_PATH} --un-register ${SERVICE_PATH}/cp-nano-central-nginx-manager"
|
||||
cp_exec "rm -rf ${SERVICE_PATH}/"
|
||||
cp_exec "rm -f ${CONF_PATH}/cp-nano-central-nginx-manager.cfg"
|
||||
cp_exec "rm -f ${CONF_PATH}/cp-nano-central-nginx-manager-conf.json"
|
||||
|
||||
if [ -f "${CENTRAL_NGINX_CONF_PATH}.base" ]; then
|
||||
cp_print "Restoring central NGINX configuration file" ${FORCE_STDOUT}
|
||||
cp_exec "${INSTALL_COMMAND} ${CENTRAL_NGINX_CONF_PATH}.base ${NGINX_CONF_PATH}"
|
||||
if is_nginx_installed; then
|
||||
if nginx -t > /dev/null 2>&1; then
|
||||
cp_exec "nginx -s reload"
|
||||
else
|
||||
cp_print "Could not reload central NGINX configuration, run 'nginx -t' for more details." ${FORCE_STDOUT}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -f "${NGINX_CONF_PATH}.orig" ]; then
|
||||
cp_print "Original (pre Check Point Nano Agent deployment) NGINX configuration file can be found at: ${NGINX_CONF_PATH}.orig" ${FORCE_STDOUT}
|
||||
fi
|
||||
cp_print "Check Point Central NGINX Manager service was removed successfully\n" ${FORCE_STDOUT}
|
||||
}
|
||||
|
||||
run_pre_install_test()
|
||||
{
|
||||
cp_print "Successfully finished pre-installation test for Check Point Central NGINX Manager service installation package [${INSTALLATION_TIME}]\n" ${FORCE_STDOUT}
|
||||
exit 0
|
||||
}
|
||||
|
||||
run_post_install_test()
|
||||
{
|
||||
if [ ! -d ${SERVICE_PATH} ]; then
|
||||
cp_print "Failed post-installation test for Check Point Central NGINX Manager service installation package [${INSTALLATION_TIME}]\n" ${FORCE_STDOUT}
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cp_print "Successfully finished post-installation test for Check Point Central NGINX Manager service installation package [${INSTALLATION_TIME}]\n" ${FORCE_STDOUT}
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
run()
|
||||
{
|
||||
get_nginx_conf_path
|
||||
if [ '--install' = "${1}" ]; then
|
||||
run_installation "${@}"
|
||||
elif [ '--uninstall' = "${1}" ]; then
|
||||
run_uninstall
|
||||
elif [ '--pre_install_test' = "${1}" ]; then
|
||||
run_pre_install_test
|
||||
elif [ '--post_install_test' = "${1}" ]; then
|
||||
run_post_install_test
|
||||
else
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
echo "Administrative privileges required for this Package (use su or sudo)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
shift
|
||||
run "${@}"
|
||||
|
||||
exit 0
|
Reference in New Issue
Block a user