From 38cf469852acfb3138c03dac0f55346497dd96e7 Mon Sep 17 00:00:00 2001 From: Sakurasan <1173092237@qq.com> Date: Tue, 2 May 2023 02:05:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0root=5Ftoken=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +++++++---- docker/Dockerfile | 5 +++-- makefile | 5 +++-- opencat.go | 39 ++++++++++++++++++++++++++++++++------- 4 files changed, 45 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 3d6143a..119e075 100644 --- a/README.md +++ b/README.md @@ -30,10 +30,13 @@ or ``` wget https://github.com/mirrors2/opencatd-open/raw/main/docker/docker-compose.yml ``` -## reset root token -``` -docker exec -it opencatd-open ./opencatd reset_root -``` +## 支持的命令 +>获取 root 的 token + - `docker exec opencatd-open opencatd root_token` + +>重置 root 的 token + - `docker exec opencatd-open opencatd reset_root` + ## Q&A 关于证书? diff --git a/docker/Dockerfile b/docker/Dockerfile index 67013c4..754d71c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ FROM golang:1.19.7-alpine as builder LABEL anther="github.com/Sakurasan" -RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk update && apk --no-cache add openssl make cmake upx +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk --no-cache add make cmake upx WORKDIR /build COPY . /build ENV GO111MODULE=on @@ -12,9 +12,10 @@ FROM alpine:latest AS runner # 设置alpine 时间为上海时间 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk update && apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ - && apk del tzdata && export GIN_MODE=release # RUN apk update && apk --no-cache add openssl libgcc libstdc++ binutils WORKDIR /app COPY --from=builder /build/bin/opencatd /app/opencatd +ENV GIN_MODE=release +ENV PATH=$PATH:/app EXPOSE 80 ENTRYPOINT ["/app/opencatd"] \ No newline at end of file diff --git a/makefile b/makefile index 111700e..565939d 100644 --- a/makefile +++ b/makefile @@ -24,11 +24,12 @@ build: upx -9 bin/opencatd .PHONY:docker +# build docker images docker: docker run --privileged --rm tonistiigi/binfmt --install all - docker buildx create --use --name xbuilder + docker buildx create --use --name xbuilder --driver docker-container docker buildx inspect xbuilder --bootstrap - docker buildx build --platform linux/amd64,linux/arm64 -t mirrors2/opencatd:latest . --push + docker buildx build --platform linux/amd64,linux/arm64 -t mirrors2/opencatd:latest -f docker/Dockerfile . --push .PHONY: clean # clean diff --git a/opencat.go b/opencat.go index 4cb2d53..749b600 100644 --- a/opencat.go +++ b/opencat.go @@ -9,19 +9,44 @@ import ( "github.com/gin-gonic/gin" "github.com/google/uuid" + "gorm.io/gorm" ) func main() { args := os.Args[1:] - if len(args) > 0 && args[0] == "reset_root" { - log.Println("reset root token...") - ntoken := uuid.NewString() - if err := store.UpdateUser(uint(1), ntoken); err != nil { - log.Fatalln(err) + if len(args) > 0 { + switch args[0] { + case "reset_root": + log.Println("reset root token...") + if _, err := store.GetUserByID(uint(1)); err != nil { + if err == gorm.ErrRecordNotFound { + log.Println("请在opencat(或其他APP)客户端完成team初始化") + return + } else { + log.Fatalln(err) + return + } + } + ntoken := uuid.NewString() + if err := store.UpdateUser(uint(1), ntoken); err != nil { + log.Fatalln(err) + return + } + log.Println("new root token:", ntoken) + return + case "root_token": + log.Println("reset root token...") + if user, err := store.GetUserByID(uint(1)); err != nil { + log.Fatalln(err) + return + } else { + log.Println("root token:", user.Token) + return + } + default: return } - log.Println("new root token:", ntoken) - return + } port := os.Getenv("PORT") r := gin.Default()