dev #8
46
.env
46
.env
@ -1,27 +1,24 @@
|
||||
# General application settings
|
||||
APP_NAME=codeword
|
||||
HTTP_HOST="localhost"
|
||||
HTTP_PORT="8080"
|
||||
CLIENT_HTTP_URL="localhost:3000"
|
||||
ADMIN_HTTP_URL="localhost:3001"
|
||||
GRPC_URL="localhost:9000"
|
||||
|
||||
# MongoDB settings
|
||||
MONGO_HOST="127.0.0.1"
|
||||
MONGO_PORT="27020"
|
||||
MONGO_USER="test"
|
||||
MONGO_PASSWORD="test"
|
||||
MONGO_DB="admin"
|
||||
MONGO_AUTH="admin"
|
||||
MONGO_URL="mongodb://test:test@localhost:27020/?authSource=admin"
|
||||
MONGO_DB_NAME="admin"
|
||||
|
||||
# Redis settings
|
||||
REDIS_ADDR="10.6.0.23:6379"
|
||||
REDIS_PASS="Redalert2"
|
||||
REDIS_DB=3
|
||||
REDIS_HOST="localhost:6379"
|
||||
REDIS_PASS="admin"
|
||||
REDIS_DB=2
|
||||
|
||||
# Keys
|
||||
PUBLIC_CURVE_KEY="-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----"
|
||||
ENCRYPT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----"
|
||||
|
||||
PRIVATE_CURVE_KEY="-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----"
|
||||
ENCRYPT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----"
|
||||
|
||||
SIGN_SECRET="pena-auth-microservice-group"
|
||||
ENCRYPT_SIGN_SECRET="pena-auth-microservice-group"
|
||||
JWT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICWwIBAAKBgHgnvr7O2tiApjJfid1orFnIGm6980fZp+Lpbjo+NC/0whMFga2B
|
||||
iw5b1G2Q/B2u0tpO1Fs/E8z7Lv1nYfr5jx2S8x6BdA4TS2kB9Kf0wn0+7wSlyikH
|
||||
@ -43,23 +40,18 @@ JWT_ISSUER="pena-auth-service"
|
||||
|
||||
JWT_AUDIENCE="pena"
|
||||
|
||||
SIGN_SECRET="secret"
|
||||
|
||||
# SMTP settings
|
||||
SMTP_API_URL="https://api.smtp.bz/v1/smtp/send"
|
||||
SMTP_HOST="connect.mailclient.bz"
|
||||
SMTP_PORT="587"
|
||||
SMTP_UNAME="kotilion.95@gmail.com"
|
||||
SMTP_PASS="vWwbCSg4bf0p"
|
||||
SMTP_API_KEY="P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev"
|
||||
SMTP_SENDER="noreply@mailing.pena.digital"
|
||||
API_URL="https://api.smtp.bz/v1/smtp/send"
|
||||
MAIL_API_KEY="P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev"
|
||||
MAIL_SENDER="noreply@mailing.pena.digital"
|
||||
|
||||
# URL settings
|
||||
DEFAULT_REDIRECTION_URL = "https://shub.pena.digital/recover/"
|
||||
AUTH_EXCHANGE_URL = "http://10.6.0.11:59300/auth/exchange"
|
||||
RECOVER_URL = "https://shub.pena.digital/recover/"
|
||||
DISCOUNT_ADDRESS = "http://10.6.0.11:9001"
|
||||
AUTH_MICROSERVICE_URL = "http://10.6.0.11:59300"
|
||||
MAIL_RECOVERY_URL = "https://shub.pena.digital/recover/"
|
||||
DISCOUNT_MICROSERVICE_GRPC_URL = "http://10.6.0.11:9001"
|
||||
TRASH_LOG_HOST = "localhost:7113"
|
||||
|
||||
# Kafka settings
|
||||
KAFKA_BROKERS="10.6.0.11:9092"
|
||||
KAFKA_BROKERS="localhost:9092"
|
||||
KAFKA_TOPIC_TARIFF="tariffs"
|
||||
|
||||
24
.gitea/workflows/deploy.yml
Normal file
24
.gitea/workflows/deploy.yml
Normal file
@ -0,0 +1,24 @@
|
||||
name: Deploy
|
||||
run-name: ${{ gitea.actor }} build image and push to container registry
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
- 'staging'
|
||||
|
||||
jobs:
|
||||
CreateImage:
|
||||
runs-on: [hubstaging]
|
||||
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/build-image.yml@v1.1.6-p
|
||||
with:
|
||||
runner: hubstaging
|
||||
secrets:
|
||||
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
|
||||
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
|
||||
DeployService:
|
||||
runs-on: [hubstaging]
|
||||
needs: CreateImage
|
||||
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/deploy.yml@v1.1.4-p7
|
||||
with:
|
||||
runner: hubstaging
|
||||
14
.gitea/workflows/lint.yml
Normal file
14
.gitea/workflows/lint.yml
Normal file
@ -0,0 +1,14 @@
|
||||
name: Lint
|
||||
run-name: ${{ gitea.actor }} produce linting
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'dev'
|
||||
|
||||
jobs:
|
||||
Lint:
|
||||
runs-on: [hubstaging]
|
||||
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/lint.yml@v1.1.2
|
||||
with:
|
||||
runner: hubstaging
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -160,3 +160,4 @@ fabric.properties
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,goland,go
|
||||
/recover.bolt
|
||||
main
|
||||
|
||||
@ -1,38 +0,0 @@
|
||||
include:
|
||||
- project: "devops/pena-continuous-integration"
|
||||
file: "/templates/docker/build-template.gitlab-ci.yml"
|
||||
- project: "devops/pena-continuous-integration"
|
||||
file: "/templates/docker/deploy-template.gitlab-ci.yml"
|
||||
- project: "devops/pena-continuous-integration"
|
||||
file: "/templates/docker/golint.gitlab-ci.yml"
|
||||
- project: "devops/pena-continuous-integration"
|
||||
file: "/templates/docker/service-discovery.gitlab-ci.yml"
|
||||
stages:
|
||||
- lint
|
||||
- build
|
||||
- deploy
|
||||
- service-discovery
|
||||
|
||||
lint:
|
||||
extends: .golint_template
|
||||
|
||||
build-app:
|
||||
extends: .build_template
|
||||
|
||||
deploy-to-staging:
|
||||
rules:
|
||||
- if: "$CI_COMMIT_BRANCH == $STAGING_BRANCH"
|
||||
extends: .deploy_template
|
||||
tags:
|
||||
- staging
|
||||
extends: .deploy_template
|
||||
|
||||
deploy-to-prod:
|
||||
rules:
|
||||
- if: "$CI_COMMIT_BRANCH == $PRODUCTION_BRANCH"
|
||||
tags:
|
||||
- prod
|
||||
extends: .deploy_template
|
||||
|
||||
service-discovery:
|
||||
extends: .sd_artefacts_template
|
||||
@ -1,5 +1,5 @@
|
||||
# BUILD
|
||||
FROM penahub.gitlab.yandexcloud.net:5050/devops/dockerhub-backup/golang AS build
|
||||
FROM gitea.pena/penadevops/container-images/golang:main as build
|
||||
|
||||
# Update packages and clear cache
|
||||
RUN apk add --no-cache curl
|
||||
@ -10,14 +10,12 @@ RUN mkdir /app/bin -p
|
||||
# Add main files to app
|
||||
RUN apk add git
|
||||
ADD . .
|
||||
ENV GOPRIVATE=penahub.gitlab.yandexcloud.net/backend/penahub_common
|
||||
RUN git config --global url."https://buildToken:glpat-axA8ttckx3aPf_xd2Dym@penahub.gitlab.yandexcloud.net/".insteadOf "https://penahub.gitlab.yandexcloud.net/"
|
||||
RUN go mod download
|
||||
# Build app
|
||||
RUN GOOS=linux go build -o bin ./...
|
||||
|
||||
# PRODUCTION
|
||||
FROM penahub.gitlab.yandexcloud.net:5050/devops/dockerhub-backup/alpine AS production
|
||||
FROM gitea.pena/penadevops/container-images/alpine:main
|
||||
|
||||
# Install packages
|
||||
RUN apk --no-cache add ca-certificates
|
||||
|
||||
@ -3,8 +3,8 @@ version: "3"
|
||||
tasks:
|
||||
update-linter:
|
||||
cmds:
|
||||
- go get -u penahub.gitlab.yandexcloud.net/devops/linters/golang.git
|
||||
- go get -u gitea.pena/PenaSide/linters-golang
|
||||
lint:
|
||||
cmds:
|
||||
- task: update-linter
|
||||
- cmd: golangci-lint run -v -c $(go list -f '{{"{{"}}.Dir{{"}}"}}' -m penahub.gitlab.yandexcloud.net/devops/linters/golang.git)/.golangci.yml
|
||||
- cmd: golangci-lint run -v -c $(go list -f '{{"{{"}}.Dir{{"}}"}}' -m gitea.pena/PenaSide/linters-golang)/.golangci.yml
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"codeword/internal/app"
|
||||
"codeword/internal/initialize"
|
||||
"context"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/app"
|
||||
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||
"go.uber.org/zap"
|
||||
"os"
|
||||
"os/signal"
|
||||
_ "gitea.pena/PenaSide/linters-golang/pkg/dummy"
|
||||
"syscall"
|
||||
"time"
|
||||
_ "penahub.gitlab.yandexcloud.net/devops/linters/golang.git/pkg/dummy"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
107
cmd/validator/main.go
Normal file
107
cmd/validator/main.go
Normal file
@ -0,0 +1,107 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/encrypt"
|
||||
"gitea.pena/PenaSide/common/validate"
|
||||
"github.com/caarlos0/env/v8"
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
config, err := loadConfig()
|
||||
if err != nil {
|
||||
log.Fatalf("error loading config: %v", err)
|
||||
}
|
||||
|
||||
urls := []string{
|
||||
config.AuthMicroserviceURL,
|
||||
config.DiscountMicroserviceGRPC,
|
||||
config.TrashLogHost,
|
||||
config.ExternalCfg.MailClientCfg.ApiURL,
|
||||
config.DefaultRedirectionURL,
|
||||
config.MailRecoveryURL,
|
||||
}
|
||||
if err = validateURLs(urls); err != nil {
|
||||
log.Fatalf("error validating urls: %v", err)
|
||||
}
|
||||
|
||||
if err = validateEncrypt(config); err != nil {
|
||||
log.Fatalf("error validating encrypt: %v", err)
|
||||
}
|
||||
|
||||
if err = validate.ValidateRedis(config.RedisHost, config.RedisPassword, config.RedisDB); err != nil {
|
||||
log.Fatalf("error validating redis: %v", err)
|
||||
}
|
||||
|
||||
if err = validate.ValidateKafka(config.KafkaBrokers, config.KafkaTopicTariff); err != nil {
|
||||
log.Fatalf("error validating kafka: %v", err)
|
||||
}
|
||||
|
||||
if err = validate.ValidateSmtp(config.ExternalCfg.MailClientCfg.ApiKey); err != nil {
|
||||
log.Fatalf("error validating smtp: %v", err)
|
||||
}
|
||||
|
||||
if err = validate.ValidateMongo(config.ExternalCfg.Database); err != nil {
|
||||
log.Fatalf("error validating mongodb: %v", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func loadConfig() (*initialize.Config, error) {
|
||||
var config initialize.Config
|
||||
|
||||
if err := env.Parse(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &config, nil
|
||||
}
|
||||
|
||||
func validateURLs(urls []string) error {
|
||||
for index, u := range urls {
|
||||
if u == "" {
|
||||
return fmt.Errorf("empty url, index: %d", index)
|
||||
}
|
||||
// todo check the liveness of these URLs, many services do not support
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateEncrypt(cfg *initialize.Config) error {
|
||||
if cfg.EncryptPrivateKey == "" {
|
||||
return errors.New("encrypt private key dont be empty")
|
||||
}
|
||||
|
||||
if cfg.EncryptPublicKey == "" {
|
||||
return errors.New("encrypt public key dont be empty")
|
||||
}
|
||||
|
||||
if cfg.EncryptSignSecret == "" {
|
||||
return errors.New("encrypt sign secret dont be empty")
|
||||
}
|
||||
|
||||
encryptUtil := encrypt.New(&encrypt.EncryptDeps{
|
||||
PrivateKey: cfg.EncryptPrivateKey,
|
||||
PublicKey: cfg.EncryptPublicKey,
|
||||
SignSecret: cfg.EncryptSignSecret,
|
||||
})
|
||||
|
||||
sign, err := encryptUtil.SignCommonSecret()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ok, err := encryptUtil.VerifySignature(sign)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !ok {
|
||||
return errors.New("failed verify signature, invalid keys")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
16
cmd/validator/main_test.go
Normal file
16
cmd/validator/main_test.go
Normal file
@ -0,0 +1,16 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestValidateEncrypt(t *testing.T) {
|
||||
err := validateEncrypt(&initialize.Config{
|
||||
EncryptPublicKey: "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----",
|
||||
EncryptPrivateKey: "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----",
|
||||
EncryptSignSecret: "pena-auth-microservice-group",
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
@ -2,48 +2,34 @@ version: '3.3'
|
||||
|
||||
services:
|
||||
codewordv1.0.0:
|
||||
hostname: codewordv1.0.0
|
||||
container_name: codewordv1.0.0
|
||||
image: $CI_REGISTRY_IMAGE/staging:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
||||
image: gitea.pena:3000/penaside/codeword/staging:$GITHUB_RUN_NUMBER
|
||||
tty: true
|
||||
environment:
|
||||
APP_NAME: 'codeword'
|
||||
HTTP_CLIENT_HOST: '0.0.0.0'
|
||||
HTTP_CLIENT_PORT: '3000'
|
||||
HTTP_ADMIN_HOST: '0.0.0.0'
|
||||
HTTP_ADMIN_PORT: '3001'
|
||||
MONGO_HOST: '10.8.0.6'
|
||||
MONGO_PORT: '27017'
|
||||
MONGO_USER: 'auth-service-user'
|
||||
MONGO_PASSWORD: 'LFYFpTvqtxSzXDJV'
|
||||
MONGO_DB: 'auth'
|
||||
MONGO_AUTH: 'auth'
|
||||
PUBLIC_CURVE_KEY: "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----"
|
||||
PRIVATE_CURVE_KEY: "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----"
|
||||
SIGN_SECRET: 'pena-auth-microservice-group'
|
||||
REDIS_ADDR: '10.8.0.5:6379'
|
||||
REDIS_PASS: 'Redalert2'
|
||||
CLIENT_HTTP_URL: '0.0.0.0:3000'
|
||||
ADMIN_HTTP_URL: '0.0.0.0:3001'
|
||||
MONGO_URL: mongodb://auth-service-user:LFYFpTvqtxSzXDJV@10.7.0.6:27017/?authSource=auth
|
||||
ENCRYPT_PUBLIC_KEY: "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----"
|
||||
ENCRYPT_PRIVATE_KEY: "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----"
|
||||
ENCRYPT_SIGN_SECRET: 'pena-auth-microservice-group'
|
||||
REDIS_HOST: '10.7.0.6:6379'
|
||||
REDIS_PASSWORD: 'Redalert2'
|
||||
REDIS_DB: 3
|
||||
SMTP_API_URL: 'https://api.smtp.bz/v1/smtp/send'
|
||||
SMTP_HOST: 'connect.mailclient.bz'
|
||||
SMTP_PORT: '587'
|
||||
SMTP_UNAME: 'kotilion.95@gmail.com'
|
||||
SMTP_PASS: 'vWwbCSg4bf0p'
|
||||
SMTP_API_KEY: 'P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev'
|
||||
SMTP_SENDER: 'noreply@mailing.pena.digital'
|
||||
API_URL: 'https://api.smtp.bz/v1/smtp/send'
|
||||
MAIL_API_KEY: 'P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev'
|
||||
MAIL_SENDER: 'noreply@mailing.pena.digital'
|
||||
DEFAULT_REDIRECTION_URL: 'https://shub.pena.digital/'
|
||||
AUTH_EXCHANGE_URL: 'http://10.8.0.6:59300/auth/exchange'
|
||||
AUTH_EXCHANGE_URL: 'http://10.7.0.6:59300/auth/exchange'
|
||||
RECOVERY_URL: 'https://shub.pena.digital/codeword/v1.0.0/recover/'
|
||||
JWT_AUDIENCE: 'pena'
|
||||
JWT_ISSUER: 'pena-auth-service'
|
||||
JWT_PUBLIC_KEY: $JWT_PUBLIC_KEY
|
||||
KAFKA_BROKERS: "10.8.0.6:9092"
|
||||
KAFKA_BROKERS: "10.7.0.6:9092"
|
||||
KAFKA_TOPIC_TARIFF: "tariffs"
|
||||
DISCOUNT_ADDRESS: "10.8.0.6:9001"
|
||||
DISCOUNT_ADDRESS: "10.7.0.6:9001"
|
||||
GRPC_HOST: "0.0.0.0"
|
||||
TRASH_LOG_HOST: "10.8.0.15:7113"
|
||||
MODULE_LOGGER: "codeword-staging"
|
||||
TRASH_LOG_HOST: "10.7.0.5:7113"
|
||||
ports:
|
||||
- 10.8.0.6:19100:3000
|
||||
- 10.8.0.6:29100:3001
|
||||
- 10.8.0.6:39100:9000
|
||||
- 10.7.0.6:19100:3000
|
||||
- 10.7.0.6:29100:3001
|
||||
- 10.7.0.6:39100:9000
|
||||
|
||||
49
go.mod
49
go.mod
@ -1,27 +1,29 @@
|
||||
module codeword
|
||||
module gitea.pena/PenaSide/codeword
|
||||
|
||||
go 1.22.2
|
||||
go 1.23.2
|
||||
|
||||
toolchain go1.23.4
|
||||
|
||||
require (
|
||||
gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517
|
||||
gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9
|
||||
gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735
|
||||
gitea.pena/PenaSide/trashlog v0.0.0-20241210185614-9ec567aa311f
|
||||
github.com/caarlos0/env/v8 v8.0.0
|
||||
github.com/go-redis/redis/v8 v8.11.5
|
||||
github.com/gofiber/fiber/v2 v2.51.0
|
||||
github.com/gofiber/fiber/v2 v2.52.5
|
||||
github.com/golang-jwt/jwt/v5 v5.2.0
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
|
||||
github.com/joho/godotenv v1.5.1
|
||||
github.com/pioz/faker v1.7.3
|
||||
github.com/rs/xid v1.5.0
|
||||
github.com/stretchr/testify v1.8.4
|
||||
github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf
|
||||
github.com/twmb/franz-go v1.15.4
|
||||
github.com/rs/xid v1.6.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
github.com/twmb/franz-go v1.18.0
|
||||
go.mongodb.org/mongo-driver v1.13.1
|
||||
go.uber.org/zap v1.27.0
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac
|
||||
google.golang.org/grpc v1.60.1
|
||||
google.golang.org/protobuf v1.32.0
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607202348-efe5f2bf3e8c
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3
|
||||
penahub.gitlab.yandexcloud.net/external/trashlog v0.1.5
|
||||
)
|
||||
|
||||
require (
|
||||
@ -31,22 +33,28 @@ require (
|
||||
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/go-ini/ini v1.67.0 // indirect
|
||||
github.com/goccy/go-json v0.10.3 // indirect
|
||||
github.com/golang/protobuf v1.5.3 // indirect
|
||||
github.com/golang/snappy v0.0.1 // indirect
|
||||
github.com/google/uuid v1.4.0 // indirect
|
||||
github.com/klauspost/compress v1.16.7 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/klauspost/compress v1.17.11 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||
github.com/minio/md5-simd v1.1.2 // indirect
|
||||
github.com/minio/minio-go/v7 v7.0.81 // indirect
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
||||
github.com/pierrec/lz4/v4 v4.1.19 // indirect
|
||||
github.com/pierrec/lz4/v4 v4.1.21 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/rivo/uniseg v0.2.0 // indirect
|
||||
github.com/skeris/appInit v1.0.2 // indirect
|
||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 // indirect
|
||||
github.com/twmb/franz-go/pkg/kmsg v1.9.0 // indirect
|
||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||
github.com/valyala/fasthttp v1.50.0 // indirect
|
||||
github.com/valyala/fasthttp v1.51.0 // indirect
|
||||
github.com/valyala/tcplisten v1.0.0 // indirect
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
||||
github.com/xdg-go/scram v1.1.2 // indirect
|
||||
@ -54,14 +62,15 @@ require (
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
|
||||
go.etcd.io/bbolt v1.3.6 // indirect
|
||||
go.uber.org/multierr v1.10.0 // indirect
|
||||
golang.org/x/crypto v0.17.0 // indirect
|
||||
golang.org/x/net v0.17.0 // indirect
|
||||
golang.org/x/sync v0.4.0 // indirect
|
||||
golang.org/x/sys v0.15.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/crypto v0.28.0 // indirect
|
||||
golang.org/x/net v0.30.0 // indirect
|
||||
golang.org/x/sync v0.8.0 // indirect
|
||||
golang.org/x/sys v0.26.0 // indirect
|
||||
golang.org/x/text v0.19.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
|
||||
gopkg.in/tucnak/telebot.v2 v2.5.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3 // indirect
|
||||
)
|
||||
|
||||
88
go.sum
88
go.sum
@ -1,4 +1,12 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517 h1:EgBe8VcdPwmxbSzYLndncP+NmR73uYuXxkTeDlEttEE=
|
||||
gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517/go.mod h1:91EuBCgcqgJ6mG36n2pds8sPwwfaJytLWOzY3h2YFKU=
|
||||
gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9 h1:tBkXWNIt8icmkMMnq8MA421RWkUy4OZh5P7C3q8uCu4=
|
||||
gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9/go.mod h1:sanhSL8aEsfcq21P+eItYiAnKAre+B67nGJmDfk2cf0=
|
||||
gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735 h1:jDVeUhGBTXBibmW5dmtJg2m2+z5z2Rf6J4G0LpjVoJ0=
|
||||
gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735/go.mod h1:gdd+vOT6up9STkEbxa2qESLIMZFjCmRbkcheFQCVgZU=
|
||||
gitea.pena/PenaSide/trashlog v0.0.0-20241210185614-9ec567aa311f h1:vwuUtO03Qowaf2XtSxDeI817+MsvPp/M4jAC2ecYr1M=
|
||||
gitea.pena/PenaSide/trashlog v0.0.0-20241210185614-9ec567aa311f/go.mod h1:GRfWJerTUlgy82CiYAxE4tVYSVV54zEJJQy17Fx46E4=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
|
||||
github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
|
||||
@ -21,6 +29,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
@ -29,14 +39,18 @@ github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
|
||||
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
|
||||
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
||||
github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
|
||||
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
|
||||
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
|
||||
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
|
||||
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
|
||||
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gofiber/fiber/v2 v2.51.0 h1:JNACcZy5e2tGApWB2QrRpenTWn0fq0hkFm6k0C86gKQ=
|
||||
github.com/gofiber/fiber/v2 v2.51.0/go.mod h1:xaQRZQJGqnKOQnbQw+ltvku3/h8QxvNi8o6JiJ7Ll0U=
|
||||
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
|
||||
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||
github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo=
|
||||
github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang-jwt/jwt/v5 v5.2.0 h1:d/ix8ftRUorsN+5eMIlF4T6J8CAt9rch3My2winC1Jw=
|
||||
@ -57,8 +71,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
||||
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
|
||||
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
|
||||
@ -67,8 +81,11 @@ github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwA
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
||||
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
|
||||
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
|
||||
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
|
||||
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
|
||||
github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
@ -85,6 +102,10 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
|
||||
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
||||
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
||||
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
|
||||
github.com/minio/minio-go/v7 v7.0.81 h1:SzhMN0TQ6T/xSBu6Nvw3M5M8voM+Ht8RH3hE8S7zxaA=
|
||||
github.com/minio/minio-go/v7 v7.0.81/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0=
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||
@ -96,8 +117,8 @@ github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5h
|
||||
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
|
||||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||
github.com/pierrec/lz4/v4 v4.1.19 h1:tYLzDnjDXh9qIxSTKHwXwOYmm9d887Y7Y1ZkyXYHAN4=
|
||||
github.com/pierrec/lz4/v4 v4.1.19/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
||||
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
|
||||
github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
||||
github.com/pioz/faker v1.7.3 h1:Tez8Emuq0UN+/d6mo3a9m/9ZZ/zdfJk0c5RtRatrceM=
|
||||
github.com/pioz/faker v1.7.3/go.mod h1:xSpay5w/oz1a6+ww0M3vfpe40pSIykeUPeWEc3TvVlc=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
@ -109,8 +130,8 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:
|
||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
||||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
|
||||
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/skeris/appInit v1.0.2 h1:Hr4KbXYd6kolTVq4cXGqDpgnpmaauiOiKizA1+Ep4KQ=
|
||||
github.com/skeris/appInit v1.0.2/go.mod h1:4ElEeXWVGzU3dlYq/eMWJ/U5hd+LKisc1z3+ySh1XmY=
|
||||
@ -122,20 +143,18 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/themakers/bdd v0.0.0-20210316111417-6b1dfe326f33 h1:N9f/Q+2Ssa+yDcbfaoLTYvXmdeyUUxsJKdPUVsjSmiA=
|
||||
github.com/themakers/bdd v0.0.0-20210316111417-6b1dfe326f33/go.mod h1:rpcH99JknBh8seZmlOlUg51gasZH6QH34oXNsIwYT6E=
|
||||
github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf h1:TJJm6KcBssmbWzplF5lzixXl1RBAi/ViPs1GaSOkhwo=
|
||||
github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf/go.mod h1:1FsorU3vnXO9xS9SrhUp8fRb/6H/Zfll0rPt1i4GWaA=
|
||||
github.com/twmb/franz-go v1.15.4 h1:qBCkHaiutetnrXjAUWA99D9FEcZVMt2AYwkH3vWEQTw=
|
||||
github.com/twmb/franz-go v1.15.4/go.mod h1:rC18hqNmfo8TMc1kz7CQmHL74PLNF8KVvhflxiiJZCU=
|
||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqjJYoij2E=
|
||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0/go.mod h1:se9Mjdt0Nwzc9lnjJ0HyDtLyBnaBDAd7pCje47OhSyw=
|
||||
github.com/twmb/franz-go v1.18.0 h1:25FjMZfdozBywVX+5xrWC2W+W76i0xykKjTdEeD2ejw=
|
||||
github.com/twmb/franz-go v1.18.0/go.mod h1:zXCGy74M0p5FbXsLeASdyvfLFsBvTubVqctIaa5wQ+I=
|
||||
github.com/twmb/franz-go/pkg/kmsg v1.9.0 h1:JojYUph2TKAau6SBtErXpXGC7E3gg4vGZMv9xFU/B6M=
|
||||
github.com/twmb/franz-go/pkg/kmsg v1.9.0/go.mod h1:CMbfazviCyY6HM0SXuG5t9vOwYDHRCSrJJyBAe5paqg=
|
||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||
github.com/valyala/fasthttp v1.50.0 h1:H7fweIlBm0rXLs2q0XbalvJ6r0CUPFWK3/bB4N13e9M=
|
||||
github.com/valyala/fasthttp v1.50.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
|
||||
github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
|
||||
github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g=
|
||||
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
|
||||
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
||||
@ -173,8 +192,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
||||
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
|
||||
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
@ -195,8 +214,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
|
||||
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
||||
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
@ -204,8 +223,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
|
||||
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
@ -219,9 +238,10 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
|
||||
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
|
||||
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@ -230,8 +250,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
||||
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
@ -291,13 +311,5 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607202348-efe5f2bf3e8c h1:CWb4UcuNXhd1KTNOmy2U0TJO4+Qxgxrj5cwkyFqbgrk=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607202348-efe5f2bf3e8c/go.mod h1:+bPxq2wfW5S1gd+83vZYmHm33AE7nEBfznWS8AM1TKE=
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240803124813-79e62d2acf3c h1:imtXaIVscs8it6SfAmDxjNxqQSF44GgCTl1N6JT6unA=
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240803124813-79e62d2acf3c/go.mod h1:i7M72RIpkSjcQtHID6KKj9RT/EYZ1rxS6tIPKWa/BSY=
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240828181923-80f1728efccc h1:tKp1NYn+FJOq/mCyc4SJjcGdYdr1AhXnyw7f80uex0A=
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240828181923-80f1728efccc/go.mod h1:i7M72RIpkSjcQtHID6KKj9RT/EYZ1rxS6tIPKWa/BSY=
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3 h1:sf6e2mp582L3i/FMDd2q6QuWm1njRXzYpIX0SipsvM4=
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3/go.mod h1:i7M72RIpkSjcQtHID6KKj9RT/EYZ1rxS6tIPKWa/BSY=
|
||||
penahub.gitlab.yandexcloud.net/external/trashlog v0.1.5 h1:amsK0bkSJxBisk334aFo5ZmVPvN1dBT0Sv5j3V5IsT8=
|
||||
penahub.gitlab.yandexcloud.net/external/trashlog v0.1.5/go.mod h1:J8kQNEP4bL7ZNKHxuT4tfe6a3FHyovpAPkyytN4qllc=
|
||||
|
||||
@ -1,29 +1,29 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type AuthClientDeps struct {
|
||||
AuthUrl string
|
||||
FiberClient *fiber.Client
|
||||
Logger *zap.Logger
|
||||
AuthUrl string
|
||||
Logger *zap.Logger
|
||||
}
|
||||
|
||||
type AuthClient struct {
|
||||
deps AuthClientDeps
|
||||
authUrl string
|
||||
fiberClient *fiber.Client
|
||||
logger *zap.Logger
|
||||
}
|
||||
|
||||
func NewAuthClient(deps AuthClientDeps) *AuthClient {
|
||||
if deps.FiberClient == nil {
|
||||
deps.FiberClient = fiber.AcquireClient()
|
||||
}
|
||||
return &AuthClient{
|
||||
deps: deps,
|
||||
authUrl: deps.AuthUrl,
|
||||
fiberClient: fiber.AcquireClient(),
|
||||
logger: deps.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,30 +35,30 @@ func (a *AuthClient) RefreshAuthToken(userID, signature string) (*models.Refresh
|
||||
|
||||
bodyBytes, err := json.Marshal(body)
|
||||
if err != nil {
|
||||
a.deps.Logger.Error("Failed to encode request body", zap.Error(err))
|
||||
a.logger.Error("Failed to encode request body", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
agent := a.deps.FiberClient.Post(a.deps.AuthUrl)
|
||||
agent := a.fiberClient.Post(fmt.Sprintf("%s/auth/exchange", a.authUrl))
|
||||
agent.Set("Content-Type", "application/json").Body(bodyBytes)
|
||||
|
||||
statusCode, resBody, errs := agent.Bytes()
|
||||
if len(errs) > 0 {
|
||||
for _, err := range errs {
|
||||
a.deps.Logger.Error("Error in exchange auth token request", zap.Error(err))
|
||||
a.logger.Error("Error in exchange auth token request", zap.Error(err))
|
||||
}
|
||||
return nil, fmt.Errorf("request failed: %v", errs)
|
||||
}
|
||||
|
||||
if statusCode != fiber.StatusOK {
|
||||
errorMessage := fmt.Sprintf("received an incorrect response from the authentication service: %d", statusCode)
|
||||
a.deps.Logger.Error(errorMessage, zap.Int("status", statusCode), zap.String("respBody", string(resBody)), zap.String("UserID", userID),zap.String("sign", signature))
|
||||
a.logger.Error(errorMessage, zap.Int("status", statusCode), zap.String("respBody", string(resBody)), zap.String("UserID", userID), zap.String("sign", signature))
|
||||
return nil, fmt.Errorf(errorMessage)
|
||||
}
|
||||
|
||||
var tokens models.RefreshResponse
|
||||
if err := json.Unmarshal(resBody, &tokens); err != nil {
|
||||
a.deps.Logger.Error("failed to unmarshal auth service response", zap.Error(err))
|
||||
a.logger.Error("failed to unmarshal auth service response", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
@ -9,46 +9,46 @@ import (
|
||||
)
|
||||
|
||||
type RecoveryEmailSenderDeps struct {
|
||||
SmtpApiUrl string
|
||||
SmtpHost string
|
||||
SmtpPort string
|
||||
SmtpSender string
|
||||
Username string
|
||||
Password string
|
||||
ApiUrl string
|
||||
Sender string
|
||||
ApiKey string
|
||||
FiberClient *fiber.Client
|
||||
Logger *zap.Logger
|
||||
RecoveryUrl string
|
||||
}
|
||||
|
||||
type RecoveryEmailSender struct {
|
||||
deps RecoveryEmailSenderDeps
|
||||
apiUrl string
|
||||
sender string
|
||||
apiKey string
|
||||
fiberClient *fiber.Client
|
||||
logger *zap.Logger
|
||||
recoveryUrl string
|
||||
}
|
||||
|
||||
func NewRecoveryEmailSender(deps RecoveryEmailSenderDeps) *RecoveryEmailSender {
|
||||
if deps.FiberClient == nil {
|
||||
deps.FiberClient = fiber.AcquireClient()
|
||||
}
|
||||
return &RecoveryEmailSender{
|
||||
deps: deps,
|
||||
apiUrl: deps.ApiUrl,
|
||||
sender: deps.Sender,
|
||||
apiKey: deps.ApiKey,
|
||||
fiberClient: fiber.AcquireClient(),
|
||||
logger: deps.Logger,
|
||||
recoveryUrl: deps.RecoveryUrl,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *RecoveryEmailSender) SendRecoveryEmail(email string, signature string) error {
|
||||
url := r.deps.SmtpApiUrl
|
||||
|
||||
fmt.Println(email, signature)
|
||||
|
||||
message := fmt.Sprintf(`Здравствуйте, ваша <a href="%s">ссылка для восстановление пароля</a>(доступна всего 15 минут)
|
||||
|
||||
Если это были не вы, напишите пожалуйста в техническую поддержку.`, r.deps.RecoveryUrl + signature)
|
||||
Если это были не вы, напишите пожалуйста в техническую поддержку.`, r.recoveryUrl+signature)
|
||||
|
||||
form := new(bytes.Buffer)
|
||||
writer := multipart.NewWriter(form)
|
||||
defer writer.Close()
|
||||
|
||||
fields := map[string]string{
|
||||
"from": r.deps.SmtpSender,
|
||||
"from": r.sender,
|
||||
"to": email,
|
||||
"subject": "Восстановление доступа",
|
||||
"html": message,
|
||||
@ -64,20 +64,20 @@ func (r *RecoveryEmailSender) SendRecoveryEmail(email string, signature string)
|
||||
return err
|
||||
}
|
||||
|
||||
req := r.deps.FiberClient.Post(url).Body(form.Bytes()).ContentType(writer.FormDataContentType())
|
||||
if r.deps.ApiKey != "" {
|
||||
req.Set("Authorization", r.deps.ApiKey)
|
||||
req := r.fiberClient.Post(r.apiUrl).Body(form.Bytes()).ContentType(writer.FormDataContentType())
|
||||
if r.apiKey != "" {
|
||||
req.Set("Authorization", r.apiKey)
|
||||
}
|
||||
|
||||
statusCode, body, errs := req.Bytes()
|
||||
if errs != nil {
|
||||
r.deps.Logger.Error("Error sending request", zap.Error(errs[0]))
|
||||
r.logger.Error("Error sending request", zap.Error(errs[0]))
|
||||
return errs[0]
|
||||
}
|
||||
|
||||
if statusCode != fiber.StatusOK {
|
||||
err := fmt.Errorf("the SMTP service returned an error: %s Response body: %s", statusCode, body)
|
||||
r.deps.Logger.Error("Error sending email", zap.Error(err))
|
||||
r.logger.Error("Error sending email", zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@ -1,29 +1,29 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"codeword/internal/controller/admin/admin_promocode"
|
||||
"codeword/internal/controller/admin/admin_recovery"
|
||||
"codeword/internal/controller/client/client_promocode"
|
||||
"codeword/internal/controller/client/client_recovery"
|
||||
"codeword/internal/controller/rpc_controllers"
|
||||
"codeword/internal/initialize"
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/repository"
|
||||
"codeword/internal/server/grpc"
|
||||
httpserver "codeword/internal/server/http"
|
||||
"codeword/internal/services"
|
||||
"codeword/internal/utils/middleware"
|
||||
"codeword/internal/worker/purge_worker"
|
||||
"codeword/internal/worker/recovery_worker"
|
||||
"codeword/pkg/closer"
|
||||
"context"
|
||||
"errors"
|
||||
"github.com/themakers/hlog"
|
||||
"gitea.pena/PenaSide/codeword/internal/controller/admin/admin_promocode"
|
||||
"gitea.pena/PenaSide/codeword/internal/controller/admin/admin_recovery"
|
||||
"gitea.pena/PenaSide/codeword/internal/controller/client/client_promocode"
|
||||
"gitea.pena/PenaSide/codeword/internal/controller/client/client_recovery"
|
||||
"gitea.pena/PenaSide/codeword/internal/controller/rpc_controllers"
|
||||
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||
"gitea.pena/PenaSide/codeword/internal/server/grpc"
|
||||
httpserver "gitea.pena/PenaSide/codeword/internal/server/http"
|
||||
"gitea.pena/PenaSide/codeword/internal/services"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||
"gitea.pena/PenaSide/codeword/internal/worker/purge_worker"
|
||||
"gitea.pena/PenaSide/codeword/internal/worker/recovery_worker"
|
||||
"gitea.pena/PenaSide/codeword/pkg/closer"
|
||||
"gitea.pena/PenaSide/hlog"
|
||||
"gitea.pena/PenaSide/trashlog/app"
|
||||
"gitea.pena/PenaSide/trashlog/wrappers/zaptrashlog"
|
||||
"github.com/twmb/franz-go/pkg/kgo"
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"penahub.gitlab.yandexcloud.net/external/trashlog/app"
|
||||
"penahub.gitlab.yandexcloud.net/external/trashlog/wrappers/zaptrashlog"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -53,7 +53,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
||||
return zapcore.NewTee(core, clickHouseLogger)
|
||||
}))
|
||||
|
||||
loggerHlog := hlog.New(loggerForHlog).Module(cfg.ModuleLogger)
|
||||
loggerHlog := hlog.New(loggerForHlog).Module(initialize.ModuleLogger)
|
||||
loggerHlog.With(models.AllFields{})
|
||||
loggerHlog.Emit(app.InfoSvcStarted{})
|
||||
|
||||
@ -71,9 +71,9 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
||||
}
|
||||
|
||||
kafkaTariffClient, err := kgo.NewClient(
|
||||
kgo.SeedBrokers(cfg.KafkaBrokers),
|
||||
kgo.SeedBrokers(cfg.KafkaBrokers...),
|
||||
kgo.ConsumeResetOffset(kgo.NewOffset().AtStart()),
|
||||
kgo.DefaultProduceTopic(cfg.KafkaTopic),
|
||||
kgo.DefaultProduceTopic(cfg.KafkaTopicTariff),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -84,7 +84,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
||||
return err
|
||||
}
|
||||
|
||||
discountRpcClient, err := initialize.DiscountGRPCClient(cfg.DiscountServiceAddress)
|
||||
discountRpcClient, err := initialize.DiscountGRPCClient(cfg.DiscountMicroserviceGRPC)
|
||||
if err != nil {
|
||||
logger.Error("failed to connect to discount service", zap.Error(err))
|
||||
return err
|
||||
@ -93,7 +93,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
||||
brokers := initialize.NewBrokers(initialize.BrokersDeps{
|
||||
Logger: logger,
|
||||
TariffClient: kafkaTariffClient,
|
||||
Topic: cfg.KafkaTopic,
|
||||
Topic: cfg.KafkaTopicTariff,
|
||||
})
|
||||
|
||||
rdb, err := initialize.Redis(ctx, cfg)
|
||||
@ -134,15 +134,13 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
||||
Logger: logger,
|
||||
Service: recoveryService,
|
||||
DefaultURL: cfg.DefaultRedirectionURL,
|
||||
RecoveryURL: cfg.RecoveryUrl,
|
||||
RecoveryURL: cfg.MailRecoveryURL,
|
||||
})
|
||||
clientPromoCodeController := client_promocode.NewPromoCodeController(client_promocode.Deps{Logger: logger, PromoCodeService: promoService})
|
||||
|
||||
adminRecoveryController := admin_recovery.NewRecoveryController(admin_recovery.Deps{
|
||||
Logger: logger,
|
||||
Service: recoveryService,
|
||||
DefaultURL: cfg.DefaultRedirectionURL,
|
||||
RecoveryURL: cfg.RecoveryUrl,
|
||||
Logger: logger,
|
||||
Service: recoveryService,
|
||||
})
|
||||
adminPromoCodeController := admin_promocode.NewPromoCodeController(admin_promocode.Deps{Logger: logger, PromoCodeService: promoService})
|
||||
controllerRpc := rpc_controllers.InitRpcControllers(promoService)
|
||||
@ -184,23 +182,20 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
||||
})
|
||||
|
||||
go func() {
|
||||
if err := clientServer.Start(cfg.HTTPClientHost + ":" + cfg.HTTPClientPort); err != nil {
|
||||
if err := clientServer.Start(cfg.ClientHttpURL); err != nil {
|
||||
logger.Error("Client server startup error", zap.Error(err))
|
||||
cancel()
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
if err := adminServer.Start(cfg.HTTPAdminHost + ":" + cfg.HTTPAdminPort); err != nil {
|
||||
if err := adminServer.Start(cfg.AdminHttpURL); err != nil {
|
||||
logger.Error("Admin server startup error", zap.Error(err))
|
||||
cancel()
|
||||
}
|
||||
}()
|
||||
|
||||
go grpcServer.Run(grpc.DepsGrpcRun{
|
||||
Host: cfg.GrpcHost,
|
||||
Port: cfg.GrpcPort,
|
||||
})
|
||||
go grpcServer.Run(cfg.GrpcURL)
|
||||
|
||||
clientServer.ListRoutes()
|
||||
adminServer.ListRoutes()
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
package admin_promocode
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/repository"
|
||||
"codeword/internal/services"
|
||||
"codeword/internal/utils/middleware"
|
||||
"errors"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||
"gitea.pena/PenaSide/codeword/internal/services"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go.uber.org/zap"
|
||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
|
||||
"gitea.pena/PenaSide/common/log_mw"
|
||||
)
|
||||
|
||||
type Deps struct {
|
||||
|
||||
@ -1,33 +1,27 @@
|
||||
package admin_recovery
|
||||
|
||||
import (
|
||||
"codeword/internal/services"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/services"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go.uber.org/zap"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Deps struct {
|
||||
Logger *zap.Logger
|
||||
Service *services.RecoveryService
|
||||
DefaultURL string
|
||||
RecoveryURL string
|
||||
Logger *zap.Logger
|
||||
Service *services.RecoveryService
|
||||
}
|
||||
|
||||
type RecoveryController struct {
|
||||
logger *zap.Logger
|
||||
service *services.RecoveryService
|
||||
defaultURL string
|
||||
recoveryURL string
|
||||
logger *zap.Logger
|
||||
service *services.RecoveryService
|
||||
}
|
||||
|
||||
func NewRecoveryController(deps Deps) *RecoveryController {
|
||||
return &RecoveryController{
|
||||
logger: deps.Logger,
|
||||
service: deps.Service,
|
||||
defaultURL: deps.DefaultURL,
|
||||
recoveryURL: deps.RecoveryURL,
|
||||
logger: deps.Logger,
|
||||
service: deps.Service,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
package client_promocode
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/repository"
|
||||
"codeword/internal/services"
|
||||
"codeword/internal/utils/middleware"
|
||||
"errors"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||
"gitea.pena/PenaSide/codeword/internal/services"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go.uber.org/zap"
|
||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
|
||||
"gitea.pena/PenaSide/common/log_mw"
|
||||
)
|
||||
|
||||
type Deps struct {
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
package client_recovery
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/repository"
|
||||
"codeword/internal/services"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||
"gitea.pena/PenaSide/codeword/internal/services"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go.uber.org/zap"
|
||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
|
||||
"gitea.pena/PenaSide/common/log_mw"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package rpc_controllers
|
||||
|
||||
import "codeword/internal/services"
|
||||
import "gitea.pena/PenaSide/codeword/internal/services"
|
||||
|
||||
type RpcRegister struct {
|
||||
Service *services.PromoCodeService
|
||||
|
||||
@ -1,30 +1,23 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"codeword/internal/adapters/client"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"gitea.pena/PenaSide/codeword/internal/adapters/client"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func RecoveryEmailSender(cfg Config, logger *zap.Logger) *client.RecoveryEmailSender {
|
||||
return client.NewRecoveryEmailSender(client.RecoveryEmailSenderDeps{
|
||||
SmtpApiUrl: cfg.SmtpApiUrl,
|
||||
SmtpHost: cfg.SmtpHost,
|
||||
SmtpPort: cfg.SmtpPort,
|
||||
SmtpSender: cfg.SmtpSender,
|
||||
Username: cfg.SmtpUsername,
|
||||
Password: cfg.SmtpPassword,
|
||||
ApiKey: cfg.SmtpApiKey,
|
||||
FiberClient: &fiber.Client{},
|
||||
ApiUrl: cfg.ExternalCfg.MailClientCfg.ApiURL,
|
||||
Sender: cfg.ExternalCfg.MailClientCfg.Sender,
|
||||
ApiKey: cfg.ExternalCfg.MailClientCfg.ApiKey,
|
||||
Logger: logger,
|
||||
RecoveryUrl: cfg.RecoveryUrl,
|
||||
RecoveryUrl: cfg.MailRecoveryURL,
|
||||
})
|
||||
}
|
||||
|
||||
func AuthClient(cfg Config, logger *zap.Logger) *client.AuthClient {
|
||||
return client.NewAuthClient(client.AuthClientDeps{
|
||||
AuthUrl: cfg.AuthURL,
|
||||
Logger: logger,
|
||||
FiberClient: &fiber.Client{},
|
||||
AuthUrl: cfg.AuthMicroserviceURL,
|
||||
Logger: logger,
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,50 +1,50 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"gitea.pena/PenaSide/common/mongo"
|
||||
"github.com/caarlos0/env/v8"
|
||||
"github.com/joho/godotenv"
|
||||
"log"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
AppName string `env:"APP_NAME" envDefault:"codeword"`
|
||||
HTTPClientHost string `env:"HTTP_CLIENT_HOST" envDefault:"localhost"`
|
||||
HTTPClientPort string `env:"HTTP_CLIENT_PORT" envDefault:"3000"`
|
||||
HTTPAdminHost string `env:"HTTP_ADMIN_HOST" envDefault:"localhost"`
|
||||
HTTPAdminPort string `env:"HTTP_ADMIN_PORT" envDefault:"3001"`
|
||||
MongoHost string `env:"MONGO_HOST" envDefault:"127.0.0.1"`
|
||||
MongoPort string `env:"MONGO_PORT" envDefault:"27020"`
|
||||
MongoUser string `env:"MONGO_USER" envDefault:"test"`
|
||||
MongoPassword string `env:"MONGO_PASSWORD" envDefault:"test"`
|
||||
MongoDatabase string `env:"MONGO_DB" envDefault:"admin"`
|
||||
MongoAuth string `env:"MONGO_AUTH" envDefault:"admin"`
|
||||
PublicCurveKey string `env:"PUBLIC_CURVE_KEY"`
|
||||
PrivateCurveKey string `env:"PRIVATE_CURVE_KEY"`
|
||||
SignSecret string `env:"SIGN_SECRET"`
|
||||
RedisAddr string `env:"REDIS_ADDR" envDefault:"localhost:6379"`
|
||||
RedisPassword string `env:"REDIS_PASS" envDefault:"admin"`
|
||||
RedisDB int `env:"REDIS_DB" envDefault:"2"`
|
||||
SmtpApiUrl string `env:"SMTP_API_URL"`
|
||||
SmtpHost string `env:"SMTP_HOST"`
|
||||
SmtpPort string `env:"SMTP_PORT"`
|
||||
SmtpUsername string `env:"SMTP_UNAME"`
|
||||
SmtpPassword string `env:"SMTP_PASS"`
|
||||
SmtpApiKey string `env:"SMTP_API_KEY"`
|
||||
SmtpSender string `env:"SMTP_SENDER"`
|
||||
DefaultRedirectionURL string `env:"DEFAULT_REDIRECTION_URL"`
|
||||
AuthURL string `env:"AUTH_EXCHANGE_URL"`
|
||||
KafkaBrokers string `env:"KAFKA_BROKERS"`
|
||||
KafkaTopic string `env:"KAFKA_TOPIC_TARIFF"`
|
||||
DiscountServiceAddress string `env:"DISCOUNT_ADDRESS"`
|
||||
RecoveryUrl string `env:"RECOVERY_URL"`
|
||||
PrivateKey string `env:"JWT_PRIVATE_KEY"`
|
||||
PublicKey string `env:"JWT_PUBLIC_KEY,required"`
|
||||
Issuer string `env:"JWT_ISSUER,required"`
|
||||
Audience string `env:"JWT_AUDIENCE,required"`
|
||||
GrpcHost string `env:"GRPC_HOST" envDefault:"localhost"`
|
||||
GrpcPort string `env:"GRPC_PORT" envDefault:"9000"`
|
||||
TrashLogHost string `env:"TRASH_LOG_HOST" envDefault:"localhost:7113"`
|
||||
ModuleLogger string `env:"MODULE_LOGGER" envDefault:"codeword-local"`
|
||||
AppName string `env:"APP_NAME" envDefault:"codeword"`
|
||||
ClientHttpURL string `env:"CLIENT_HTTP_URL,required" envDefault:"localhost:3000"`
|
||||
AdminHttpURL string `env:"ADMIN_HTTP_URL,required" envDefault:"localhost:3001"`
|
||||
GrpcURL string `env:"GRPC_URL,required" envDefault:"localhost:9000"`
|
||||
RedisHost string `env:"REDIS_HOST,required" envDefault:"localhost:6379"`
|
||||
RedisPassword string `env:"REDIS_PASSWORD,required" envDefault:"admin"`
|
||||
RedisDB int `env:"REDIS_DB,required" envDefault:"2"`
|
||||
KafkaTopicTariff string `env:"KAFKA_TOPIC_TARIFF,required"`
|
||||
KafkaBrokers []string `env:"KAFKA_BROKERS,required"`
|
||||
AuthMicroserviceURL string `env:"AUTH_MICROSERVICE_URL,required"`
|
||||
DiscountMicroserviceGRPC string `env:"DISCOUNT_MICROSERVICE_GRPC_URL,required"`
|
||||
TrashLogHost string `env:"TRASH_LOG_HOST,required" envDefault:"localhost:7113"`
|
||||
MailRecoveryURL string `env:"MAIL_RECOVERY_URL,required"`
|
||||
EncryptPublicKey string `env:"ENCRYPT_PUBLIC_KEY,required"`
|
||||
EncryptPrivateKey string `env:"ENCRYPT_PRIVATE_KEY,required"`
|
||||
EncryptSignSecret string `env:"ENCRYPT_SIGN_SECRET,required"`
|
||||
DefaultRedirectionURL string `env:"DEFAULT_REDIRECTION_URL,required"`
|
||||
ExternalCfg ExternalCfg
|
||||
}
|
||||
|
||||
type ExternalCfg struct {
|
||||
MailClientCfg MailClientCfg
|
||||
Database mongo.Configuration
|
||||
JwtCfg JWTConfiguration
|
||||
}
|
||||
|
||||
type MailClientCfg struct {
|
||||
ApiURL string `env:"API_URL,required"`
|
||||
Sender string `env:"MAIL_SENDER,required"`
|
||||
ApiKey string `env:"MAIL_API_KEY,required"`
|
||||
}
|
||||
|
||||
type JWTConfiguration struct {
|
||||
PrivateKey string `env:"JWT_PRIVATE_KEY"`
|
||||
PublicKey string `env:"JWT_PUBLIC_KEY,required"`
|
||||
Issuer string `env:"JWT_ISSUER,required"`
|
||||
Audience string `env:"JWT_AUDIENCE,required"`
|
||||
}
|
||||
|
||||
func LoadConfig() (*Config, error) {
|
||||
@ -57,3 +57,5 @@ func LoadConfig() (*Config, error) {
|
||||
}
|
||||
return &config, nil
|
||||
}
|
||||
|
||||
const ModuleLogger = "codeword"
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"codeword/internal/utils/encrypt"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/encrypt"
|
||||
)
|
||||
|
||||
func Encrypt(cfg Config) *encrypt.Encrypt {
|
||||
return encrypt.New(&encrypt.EncryptDeps{
|
||||
PublicKey: cfg.PublicCurveKey,
|
||||
PrivateKey: cfg.PrivateCurveKey,
|
||||
SignSecret: cfg.SignSecret,
|
||||
PublicKey: cfg.EncryptPublicKey,
|
||||
PrivateKey: cfg.EncryptPrivateKey,
|
||||
SignSecret: cfg.EncryptSignSecret,
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"codeword/internal/proto/discount"
|
||||
"context"
|
||||
"gitea.pena/PenaSide/codeword/internal/proto/discount"
|
||||
"google.golang.org/grpc"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"codeword/internal/kafka/tariff"
|
||||
"gitea.pena/PenaSide/codeword/internal/kafka/tariff"
|
||||
"github.com/twmb/franz-go/pkg/kgo"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
@ -1,29 +1,20 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"codeword/internal/repository"
|
||||
"context"
|
||||
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||
mdb "gitea.pena/PenaSide/common/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.uber.org/zap"
|
||||
mdb "penahub.gitlab.yandexcloud.net/backend/penahub_common/mongo"
|
||||
"time"
|
||||
)
|
||||
|
||||
func MongoDB(ctx context.Context, cfg Config) (*mongo.Database, error) {
|
||||
dbConfig := &mdb.Configuration{
|
||||
Host: cfg.MongoHost,
|
||||
Port: cfg.MongoPort,
|
||||
User: cfg.MongoUser,
|
||||
Password: cfg.MongoPassword,
|
||||
DatabaseName: cfg.MongoDatabase,
|
||||
Auth: cfg.MongoAuth,
|
||||
}
|
||||
|
||||
newCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
||||
defer cancel()
|
||||
|
||||
mongoDeps := &mdb.ConnectDeps{
|
||||
Configuration: dbConfig,
|
||||
Configuration: &cfg.ExternalCfg.Database,
|
||||
Timeout: 10 * time.Second,
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@ import (
|
||||
|
||||
func Redis(ctx context.Context, cfg Config) (*redis.Client, error) {
|
||||
rdb := redis.NewClient(&redis.Options{
|
||||
Addr: cfg.RedisAddr,
|
||||
Addr: cfg.RedisHost,
|
||||
Password: cfg.RedisPassword,
|
||||
DB: cfg.RedisDB,
|
||||
})
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
package tariff
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/utils/transfer"
|
||||
"context"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/transfer"
|
||||
"github.com/twmb/franz-go/pkg/kgo"
|
||||
"go.uber.org/zap"
|
||||
"google.golang.org/protobuf/proto"
|
||||
"log"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type ProducerDeps struct {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"codeword/internal/proto/broker"
|
||||
"gitea.pena/PenaSide/codeword/internal/proto/broker"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"github.com/go-redis/redis/v8"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"context"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
codeword_rpc "codeword/internal/proto/codeword"
|
||||
"context"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
codeword_rpc "gitea.pena/PenaSide/codeword/internal/proto/codeword"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"context"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"github.com/go-redis/redis/v8"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
package grpc
|
||||
|
||||
import (
|
||||
"codeword/internal/controller/rpc_controllers"
|
||||
codeword_rpc "codeword/internal/proto/codeword"
|
||||
"context"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/controller/rpc_controllers"
|
||||
codeword_rpc "gitea.pena/PenaSide/codeword/internal/proto/codeword"
|
||||
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
|
||||
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
|
||||
grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery"
|
||||
@ -36,13 +36,8 @@ func NewGRPC(logger *zap.Logger) (*GRPC, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
type DepsGrpcRun struct {
|
||||
Host string
|
||||
Port string
|
||||
}
|
||||
|
||||
func (g *GRPC) Run(config DepsGrpcRun) {
|
||||
connectionString := fmt.Sprintf("%s:%s", config.Host, config.Port)
|
||||
func (g *GRPC) Run(addr string) {
|
||||
connectionString := fmt.Sprintf(addr)
|
||||
|
||||
g.logger.Info("Starting GRPC Server", zap.String("host", connectionString))
|
||||
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"codeword/internal/utils/middleware"
|
||||
"context"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||
"gitea.pena/PenaSide/common/log_mw"
|
||||
"gitea.pena/PenaSide/hlog"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/themakers/hlog"
|
||||
"go.uber.org/zap"
|
||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
|
||||
)
|
||||
|
||||
type ServerConfig struct {
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"codeword/internal/kafka/tariff"
|
||||
"codeword/internal/models"
|
||||
codeword_rpc "codeword/internal/proto/codeword"
|
||||
"codeword/internal/proto/discount"
|
||||
"codeword/internal/repository"
|
||||
"codeword/internal/utils/genID"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/kafka/tariff"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
codeword_rpc "gitea.pena/PenaSide/codeword/internal/proto/codeword"
|
||||
"gitea.pena/PenaSide/codeword/internal/proto/discount"
|
||||
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/genID"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.uber.org/zap"
|
||||
"time"
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"codeword/internal/adapters/client"
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/utils/encrypt"
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"gitea.pena/PenaSide/codeword/internal/adapters/client"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/encrypt"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"strings"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"codeword/internal/initialize"
|
||||
"errors"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"time"
|
||||
)
|
||||
@ -19,10 +19,10 @@ type JWT struct {
|
||||
|
||||
func NewJWT(configuration *initialize.Config) *JWT {
|
||||
return &JWT{
|
||||
privateKey: []byte(configuration.PrivateKey),
|
||||
publicKey: []byte(configuration.PublicKey),
|
||||
issuer: configuration.Issuer,
|
||||
audience: configuration.Audience,
|
||||
privateKey: []byte(configuration.ExternalCfg.JwtCfg.PrivateKey),
|
||||
publicKey: []byte(configuration.ExternalCfg.JwtCfg.PublicKey),
|
||||
issuer: configuration.ExternalCfg.JwtCfg.Issuer,
|
||||
audience: configuration.ExternalCfg.JwtCfg.Audience,
|
||||
algorithm: jwt.SigningMethodRS256,
|
||||
expiresIn: 15 * time.Minute,
|
||||
}
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package transfer
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/proto/broker"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/proto/broker"
|
||||
)
|
||||
|
||||
func PrivilegeModelToProto(privilege *models.Privilege) *broker.PrivilegeMessage {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package transfer
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/proto/broker"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/proto/broker"
|
||||
)
|
||||
|
||||
func TariffModelToProtoMessage(userID string, tariffModel *models.Tariff) *broker.TariffMessage {
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
package recovery_worker
|
||||
|
||||
import (
|
||||
"codeword/internal/adapters/client"
|
||||
"codeword/internal/models"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"gitea.pena/PenaSide/codeword/internal/adapters/client"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"github.com/go-redis/redis/v8"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
package e2e
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"codeword/tests/helpers"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/tests/helpers"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/pioz/faker"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package e2e
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package helpers
|
||||
|
||||
import (
|
||||
"codeword/internal/initialize"
|
||||
"codeword/internal/utils/middleware"
|
||||
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@ -30,9 +30,13 @@ func InitializeJWT() *middleware.JWT {
|
||||
-----END RSA PRIVATE KEY-----`, "\t", "", -1)
|
||||
|
||||
return middleware.NewJWT(&initialize.Config{
|
||||
PrivateKey: privateKey,
|
||||
PublicKey: publicKey,
|
||||
Audience: "pena",
|
||||
Issuer: "pena-auth-service",
|
||||
ExternalCfg: initialize.ExternalCfg{
|
||||
JwtCfg: initialize.JWTConfiguration{
|
||||
PrivateKey: privateKey,
|
||||
PublicKey: publicKey,
|
||||
Audience: "pena",
|
||||
Issuer: "pena-auth-service",
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
package repository_test
|
||||
|
||||
import (
|
||||
"codeword/internal/models"
|
||||
"codeword/internal/repository"
|
||||
"context"
|
||||
"fmt"
|
||||
"gitea.pena/PenaSide/codeword/internal/models"
|
||||
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||
"github.com/stretchr/testify/require"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user