diff --git a/build/images/openim-tools/openim-web/Dockerfile b/build/images/openim-tools/openim-web/Dockerfile deleted file mode 100644 index f3e430852..000000000 --- a/build/images/openim-tools/openim-web/Dockerfile +++ /dev/null @@ -1,56 +0,0 @@ -# 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. - -# OpenIM base image: https://github.com/openim-sigs/openim-base-image - -# Set go mod installation source and proxy - -FROM golang:1.20 AS builder - -ARG GO111MODULE=on - -WORKDIR /openim/openim-server - -ENV GO111MODULE=$GO111MODULE -ENV GOPROXY=$GOPROXY - -RUN apt-get update && apt-get install -y curl unzip - -RUN curl -LO https://app-1302656840.cos.ap-nanjing.myqcloud.com/dist.zip \ - && unzip dist.zip -d ./ \ - && rm dist.zip - -COPY go.mod go.sum ./ -RUN go mod download - -COPY . . - -RUN make clean -RUN make build BINS=openim-web - -FROM ghcr.io/openim-sigs/openim-ubuntu-image:latest - -WORKDIR /openim/openim-server - -COPY --from=builder /openim/openim-server/_output/bin/tools /openim/openim-server/_output/bin/tools/ -COPY --from=builder /openim/openim-server/dist /openim/openim-server/dist - -ENV PORT 11001 -ENV DISTPATH /openim/openim-server/dist - -EXPOSE 11001 - -RUN mv ${OPENIM_SERVER_BINDIR}/tools/$(get_os)/$(get_arch)/openim-web /usr/bin/openim-web - -ENTRYPOINT ["bash", "-c", "openim-web -port $PORT -distPath $DISTPATH"] \ No newline at end of file diff --git a/go.work b/go.work index 02e4154d3..889f20cd8 100644 --- a/go.work +++ b/go.work @@ -4,11 +4,9 @@ use ( . ./tools/changelog ./tools/component - ./tools/formitychecker ./tools/imctl ./tools/infra ./tools/ncpu - ./tools/openim-web ./tools/url2im ./tools/versionchecker ./tools/yamlfmt diff --git a/internal/msggateway/user_map.go b/internal/msggateway/user_map.go index 7b30f8a8a..23fd3c385 100644 --- a/internal/msggateway/user_map.go +++ b/internal/msggateway/user_map.go @@ -55,6 +55,7 @@ func (u *UserMap) Get(key string, platformID int) ([]*Client, bool, bool) { return nil, userExisted, false } +// Set adds a client to the map. func (u *UserMap) Set(key string, v *Client) { allClients, existed := u.m.Load(key) if existed { diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 46a9f03ea..b042a2d50 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -16,6 +16,8 @@ package config import ( "bytes" + "github.com/openimsdk/tools/db/mongoutil" + "github.com/openimsdk/tools/db/redisutil" "github.com/openimsdk/tools/mq/kafka" "gopkg.in/yaml.v3" "time" @@ -76,6 +78,18 @@ type Mongo struct { MaxRetry int `yaml:"maxRetry"` } +func (m *Mongo) Build() *mongoutil.Config { + return &mongoutil.Config{ + Uri: m.Uri, + Address: m.Address, + Database: m.Database, + Username: m.Username, + Password: m.Password, + MaxPoolSize: m.MaxPoolSize, + MaxRetry: m.MaxRetry, + } +} + type Redis struct { ClusterMode bool `yaml:"clusterMode"` Address []string `yaml:"address"` @@ -86,6 +100,17 @@ type Redis struct { MaxRetry int `yaml:"maxRetry"` } +func (r *Redis) Build() *redisutil.Config { + return &redisutil.Config{ + ClusterMode: r.ClusterMode, + Address: r.Address, + Username: r.Username, + Password: r.Password, + DB: r.DB, + MaxRetry: r.MaxRetry, + } +} + type Kafka struct { kafka.Config LatestMsgToRedis struct { diff --git a/scripts/lib/golang.sh b/scripts/lib/golang.sh index cc7629707..51db58d89 100755 --- a/scripts/lib/golang.sh +++ b/scripts/lib/golang.sh @@ -314,14 +314,9 @@ openim::golang::setup_platforms readonly OPENIM_CLIENT_TARGETS=( changelog component - conversion-msg - conversion-mysql - formitychecker imctl infra ncpu - openim-web - up35 versionchecker yamlfmt ) diff --git a/scripts/lib/release.sh b/scripts/lib/release.sh index c1fbd00a1..3e6cde103 100755 --- a/scripts/lib/release.sh +++ b/scripts/lib/release.sh @@ -243,7 +243,7 @@ function openim::release::package_client_tarballs() { local client_bins=("${OPENIM_CLIENT_BINARIES[@]}") - # client_bins: changelog component conversion-msg conversion-mysql formitychecker imctl infra ncpu openim-web up35 versionchecker yamlfmt + # client_bins: changelog component imctl infra ncpu versionchecker yamlfmt # Copy client binclient_bins:aries openim::log::info " Copy client binaries: ${client_bins[@]/#/${LOCAL_OUTPUT_BINTOOLSPATH}/${platform}/}" openim::log::info " Copy client binaries to: ${release_stage}/client/bin" diff --git a/tools/formitychecker/README.md b/tools/formitychecker/README.md deleted file mode 100644 index 7cabf8a66..000000000 --- a/tools/formitychecker/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# Development of a Go-Based Conformity Checker for Project File and Directory Naming Standards - -### 1. Project Overview - -#### Project Name - -- `GoConformityChecker` - -#### Functionality Description - -- Checks if the file and subdirectory names in a specified directory adhere to specific naming conventions. -- Supports specific file types (e.g., `.go`, `.yml`, `.yaml`, `.md`, `.sh`, etc.). -- Allows users to specify directories to be checked and directories to be ignored. -- More read https://github.com/openimsdk/open-im-server/blob/main/docs/contrib/code-conventions.md - -#### Naming Conventions - -- Go files: Only underscores are allowed. -- YAML, YML, and Markdown files: Only hyphens are allowed. -- Directories: Only underscores are allowed. - -### 2. File Structure - -- `main.go`: Entry point of the program, handles command-line arguments. -- `checker/checker.go`: Contains the core logic. -- `config/config.go`: Parses and stores configuration information. - -### 3. Core Code Design - -#### main.go - -- Parses command-line arguments, including the directory to be checked and directories to be ignored. -- Calls the `checker` module for checking. - -#### config.go - -- Defines a configuration structure, such as directories to check and ignore. - -#### checker.go - -- Iterates through the specified directory. -- Applies different naming rules based on file types and directory names. -- Records files or directories that do not conform to the standards. - -### 4. Pseudocode Example - -#### main.go - -```go -package main - -import ( - "flag" - "fmt" - "GoConformityChecker/checker" -) - -func main() { - // Parse command-line arguments - var targetDir string - var ignoreDirs string - flag.StringVar(&targetDir, "target", ".", "Directory to check") - flag.StringVar(&ignoreDirs, "ignore", "", "Directories to ignore") - flag.Parse() - - // Call the checker - err := checker.CheckDirectory(targetDir, ignoreDirs) - if err != nil { - fmt.Println("Error:", err) - } -} -``` - -#### checker.go - -```go -package checker - -import ( - // Import necessary packages -) - -func CheckDirectory(targetDir, ignoreDirs string) error { - // Iterate through the directory, applying rules to check file and directory names - // Return any found errors or non-conformities - return nil -} -``` - -### 5. Implementation Details - -- **File and Directory Traversal**: Use Go's `path/filepath` package to traverse directories and subdirectories. -- **Naming Rules Checking**: Apply different regex expressions for naming checks based on file extensions. -- **Error Handling and Reporting**: Record files or directories that do not conform and report to the user. - -### 6. Future Development and Extensions - -- Support more file types and naming rules. -- Provide more detailed error reports, such as showing line numbers and specific naming mistakes. -- Add a graphical or web interface for non-command-line users. - -The above is an overview of the entire project's design. Following this design, specific coding implementation can begin. Note that the actual implementation may need adjustments based on real-world conditions. \ No newline at end of file diff --git a/tools/formitychecker/checker/checker.go b/tools/formitychecker/checker/checker.go deleted file mode 100644 index 93d3651d6..000000000 --- a/tools/formitychecker/checker/checker.go +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright © 2024 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. - -package checker - -import ( - "os" - "path/filepath" - "strings" - - "github.com/openimsdk/open-im-server/tools/formitychecker/config" -) - -type Issue struct { - Type string - Path string - Message string -} - -type Checker struct { - Config *config.Config - Summary struct { - CheckedDirectories int - CheckedFiles int - Issues []Issue - } -} - -func (c *Checker) Check() error { - return filepath.Walk(c.Config.BaseConfig.SearchDirectory, c.checkPath) -} - -func (c *Checker) checkPath(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - - relativePath, err := filepath.Rel(c.Config.BaseConfig.SearchDirectory, path) - if err != nil { - return err - } - - if relativePath == "." { - return nil - } - - if info.IsDir() { - c.Summary.CheckedDirectories++ - if c.isIgnoredDirectory(relativePath) { - c.Summary.Issues = append(c.Summary.Issues, Issue{ - Type: "ignoredDirectory", - Path: path, - Message: "This directory has been ignored", - }) - return filepath.SkipDir - } - if !c.checkDirectoryName(relativePath) { - c.Summary.Issues = append(c.Summary.Issues, Issue{ - Type: "directoryNaming", - Path: path, - Message: "The directory name is invalid", - }) - } - } else { - if c.isIgnoredFile(path) { - return nil - } - c.Summary.CheckedFiles++ - if !c.checkFileName(relativePath) { - c.Summary.Issues = append(c.Summary.Issues, Issue{ - Type: "fileNaming", - Path: path, - Message: "The file name does not comply with the specification", - }) - } - } - - return nil -} - -func (c *Checker) isIgnoredDirectory(path string) bool { - for _, ignoredDir := range c.Config.IgnoreDirectories { - if strings.Contains(path, ignoredDir) { - return true - } - } - return false -} - -func (c *Checker) isIgnoredFile(path string) bool { - ext := filepath.Ext(path) - for _, format := range c.Config.IgnoreFormats { - if ext == format { - return true - } - } - return false -} - -func (c *Checker) checkDirectoryName(path string) bool { - dirName := filepath.Base(path) - if c.Config.DirectoryNaming.MustBeLowercase && (dirName != strings.ToLower(dirName)) { - return false - } - if !c.Config.DirectoryNaming.AllowHyphens && strings.Contains(dirName, "-") { - return false - } - if !c.Config.DirectoryNaming.AllowUnderscores && strings.Contains(dirName, "_") { - return false - } - return true -} - -func (c *Checker) checkFileName(path string) bool { - fileName := filepath.Base(path) - ext := filepath.Ext(fileName) - - allowHyphens := c.Config.FileNaming.AllowHyphens - allowUnderscores := c.Config.FileNaming.AllowUnderscores - mustBeLowercase := c.Config.FileNaming.MustBeLowercase - - if specificNaming, ok := c.Config.FileTypeSpecificNaming[ext]; ok { - allowHyphens = specificNaming.AllowHyphens - allowUnderscores = specificNaming.AllowUnderscores - mustBeLowercase = specificNaming.MustBeLowercase - } - - if mustBeLowercase && (fileName != strings.ToLower(fileName)) { - return false - } - if !allowHyphens && strings.Contains(fileName, "-") { - return false - } - if !allowUnderscores && strings.Contains(fileName, "_") { - return false - } - - return true -} diff --git a/tools/formitychecker/config.yaml b/tools/formitychecker/config.yaml deleted file mode 100644 index e47b953b8..000000000 --- a/tools/formitychecker/config.yaml +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright © 2024 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. - -# config.yaml 示例配置 - -# 基础配置 -baseConfig: - searchDirectory: "./" # 检索的根目录,"./" 代表当前目录 - ignoreCase: false # 是否忽略大小写,true 为忽略,false 为区分大小写 - -# 目录命名风格配置 -directoryNaming: - allowHyphens: true # 是否允许目录名中含有中划线 - allowUnderscores: false # 是否允许目录名中含有下划线 - mustBeLowercase: true # 目录名是否必须为小写 - -# 文件命名风格配置 -fileNaming: - allowHyphens: true # 是否允许文件名中含有中划线 - allowUnderscores: true # 是否允许文件名中含有下划线 - mustBeLowercase: true # 文件名是否必须为小写 - -# 忽略的文件格式列表 -ignoreFormats: - - ".log" - - ".env" - - "_test.go" - -# 忽略的目录列表 -ignoreDirectories: - - "vendor" - - ".git" - - "node_modules" - - "logs" - - "components" - - "_output" - - "README.md" - - "tools/openim-web" - - "CHANGELOG" - - "docs/readme" - -fileTypeSpecificNaming: - ".yaml": - allowHyphens: true - allowUnderscores: false - mustBeLowercase: true - ".go": - allowHyphens: false - allowUnderscores: true - mustBeLowercase: true diff --git a/tools/formitychecker/config/config.go b/tools/formitychecker/config/config.go deleted file mode 100644 index cec6e10c0..000000000 --- a/tools/formitychecker/config/config.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright © 2024 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. - -package config - -import ( - "os" - - "github.com/openimsdk/open-im-server/tools/codescan/config" - "gopkg.in/yaml.v2" -) - -type Config struct { - BaseConfig struct { - SearchDirectory string `yaml:"searchDirectory"` - IgnoreCase bool `yaml:"ignoreCase"` - } `yaml:"baseConfig"` - DirectoryNaming struct { - AllowHyphens bool `yaml:"allowHyphens"` - AllowUnderscores bool `yaml:"allowUnderscores"` - MustBeLowercase bool `yaml:"mustBeLowercase"` - } `yaml:"directoryNaming"` - FileNaming struct { - AllowHyphens bool `yaml:"allowHyphens"` - AllowUnderscores bool `yaml:"allowUnderscores"` - MustBeLowercase bool `yaml:"mustBeLowercase"` - } `yaml:"fileNaming"` - IgnoreFormats []string `yaml:"ignoreFormats"` - IgnoreDirectories []string `yaml:"ignoreDirectories"` - FileTypeSpecificNaming map[string]FileTypeSpecificNaming `yaml:"fileTypeSpecificNaming"` -} - -type FileTypeSpecificNaming struct { - AllowHyphens bool `yaml:"allowHyphens"` - AllowUnderscores bool `yaml:"allowUnderscores"` - MustBeLowercase bool `yaml:"mustBeLowercase"` -} - -type Issue struct { - Type string - Path string - Message string -} - -type Checker struct { - Config *config.Config - Summary struct { - CheckedDirectories int - CheckedFiles int - Issues []Issue - } - Errors []string -} - -func LoadConfig(configPath string) (*Config, error) { - var config Config - - file, err := os.ReadFile(configPath) - if err != nil { - return nil, err - } - - err = yaml.Unmarshal(file, &config) - if err != nil { - return nil, err - } - - return &config, nil -} diff --git a/tools/formitychecker/formitychecker.go b/tools/formitychecker/formitychecker.go deleted file mode 100644 index 240773458..000000000 --- a/tools/formitychecker/formitychecker.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright © 2024 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. - -package main - -import ( - "encoding/json" - "flag" - "fmt" - "os" - - "github.com/openimsdk/open-im-server/tools/formitychecker/checker" - "github.com/openimsdk/open-im-server/tools/formitychecker/config" -) - -func main() { - var configPath string - flag.StringVar(&configPath, "config", "", "Path to the configuration file") - flag.Parse() - - if configPath == "" { - configPath = os.Getenv("CONFIG_PATH") - } - - if configPath == "" { - configPath = "config.yaml" - if _, err := os.Stat(".github/formitychecker.yaml"); err == nil { - configPath = ".github/formitychecker.yaml" - } - } - - cfg, err := config.LoadConfig(configPath) - if err != nil { - fmt.Println("Error loading config:", err) - return - } - - c := &checker.Checker{Config: cfg} - err = c.Check() - if err != nil { - fmt.Println("Error during check:", err) - os.Exit(1) - } - - // if len(c.Errors) > 0 { - // fmt.Println("Found errors:") - // for _, errMsg := range c.Errors { - // fmt.Println("-", errMsg) - // } - // os.Exit(1) - // } - - summaryJSON, err := json.MarshalIndent(c.Summary, "", " ") - if err != nil { - fmt.Println("Error marshalling summary:", err) - return - } - - fmt.Println(string(summaryJSON)) -} diff --git a/tools/formitychecker/go.mod b/tools/formitychecker/go.mod deleted file mode 100644 index 698b77647..000000000 --- a/tools/formitychecker/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/openimsdk/open-im-server/tools/formitychecker - -go 1.19 diff --git a/tools/openim-web/Dockerfile b/tools/openim-web/Dockerfile deleted file mode 100644 index 2e0cd9e8e..000000000 --- a/tools/openim-web/Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -# 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. - -# 使用官方Go镜像作为基础镜像 -FROM golang:1.21 AS build-env -ENV CGO_ENABLED=0 -# 设置工作目录 -WORKDIR /app - -# 安装curl和unzip工具 -#RUN apt-get update && apt-get install -y curl unzip - -# 从GitHub下载并解压dist.zip -#RUN curl -LO https://github.com/OpenIMSDK/dist.zip \ - # && unzip dist.zip -d ./ \ - # && rm dist.zip - -# 复制Go代码到容器 -COPY . . - -# 编译Go代码 -RUN go build -o openim-web - -# 使用轻量级的基础镜像 -FROM debian:buster-slim - -# 将编译好的二进制文件和dist资源复制到新的容器 -WORKDIR /app -COPY --from=build-env /app/openim-web /app/openim-web -COPY --from=build-env /app/dist /app/dist - -# 开放容器的20001端口 -EXPOSE 20001 - -# 指定容器启动命令 -ENTRYPOINT ["/app/openim-web"] \ No newline at end of file diff --git a/tools/openim-web/README.md b/tools/openim-web/README.md deleted file mode 100644 index 5794a946d..000000000 --- a/tools/openim-web/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# OpenIM Web Service - -- [OpenIM Web Service](#openim-web-service) - - [Overview](#overview) - - [User](#user) - - [Docker Deployment](#docker-deployment) - - [Build the Docker Image](#build-the-docker-image) - - [Run the Docker Container](#run-the-docker-container) - - [Configuration](#configuration) - - [Contributions](#contributions) - - -OpenIM Web Service is a lightweight containerized service built with Go. The service serves static files and allows customization via environment variables. - -## Overview - -- Built using Go. -- Deployed as a Docker container. -- Serves static files from a directory which can be set via an environment variable. -- The default port for the service is `20001`, but it can be customized using an environment variable. - -## User - -example: - -```bash -$ ./openim-web -h -Usage of ./openim-web: - -distPath string - Path to the distribution (default "/app/dist") - -port string - Port to run the server on (default "20001") -``` - -Variables can be set as above, Environment variables can also be set - -example: - -```bash -$ export OPENIM_WEB_PPRT="11001" -``` - -Initialize the env configuration file: - -```bash -$ make init -``` - -## Docker Deployment - -### Build the Docker Image - -Even though we've implemented automation, it's to make the developer experience easier: - -To build the Docker image for OpenIM Web Service: - -```bash -$ docker build -t openim-web . -``` - -### Run the Docker Container - -To run the service: - -```bash -$ docker run -e DIST_PATH=/app/dist -e PORT=20001 -p 20001:20001 openim-web -``` - -## Configuration - -You can configure the OpenIM Web Service using the following environment variables: - -- **DIST_PATH**: The path to the directory containing the static files. Default: `/app/dist`. -- **PORT**: The port on which the service listens. Default: `11001`. - -## Contributions - -We welcome contributions from the community. If you find any bugs or have feature suggestions, please create an issue or send a pull request. \ No newline at end of file diff --git a/tools/openim-web/go.mod b/tools/openim-web/go.mod deleted file mode 100644 index deb24f4e5..000000000 --- a/tools/openim-web/go.mod +++ /dev/null @@ -1,7 +0,0 @@ -module github.com/openimsdk/open-im-server/v3/tools/openim-web - -go 1.19 - -require gopkg.in/yaml.v2 v2.4.0 - -require github.com/NYTimes/gziphandler v1.1.1 // indirect diff --git a/tools/openim-web/go.sum b/tools/openim-web/go.sum deleted file mode 100644 index 54ca3deb1..000000000 --- a/tools/openim-web/go.sum +++ /dev/null @@ -1,10 +0,0 @@ -github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/tools/openim-web/openim-web.go b/tools/openim-web/openim-web.go deleted file mode 100644 index c913e35e7..000000000 --- a/tools/openim-web/openim-web.go +++ /dev/null @@ -1,63 +0,0 @@ -// 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. - -package main - -import ( - "flag" - "log" - "net/http" - "os" - - "github.com/NYTimes/gziphandler" -) - -var ( - distPathFlag string - portFlag string -) - -func init() { - flag.StringVar(&distPathFlag, "distPath", "/app/dist", "Path to the distribution") - flag.StringVar(&portFlag, "port", "11001", "Port to run the server on") -} - -func main() { - flag.Parse() - - distPath := getConfigValue("DIST_PATH", distPathFlag, "/app/dist") - fs := http.FileServer(http.Dir(distPath)) - - withGzip := gziphandler.GzipHandler(fs) - - http.Handle("/", withGzip) - - port := getConfigValue("PORT", portFlag, "11001") - log.Printf("Server listening on port %s in %s...", port, distPath) - err := http.ListenAndServe(":"+port, nil) - if err != nil { - log.Fatal(err) - } -} - -func getConfigValue(envKey, flagValue, fallback string) string { - envVal := os.Getenv(envKey) - if envVal != "" { - return envVal - } - if flagValue != "" { - return flagValue - } - return fallback -} diff --git a/tools/openim-web/openim-web_test.go b/tools/openim-web/openim-web_test.go deleted file mode 100644 index dd1c93316..000000000 --- a/tools/openim-web/openim-web_test.go +++ /dev/null @@ -1,71 +0,0 @@ -// 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. - -package main - -import ( - "os" - "testing" -) - -func TestGetConfigValue(t *testing.T) { - tests := []struct { - name string - envKey string - envValue string - flagValue string - fallback string - wantResult string - }{ - { - name: "environment variable set", - envKey: "TEST_KEY", - envValue: "envValue", - flagValue: "", - fallback: "default", - wantResult: "envValue", - }, - { - name: "flag set and environment variable not set", - envKey: "TEST_KEY", - envValue: "", - flagValue: "flagValue", - fallback: "default", - wantResult: "flagValue", - }, - { - name: "nothing set, use fallback", - envKey: "TEST_KEY", - envValue: "", - flagValue: "", - fallback: "default", - wantResult: "default", - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if tt.envValue != "" { - os.Setenv(tt.envKey, tt.envValue) - defer os.Unsetenv(tt.envKey) - } - - got := getConfigValue(tt.envKey, tt.flagValue, tt.fallback) - - if got != tt.wantResult { - t.Errorf("getConfigValue(%s, %s, %s) = %s; want %s", tt.envKey, tt.flagValue, tt.fallback, got, tt.wantResult) - } - }) - } -}