feat: add more scrips

Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com>
pull/825/head v3.2.2-beta.2
Xinwei Xiong(cubxxw-openim) 2 years ago
parent f0ad869d29
commit d3364e374f
No known key found for this signature in database
GPG Key ID: 1BAD6F395338EFDE

@ -25,7 +25,7 @@ The OpenIM Suite represents a comprehensive collection of scripts, each tailored
12. **openim-rpc-third:** Script dedicated to third-party integrations with OpenIM RPC. 12. **openim-rpc-third:** Script dedicated to third-party integrations with OpenIM RPC.
13. **openim-rpc-user:** Control interface for OpenIM RPC User operations. 13. **openim-rpc-user:** Control interface for OpenIM RPC User operations.
## Usage ## OpenIM Server Installation Script Usage
The scripts within the OpenIM Suite generally adhere to two primary execution methodologies. To illustrate these methodologies, we'll use `openim-crontask` as a representative example. The scripts within the OpenIM Suite generally adhere to two primary execution methodologies. To illustrate these methodologies, we'll use `openim-crontask` as a representative example.
@ -38,9 +38,38 @@ The scripts within the OpenIM Suite generally adhere to two primary execution me
2. **Function-based Execution:** Invoking specific functions within the script for more specialized operations (e.g., install, uninstall). 2. **Function-based Execution:** Invoking specific functions within the script for more specialized operations (e.g., install, uninstall).
```bash ```bash
./scripts/install/install.sh [function-name] ./scripts/install/install.sh [options]
``` ```
**Description:**
This script is designed to handle the installation, uninstallation, and status checking of OpenIM components on the server. OpenIM is a presumed communication or messaging platform.
### Commands:
- **-i, --install**:
Initiate the installation of all OpenIM components.
- **-u, --uninstall**:
Uninstall or remove all OpenIM components from the server.
- **-s, --status**:
Check and report the current operational status of the installed OpenIM components.
- **-h, --help**:
Display the help menu for available commands.
### Example Usage:
To install all OpenIM components:
```bash
./scripts/install/install.sh -i
```
or
```bash
./scripts/install/install.sh --install
```
> **Note**:
> Ensure you have the necessary privileges to execute installation or uninstallation operations. It's generally recommended to take a backup before making major changes.
### 1. Direct Script Execution ### 1. Direct Script Execution
This method involves invoking the script directly, initiating its default behavior. For instance, with `openim-crontask`, direct execution will start the OpenIM CronTask as a background process. This method involves invoking the script directly, initiating its default behavior. For instance, with `openim-crontask`, direct execution will start the OpenIM CronTask as a background process.

@ -13,11 +13,43 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# OpenIM Server Installation Script
#
# Description:
# This script is designed to handle the installation, uninstallation, and
# status checking of OpenIM components on the server. OpenIM is a presumed
# communication or messaging platform based on the context.
#
# Usage:
# To utilize this script, you need to invoke it with specific commands
# and options as detailed below.
#
# Commands:
# -i, --install : Use this command to initiate the installation of all
# OpenIM components.
# -u, --uninstall : Use this command to uninstall or remove all
# OpenIM components from the server.
# -s, --status : This command can be used to check and report the
# current operational status of the installed OpenIM components.
# -h, --help : For any assistance or to view the available commands,
# use this command to display the help menu.
#
# Example Usage:
# To install all OpenIM components:
# ./scripts/install/install.sh -i
# or
# ./scripts/install/install.sh --install
#
# Note:
# Ensure you have the necessary privileges to execute installation or
# uninstallation operations. It's generally recommended to take a backup
# before making major changes.
#
###############################################################################
OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P) OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
[[ -z ${COMMON_SOURCED} ]] && source ${OPENIM_ROOT}/scripts/install/common.sh [[ -z ${COMMON_SOURCED} ]] && source ${OPENIM_ROOT}/scripts/install/common.sh
source ${OPENIM_ROOT}/scripts/install/dependency.sh
source ${OPENIM_ROOT}/scripts/install/openim-msggateway.sh source ${OPENIM_ROOT}/scripts/install/openim-msggateway.sh
source ${OPENIM_ROOT}/scripts/install/openim-msgtransfer.sh source ${OPENIM_ROOT}/scripts/install/openim-msgtransfer.sh
source ${OPENIM_ROOT}/scripts/install/openim-push.sh source ${OPENIM_ROOT}/scripts/install/openim-push.sh
@ -28,7 +60,7 @@ source ${OPENIM_ROOT}/scripts/install/test.sh
source ${OPENIM_ROOT}/scripts/install/man.sh source ${OPENIM_ROOT}/scripts/install/man.sh
# Detailed help function # Detailed help function
function show_help() { function openim::install::show_help() {
echo "OpenIM Installer" echo "OpenIM Installer"
echo "Usage: $0 <command> [options]" echo "Usage: $0 <command> [options]"
echo "" echo ""
@ -86,6 +118,12 @@ function openim::install::status()
openim::log::success "openim status success" openim::log::success "openim status success"
} }
# If no arguments are provided, show help
if [[ $# -eq 0 ]]; then
openim::install::show_help
exit 0
fi
# Argument parsing to call functions based on user input # Argument parsing to call functions based on user input
while (( "$#" )); do while (( "$#" )); do
case "$1" in case "$1" in
@ -102,14 +140,8 @@ while (( "$#" )); do
shift shift
;; ;;
-h|--help|*) -h|--help|*)
show_help openim::install::show_help
exit 0 exit 0
;; ;;
esac esac
done done
# If no arguments are provided, show help
if [[ $# -eq 0 ]]; then
show_help
exit 0
fi

@ -33,39 +33,26 @@ readonly OPENIM_API_SERVICE_TARGETS=(
) )
readonly OPENIM_API_SERVICE_LISTARIES=("${OPENIM_API_SERVICE_TARGETS[@]##*/}") readonly OPENIM_API_SERVICE_LISTARIES=("${OPENIM_API_SERVICE_TARGETS[@]##*/}")
echo "++ OPENIM_API_SERVICE_LISTARIES: ${OPENIM_API_SERVICE_LISTARIES[@]}" function openim::api::start()
echo "++ OPENIM_API_PORT_LISTARIES: ${OPENIM_API_PORT_LISTARIES[@]}" {
echo "++ OpenIM API config path: ${OPENIM_API_CONFIG}" echo "++ OPENIM_API_SERVICE_LISTARIES: ${OPENIM_API_SERVICE_LISTARIES[@]}"
echo "++ OPENIM_API_PORT_LISTARIES: ${OPENIM_API_PORT_LISTARIES[@]}"
echo "++ OpenIM API config path: ${OPENIM_API_CONFIG}"
openim::log::info "Starting ${SERVER_NAME} ..." openim::log::info "Starting ${SERVER_NAME} ..."
printf "+------------------------+--------------+\n" printf "+------------------------+--------------+\n"
printf "| Service Name | Port |\n" printf "| Service Name | Port |\n"
printf "+------------------------+--------------+\n" printf "+------------------------+--------------+\n"
length=${#OPENIM_API_SERVICE_LISTARIES[@]} length=${#OPENIM_API_SERVICE_LISTARIES[@]}
for ((i=0; i<$length; i++)); do for ((i=0; i<$length; i++)); do
printf "| %-22s | %6s |\n" "${OPENIM_API_SERVICE_LISTARIES[$i]}" "${OPENIM_API_PORT_LISTARIES[$i]}" printf "| %-22s | %6s |\n" "${OPENIM_API_SERVICE_LISTARIES[$i]}" "${OPENIM_API_PORT_LISTARIES[$i]}"
printf "+------------------------+--------------+\n" printf "+------------------------+--------------+\n"
done done
# start all api services
function openim::api::start_service() { for ((i = 0; i < ${#OPENIM_API_SERVICE_LISTARIES[*]}; i++)); do
local binary_name="$1"
local service_port="$2"
local prometheus_port="$3"
local cmd="${OPENIM_OUTPUT_HOSTBIN}/${binary_name} --port ${service_port} -c ${OPENIM_API_CONFIG}"
nohup ${cmd} >> "${LOG_FILE}" 2>&1 &
if [ $? -ne 0 ]; then
openim::log::error_exit "Failed to start ${binary_name} on port ${service_port}."
fi
}
# start all api services
for ((i = 0; i < ${#OPENIM_API_SERVICE_LISTARIES[*]}; i++)); do
openim::util::stop_services_with_name ${OPENIM_API_SERVICE_LISTARIES[$i]} openim::util::stop_services_with_name ${OPENIM_API_SERVICE_LISTARIES[$i]}
openim::log::info "OpenIM ${OPENIM_API_SERVICE_LISTARIES[$i]} config path: ${OPENIM_API_CONFIG}" openim::log::info "OpenIM ${OPENIM_API_SERVICE_LISTARIES[$i]} config path: ${OPENIM_API_CONFIG}"
@ -82,26 +69,44 @@ for ((i = 0; i < ${#OPENIM_API_SERVICE_LISTARIES[*]}; i++)); do
openim::api::start_service "${OPENIM_API_SERVICE_LISTARIES[$i]}" "${OPENIM_API_PORT_LISTARIES[j]}" openim::api::start_service "${OPENIM_API_SERVICE_LISTARIES[$i]}" "${OPENIM_API_PORT_LISTARIES[j]}"
sleep 1 sleep 1
done done
done done
OPENIM_API_PORT_STRINGARIES=( $(openim::util::list-to-string ${OPENIM_API_PORT_LISTARIES[@]}) )
openim::util::check_ports ${OPENIM_API_PORT_STRINGARIES[@]}
}
OPENIM_API_PORT_STRINGARIES=( $(openim::util::list-to-string ${OPENIM_API_PORT_LISTARIES[@]}) ) function openim::api::start_service() {
openim::util::check_ports ${OPENIM_API_PORT_STRINGARIES[@]} local binary_name="$1"
local service_port="$2"
local prometheus_port="$3"
local cmd="${OPENIM_OUTPUT_HOSTBIN}/${binary_name} --port ${service_port} -c ${OPENIM_API_CONFIG}"
nohup ${cmd} >> "${LOG_FILE}" 2>&1 &
if [ $? -ne 0 ]; then
openim::log::error_exit "Failed to start ${binary_name} on port ${service_port}."
fi
}
###################################### Linux Systemd ###################################### ###################################### Linux Systemd ######################################
SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service" SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service"
function openim::api::install() { function openim::api::install() {
openim::log::info "Installing ${SERVER_NAME} ..."
} }
function openim::api::uninstall() { function openim::api::uninstall() {
openim::log::info "Uninstalling ${SERVER_NAME} ..."
} }
function openim::api::status() { function openim::api::status() {
openim::log::info "Checking ${SERVER_NAME} status ..."
openim::util::check_ports ${OPENIM_API_PORT_LISTARIES[@]}
} }
if [[ "$*" =~ ${SERVER_NAME}:: ]];then if [[ "$*" =~ openim::api:: ]];then
eval $* eval $*
fi fi

@ -44,14 +44,17 @@ OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
SERVER_NAME="openim-crontask" SERVER_NAME="openim-crontask"
openim::log::info "Start OpenIM Cron, binary root: ${SERVER_NAME}" function openim::crontask::start()
openim::log::status "Start OpenIM Cron, path: ${OPENIM_CRONTASK_BINARY}" {
openim::log::info "Start OpenIM Cron, binary root: ${SERVER_NAME}"
openim::log::status "Start OpenIM Cron, path: ${OPENIM_CRONTASK_BINARY}"
openim::util::stop_services_with_name ${SERVER_NAME} openim::util::stop_services_with_name ${SERVER_NAME}
openim::log::status "start cron_task process, path: ${OPENIM_CRONTASK_BINARY}" openim::log::status "start cron_task process, path: ${OPENIM_CRONTASK_BINARY}"
nohup ${OPENIM_CRONTASK_BINARY} >> ${LOG_FILE} 2>&1 & nohup ${OPENIM_CRONTASK_BINARY} >> ${LOG_FILE} 2>&1 &
openim::util::check_process_names ${SERVER_NAME} openim::util::check_process_names ${SERVER_NAME}
}
###################################### Linux Systemd ###################################### ###################################### Linux Systemd ######################################
SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service" SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service"
@ -125,6 +128,6 @@ function openim::crontask::status()
fi fi
} }
if [[ "$*" =~ ${SERVER_NAME}:: ]];then if [[ "$*" =~ openim::crontask:: ]];then
eval $* eval $*
fi fi

@ -25,30 +25,32 @@ OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
SERVER_NAME="openim-msggateway" SERVER_NAME="openim-msggateway"
openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}" function openim::msggateway::start()
openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGGATEWAY_BINARY}" {
openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}"
openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGGATEWAY_BINARY}"
openim::util::stop_services_with_name ${SERVER_NAME} openim::util::stop_services_with_name ${SERVER_NAME}
# OpenIM message gateway service port # OpenIM message gateway service port
OPENIM_RPC_PORTS=$(openim::util::list-to-string ${OPENIM_MESSAGE_GATEWAY_PORT} ) OPENIM_RPC_PORTS=$(openim::util::list-to-string ${OPENIM_MESSAGE_GATEWAY_PORT} )
# OpenIM WS port # OpenIM WS port
OPENIM_WS_PORTS=$(openim::util::list-to-string ${OPENIM_WS_PORT} ) OPENIM_WS_PORTS=$(openim::util::list-to-string ${OPENIM_WS_PORT} )
# Message Gateway Prometheus port of the service # Message Gateway Prometheus port of the service
MSG_GATEWAY_PROM_PORTS=$(openim::util::list-to-string ${MSG_GATEWAY_PROM_PORT} ) MSG_GATEWAY_PROM_PORTS=$(openim::util::list-to-string ${MSG_GATEWAY_PROM_PORT} )
openim::log::status "OpenIM RPC ports: ${OPENIM_RPC_PORTS[*]}" openim::log::status "OpenIM RPC ports: ${OPENIM_RPC_PORTS[*]}"
openim::log::status "OpenIM WS ports: ${OPENIM_WS_PORTS[*]}" openim::log::status "OpenIM WS ports: ${OPENIM_WS_PORTS[*]}"
openim::log::status "OpenIM Prometheus ports: ${MSG_GATEWAY_PROM_PORTS[*]}" openim::log::status "OpenIM Prometheus ports: ${MSG_GATEWAY_PROM_PORTS[*]}"
openim::log::status "OpenIM Msggateway config path: ${OPENIM_MSGGATEWAY_CONFIG}" openim::log::status "OpenIM Msggateway config path: ${OPENIM_MSGGATEWAY_CONFIG}"
if [ ${#OPENIM_RPC_PORTS[@]} -ne ${#OPENIM_WS_PORTS[@]} ]; then if [ ${#OPENIM_RPC_PORTS[@]} -ne ${#OPENIM_WS_PORTS[@]} ]; then
openim::log::error "ws_ports does not match push_rpc_ports or prome_ports in quantity!!!" openim::log::error "ws_ports does not match push_rpc_ports or prome_ports in quantity!!!"
exit 1 exit 1
fi fi
for ((i = 0; i < ${#OPENIM_WS_PORTS[@]}; i++)); do for ((i = 0; i < ${#OPENIM_WS_PORTS[@]}; i++)); do
openim::log::info "start push process, port: ${OPENIM_MSGGATEWAY_PORTS_ARRAY[$i]}, prometheus port: ${PUSH_MSGGATEWAY_PORTS_ARRAY[$i]}" openim::log::info "start push process, port: ${OPENIM_MSGGATEWAY_PORTS_ARRAY[$i]}, prometheus port: ${PUSH_MSGGATEWAY_PORTS_ARRAY[$i]}"
PROMETHEUS_PORT_OPTION="" PROMETHEUS_PORT_OPTION=""
@ -57,10 +59,10 @@ for ((i = 0; i < ${#OPENIM_WS_PORTS[@]}; i++)); do
fi fi
nohup ${OPENIM_MSGGATEWAY_BINARY} --port ${OPENIM_RPC_PORTS[$i]} --ws_port ${OPENIM_WS_PORTS[$i]} $PROMETHEUS_PORT_OPTION -c ${OPENIM_MSGGATEWAY_CONFIG} >> ${LOG_FILE} 2>&1 & nohup ${OPENIM_MSGGATEWAY_BINARY} --port ${OPENIM_RPC_PORTS[$i]} --ws_port ${OPENIM_WS_PORTS[$i]} $PROMETHEUS_PORT_OPTION -c ${OPENIM_MSGGATEWAY_CONFIG} >> ${LOG_FILE} 2>&1 &
done done
openim::util::check_process_names ${SERVER_NAME}
openim::util::check_process_names ${SERVER_NAME}
}
###################################### Linux Systemd ###################################### ###################################### Linux Systemd ######################################
SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service" SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service"
@ -134,6 +136,6 @@ function openim::msggateway::status()
fi fi
} }
if [[ "$*" =~ ${SERVER_NAME}:: ]];then if [[ "$*" =~ openim::msggateway:: ]];then
eval $* eval $*
fi fi

@ -25,29 +25,31 @@ OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
SERVER_NAME="openim-msgtransfer" SERVER_NAME="openim-msgtransfer"
openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}" function openim::msgtransfer::start()
openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGTRANSFER_BINARY}" {
openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}"
openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGTRANSFER_BINARY}"
openim::util::stop_services_with_name ${SERVER_NAME} openim::util::stop_services_with_name ${SERVER_NAME}
# Message Transfer Prometheus port list # Message Transfer Prometheus port list
MSG_TRANSFER_PROM_PORTS=(openim::util::list-to-string ${MSG_TRANSFER_PROM_PORT} ) MSG_TRANSFER_PROM_PORTS=(openim::util::list-to-string ${MSG_TRANSFER_PROM_PORT} )
openim::log::status "OpenIM Prometheus ports: ${MSG_TRANSFER_PROM_PORTS[*]}" openim::log::status "OpenIM Prometheus ports: ${MSG_TRANSFER_PROM_PORTS[*]}"
openim::log::status "OpenIM Msggateway config path: ${OPENIM_MSGTRANSFER_CONFIG}" openim::log::status "OpenIM Msggateway config path: ${OPENIM_MSGTRANSFER_CONFIG}"
openim::log::info "openim maggateway num: ${OPENIM_MSGGATEWAY_NUM}" openim::log::info "openim maggateway num: ${OPENIM_MSGGATEWAY_NUM}"
if [ "${OPENIM_MSGGATEWAY_NUM}" -lt 1 ]; then if [ "${OPENIM_MSGGATEWAY_NUM}" -lt 1 ]; then
opeim::log::error_exit "OPENIM_MSGGATEWAY_NUM must be greater than 0" opeim::log::error_exit "OPENIM_MSGGATEWAY_NUM must be greater than 0"
fi fi
if [ ${OPENIM_MSGGATEWAY_NUM} -ne $((${#MSG_TRANSFER_PROM_PORTS[@]} - 1)) ]; then if [ ${OPENIM_MSGGATEWAY_NUM} -ne $((${#MSG_TRANSFER_PROM_PORTS[@]} - 1)) ]; then
openim::log::error_exit "OPENIM_MSGGATEWAY_NUM must be equal to the number of MSG_TRANSFER_PROM_PORTS" openim::log::error_exit "OPENIM_MSGGATEWAY_NUM must be equal to the number of MSG_TRANSFER_PROM_PORTS"
fi fi
for (( i=1; i<=$OPENIM_MSGGATEWAY_NUM; i++ )) do for (( i=1; i<=$OPENIM_MSGGATEWAY_NUM; i++ )) do
openim::log::info "prometheus port: ${MSG_TRANSFER_PROM_PORTS[$i]}" openim::log::info "prometheus port: ${MSG_TRANSFER_PROM_PORTS[$i]}"
PROMETHEUS_PORT_OPTION="" PROMETHEUS_PORT_OPTION=""
@ -56,10 +58,10 @@ for (( i=1; i<=$OPENIM_MSGGATEWAY_NUM; i++ )) do
fi fi
nohup ${OPENIM_MSGTRANSFER_BINARY} ${PROMETHEUS_PORT_OPTION} -c ${OPENIM_MSGTRANSFER_CONFIG} >> ${LOG_FILE} 2>&1 & nohup ${OPENIM_MSGTRANSFER_BINARY} ${PROMETHEUS_PORT_OPTION} -c ${OPENIM_MSGTRANSFER_CONFIG} >> ${LOG_FILE} 2>&1 &
done done
openim::util::check_process_names ${SERVER_NAME}
openim::util::check_process_names ${SERVER_NAME}
}
###################################### Linux Systemd ###################################### ###################################### Linux Systemd ######################################
SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service" SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service"
@ -133,6 +135,6 @@ function openim::msgtransfer::status()
fi fi
} }
if [[ "$*" =~ ${SERVER_NAME}:: ]];then if [[ "$*" =~ openim::msgtransfer:: ]];then
eval $* eval $*
fi fi

@ -49,30 +49,33 @@ OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
SERVER_NAME="openim-push" SERVER_NAME="openim-push"
openim::log::status "Start OpenIM Push, binary root: ${SERVER_NAME}" function openim::push::start()
openim::log::info "Start OpenIM Push, path: ${OPENIM_PUSH_BINARY}" {
openim::log::status "Start OpenIM Push, binary root: ${SERVER_NAME}"
openim::log::info "Start OpenIM Push, path: ${OPENIM_PUSH_BINARY}"
openim::util::stop_services_with_name ${SERVER_NAME} openim::util::stop_services_with_name ${SERVER_NAME}
openim::log::status "prepare start push process, path: ${OPENIM_PUSH_BINARY}" openim::log::status "prepare start push process, path: ${OPENIM_PUSH_BINARY}"
openim::log::status "prepare start push process, port: ${OPENIM_PUSH_PORT}, prometheus port: ${PUSH_PROM_PORT}" openim::log::status "prepare start push process, port: ${OPENIM_PUSH_PORT}, prometheus port: ${PUSH_PROM_PORT}"
OPENIM_PUSH_PORTS_ARRAY=$(openim::util::list-to-string ${OPENIM_PUSH_PORT} ) OPENIM_PUSH_PORTS_ARRAY=$(openim::util::list-to-string ${OPENIM_PUSH_PORT} )
PUSH_PROM_PORTS_ARRAY=$(openim::util::list-to-string ${PUSH_PROM_PORT} ) PUSH_PROM_PORTS_ARRAY=$(openim::util::list-to-string ${PUSH_PROM_PORT} )
openim::log::status "push port list: ${OPENIM_PUSH_PORTS_ARRAY[@]}" openim::log::status "push port list: ${OPENIM_PUSH_PORTS_ARRAY[@]}"
openim::log::status "prometheus port list: ${PUSH_PROM_PORTS_ARRAY[@]}" openim::log::status "prometheus port list: ${PUSH_PROM_PORTS_ARRAY[@]}"
if [ ${#OPENIM_PUSH_PORTS_ARRAY[@]} -ne ${#PUSH_PROM_PORTS_ARRAY[@]} ]; then if [ ${#OPENIM_PUSH_PORTS_ARRAY[@]} -ne ${#PUSH_PROM_PORTS_ARRAY[@]} ]; then
openim::log::error_exit "The length of the two port lists is different!" openim::log::error_exit "The length of the two port lists is different!"
fi fi
for (( i=0; i<${#OPENIM_PUSH_PORTS_ARRAY[@]}; i++ )); do for (( i=0; i<${#OPENIM_PUSH_PORTS_ARRAY[@]}; i++ )); do
openim::log::info "start push process, port: ${OPENIM_PUSH_PORTS_ARRAY[$i]}, prometheus port: ${PUSH_PROM_PORTS_ARRAY[$i]}" openim::log::info "start push process, port: ${OPENIM_PUSH_PORTS_ARRAY[$i]}, prometheus port: ${PUSH_PROM_PORTS_ARRAY[$i]}"
nohup ${OPENIM_PUSH_BINARY} --port ${OPENIM_PUSH_PORTS_ARRAY[$i]} --prometheus_port ${PUSH_PROM_PORTS_ARRAY[$i]} >> ${LOG_FILE} 2>&1 & nohup ${OPENIM_PUSH_BINARY} --port ${OPENIM_PUSH_PORTS_ARRAY[$i]} --prometheus_port ${PUSH_PROM_PORTS_ARRAY[$i]} >> ${LOG_FILE} 2>&1 &
done done
openim::util::check_process_names ${SERVER_NAME} openim::util::check_process_names ${SERVER_NAME}
}
###################################### Linux Systemd ###################################### ###################################### Linux Systemd ######################################
SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service" SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service"
@ -145,6 +148,6 @@ function openim::push::status()
fi fi
} }
if [[ "$*" =~ ${SERVER_NAME}:: ]];then if [[ "$*" =~ openim::push:: ]];then
eval $* eval $*
fi fi

@ -77,39 +77,27 @@ IFS=" " read -ra OPENIM_RPC_PROM_PORT_TARGETS <<< "$(openim::rpc::prometheus_por
readonly OPENIM_RPC_PROM_PORT_TARGETS readonly OPENIM_RPC_PROM_PORT_TARGETS
readonly OPENIM_RPC_PROM_PORT_LISTARIES=("${OPENIM_RPC_PROM_PORT_TARGETS[@]##*/}") readonly OPENIM_RPC_PROM_PORT_LISTARIES=("${OPENIM_RPC_PROM_PORT_TARGETS[@]##*/}")
echo "OPENIM_RPC_SERVICE_LISTARIES: ${OPENIM_RPC_SERVICE_LISTARIES[@]}" function openim::rpc::start()
echo "OPENIM_RPC_PROM_PORT_LISTARIES: ${OPENIM_RPC_PROM_PORT_LISTARIES[@]}" {
echo "OPENIM_RPC_PORT_LISTARIES: ${OPENIM_RPC_PORT_LISTARIES[@]}" echo "OPENIM_RPC_SERVICE_LISTARIES: ${OPENIM_RPC_SERVICE_LISTARIES[@]}"
echo "OPENIM_RPC_PROM_PORT_LISTARIES: ${OPENIM_RPC_PROM_PORT_LISTARIES[@]}"
echo "OPENIM_RPC_PORT_LISTARIES: ${OPENIM_RPC_PORT_LISTARIES[@]}"
openim::log::info "Starting ${SERVER_NAME} ..." openim::log::info "Starting ${SERVER_NAME} ..."
printf "+------------------------+-------+-----------------+\n" printf "+------------------------+-------+-----------------+\n"
printf "| Service Name | Port | Prometheus Port |\n" printf "| Service Name | Port | Prometheus Port |\n"
printf "+------------------------+-------+-----------------+\n" printf "+------------------------+-------+-----------------+\n"
length=${#OPENIM_RPC_SERVICE_LISTARIES[@]} length=${#OPENIM_RPC_SERVICE_LISTARIES[@]}
for ((i=0; i<$length; i++)); do for ((i=0; i<$length; i++)); do
printf "| %-22s | %-5s | %-15s |\n" "${OPENIM_RPC_SERVICE_LISTARIES[$i]}" "${OPENIM_RPC_PORT_LISTARIES[$i]}" "${OPENIM_RPC_PROM_PORT_LISTARIES[$i]}" printf "| %-22s | %-5s | %-15s |\n" "${OPENIM_RPC_SERVICE_LISTARIES[$i]}" "${OPENIM_RPC_PORT_LISTARIES[$i]}" "${OPENIM_RPC_PROM_PORT_LISTARIES[$i]}"
printf "+------------------------+-------+-----------------+\n" printf "+------------------------+-------+-----------------+\n"
done done
function openim::rpc::start_service() {
local binary_name="$1"
local service_port="$2"
local prometheus_port="$3"
local cmd="${OPENIM_OUTPUT_HOSTBIN}/${binary_name} --port ${service_port} -c ${OPENIM_RPC_CONFIG}"
if [ -n "${prometheus_port}" ]; then
printf "Specifying prometheus port: %s\n" "${prometheus_port}"
cmd="${cmd} --prometheus_port ${prometheus_port}"
fi
nohup ${cmd} >> "${LOG_FILE}" 2>&1 &
}
# start all rpc services # start all rpc services
for ((i = 0; i < ${#OPENIM_RPC_SERVICE_LISTARIES[*]}; i++)); do for ((i = 0; i < ${#OPENIM_RPC_SERVICE_LISTARIES[*]}; i++)); do
openim::util::stop_services_with_name ${OPENIM_RPC_SERVICE_LISTARIES[$i]} openim::util::stop_services_with_name ${OPENIM_RPC_SERVICE_LISTARIES[$i]}
openim::log::info "OpenIM ${OPENIM_RPC_SERVICE_LISTARIES[$i]} config path: ${OPENIM_RPC_CONFIG}" openim::log::info "OpenIM ${OPENIM_RPC_SERVICE_LISTARIES[$i]} config path: ${OPENIM_RPC_CONFIG}"
@ -122,26 +110,48 @@ for ((i = 0; i < ${#OPENIM_RPC_SERVICE_LISTARIES[*]}; i++)); do
openim::rpc::start_service "${OPENIM_RPC_SERVICE_LISTARIES[$i]}" "${OPENIM_RPC_SERVICE_PORTS[j]}" "${OPENIM_RPC_PROM_PORTS[j]}" openim::rpc::start_service "${OPENIM_RPC_SERVICE_LISTARIES[$i]}" "${OPENIM_RPC_SERVICE_PORTS[j]}" "${OPENIM_RPC_PROM_PORTS[j]}"
sleep 1 sleep 1
done done
done done
openim::util::check_ports ${OPENIM_RPC_PORT_TARGETS[@]} openim::util::check_ports ${OPENIM_RPC_PORT_TARGETS[@]}
# openim::util::check_ports ${OPENIM_RPC_PROM_PORT_TARGETS[@]} # openim::util::check_ports ${OPENIM_RPC_PROM_PORT_TARGETS[@]}
}
function openim::rpc::start_service() {
local binary_name="$1"
local service_port="$2"
local prometheus_port="$3"
local cmd="${OPENIM_OUTPUT_HOSTBIN}/${binary_name} --port ${service_port} -c ${OPENIM_RPC_CONFIG}"
if [ -n "${prometheus_port}" ]; then
printf "Specifying prometheus port: %s\n" "${prometheus_port}"
cmd="${cmd} --prometheus_port ${prometheus_port}"
fi
nohup ${cmd} >> "${LOG_FILE}" 2>&1 &
}
###################################### Linux Systemd ###################################### ###################################### Linux Systemd ######################################
SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service" SYSTEM_FILE_PATH="/etc/systemd/system/${SERVER_NAME}.service"
function openim::rpc::install() { function openim::rpc::install() {
openim::log::info "Installing ${SERVER_NAME} ..."
} }
function openim::rpc::uninstall() { function openim::rpc::uninstall() {
openim::log::info "Uninstalling ${SERVER_NAME} ..."
} }
function openim::rpc::status() { function openim::rpc::status() {
openim::log::info "Checking ${SERVER_NAME} status ..."
openim::util::check_ports ${OPENIM_RPC_PORT_TARGETS[@]}
# openim::util::check_ports ${OPENIM_RPC_PROM_PORT_TARGETS[@]}
openim::util::check_process_names ${SERVER_NAME}
} }
if [[ "$*" =~ ${SERVER_NAME}:: ]];then if [[ "$*" =~ openim::rpc:: ]];then
eval $* eval $*
fi fi

@ -36,12 +36,21 @@ openim::log::install_errexit
# Function to execute the scripts. # Function to execute the scripts.
function execute_scripts() { function execute_scripts() {
for script_path in "${OPENIM_SERVER_SCRIPT_START_LIST[@]}"; do for script_path in "${OPENIM_SERVER_SCRIPT_START_LIST[@]}"; do
# Extract the script name without extension for argument generation.
script_name_with_prefix=$(basename "$script_path" .sh)
# Remove the "openim-" prefix.
script_name=${script_name_with_prefix#openim-}
# Construct the argument based on the script name.
arg="openim::${script_name}::start"
# Check if the script file exists and is executable. # Check if the script file exists and is executable.
if [[ -x "$script_path" ]]; then if [[ -x "$script_path" ]]; then
openim::log::status "Starting script: ${script_path##*/}" # Log the script name. openim::log::status "Starting script: ${script_path##*/}" # Log the script name.
# Execute the script. # Execute the script with the constructed argument.
"$script_path" "$script_path" "$arg"
# Check if the script executed successfully. # Check if the script executed successfully.
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then

@ -0,0 +1,35 @@
#!/usr/bin/env bash
# This file is not intended to be run automatically. It is meant to be run
# immediately before exporting docs. We do not want to check these documents in
# by default.
set -o errexit
set -o nounset
set -o pipefail
OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
source "${OPENIM_ROOT}/hack/lib/init.sh"
openim::golang::setup_env
BINS=(
cmd/gendocs
cmd/genopenimdocs
cmd/genman
cmd/genyaml
)
make -C "${OPENIM_ROOT}" WHAT="${BINS[*]}"
openim::util::ensure-temp-dir
openim::util::gen-docs "${OPENIM_TEMP}"
# remove all of the old docs
openim::util::remove-gen-docs
# Copy fresh docs into the repo.
# the shopt is so that we get docs/.generated_docs from the glob.
shopt -s dotglob
cp -af "${OPENIM_TEMP}"/* "${OPENIM_ROOT}"
shopt -u dotglob
Loading…
Cancel
Save