diff --git a/.github/workflows/scriptsci.yml b/.github/workflows/scriptsci.yml index 1e519a29f..5fb1053ea 100644 --- a/.github/workflows/scriptsci.yml +++ b/.github/workflows/scriptsci.yml @@ -54,21 +54,17 @@ jobs: - name: Build all services run: | sudo ./scripts/build-all-service.sh - shell: bash - name: Start all services run: | sudo ./scripts/start-all.sh - shell: bash - name: Check all services run: | sudo ./scripts/check-all.sh - shell: bash - name: Print openIM.log run: | sudo cat ./_output/logs/* 2>/dev/null sudo cat ./_output/logs/* 2>/dev/null >> "$GITHUB_OUTPUT" - shell: bash continue-on-error: true diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index d6e15bf23..b9e67d438 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -6,6 +6,10 @@ name: Synchronize kubecub public code to other repositories on: push: + paths: + - scripts/* + - docs/* + - config/* branches: - main workflow_dispatch: diff --git a/Dockerfile b/Dockerfile index c4db7d483..0c26a0a65 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,11 +19,11 @@ ADD . . RUN make clean RUN make build -FROM ghcr.io/openim-sigs/openim-bash-image:latest +FROM ghcr.io/openim-sigs/openim-ubuntu-image:latest WORKDIR ${SERVER_WORKDIR} # Copy scripts and binary files to the production image COPY --from=builder ${OPENIM_SERVER_BINDIR} /openim/openim-server/_output/bin -CMD ["bash","-c","${OPENIM_SERVER_CMDDIR}/docker-start-all.sh"] +CMD ["/openim/openim-server/scripts/docker-start-all.sh"] diff --git a/docker-compose.yaml b/docker-compose.yaml index a3a3a0887..048ead67d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -127,34 +127,34 @@ services: max-size: "1g" max-file: "2" - openim-chat: - # image: ghcr.io/openimsdk/openim-server:release-v1.2 - image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server:release-v1.2 - # image: openim/openim-server:release-v1.2 - container_name: openim-chat - # healthcheck: - # test: ["CMD-SHELL", "./scripts/check-all.sh"] - # interval: 30s - # timeout: 10s - # retries: 5 - volumes: - - openim-chat_logs:/openim/openim-chat/logs - - openim-chat_config:/openim/openim-chat/config - - openim-chat_scripts:/openim/openim-chat/scripts - restart: always - user: root:root - depends_on: - - mysql - - mongodb - - redis - - minio - - openim-server - network_mode: "host" - logging: - driver: json-file - options: - max-size: "1g" - max-file: "2" + # openim-chat: + # # image: ghcr.io/openimsdk/openim-server:release-v1.2 + # image: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-server:release-v1.2 + # # image: openim/openim-server:release-v1.2 + # container_name: openim-chat + # # healthcheck: + # # test: ["CMD-SHELL", "./scripts/check-all.sh"] + # # interval: 30s + # # timeout: 10s + # # retries: 5 + # volumes: + # - openim-chat_logs:/openim/openim-chat/logs + # - openim-chat_config:/openim/openim-chat/config + # - openim-chat_scripts:/openim/openim-chat/scripts + # restart: always + # user: root:root + # depends_on: + # - mysql + # - mongodb + # - redis + # - minio + # - openim-server + # network_mode: "host" + # logging: + # driver: json-file + # options: + # max-size: "1g" + # max-file: "2" prometheus: image: prom/prometheus diff --git a/openim-chat/config/config.yaml b/openim-chat/config/config.yaml deleted file mode 100644 index 20351b344..000000000 --- a/openim-chat/config/config.yaml +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright © 2023 OpenIM open source community. 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. - -# 需要先启动OpenIMServer -zookeeper: - schema: openim - zkAddr: - - 127.0.0.1:2181 - username: "" - password: "" - -chatApi: - openImChatApiPort: [ 10008 ] - listenIP: - -adminApi: - openImAdminApiPort: [ 10009 ] - listenIP: - -rpc: - registerIP: #作为rpc启动时,注册到zookeeper的IP,api/gateway能访问到此ip和对应的rpcPort中的端口 - listenIP: #默认为0.0.0.0 - -rpcPort: - openImAdminPort: [ 30200 ] - openImChatPort: [ 30300 ] -rpcRegisterName: - openImAdminName: admin - openImChatName: chat - -# 没有配置表示和OpenIM一致 -mysql: - # address: [ 127.0.0.1:13306 ] #目前仅支持单机 - # username: root #用户名 - # password: openIM123 #密码 - # database: openIM_v2 #不建议修改 - # maxOpenConn: 1000 #最大连接数 - # maxIdleConn: 100 #最大空闲连接数 - # maxLifeTime: 60 #连接可以重复使用的最长时间(秒) - # logLevel: 4 #日志级别 1=slient 2=error 3=warn 4=info - # slowThreshold: 500 #慢语句阈值 (毫秒) - database: openim_enterprise - -# 没有配置表示和OpenIM一致 -log: - storageLocation: ../logs/ #存放目录 -# rotationTime: 24 #日志旋转时间 -# remainRotationCount: 2 #日志数量 -# remainLogLevel: 6 #日志级别 6表示全都打印, -# isStdout: false -# isJson: false -# withStack: false - -# secret: openIM123 -#tokenPolicy: -# expire: 86400 - -verifyCode: - validTime: 300 # 验证码有效时间 - validCount: 5 # 验证码有效次数 - uintTime: 86400 # 单位时间间隔 - maxCount: 10 # 单位时间内最大获取次数 - superCode: "666666" # 超级验证码(只有use为空时使用) - len: 6 # 验证码长度 - use: "" # 使用的验证码服务(use: "ali") - ali: - endpoint: "dysmsapi.aliyuncs.com" - accessKeyId: "" - accessKeySecret: "" - signName: "" - verificationCodeTemplateCode: "" - -# 获取ip的header,没有配置直接获取远程地址 -#proxyHeader: "X-Forwarded-For" - -adminList: - - adminID: admin1 - nickname: chat1 - imAdmin: openIM123456 - - adminID: admin2 - nickname: chat2 - imAdmin: openIM654321 - - adminID: admin3 - nickname: chat3 - imAdmin: openIMAdmin - - -openIMUrl: "http://127.0.0.1:10002" - -redis: - address: [ 127.0.0.1:16379 ] - username: - password: openIM123 \ No newline at end of file diff --git a/openim-chat/scripts/LICENSE/LICENSE b/openim-chat/scripts/LICENSE/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/openim-chat/scripts/LICENSE/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. diff --git a/openim-chat/scripts/LICENSE/LICENSE_TEMPLATES b/openim-chat/scripts/LICENSE/LICENSE_TEMPLATES deleted file mode 100644 index dbc5ce2c8..000000000 --- a/openim-chat/scripts/LICENSE/LICENSE_TEMPLATES +++ /dev/null @@ -1,13 +0,0 @@ -Copyright © {{.Year}} {{.Holder}} 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. diff --git a/openim-chat/scripts/admin_rpc_start.sh b/openim-chat/scripts/admin_rpc_start.sh deleted file mode 100644 index f6a638228..000000000 --- a/openim-chat/scripts/admin_rpc_start.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env bash - - -# Copyright © 2023 OpenIM open source community. 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. - -#Include shell font styles and some basic information -SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -OPENIM_ROOT=$(dirname "${SCRIPTS_ROOT}")/.. - -source $OPENIM_ROOT/scripts/style_info.sh -source $OPENIM_ROOT/scripts/path_info.sh -source $OPENIM_ROOT/scripts/function.sh - -list1=$(cat $config_path | grep openImPushPort | awk -F '[:]' '{print $NF}') -list2=$(cat $config_path | grep pushPrometheusPort | awk -F '[:]' '{print $NF}') -list_to_string $list1 -rpc_ports=($ports_array) -list_to_string $list2 -prome_ports=($ports_array) - -#Check if the service exists -#If it is exists,kill this process -check=$(ps | grep -w ./${push_name} | grep -v grep | wc -l) -if [ $check -ge 1 ]; then - oldPid=$(ps | grep -w ./${push_name} | grep -v grep | awk '{print $2}') - kill -9 $oldPid -fi -#Waiting port recycling -sleep 1 -cd ${push_binary_root} - -for ((i = 0; i < ${#rpc_ports[@]}; i++)); do - nohup ./${push_name} -port ${rpc_ports[$i]} -prometheus_port ${prome_ports[$i]} >>../logs/openIM.log 2>&1 & -done - -sleep 3 -#Check launched service process -check=$(ps | grep -w ./${push_name} | grep -v grep | wc -l) -if [ $check -ge 1 ]; then - newPid=$(ps | grep -w ./${push_name} | grep -v grep | awk '{print $2}') - ports=$(netstat -netulp | grep -w ${newPid} | awk '{print $4}' | awk -F '[:]' '{print $NF}') - allPorts="" - - for i in $ports; do - allPorts=${allPorts}"$i " - done - echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS "${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${push_name}${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${newPid}${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX} -else - echo -e ${YELLOW_PREFIX}${push_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR, PLEASE CHECK openIM.log"${COLOR_SUFFIX} -fi diff --git a/openim-chat/scripts/build.cmd b/openim-chat/scripts/build.cmd deleted file mode 100644 index f100073bc..000000000 --- a/openim-chat/scripts/build.cmd +++ /dev/null @@ -1,14 +0,0 @@ -@echo off - -set "api_apps=admin-api chat-api" -set "rpc_apps=admin-rpc chat-rpc" - -for %%a in (%api_apps%) do ( - go build -o %%a.exe ../cmd/api/%%a/main.go -) - -for %%a in (%rpc_apps%) do ( - go build -o %%a.exe ../cmd/rpc/%%a/main.go -) - -move *exe ../cmd diff --git a/openim-chat/scripts/build_all_service.sh b/openim-chat/scripts/build_all_service.sh deleted file mode 100644 index a424ac7b1..000000000 --- a/openim-chat/scripts/build_all_service.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/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. - -set -e -set -o pipefail - -#Include shell font styles and some basic information -SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. - -#Include shell font styles and some basic information -source $SCRIPTS_ROOT/style_info.sh -source $SCRIPTS_ROOT/path_info.sh -source $SCRIPTS_ROOT/function.sh - -echo -e "${YELLOW_PREFIX}=======>SCRIPTS_ROOT=$SCRIPTS_ROOT${COLOR_SUFFIX}" -echo -e "${YELLOW_PREFIX}=======>OPENIM_ROOT=$OPENIM_ROOT${COLOR_SUFFIX}" -echo -e "${YELLOW_PREFIX}=======>pwd=$PWD${COLOR_SUFFIX}" - -echo -e "" - -echo -e "${BACKGROUND_BLUE}===============> Building all using make build binary files ${COLOR_SUFFIX}" - -echo -e "" -echo -e "${BOLD_PREFIX}____________________________________________________________ ${COLOR_SUFFIX}" - - -bin_dir="$BIN_DIR" -logs_dir="$OPENIM_ROOT/logs" - -echo "==> bin_dir=$bin_dir" -echo "==> logs_dir=$logs_dir" - - -cd $SCRIPTS_ROOT/.. - -# CPU core number -cpu_count=$(lscpu | grep -e '^CPU(s):' | awk '{print $2}') -echo -e "${GREEN_PREFIX}======> cpu_count=$cpu_count${COLOR_SUFFIX}" - -# Count the number of concurrent compilations (half the number of cpus) -compile_count=$((cpu_count / 2)) - -# Execute 'make build' run the make command for concurrent compilation -make -j$compile_count build - -if [ $? -ne 0 ]; then - echo "make build Error, script exits" - exit 1 -fi - -# Get the current operating system and architecture -OS=$(uname -s | tr '[:upper:]' '[:lower:]') -ARCH=$(uname -m) - -# Select the repository home directory based on the operating system and architecture -if [[ "$OS" == "darwin" ]]; then - if [[ "$ARCH" == "x86_64" ]]; then - REPO_DIR="darwin/amd64" - else - REPO_DIR="darwin/386" - fi -elif [[ "$OS" == "linux" ]]; then - if [[ "$ARCH" == "x86_64" ]]; then - REPO_DIR="linux/amd64" - elif [[ "$ARCH" == "arm64" ]]; then - REPO_DIR="linux/arm64" - elif [[ "$ARCH" == "mips64" ]]; then - REPO_DIR="linux/mips64" - elif [[ "$ARCH" == "mips64le" ]]; then - REPO_DIR="linux/mips64le" - elif [[ "$ARCH" == "ppc64le" ]]; then - REPO_DIR="linux/ppc64le" - elif [[ "$ARCH" == "s390x" ]]; then - REPO_DIR="linux/s390x" - else - REPO_DIR="linux/386" - fi -elif [[ "$OS" == "windows" ]]; then - if [[ "$ARCH" == "x86_64" ]]; then - REPO_DIR="windows/amd64" - else - REPO_DIR="windows/386" - fi -else - echo -e "${RED_PREFIX}Unsupported OS: $OS${COLOR_SUFFIX}" - exit 1 -fi - -# Determine if all scripts were successfully built -BUILD_SUCCESS=true -FAILED_SCRIPTS=() - -for binary in $(find _output/bin/platforms/$REPO_DIR -type f); do - if [[ ! -x $binary ]]; then - FAILED_SCRIPTS+=("$binary") - BUILD_SUCCESS=false - fi -done - -echo -e " " - -echo -e "${BOLD_PREFIX}=====================> Build Results <=====================${COLOR_SUFFIX}" - -echo -e " " - -if [[ "$BUILD_SUCCESS" == true ]]; then - echo -e "${GREEN_PREFIX}All binaries built successfully.${COLOR_SUFFIX}" -else - echo -e "${RED_PREFIX}Some binary builds failed. Please check the following binary files:${COLOR_SUFFIX}" - for script in "${FAILED_SCRIPTS[@]}"; do - echo -e "${RED_PREFIX}$script${COLOR_SUFFIX}" - done -fi - -echo -e " " - -echo -e "${BOLD_PREFIX}============================================================${COLOR_SUFFIX}" - -echo -e " " diff --git a/openim-chat/scripts/build_docker.sh b/openim-chat/scripts/build_docker.sh deleted file mode 100644 index fcd1452d9..000000000 --- a/openim-chat/scripts/build_docker.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - - -# Copyright © 2023 OpenIM open source community. 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. - -#Include shell font styles and some basic information -SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -OPENIM_ROOT=$(dirname "${SCRIPTS_ROOT}")/.. - - -IMAGE_VERSION=v1.1.0 -image=openim/openim_chat:$IMAGE_VERSION - - -OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. -chmod +x $OPENIM_ROOT/scripts/*.sh - -$OPENIM_ROOT/scripts/build_all_service.sh - -docker build -t $image . -f $OPENIM_ROOT/deploy.Dockerfile - -docker push $image - -echo -e ${YELLOW_PREFIX}"docker build success"${COLOR_SUFFIX} diff --git a/openim-chat/scripts/check_all.sh b/openim-chat/scripts/check_all.sh deleted file mode 100644 index 7e3f9d616..000000000 --- a/openim-chat/scripts/check_all.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env bash - - -# Copyright © 2023 OpenIM open source community. 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. - -#Include shell font styles and some basic information -SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -OPENIM_ROOT=$(dirname "${SCRIPTS_ROOT}")/.. - -#Include shell font styles and some basic information -source $SCRIPTS_ROOT/style_info.sh -source $SCRIPTS_ROOT/path_info.sh -source $SCRIPTS_ROOT/function.sh - -service_port_name=( - openImChatApiPort - openImAdminApiPort - #api port name - openImAdminPort - openImChatPort -) - -switch=$(cat $config_path | grep demoswitch |awk -F '[:]' '{print $NF}') -for i in ${service_port_name[*]}; do - list=$(cat $config_path | grep -w ${i} | awk -F '[:]' '{print $NF}') - list_to_string $list - for j in ${ports_array}; do - port=$(ss -tunlp| grep -E 'api|rpc|open_im' | awk '{print $5}' | grep -w ${j} | awk -F '[:]' '{print $NF}') - if [[ ${port} -ne ${j} ]]; then - echo -e ${YELLOW_PREFIX}${i}${COLOR_SUFFIX}${RED_PREFIX}" service does not start normally,not initiated port is "${COLOR_SUFFIX}${YELLOW_PREFIX}${j}${COLOR_SUFFIX} - echo -e ${RED_PREFIX}"please check ../logs/openIM.log "${COLOR_SUFFIX} - exit -1 - else - echo -e ${j}${GREEN_PREFIX}" port has been listening,belongs service is "${i}${COLOR_SUFFIX} - fi - done -done \ No newline at end of file diff --git a/openim-chat/scripts/docker_start_all.sh b/openim-chat/scripts/docker_start_all.sh deleted file mode 100644 index 21b2c6f87..000000000 --- a/openim-chat/scripts/docker_start_all.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env bash - -# Copyright © 2023 OpenIM open source community. 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. - -#!/usr/bin/env bash - - -# Include shell font styles and some basic information -SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. - -source "$SCRIPTS_ROOT/style_info.sh" -source "$SCRIPTS_ROOT/path_info.sh" -source "$SCRIPTS_ROOT/function.sh" - -printf "${YELLOW_PREFIX}=======>SCRIPTS_ROOT=%s${COLOR_SUFFIX}\n" "$SCRIPTS_ROOT" -printf "${YELLOW_PREFIX}=======>OPENIM_ROOT=%s${COLOR_SUFFIX}\n" "$OPENIM_ROOT" -printf "${YELLOW_PREFIX}=======>pwd=%s${COLOR_SUFFIX}\n" "$PWD" - -bin_dir="$BIN_DIR" -logs_dir="$SCRIPTS_ROOT/../logs" - -printf "${YELLOW_PREFIX}=======>bin_dir=%s${COLOR_SUFFIX}\n" "$bin_dir" -printf "${YELLOW_PREFIX}=======>logs_dir=%s${COLOR_SUFFIX}\n" "$logs_dir" -printf "${YELLOW_PREFIX}=======>sdk_db_dir=%s${COLOR_SUFFIX}\n" "$sdk_db_dir" - -# Service filenames -service_filenames=( - chat-api - admin-api - #rpc - admin-rpc - chat-rpc -) - -# Service config port names -service_port_names=( - openImChatApiPort - openImAdminApiPort - #api port name - openImAdminPort - openImChatPort -) - -service_prometheus_port_names=() - -cd "$SCRIPTS_ROOT" - -# Function to kill a service -kill_service() { - local service_name=$1 - local pid=$(pgrep -f "$service_name") - if [ -n "$pid" ]; then - echo "$service_name service has been started, pid: $pid" - echo "Killing the service $service_name, pid: $pid" - killall "$service_name" - sleep 0.5 - fi -} - -for ((i = 0; i < ${#service_filenames[*]}; i++)); do - service_name="${service_filenames[$i]}" - kill_service "$service_name" - cd "$SCRIPTS_ROOT" - - # Get the rpc ports from the configuration file - readarray -t portList < "$config_path" - service_ports=() - for line in "${portList[@]}"; do - if [[ $line == *"${service_port_names[$i]}"* ]]; then - port=$(echo "$line" | awk -F ':' '{print $NF}') - service_ports+=("$port") - fi - done - - # Start related rpc services based on the number of ports - for port in "${service_ports[@]}"; do - # Start the service in the background - cmd="$bin_dir/$service_name -port $port --config_folder_path $config_path" - if [[ $i -eq 0 || $i -eq 1 ]]; then - cmd="$bin_dir/$service_name -port $port --config_folder_path $config_path" - fi - echo "$cmd" - nohup "$cmd" >> "${logs_dir}/openIM.log" 2>&1 & - sleep 1 - done -done - -sleep infinity diff --git a/openim-chat/scripts/function.sh b/openim-chat/scripts/function.sh deleted file mode 100644 index 65209049a..000000000 --- a/openim-chat/scripts/function.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - - -# Copyright © 2023 OpenIM open source community. 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. - -#input:[10023,2323,3434] -#output:10023 2323 3434 -list_to_string(){ - ports_list=$* - sub_s1=`echo $ports_list | sed 's/ //g'` - sub_s2=${sub_s1//,/ } - sub_s3=${sub_s2#*[} - sub_s4=${sub_s3%]*} - ports_array=$sub_s4 -} - -remove_space(){ - value=$* - result=`echo $value | sed 's/ //g'` -} \ No newline at end of file diff --git a/openim-chat/scripts/githooks/commit-msg b/openim-chat/scripts/githooks/commit-msg deleted file mode 100644 index c7b130cd8..000000000 --- a/openim-chat/scripts/githooks/commit-msg +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env bash - -# Copyright © 2023 OpenIMSDK. -# -# 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. -# -# ============================================================================== -# -# Store this file as .git/hooks/commit-msg in your repository in order to -# enforce checking for proper commit message format before actual commits. -# You may need to make the scripts executable by 'chmod +x .git/hooks/commit-msg'. - -# commit-msg use go-gitlint tool, install go-gitlint via `go get github.com/llorllale/go-gitlint/cmd/go-gitlint` -# go-gitlint --msg-file="$1" - -# An example hook scripts to check the commit log message. -# Called by "git commit" with one argument, the name of the file -# that has the commit message. The hook should exit with non-zero -# status after issuing an appropriate message if it wants to stop the -# commit. The hook is allowed to edit the commit message file. - -YELLOW="\e[93m" -GREEN="\e[32m" -RED="\e[31m" -ENDCOLOR="\e[0m" - -printMessage() { - printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n" -} - -printSuccess() { - printf "${GREEN}OpenIM : $1${ENDCOLOR}\n" -} - -printError() { - printf "${RED}OpenIM : $1${ENDCOLOR}\n" -} - -printMessage "Running the OpenIM commit-msg hook." - -# This example catches duplicate Signed-off-by lines. - -test "" = "$(grep '^Signed-off-by: ' "$1" | - sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { - echo >&2 Duplicate Signed-off-by lines. - exit 1 -} - -# TODO: go-gitlint dir set -OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/../.. -GITLINT_DIR="$OPENIM_ROOT/_output/tools/go-gitlint" - -$GITLINT_DIR \ - --msg-file=$1 \ - --subject-regex="^(build|chore|ci|docs|feat|feature|fix|perf|refactor|revert|style|bot|test)(.*)?:\s?.*" \ - --subject-maxlen=150 \ - --subject-minlen=10 \ - --body-regex=".*" \ - --max-parents=1 - -if [ $? -ne 0 ] -then - if ! command -v $GITLINT_DIR &>/dev/null; then - printError "$GITLINT_DIR not found. Please run 'make tools' OR 'make tools.verify.go-gitlint' make verto install it." - fi - printError "Please fix your commit message to match kubecub coding standards" - printError "https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md" - exit 1 -fi - -### Add Sign-off-by line to the end of the commit message -# Get local git config -NAME=$(git config user.name) -EMAIL=$(git config user.email) - -# Check if the commit message contains a sign-off line -grep -qs "^Signed-off-by: " "$1" -SIGNED_OFF_BY_EXISTS=$? - -# Add "Signed-off-by" line if it doesn't exist -if [ $SIGNED_OFF_BY_EXISTS -ne 0 ]; then - echo -e "\nSigned-off-by: $NAME <$EMAIL>" >> "$1" -fi \ No newline at end of file diff --git a/openim-chat/scripts/githooks/pre-commit b/openim-chat/scripts/githooks/pre-commit deleted file mode 100644 index 9c44ecb05..000000000 --- a/openim-chat/scripts/githooks/pre-commit +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env bash - -# Copyright © 2023 OpenIMSDK. -# -# 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. -# -# ============================================================================== -# This is a pre-commit hook that ensures attempts to commit files that are -# are larger than $limit to your _local_ repo fail, with a helpful error message. - -# You can override the default limit of 2MB by supplying the environment variable: -# GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB" -# -# ============================================================================== -# - -LC_ALL=C - -local_branch="$(git rev-parse --abbrev-ref HEAD)" -valid_branch_regex="^(main|master|develop|release(-[a-zA-Z0-9._-]+)?)$|(feature|feat|openim|hotfix|test|bug|bot|ci|cicd|style|)\/[a-z0-9._-]+$|^HEAD$" - -YELLOW="\e[93m" -GREEN="\e[32m" -RED="\e[31m" -ENDCOLOR="\e[0m" - -printMessage() { - printf "${YELLOW}openim : $1${ENDCOLOR}\n" -} - -printSuccess() { - printf "${GREEN}openim : $1${ENDCOLOR}\n" -} - -printError() { - printf "${RED}openim : $1${ENDCOLOR}\n" -} - -printMessage "Running local openim pre-commit hook." - -# flutter format . -# https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md -# TODO! GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB" -# Maximum file size limit in bytes -limit=${GIT_FILE_SIZE_LIMIT:-2000000} # Default 2MB -limitInMB=$(( $limit / 1000000 )) - -function file_too_large(){ - filename=$0 - filesize=$(( $1 / 2**20 )) - - cat < /dev/null 2>&1 -then - against=HEAD -else - against="$empty_tree" -fi - -# Set split so that for loop below can handle spaces in file names by splitting on line breaks -IFS=' -' - -shouldFail=false -for file in $( git diff-index --cached --name-only $against ); do - file_size=$(([ ! -f $file ] && echo 0) || (ls -la $file | awk '{ print $5 }')) - if [ "$file_size" -gt "$limit" ]; then - printError "File $file is $(( $file_size / 10**6 )) MB, which is larger than our configured limit of $limitInMB MB" - shouldFail=true - fi -done - -if $shouldFail -then - printMessage "If you really need to commit this file, you can override the size limit by setting the GIT_FILE_SIZE_LIMIT environment variable, e.g. GIT_FILE_SIZE_LIMIT=42000000 for 42MB. Or, commit with the --no-verify switch to skip the check entirely." - printError "Commit aborted" - exit 1; -fi - -if [[ ! $local_branch =~ $valid_branch_regex ]] -then - printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex. -Your commit will be rejected. You should rename your branch to a valid name(feat/name OR bug/name) and try again." - printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694" - exit 1 -fi \ No newline at end of file diff --git a/openim-chat/scripts/githooks/pre-push b/openim-chat/scripts/githooks/pre-push deleted file mode 100644 index 297cadc73..000000000 --- a/openim-chat/scripts/githooks/pre-push +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env bash - -# Copyright © 2023 OpenIMSDK. -# -# 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. -# -# ============================================================================== -# - -YELLOW="\e[93m" -GREEN="\e[32m" -RED="\e[31m" -ENDCOLOR="\e[0m" - -local_branch="$(git rev-parse --abbrev-ref HEAD)" -valid_branch_regex="^(main|master|develop|release(-[a-zA-Z0-9._-]+)?)$|(feature|feat|openim|hotfix|test|bug|ci|cicd|style|)\/[a-z0-9._-]+$|^HEAD$" - -printMessage() { - printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n" -} - -printSuccess() { - printf "${GREEN}OpenIM : $1${ENDCOLOR}\n" -} - -printError() { - printf "${RED}OpenIM : $1${ENDCOLOR}\n" -} - -printMessage "Running local OpenIM pre-push hook." - -if [[ `git status --porcelain` ]]; then - printError "This scripts needs to run against committed code only. Please commit or stash you changes." - exit 1 -fi - -COLOR_SUFFIX="\033[0m" - -BLACK_PREFIX="\033[30m" -RED_PREFIX="\033[31m" -GREEN_PREFIX="\033[32m" -BACKGROUND_GREEN="\033[33m" -BLUE_PREFIX="\033[34m" -PURPLE_PREFIX="\033[35m" -SKY_BLUE_PREFIX="\033[36m" -WHITE_PREFIX="\033[37m" -BOLD_PREFIX="\033[1m" -UNDERLINE_PREFIX="\033[4m" -ITALIC_PREFIX="\033[3m" - -# Function to print colored text -print_color() { - local text=$1 - local color=$2 - echo -e "${color}${text}${COLOR_SUFFIX}" -} - -# Function to print section separator -print_separator() { - print_color "==========================================================" ${PURPLE_PREFIX} -} - -# Get current time -time=$(date +"%Y-%m-%d %H:%M:%S") - -# Print section separator -print_separator - -# Print time of submission -print_color "PTIME: ${time}" "${BOLD_PREFIX}${CYAN_PREFIX}" -echo "" -author=$(git config user.name) -repository=$(basename -s .git $(git config --get remote.origin.url)) - -# Print additional information if needed -print_color "Repository: ${repository}" "${BLUE_PREFIX}" -echo "" - -print_color "Author: ${author}" "${PURPLE_PREFIX}" - -# Print section separator -print_separator - -file_list=$(git diff --name-status HEAD @{u}) -added_files=$(grep -c '^A' <<< "$file_list") -modified_files=$(grep -c '^M' <<< "$file_list") -deleted_files=$(grep -c '^D' <<< "$file_list") - -print_color "Added Files: ${added_files}" "${BACKGROUND_GREEN}" -print_color "Modified Files: ${modified_files}" "${BACKGROUND_GREEN}" -print_color "Deleted Files: ${deleted_files}" "${BACKGROUND_GREEN}" - -if [[ ! $local_branch =~ $valid_branch_regex ]] -then - printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex. -Your commit will be rejected. You should rename your branch to a valid name(feat/name OR bug/name) and try again." - printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694" - exit 1 -fi - -# -#printMessage "Running the Flutter analyzer" -#flutter analyze -# -#if [ $? -ne 0 ]; then -# printError "Flutter analyzer error" -# exit 1 -#fi -# -#printMessage "Finished running the Flutter analyzer" diff --git a/openim-chat/scripts/path_info.sh b/openim-chat/scripts/path_info.sh deleted file mode 100644 index 5a8a0854d..000000000 --- a/openim-chat/scripts/path_info.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env bash -# Copyright © 2023 OpenIM open source community. 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. - - - -#Don't put the space between "=" - -#Include shell font styles and some basic information -SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. - -# Determine the architecture and version -architecture=$(uname -m) -version=$(uname -s | tr '[:upper:]' '[:lower:]') - -#Include shell font styles and some basic information -source $SCRIPTS_ROOT/style_info.sh - -cd $SCRIPTS_ROOT - -# Define the supported architectures and corresponding bin directories -declare -A supported_architectures=( - ["linux-amd64"]="_output/bin/platforms/linux/amd64" - ["linux-arm64"]="_output/bin/platforms/linux/arm64" - ["linux-mips64"]="_output/bin/platforms/linux/mips64" - ["linux-mips64le"]="_output/bin/platforms/linux/mips64le" - ["linux-ppc64le"]="_output/bin/platforms/linux/ppc64le" - ["linux-s390x"]="_output/bin/platforms/linux/s390x" - ["darwin-amd64"]="_output/bin/platforms/darwin/amd64" - ["windows-amd64"]="_output/bin/platforms/windows/amd64" - ["linux-x86_64"]="_output/bin/platforms/linux/amd64" # Alias for linux-amd64 - ["darwin-x86_64"]="_output/bin/platforms/darwin/amd64" # Alias for darwin-amd64 -) - -# Check if the architecture and version are supported -if [[ -z ${supported_architectures["$version-$architecture"]} ]]; then - echo -e "${BLUE_PREFIX}================> Unsupported architecture: $architecture or version: $version${COLOR_SUFFIX}" - exit 1 -fi - -echo -e "${BLUE_PREFIX}================> Architecture: $architecture${COLOR_SUFFIX}" - -# Set the BIN_DIR based on the architecture and version -BIN_DIR=${SCRIPTS_ROOT}/../${supported_architectures["$version-$architecture"]} - -echo -e "${BLUE_PREFIX}================> BIN_DIR: $OPENIM_ROOT/$BIN_DIR${COLOR_SUFFIX}" - -#Global configuration file default dir -config_path="$OPENIM_ROOT/config/config.yaml" -configfile_path="$OPENIM_ROOT/config" -log_path="$OPENIM_ROOT/log" - -#servicefile dir path -service_source_root=( - #api service file - $OPENIM_ROOT/cmd/api/chat-api/ - $OPENIM_ROOT/cmd/api/admin-api/ - #rpc service file - $OPENIM_ROOT/cmd/rpc/admin-rpc/ - $OPENIM_ROOT/cmd/rpc/chat-rpc/ -) -#service filename -service_names=( - chat-api - admin-api - chat-rpc - admin-rpc -) diff --git a/openim-chat/scripts/start.bat b/openim-chat/scripts/start.bat deleted file mode 100644 index 2c765f10d..000000000 --- a/openim-chat/scripts/start.bat +++ /dev/null @@ -1,5 +0,0 @@ -cd /d %~dp0../cmd -start admin-rpc.exe -start chat-rpc.exe -start chat-api.exe -start admin-api.exe \ No newline at end of file diff --git a/openim-chat/scripts/start_all.sh b/openim-chat/scripts/start_all.sh deleted file mode 100644 index b2ee16214..000000000 --- a/openim-chat/scripts/start_all.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env bash - -# Copyright © 2023 OpenIM open source community. 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. - -set -e -set -o pipefail - -#Include shell font styles and some basic information -SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -OPENIM_ROOT=$(dirname "${SCRIPTS_ROOT}")/.. - -source $SCRIPTS_ROOT/style_info.sh -source $SCRIPTS_ROOT/path_info.sh -source $SCRIPTS_ROOT/function.sh - -echo -e "${YELLOW_PREFIX}=======>SCRIPTS_ROOT=$SCRIPTS_ROOT${COLOR_SUFFIX}" -echo -e "${YELLOW_PREFIX}=======>OPENIM_ROOT=$OPENIM_ROOT${COLOR_SUFFIX}" -echo -e "${YELLOW_PREFIX}=======>pwd=$PWD${COLOR_SUFFIX}" - -# if [ ! -d "${OPENIM_ROOT}/_output/bin/platforms" ]; then -# cd $OPENIM_ROOT -# # exec build_all_service.sh -# "${SCRIPTS_ROOT}/build_all_service.sh" -# fi - -bin_dir="$BIN_DIR" -logs_dir="$SCRIPTS_ROOT/../logs" - -echo -e "${YELLOW_PREFIX}=======>bin_dir=$bin_dir${COLOR_SUFFIX}" -echo -e "${YELLOW_PREFIX}=======>logs_dir=$logs_dir${COLOR_SUFFIX}" - -#service filename -service_filename=( - chat-api - admin-api - #rpc - admin-rpc - chat-rpc -) - -#service config port name -service_port_name=( -openImChatApiPort -openImAdminApiPort - #api port name - openImAdminPort - openImChatPort -) - -service_prometheus_port_name=( - -) - -# Automatically created when there is no bin, logs folder -if [ ! -d $logs_dir ]; then - mkdir -p $logs_dir -fi -cd $SCRIPTS_ROOT - -for ((i = 0; i < ${#service_filename[*]}; i++)); do - #Check whether the service exists -# service_name="ps |grep -w ${service_filename[$i]} |grep -v grep" -# count="${service_name}| wc -l" -# -# if [ $(eval ${count}) -gt 0 ]; then -# pid="${service_name}| awk '{print \$2}'" -# echo "${service_filename[$i]} service has been started,pid:$(eval $pid)" -# echo "killing the service ${service_filename[$i]} pid:$(eval $pid)" -# #kill the service that existed -# kill -9 $(eval $pid) -# sleep 0.5 -# fi - cd $SCRIPTS_ROOT - - #Get the rpc port in the configuration file - portList=$(cat $config_path | grep ${service_port_name[$i]} | awk -F '[:]' '{print $NF}') - list_to_string ${portList} - service_ports=($ports_array) - - #Start related rpc services based on the number of ports - for ((j = 0; j < ${#service_ports[*]}; j++)); do - #Start the service in the background - cmd="$bin_dir/${service_filename[$i]} -port ${service_ports[$j]} --config_folder_path ${config_path}" - if [ $i -eq 0 -o $i -eq 1 ]; then - cmd="$bin_dir/${service_filename[$i]} -port ${service_ports[$j]} --config_folder_path ${config_path}" - fi - echo $cmd - nohup $cmd >>${logs_dir}/openIM.log 2>&1 & - sleep 1 -# pid="netstat -ntlp|grep $j |awk '{printf \$7}'|cut -d/ -f1" -# echo -e "${GREEN_PREFIX}${service_filename[$i]} start success,port number:${service_ports[$j]} pid:$(eval $pid)$COLOR_SUFFIX" - done -done \ No newline at end of file diff --git a/openim-chat/scripts/stop_all.sh b/openim-chat/scripts/stop_all.sh deleted file mode 100644 index 6e69ba53f..000000000 --- a/openim-chat/scripts/stop_all.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash - -# Copyright © 2023 OpenIM open source community. 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. - -#fixme This scripts is to stop the service -SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -OPENIM_ROOT=$(cd $(dirname "${BASH_SOURCE[0]}")/.. &&pwd) - -source $OPENIM_ROOT/scripts/style_info.sh -source $OPENIM_ROOT/scripts/path_info.sh -source $SCRIPTS_ROOT/function.sh - -service_port_name=( - openImChatApiPort - openImAdminApiPort - #api port name - openImAdminPort - openImChatPort -) - -for i in ${service_port_name[*]}; do - list=$(cat $OPENIM_ROOT/config/config.yaml | grep -w ${i} | awk -F '[:]' '{print $NF}') - list_to_string $list - for j in ${ports_array}; do - name="ps -aux |grep -w $j |grep -v grep" - count="${name}| wc -l" - if [ $(eval ${count}) -gt 0 ]; then - pid="${name}| awk '{print \$2}'" - echo -e "${SKY_BLUE_PREFIX}Killing service:$i pid:$(eval $pid)${COLOR_SUFFIX}" - #kill the service that existed - kill -9 $(eval $pid) - echo -e "${SKY_BLUE_PREFIX}service:$i was killed ${COLOR_SUFFIX}" - fi - done -done \ No newline at end of file diff --git a/openim-chat/scripts/style_info.sh b/openim-chat/scripts/style_info.sh deleted file mode 100644 index 452240035..000000000 --- a/openim-chat/scripts/style_info.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/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. - -function style-info() { - COLOR_SUFFIX="\033[0m" # End all colors and special effects - - BLACK_PREFIX="\033[30m" # Black prefix - RED_PREFIX="\033[31m" # Red prefix - GREEN_PREFIX="\033[32m" # Green prefix - YELLOW_PREFIX="\033[33m" # Yellow prefix - BLUE_PREFIX="\033[34m" # Blue prefix - PURPLE_PREFIX="\033[35m" # Purple prefix - SKY_BLUE_PREFIX="\033[36m" # Sky blue prefix - WHITE_PREFIX="\033[37m" # White prefix - BOLD_PREFIX="\033[1m" # Bold prefix - UNDERLINE_PREFIX="\033[4m" # Underline prefix - ITALIC_PREFIX="\033[3m" # Italic prefix - - CYAN_PREFIX="033[0;36m" # Cyan prefix - - BACKGROUND_BLACK="\033[40m" # Black background - BACKGROUND_RED="\033[41m" # Red background - BACKGROUND_GREEN="\033[42m" # Green background - BACKGROUND_YELLOW="\033[43m" # Yellow background - BACKGROUND_BLUE="\033[44m" # Blue background - BACKGROUND_PURPLE="\033[45m" # Purple background - BACKGROUND_SKY_BLUE="\033[46m" # Sky blue background - BACKGROUND_WHITE="\033[47m" # White background - - BLINK="\033[5m" # Blinking effect - INVERT="\033[7m" # Invert color - HIDE="\033[8m" # Hide text - - GRAY_PREFIX="\033[90m" # Gray prefix - LIGHT_RED_PREFIX="\033[91m" # Light red prefix - LIGHT_GREEN_PREFIX="\033[92m" # Light green prefix - LIGHT_YELLOW_PREFIX="\033[93m" # Light yellow prefix - LIGHT_BLUE_PREFIX="\033[94m" # Light blue prefix - LIGHT_PURPLE_PREFIX="\033[95m" # Light purple prefix - LIGHT_SKY_BLUE_PREFIX="\033[96m" # Light sky blue prefix - LIGHT_WHITE_PREFIX="\033[97m" # Light white prefix - - BACKGROUND_GRAY="\033[100m" # Gray background - BACKGROUND_LIGHT_RED="\033[101m" # Light red background - BACKGROUND_LIGHT_GREEN="\033[102m" # Light green background - BACKGROUND_LIGHT_YELLOW="\033[103m" # Light yellow background - BACKGROUND_LIGHT_BLUE="\033[104m" # Light blue background - BACKGROUND_LIGHT_PURPLE="\033[105m" # Light purple background - BACKGROUND_LIGHT_SKY_BLUE="\033[106m" # Light sky blue background - BACKGROUND_LIGHT_WHITE="\033[107m" # Light white background -} - -style-info \ No newline at end of file diff --git a/scripts/check-all.sh b/scripts/check-all.sh index ea00db032..623cdc80c 100755 --- a/scripts/check-all.sh +++ b/scripts/check-all.sh @@ -28,10 +28,36 @@ source "${OPENIM_ROOT}/scripts/install/common.sh" OPENIM_VERBOSE=4 -echo "++++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}" +# OpenIM status +# Elegant printing function +print_services_and_ports() { + local -n service_names=$1 + local -n service_ports=$2 -echo "++++ Check all dependent service ports" -echo "+ The port being checked: ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}" + echo "+-------------------+-------+" + echo "| Service Name | Port |" + echo "+-------------------+-------+" + + for index in "${!service_names[@]}"; do + printf "| %-17s | %-5s |\n" "${service_names[$index]}" "${service_ports[$index]}" + done + + echo "+-------------------+-------+" +} + +# Print out services and their ports +print_services_and_ports OPENIM_SERVER_NAME_TARGETS OPENIM_SERVER_PORT_TARGETS + +# Print out dependencies and their ports +print_services_and_ports OPENIM_DEPENDENCY_TARGETS OPENIM_DEPENDENCY_PORT_TARGETS + + +# OpenIM check +echo "++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}" +echo "## Check all dependent service ports" +echo "+++ The port being checked: ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}" + +set +e openim::util::check_ports ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]} if [[ $? -ne 0 ]]; then @@ -40,9 +66,10 @@ if [[ $? -ne 0 ]]; then else echo "++++ Check all dependent service ports successfully !" fi - -echo "++++ Check all OpenIM service ports" -echo "+ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}" +set -e +echo +echo "## Check all OpenIM service ports" +echo "+++ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}" openim::util::check_ports ${OPENIM_SERVER_PORT_LISTARIES[@]} if [[ $? -ne 0 ]]; then echo "+++ cat openim log file >>> ${LOG_FILE}" diff --git a/scripts/gendoc.sh b/scripts/gendoc.sh index 27e45a90b..1d381483f 100755 --- a/scripts/gendoc.sh +++ b/scripts/gendoc.sh @@ -13,25 +13,66 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Iterates over two directories: 'pkg' and 'internal/pkg'. -for top in pkg internal/pkg -do - # Finds all subdirectories (including nested ones) under the current directory in the iteration ('pkg' or 'internal/pkg'). - for d in $(find $top -type d) - do - # Checks if 'doc.go' doesn't exist in the current subdirectory. +DEFAULT_DIRS=( + "pkg" + "internal/pkg" +) +BASE_URL="github.com/OpenIMSDK/Open-IM-Server" + +usage() { + echo "Usage: $0 [OPTIONS]" + echo + echo "This script iterates over directories and generates doc.go if necessary." + echo "By default, it processes 'pkg' and 'internal/pkg' directories." + echo + echo "Options:" + echo " -d DIRS, --dirs DIRS Specify the directories to be processed, separated by commas. E.g., 'pkg,internal/pkg'." + echo " -u URL, --url URL Set the base URL for the import path. Default is '$BASE_URL'." + echo " -h, --help Show this help message." + echo +} + +process_dir() { + local dir=$1 + local base_url=$2 + + for d in $(find $dir -type d); do if [ ! -f $d/doc.go ]; then - # Checks if there are any '.go' files in the current subdirectory. if ls $d/*.go > /dev/null 2>&1; then - # Echoes the path of the 'doc.go' file to the terminal. - # This is likely for debugging or information purposes. echo $d/doc.go - - # Writes the package declaration and import comment to the 'doc.go' file in the current subdirectory. - # 'basename $d' retrieves the name of the current directory (last part of the path). - # The import comment is constructed based on a static base URL and the directory path. - echo "package $(basename $d) // import \"github.com/OpenIMSDK/Open-IM-Server/$d\"" > $d/doc.go + echo "package $(basename $d) // import \"$base_url/$d\"" > $d/doc.go fi fi done +} + +while [[ $# -gt 0 ]]; do + key="$1" + + case $key in + -d|--dirs) + IFS=',' read -ra DIRS <<< "$2" + shift # shift past argument + shift # shift past value + ;; + -u|--url) + BASE_URL="$2" + shift # shift past argument + shift # shift past value + ;; + -h|--help) + usage + exit 0 + ;; + *) + usage + exit 1 + ;; + esac +done + +DIRS=${DIRS:-${DEFAULT_DIRS[@]}} + +for dir in "${DIRS[@]}"; do + process_dir $dir $BASE_URL done diff --git a/scripts/install/common.sh b/scripts/install/common.sh index 7aeff653c..da4ad20fc 100755 --- a/scripts/install/common.sh +++ b/scripts/install/common.sh @@ -26,6 +26,9 @@ 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. @@ -51,6 +54,29 @@ 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() { @@ -75,6 +101,21 @@ 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 @@ -88,7 +129,7 @@ openim::common::dependency_port() { ${REDIS_PORT} # Redis port ${ZOOKEEPER_PORT} # Zookeeper port ${KAFKA_PORT} # Kafka port - ${MongoDB_PORT} # MongoDB port + ${MONGO_PORT} # MongoDB port ${MINIO_PORT} # MinIO port ) echo "${targets[@]}" diff --git a/scripts/lib/util.sh b/scripts/lib/util.sh index 72621f8a0..320c63095 100755 --- a/scripts/lib/util.sh +++ b/scripts/lib/util.sh @@ -287,7 +287,7 @@ openim::util::check_ports() { if [[ ${#not_started[@]} -ne 0 ]]; then openim::log::info "### Not started ports:" for port in "${not_started[@]}"; do - openim::log::error "Port $port is not started. OpenIM Log >>> cat ${LOG_FILE}" + openim::log::error "Port $port is not started." done fi @@ -302,6 +302,7 @@ openim::util::check_ports() { # If any of the processes is not running, return a status of 1. if [[ ${#not_started[@]} -ne 0 ]]; then + echo "++++ OpenIM Log >> cat ${LOG_FILE}" return 1 else openim::log::success "started[@] processes are running." @@ -352,7 +353,7 @@ openim::util::check_process_names() { if [[ ${#not_started[@]} -ne 0 ]]; then openim::log::info "Not started processes:" for process_name in "${not_started[@]}"; do - openim::log::error "Process $process_name is not started. OpenIM Log >>> cat ${LOG_FILE}" + openim::log::error "Process $process_name is not started." done fi @@ -366,6 +367,7 @@ openim::util::check_process_names() { # Return status if [[ ${#not_started[@]} -ne 0 ]]; then + echo "++++ OpenIM Log >> cat ${LOG_FILE}" return 1 else openim::log::success "All processes are running."