mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-01 00:42:13 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			143 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| # Copyright © 2023 OpenIM. All rights reserved.
 | |
| #
 | |
| # 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.
 | |
| 
 | |
| 
 | |
| # Common utilities, variables and checks for all build scripts.
 | |
| set -o errexit
 | |
| set +o nounset
 | |
| set -o pipefail
 | |
| 
 | |
| # Sourced flag
 | |
| COMMON_SOURCED=true
 | |
| # The root of the build/dist directory
 | |
| OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
 | |
| source "${OPENIM_ROOT}/scripts/lib/init.sh"
 | |
| # Make sure the environment is only called via common to avoid too much nesting
 | |
| source "${OPENIM_ROOT}/scripts/install/environment.sh"
 | |
| 
 | |
| # This function returns a list of Prometheus ports for various services
 | |
| # based on the provided configuration. Each service has its own dedicated
 | |
| # port for monitoring purposes.
 | |
| openim::common::prometheus_port() {
 | |
|   # Declare an array to hold all the Prometheus ports for different services
 | |
|   local targets=(
 | |
|     ${USER_PROM_PORT}               # Prometheus port for user service
 | |
|     ${FRIEND_PROM_PORT}             # Prometheus port for friend service
 | |
|     ${MESSAGE_PROM_PORT}            # Prometheus port for message service
 | |
|     ${MSG_GATEWAY_PROM_PORT}        # Prometheus port for message gateway service
 | |
|     ${GROUP_PROM_PORT}              # Prometheus port for group service
 | |
|     ${AUTH_PROM_PORT}               # Prometheus port for authentication service
 | |
|     ${PUSH_PROM_PORT}               # Prometheus port for push notification service
 | |
|     ${CONVERSATION_PROM_PORT}       # Prometheus port for conversation service
 | |
|     ${RTC_PROM_PORT}                # Prometheus port for real-time communication service
 | |
|     ${THIRD_PROM_PORT}              # Prometheus port for third-party integrations service
 | |
|     ${MSG_TRANSFER_PROM_PORT}       # Prometheus port for message transfer service
 | |
|   )
 | |
|   # Print the list of ports
 | |
|   echo "${targets[@]}"
 | |
| }
 | |
| IFS=" " read -ra OPENIM_PROM_PORT_TARGETS <<< "$(openim::common::prometheus_port)"
 | |
| readonly OPENIM_PROM_PORT_TARGETS
 | |
| readonly OPENIM_PROM_PORT_LISTARIES=("${OPENIM_PROM_PORT_TARGETS[@]##*/}")
 | |
| 
 | |
| openim::common::service_name() {
 | |
|     local targets=(
 | |
|         openim-user
 | |
|         openim-friend
 | |
|         openim-msg
 | |
|         openim-msg-gateway
 | |
|         openim-group
 | |
|         openim-auth
 | |
|         openim-push
 | |
|         openim-conversation
 | |
|         openim-third
 | |
|         # openim-msg-transfer
 | |
| 
 | |
|         # api
 | |
|         openim-api
 | |
|         openim-ws
 | |
|     )
 | |
|     echo "${targets[@]}"
 | |
| }
 | |
| 
 | |
| IFS=" " read -ra OPENIM_SERVER_NAME_TARGETS <<< "$(openim::common::service_name)"
 | |
| readonly OPENIM_SERVER_NAME_TARGETS
 | |
| 
 | |
| # Storing all the defined ports in an array for easy management and access.
 | |
| # This array consolidates the port numbers for all the services defined above.
 | |
| openim::common::service_port() {
 | |
|   local targets=(
 | |
|     ${OPENIM_USER_PORT}            # User service
 | |
|     ${OPENIM_FRIEND_PORT}          # Friend service
 | |
|     ${OPENIM_MESSAGE_PORT}         # Message service
 | |
|     ${OPENIM_MESSAGE_GATEWAY_PORT} # Message gateway
 | |
|     ${OPENIM_GROUP_PORT}           # Group service
 | |
|     ${OPENIM_AUTH_PORT}            # Authorization service
 | |
|     ${OPENIM_PUSH_PORT}            # Push service
 | |
|     ${OPENIM_CONVERSATION_PORT}    # Conversation service
 | |
|     ${OPENIM_THIRD_PORT}           # Third-party service
 | |
| 
 | |
|     # API PORT
 | |
|     ${API_OPENIM_PORT}             # API service
 | |
|     ${OPENIM_WS_PORT}              # WebSocket service
 | |
|   )
 | |
|   echo "${targets[@]}"
 | |
| }
 | |
| IFS=" " read -ra OPENIM_SERVER_PORT_TARGETS <<< "$(openim::common::service_port)"
 | |
| readonly OPENIM_SERVER_PORT_TARGETS
 | |
| readonly OPENIM_SERVER_PORT_LISTARIES=("${OPENIM_SERVER_PORT_TARGETS[@]##*/}")
 | |
| 
 | |
| openim::common::dependency_name() {
 | |
|     local targets=(
 | |
|         mysql
 | |
|         redis
 | |
|         zookeeper
 | |
|         kafka
 | |
|         mongodb
 | |
|         minio
 | |
|     )
 | |
|     echo "${targets[@]}"
 | |
| }
 | |
| 
 | |
| IFS=" " read -ra OPENIM_DEPENDENCY_TARGETS <<< "$(openim::common::dependency_name)"
 | |
| readonly OPENIM_DEPENDENCY_TARGETS
 | |
| 
 | |
| # This function returns a list of ports for various services
 | |
| #  - zookeeper
 | |
| #  - kafka
 | |
| #  - mysql
 | |
| #  - mongodb
 | |
| #  - redis
 | |
| #  - minio
 | |
| openim::common::dependency_port() {
 | |
|   local targets=(
 | |
|     ${MYSQL_PORT} # MySQL port 
 | |
|     ${REDIS_PORT} # Redis port
 | |
|     ${ZOOKEEPER_PORT} # Zookeeper port
 | |
|     ${KAFKA_PORT} # Kafka port
 | |
|     ${MONGO_PORT} # MongoDB port
 | |
|     ${MINIO_PORT} # MinIO port
 | |
|   )
 | |
|     echo "${targets[@]}"
 | |
| }
 | |
| IFS=" " read -ra OPENIM_DEPENDENCY_PORT_TARGETS <<< "$(openim::common::dependency_port)"
 | |
| readonly OPENIM_DEPENDENCY_PORT_TARGETS
 | |
| readonly OPENIM_DEPENDENCY_PORT_LISTARIES=("${OPENIM_DEPENDENCY_PORT_TARGETS[@]##*/}")
 | |
| 
 | |
| # Execute commands that require root permission without entering a password
 | |
| function openim::common::sudo {
 | |
|   echo ${LINUX_PASSWORD} | sudo -S $1
 | |
| }
 |