From 9dcb01f17068e542190cb0811032084f3dc03dd6 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Thu, 29 Feb 2024 23:59:07 +0700 Subject: [PATCH 01/12] [config] introduce mode selection --- configs/config.example.yml | 3 +++ internal/config/config.go | 22 ++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/configs/config.example.yml b/configs/config.example.yml index f9a9a49..79fad75 100644 --- a/configs/config.example.yml +++ b/configs/config.example.yml @@ -1,3 +1,6 @@ +gateway: + mode: private + private_token: 123456789 http: # http server config listen: 127.0.0.1:3000 # listen address database: # database diff --git a/internal/config/config.go b/internal/config/config.go index 353c49c..c3d36af 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,21 +1,34 @@ package config +type GatewayMode string + +const ( + GatewayModePublic GatewayMode = "public" + GatewayModePrivate GatewayMode = "private" +) + type Config struct { + Gateway Gateway `yaml:"gateway"` HTTP HTTP `yaml:"http"` Database Database `yaml:"database"` FCM FCMConfig `yaml:"fcm"` Tasks Tasks `yaml:"tasks"` } +type Gateway struct { + Mode GatewayMode `yaml:"mode" envconfig:"GATEWAY__MODE"` // gateway mode: public or private + PrivateToken string `yaml:"private_token" envconfig:"GATEWAY__PRIVATE_TOKEN"` // device registration token in private mode +} + type HTTP struct { Listen string `yaml:"listen" envconfig:"HTTP__LISTEN"` } type Database struct { - Dialect string `yaml:"dialect" envconfig:"DATABASE__DIALECT"` - Host string `yaml:"host" envconfig:"DATABASE__HOST"` - Port int `yaml:"port" envconfig:"DATABASE__PORT"` - User string `yaml:"user" envconfig:"DATABASE__USER"` + Dialect string `yaml:"dialect" envconfig:"DATABASE__DIALECT"` + Host string `yaml:"host" envconfig:"DATABASE__HOST"` + Port int `yaml:"port" envconfig:"DATABASE__PORT"` + User string `yaml:"user" envconfig:"DATABASE__USER"` Password string `yaml:"password" envconfig:"DATABASE__PASSWORD"` Database string `yaml:"database" envconfig:"DATABASE__DATABASE"` Timezone string `yaml:"timezone" envconfig:"DATABASE__TIMEZONE"` @@ -36,6 +49,7 @@ type HashingTask struct { } var defaultConfig = Config{ + Gateway: Gateway{Mode: GatewayModePublic}, HTTP: HTTP{ Listen: ":3000", }, From 471b0c4c147bc6ded7778ebdfe99e6edb18502a8 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Fri, 1 Mar 2024 23:56:17 +0700 Subject: [PATCH 02/12] [auth] protect registration endpoint in private mode --- api/requests.http | 1 + internal/config/module.go | 7 +++ internal/sms-gateway/app.go | 2 + internal/sms-gateway/handlers/3rdparty.go | 5 +- internal/sms-gateway/handlers/mobile.go | 14 ++++-- internal/sms-gateway/modules/auth/module.go | 14 ++++++ .../auth.go => modules/auth/service.go} | 46 ++++++++++++++----- internal/sms-gateway/modules/auth/types.go | 8 ++++ internal/sms-gateway/services/module.go | 1 - 9 files changed, 80 insertions(+), 18 deletions(-) create mode 100644 internal/sms-gateway/modules/auth/module.go rename internal/sms-gateway/{services/auth.go => modules/auth/service.go} (62%) create mode 100644 internal/sms-gateway/modules/auth/types.go diff --git a/api/requests.http b/api/requests.http index bbfbaff..061c1bc 100644 --- a/api/requests.http +++ b/api/requests.http @@ -5,6 +5,7 @@ ### POST {{baseUrl}}/api/mobile/v1/device HTTP/1.1 +Authorization: 123456789 Content-Type: application/json { diff --git a/internal/config/module.go b/internal/config/module.go index 2fee934..255fbd8 100644 --- a/internal/config/module.go +++ b/internal/config/module.go @@ -6,6 +6,7 @@ import ( "github.com/capcom6/go-infra-fx/config" "github.com/capcom6/go-infra-fx/db" "github.com/capcom6/go-infra-fx/http" + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth" "github.com/capcom6/sms-gateway/internal/sms-gateway/services" "github.com/capcom6/sms-gateway/internal/sms-gateway/tasks" "go.uber.org/fx" @@ -51,4 +52,10 @@ var Module = fx.Module( Interval: time.Duration(cfg.Tasks.Hashing.IntervalSeconds) * time.Second, } }), + fx.Provide(func(cfg Config) auth.Config { + return auth.Config{ + Mode: auth.Mode(cfg.Gateway.Mode), + PrivateToken: cfg.Gateway.PrivateToken, + } + }), ) diff --git a/internal/sms-gateway/app.go b/internal/sms-gateway/app.go index 70344fc..bef2cab 100644 --- a/internal/sms-gateway/app.go +++ b/internal/sms-gateway/app.go @@ -11,6 +11,7 @@ import ( "github.com/capcom6/go-infra-fx/validator" appconfig "github.com/capcom6/sms-gateway/internal/config" "github.com/capcom6/sms-gateway/internal/sms-gateway/handlers" + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth" "github.com/capcom6/sms-gateway/internal/sms-gateway/repositories" "github.com/capcom6/sms-gateway/internal/sms-gateway/services" "github.com/capcom6/sms-gateway/internal/sms-gateway/tasks" @@ -28,6 +29,7 @@ var Module = fx.Module( validator.Module, handlers.Module, services.Module, + auth.Module, repositories.Module, db.Module, tasks.Module, diff --git a/internal/sms-gateway/handlers/3rdparty.go b/internal/sms-gateway/handlers/3rdparty.go index 52347cc..203e6c5 100644 --- a/internal/sms-gateway/handlers/3rdparty.go +++ b/internal/sms-gateway/handlers/3rdparty.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/capcom6/sms-gateway/internal/sms-gateway/models" + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth" "github.com/capcom6/sms-gateway/internal/sms-gateway/repositories" "github.com/capcom6/sms-gateway/internal/sms-gateway/services" "github.com/capcom6/sms-gateway/pkg/smsgateway" @@ -23,7 +24,7 @@ const ( type ThirdPartyHandlerParams struct { fx.In - AuthSvc *services.AuthService + AuthSvc *auth.Service MessagesSvc *services.MessagesService DevicesSvc *services.DevicesService @@ -34,7 +35,7 @@ type ThirdPartyHandlerParams struct { type thirdPartyHandler struct { Handler - authSvc *services.AuthService + authSvc *auth.Service messagesSvc *services.MessagesService devicesSvc *services.DevicesService } diff --git a/internal/sms-gateway/handlers/mobile.go b/internal/sms-gateway/handlers/mobile.go index e595e67..0058661 100644 --- a/internal/sms-gateway/handlers/mobile.go +++ b/internal/sms-gateway/handlers/mobile.go @@ -7,6 +7,7 @@ import ( "github.com/capcom6/go-infra-fx/http/apikey" "github.com/capcom6/sms-gateway/internal/sms-gateway/models" + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth" "github.com/capcom6/sms-gateway/internal/sms-gateway/repositories" "github.com/capcom6/sms-gateway/internal/sms-gateway/services" "github.com/capcom6/sms-gateway/pkg/smsgateway" @@ -21,7 +22,7 @@ import ( type mobileHandler struct { Handler - authSvc *services.AuthService + authSvc *auth.Service messagesSvc *services.MessagesService idGen func() string @@ -169,7 +170,14 @@ func (h *mobileHandler) authorize(handler func(models.Device, *fiber.Ctx) error) func (h *mobileHandler) Register(router fiber.Router) { router = router.Group("/mobile/v1") - router.Post("/device", limiter.New(), h.postDevice) + router.Post("/device", limiter.New(), func(c *fiber.Ctx) error { + token := c.Get(fiber.HeaderAuthorization) + if h.authSvc.AuthorizeRegistration(token) != nil { + return fiber.ErrUnauthorized + } + + return c.Next() + }, h.postDevice) router.Use(apikey.New(apikey.Config{ Authorizer: func(token string) bool { @@ -189,7 +197,7 @@ type MobileHandlerParams struct { Logger *zap.Logger Validator *validator.Validate - AuthSvc *services.AuthService + AuthSvc *auth.Service MessagesSvc *services.MessagesService } diff --git a/internal/sms-gateway/modules/auth/module.go b/internal/sms-gateway/modules/auth/module.go new file mode 100644 index 0000000..85d4c69 --- /dev/null +++ b/internal/sms-gateway/modules/auth/module.go @@ -0,0 +1,14 @@ +package auth + +import ( + "go.uber.org/fx" + "go.uber.org/zap" +) + +var Module = fx.Module( + "auth", + fx.Decorate(func(log *zap.Logger) *zap.Logger { + return log.Named("auth") + }), + fx.Provide(New), +) diff --git a/internal/sms-gateway/services/auth.go b/internal/sms-gateway/modules/auth/service.go similarity index 62% rename from internal/sms-gateway/services/auth.go rename to internal/sms-gateway/modules/auth/service.go index 515afb9..0dab99a 100644 --- a/internal/sms-gateway/services/auth.go +++ b/internal/sms-gateway/modules/auth/service.go @@ -1,4 +1,4 @@ -package services +package auth import ( "fmt" @@ -11,7 +11,9 @@ import ( "go.uber.org/zap" ) -type AuthService struct { +type Service struct { + config Config + users *repositories.UsersRepository devices *repositories.DevicesRepository @@ -20,14 +22,14 @@ type AuthService struct { idgen func() string } -func (s *AuthService) RegisterUser(login, password string) (models.User, error) { +func (s *Service) RegisterUser(login, password string) (models.User, error) { user := models.User{ ID: login, } var err error if user.PasswordHash, err = crypto.MakeBCryptHash(password); err != nil { - return user, err + return user, fmt.Errorf("can't hash password: %w", err) } if err = s.users.Insert(&user); err != nil { @@ -37,7 +39,7 @@ func (s *AuthService) RegisterUser(login, password string) (models.User, error) return user, nil } -func (s *AuthService) RegisterDevice(userID string, name, pushToken *string) (models.Device, error) { +func (s *Service) RegisterDevice(userID string, name, pushToken *string) (models.Device, error) { device := models.Device{ ID: s.idgen(), Name: name, @@ -49,11 +51,23 @@ func (s *AuthService) RegisterDevice(userID string, name, pushToken *string) (mo return device, s.devices.Insert(&device) } -func (s *AuthService) UpdateDevice(id, pushToken string) error { +func (s *Service) UpdateDevice(id, pushToken string) error { return s.devices.UpdateToken(id, pushToken) } -func (s *AuthService) AuthorizeDevice(token string) (models.Device, error) { +func (s *Service) AuthorizeRegistration(token string) error { + if s.config.Mode == ModePublic { + return nil + } + + if token == s.config.PrivateToken { + return nil + } + + return fmt.Errorf("invalid token") +} + +func (s *Service) AuthorizeDevice(token string) (models.Device, error) { device, err := s.devices.GetByToken(token) if err != nil { return device, err @@ -66,7 +80,7 @@ func (s *AuthService) AuthorizeDevice(token string) (models.Device, error) { return device, nil } -func (s *AuthService) AuthorizeUser(username, password string) (models.User, error) { +func (s *Service) AuthorizeUser(username, password string) (models.User, error) { user, err := s.users.GetByLogin(username) if err != nil { return user, err @@ -75,22 +89,30 @@ func (s *AuthService) AuthorizeUser(username, password string) (models.User, err return user, crypto.CompareBCryptHash(user.PasswordHash, password) } -type AuthServiceParams struct { +type Config struct { + Mode Mode + PrivateToken string +} + +type Params struct { fx.In + Config Config + Users *repositories.UsersRepository Devices *repositories.DevicesRepository Logger *zap.Logger } -func NewAuthService(params AuthServiceParams) *AuthService { +func New(params Params) *Service { idgen, _ := nanoid.Standard(21) - return &AuthService{ + return &Service{ + config: params.Config, users: params.Users, devices: params.Devices, - logger: params.Logger.Named("AuthService"), + logger: params.Logger.Named("Service"), idgen: idgen, } } diff --git a/internal/sms-gateway/modules/auth/types.go b/internal/sms-gateway/modules/auth/types.go new file mode 100644 index 0000000..88607fc --- /dev/null +++ b/internal/sms-gateway/modules/auth/types.go @@ -0,0 +1,8 @@ +package auth + +type Mode string + +const ( + ModePublic Mode = "public" + ModePrivate Mode = "private" +) diff --git a/internal/sms-gateway/services/module.go b/internal/sms-gateway/services/module.go index 9553ade..f070a9e 100644 --- a/internal/sms-gateway/services/module.go +++ b/internal/sms-gateway/services/module.go @@ -11,7 +11,6 @@ var Module = fx.Module( return log.Named("services") }), fx.Provide( - NewAuthService, NewMessagesService, NewPushService, NewDevicesService, From 5b0c7680516ca218fad63e735c8a6d44f8a6a21c Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Sun, 3 Mar 2024 00:17:32 +0700 Subject: [PATCH 03/12] [push] create `push` module with FCM client --- internal/config/module.go | 25 +++- internal/sms-gateway/app.go | 4 +- internal/sms-gateway/modules/auth/service.go | 10 +- .../sms-gateway/modules/push/fcm/client.go | 70 +++++++++ internal/sms-gateway/modules/push/module.go | 38 +++++ internal/sms-gateway/modules/push/service.go | 99 +++++++++++++ internal/sms-gateway/modules/push/types.go | 16 ++ internal/sms-gateway/services/messages.go | 5 +- internal/sms-gateway/services/module.go | 1 - internal/sms-gateway/services/push.go | 139 ------------------ 10 files changed, 253 insertions(+), 154 deletions(-) create mode 100644 internal/sms-gateway/modules/push/fcm/client.go create mode 100644 internal/sms-gateway/modules/push/module.go create mode 100644 internal/sms-gateway/modules/push/service.go create mode 100644 internal/sms-gateway/modules/push/types.go delete mode 100644 internal/sms-gateway/services/push.go diff --git a/internal/config/module.go b/internal/config/module.go index 255fbd8..9bb11fd 100644 --- a/internal/config/module.go +++ b/internal/config/module.go @@ -7,7 +7,7 @@ import ( "github.com/capcom6/go-infra-fx/db" "github.com/capcom6/go-infra-fx/http" "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth" - "github.com/capcom6/sms-gateway/internal/sms-gateway/services" + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/push" "github.com/capcom6/sms-gateway/internal/sms-gateway/tasks" "go.uber.org/fx" "go.uber.org/zap" @@ -40,12 +40,25 @@ var Module = fx.Module( Timezone: cfg.Database.Timezone, } }), - fx.Provide(func(cfg Config) services.PushServiceConfig { - return services.PushServiceConfig{ - CredentialsJSON: cfg.FCM.CredentialsJSON, - Debounce: time.Duration(cfg.FCM.DebounceSeconds) * time.Second, - Timeout: time.Duration(cfg.FCM.TimeoutSeconds) * time.Second, + fx.Provide(func(cfg Config) push.Config { + mode := push.ModeFCM + if cfg.Gateway.Mode == "private" { + mode = push.ModeUpstream } + + return push.Config{ + Mode: mode, + ClientOptions: map[string]string{ + "credentials": cfg.FCM.CredentialsJSON, + }, + Debounce: time.Duration(cfg.FCM.DebounceSeconds) * time.Second, + Timeout: time.Duration(cfg.FCM.TimeoutSeconds) * time.Second, + } + // return services.PushServiceConfig{ + // CredentialsJSON: cfg.FCM.CredentialsJSON, + // Debounce: time.Duration(cfg.FCM.DebounceSeconds) * time.Second, + // Timeout: time.Duration(cfg.FCM.TimeoutSeconds) * time.Second, + // } }), fx.Provide(func(cfg Config) tasks.HashingTaskConfig { return tasks.HashingTaskConfig{ diff --git a/internal/sms-gateway/app.go b/internal/sms-gateway/app.go index bef2cab..2bd6089 100644 --- a/internal/sms-gateway/app.go +++ b/internal/sms-gateway/app.go @@ -12,6 +12,7 @@ import ( appconfig "github.com/capcom6/sms-gateway/internal/config" "github.com/capcom6/sms-gateway/internal/sms-gateway/handlers" "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth" + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/push" "github.com/capcom6/sms-gateway/internal/sms-gateway/repositories" "github.com/capcom6/sms-gateway/internal/sms-gateway/services" "github.com/capcom6/sms-gateway/internal/sms-gateway/tasks" @@ -30,6 +31,7 @@ var Module = fx.Module( handlers.Module, services.Module, auth.Module, + push.Module, repositories.Module, db.Module, tasks.Module, @@ -57,7 +59,7 @@ type StartParams struct { Server *http.Server HashingTask *tasks.HashingTask - PushService *services.PushService + PushService *push.Service } func Start(p StartParams) error { diff --git a/internal/sms-gateway/modules/auth/service.go b/internal/sms-gateway/modules/auth/service.go index 0dab99a..37f3179 100644 --- a/internal/sms-gateway/modules/auth/service.go +++ b/internal/sms-gateway/modules/auth/service.go @@ -11,6 +11,11 @@ import ( "go.uber.org/zap" ) +type Config struct { + Mode Mode + PrivateToken string +} + type Service struct { config Config @@ -89,11 +94,6 @@ func (s *Service) AuthorizeUser(username, password string) (models.User, error) return user, crypto.CompareBCryptHash(user.PasswordHash, password) } -type Config struct { - Mode Mode - PrivateToken string -} - type Params struct { fx.In diff --git a/internal/sms-gateway/modules/push/fcm/client.go b/internal/sms-gateway/modules/push/fcm/client.go new file mode 100644 index 0000000..b31effc --- /dev/null +++ b/internal/sms-gateway/modules/push/fcm/client.go @@ -0,0 +1,70 @@ +package fcm + +import ( + "context" + "fmt" + "sync" + + firebase "firebase.google.com/go/v4" + "firebase.google.com/go/v4/messaging" + "google.golang.org/api/option" +) + +type Client struct { + options map[string]string + + client *messaging.Client + mux sync.Mutex +} + +func New(options map[string]string) (*Client, error) { + return &Client{ + options: options, + }, nil +} + +func (c *Client) Open(ctx context.Context) error { + c.mux.Lock() + defer c.mux.Unlock() + + if c.client != nil { + return nil + } + + creds := c.options["credentials"] + if creds == "" { + return fmt.Errorf("no credentials provided") + } + + opt := option.WithCredentialsJSON([]byte(creds)) + + app, err := firebase.NewApp(ctx, nil, opt) + if err != nil { + return fmt.Errorf("can't create firebase app: %w", err) + } + + c.client, err = app.Messaging(ctx) + if err != nil { + return fmt.Errorf("can't create firebase messaging client: %w", err) + } + + return nil +} + +func (c *Client) Send(ctx context.Context, address string, payload map[string]string) error { + _, err := c.client.Send(ctx, &messaging.Message{ + Data: payload, + Android: &messaging.AndroidConfig{ + Priority: "high", + }, + Token: address, + }) + + return err +} + +func (c *Client) Close(ctx context.Context) error { + c.client = nil + + return nil +} diff --git a/internal/sms-gateway/modules/push/module.go b/internal/sms-gateway/modules/push/module.go new file mode 100644 index 0000000..170ac30 --- /dev/null +++ b/internal/sms-gateway/modules/push/module.go @@ -0,0 +1,38 @@ +package push + +import ( + "context" + + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/push/fcm" + "go.uber.org/fx" + "go.uber.org/zap" +) + +var Module = fx.Module( + "push", + fx.Decorate(func(log *zap.Logger) *zap.Logger { + return log.Named("push") + }), + fx.Provide( + func(cfg Config, lc fx.Lifecycle) (client, error) { + client, err := fcm.New(cfg.ClientOptions) + if err != nil { + return nil, err + } + + lc.Append(fx.Hook{ + OnStart: func(ctx context.Context) error { + return client.Open(ctx) + }, + OnStop: func(ctx context.Context) error { + return client.Close(ctx) + }, + }) + + return client, nil + }, + ), + fx.Provide( + New, + ), +) diff --git a/internal/sms-gateway/modules/push/service.go b/internal/sms-gateway/modules/push/service.go new file mode 100644 index 0000000..7ca5e85 --- /dev/null +++ b/internal/sms-gateway/modules/push/service.go @@ -0,0 +1,99 @@ +package push + +import ( + "context" + "time" + + "github.com/capcom6/sms-gateway/pkg/types/cache" + "go.uber.org/fx" + "go.uber.org/zap" +) + +type Config struct { + Mode Mode + + ClientOptions map[string]string + + Debounce time.Duration + Timeout time.Duration +} + +type Params struct { + fx.In + + Config Config + + Client client + + Logger *zap.Logger +} + +type Service struct { + config Config + + client client + + cache *cache.Cache[map[string]string] + + logger *zap.Logger +} + +func New(params Params) *Service { + if params.Config.Timeout == 0 { + params.Config.Timeout = time.Second + } + if params.Config.Debounce < 5*time.Second { + params.Config.Debounce = 5 * time.Second + } + + return &Service{ + config: params.Config, + client: params.Client, + cache: cache.New[map[string]string](), + logger: params.Logger, + } +} + +// Run runs the service with the provided context if a debounce is set. +func (s *Service) Run(ctx context.Context) { + ticker := time.NewTicker(s.config.Debounce) + defer ticker.Stop() + + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + s.sendAll(ctx) + } + } +} + +// Enqueue adds the data to the cache and immediately sends all messages if the debounce is 0. +func (s *Service) Enqueue(ctx context.Context, token string, data map[string]string) error { + s.cache.Set(token, data) + + return nil +} + +// sendAll sends messages to all targets from the cache after initializing the service. +func (s *Service) sendAll(ctx context.Context) { + targets := s.cache.Drain() + if len(targets) == 0 { + return + } + + s.logger.Info("Sending messages", zap.Int("count", len(targets))) + for token, data := range targets { + singleCtx, cancel := context.WithTimeout(ctx, s.config.Timeout) + if err := s.sendSingle(singleCtx, token, data); err != nil { + s.logger.Error("Can't send message", zap.String("token", token), zap.Error(err)) + } + cancel() + } +} + +// sendSingle sends a single message to the specified token +func (s *Service) sendSingle(ctx context.Context, token string, data map[string]string) error { + return s.client.Send(ctx, token, data) +} diff --git a/internal/sms-gateway/modules/push/types.go b/internal/sms-gateway/modules/push/types.go new file mode 100644 index 0000000..4f8581c --- /dev/null +++ b/internal/sms-gateway/modules/push/types.go @@ -0,0 +1,16 @@ +package push + +import "context" + +type Mode string + +const ( + ModeFCM Mode = "fcm" + ModeUpstream Mode = "upstream" +) + +type client interface { + Open(ctx context.Context) error + Send(ctx context.Context, address string, payload map[string]string) error + Close(ctx context.Context) error +} diff --git a/internal/sms-gateway/services/messages.go b/internal/sms-gateway/services/messages.go index b8a7922..3c96360 100644 --- a/internal/sms-gateway/services/messages.go +++ b/internal/sms-gateway/services/messages.go @@ -7,6 +7,7 @@ import ( "time" "github.com/capcom6/sms-gateway/internal/sms-gateway/models" + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/push" "github.com/capcom6/sms-gateway/internal/sms-gateway/repositories" "github.com/capcom6/sms-gateway/pkg/slices" "github.com/capcom6/sms-gateway/pkg/smsgateway" @@ -35,13 +36,13 @@ type MessagesServiceParams struct { fx.In Messages *repositories.MessagesRepository - PushSvc *PushService + PushSvc *push.Service Logger *zap.Logger } type MessagesService struct { Messages *repositories.MessagesRepository - PushSvc *PushService + PushSvc *push.Service Logger *zap.Logger idgen func() string diff --git a/internal/sms-gateway/services/module.go b/internal/sms-gateway/services/module.go index f070a9e..7c92b51 100644 --- a/internal/sms-gateway/services/module.go +++ b/internal/sms-gateway/services/module.go @@ -12,7 +12,6 @@ var Module = fx.Module( }), fx.Provide( NewMessagesService, - NewPushService, NewDevicesService, ), ) diff --git a/internal/sms-gateway/services/push.go b/internal/sms-gateway/services/push.go deleted file mode 100644 index 4e58441..0000000 --- a/internal/sms-gateway/services/push.go +++ /dev/null @@ -1,139 +0,0 @@ -package services - -import ( - "context" - "sync" - "time" - - firebase "firebase.google.com/go/v4" - "firebase.google.com/go/v4/messaging" - "github.com/capcom6/sms-gateway/pkg/types/cache" - "go.uber.org/fx" - "go.uber.org/zap" - "google.golang.org/api/option" -) - -type PushServiceParams struct { - fx.In - - Config PushServiceConfig - Logger *zap.Logger -} - -type PushService struct { - Config PushServiceConfig - - Logger *zap.Logger - - client *messaging.Client - mux sync.Mutex - - cache *cache.Cache[map[string]string] -} - -type PushServiceConfig struct { - CredentialsJSON string - Debounce time.Duration - Timeout time.Duration -} - -// NewPushService creates a new PushService. -func NewPushService(params PushServiceParams) *PushService { - if params.Config.Timeout == 0 { - params.Config.Timeout = time.Second - } - - return &PushService{ - Config: params.Config, - Logger: params.Logger, - cache: cache.New[map[string]string](), - } -} - -// init initializes the FCM client. -func (s *PushService) init(ctx context.Context) (err error) { - s.mux.Lock() - defer s.mux.Unlock() - - if s.client != nil { - return - } - - opt := option.WithCredentialsJSON([]byte(s.Config.CredentialsJSON)) - - var app *firebase.App - app, err = firebase.NewApp(ctx, nil, opt) - - if err != nil { - return - } - - s.client, err = app.Messaging(ctx) - - return -} - -// sendAll sends messages to all targets from the cache after initializing the service. -func (s *PushService) sendAll(ctx context.Context) { - if err := s.init(ctx); err != nil { - s.Logger.Error("Can't init push service", zap.Error(err)) - return - } - - targets := s.cache.Drain() - if len(targets) == 0 { - return - } - - s.Logger.Info("Sending messages", zap.Int("count", len(targets))) - for token, data := range targets { - singleCtx, cancel := context.WithTimeout(ctx, s.Config.Timeout) - if err := s.sendSingle(singleCtx, token, data); err != nil { - s.Logger.Error("Can't send message", zap.String("token", token), zap.Error(err)) - } - cancel() - } -} - -// sendSingle sends a single message to the specified token -func (s *PushService) sendSingle(ctx context.Context, token string, data map[string]string) error { - _, err := s.client.Send(ctx, &messaging.Message{ - Data: data, - Android: &messaging.AndroidConfig{ - Priority: "high", - }, - Token: token, - }) - - return err -} - -// Run runs the service with the provided context if a debounce is set. -func (s *PushService) Run(ctx context.Context) { - if s.Config.Debounce == 0 { - return - } - - ticker := time.NewTicker(s.Config.Debounce) - defer ticker.Stop() - - for { - select { - case <-ctx.Done(): - return - case <-ticker.C: - s.sendAll(ctx) - } - } -} - -// Enqueue adds the data to the cache and immediately sends all messages if the debounce is 0. -func (s *PushService) Enqueue(ctx context.Context, token string, data map[string]string) error { - s.cache.Set(token, data) - - if s.Config.Debounce == 0 { - s.sendAll(ctx) - } - - return nil -} From 9c33f1af00d6e51edfa0309315e4f6bb00348982 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Mon, 4 Mar 2024 23:46:59 +0700 Subject: [PATCH 04/12] [api/upstream] add upstream push endpoint [push] send to upstream in private mode --- api/requests.http | 10 +++ internal/config/module.go | 11 +-- internal/sms-gateway/handlers/config.go | 12 +++ internal/sms-gateway/handlers/module.go | 1 + internal/sms-gateway/handlers/upstream.go | 77 ++++++++++++++++ internal/sms-gateway/modules/auth/service.go | 46 +++++----- .../sms-gateway/modules/push/fcm/client.go | 26 ++++-- internal/sms-gateway/modules/push/module.go | 19 ++-- internal/sms-gateway/modules/push/service.go | 15 +--- internal/sms-gateway/modules/push/types.go | 2 +- .../modules/push/upstream/client.go | 88 +++++++++++++++++++ pkg/smsgateway/domain.go | 4 + pkg/smsgateway/requests.go | 2 + 13 files changed, 259 insertions(+), 54 deletions(-) create mode 100644 internal/sms-gateway/handlers/config.go create mode 100644 internal/sms-gateway/handlers/upstream.go create mode 100644 internal/sms-gateway/modules/push/upstream/client.go diff --git a/api/requests.http b/api/requests.http index 061c1bc..7d4c9d8 100644 --- a/api/requests.http +++ b/api/requests.http @@ -73,3 +73,13 @@ Content-Type: application/json ] } ] + +### +POST {{baseUrl}}/api/upstream/v1/push HTTP/1.1 +Content-Type: application/json + +[ + { + "token": "eTxx88nfSla87gZuJcW5mS:APA91bHGxVgSqqRtxwFHD1q9em5Oa6xSP4gO_OZRrqOoP1wjf_7UMfXKsc4uws6rWkqn73jYCc1owyATB1v61mqak4ntpqtmRkNtTey7NQXa0Wz3uQZBWY-Ecbn2rWG2VJRihOzXRId-" + } +] \ No newline at end of file diff --git a/internal/config/module.go b/internal/config/module.go index 9bb11fd..d6da29f 100644 --- a/internal/config/module.go +++ b/internal/config/module.go @@ -6,6 +6,7 @@ import ( "github.com/capcom6/go-infra-fx/config" "github.com/capcom6/go-infra-fx/db" "github.com/capcom6/go-infra-fx/http" + "github.com/capcom6/sms-gateway/internal/sms-gateway/handlers" "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/auth" "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/push" "github.com/capcom6/sms-gateway/internal/sms-gateway/tasks" @@ -54,11 +55,6 @@ var Module = fx.Module( Debounce: time.Duration(cfg.FCM.DebounceSeconds) * time.Second, Timeout: time.Duration(cfg.FCM.TimeoutSeconds) * time.Second, } - // return services.PushServiceConfig{ - // CredentialsJSON: cfg.FCM.CredentialsJSON, - // Debounce: time.Duration(cfg.FCM.DebounceSeconds) * time.Second, - // Timeout: time.Duration(cfg.FCM.TimeoutSeconds) * time.Second, - // } }), fx.Provide(func(cfg Config) tasks.HashingTaskConfig { return tasks.HashingTaskConfig{ @@ -71,4 +67,9 @@ var Module = fx.Module( PrivateToken: cfg.Gateway.PrivateToken, } }), + fx.Provide(func(cfg Config) handlers.Config { + return handlers.Config{ + GatewayMode: handlers.GatewayMode(cfg.Gateway.Mode), + } + }), ) diff --git a/internal/sms-gateway/handlers/config.go b/internal/sms-gateway/handlers/config.go new file mode 100644 index 0000000..e63f842 --- /dev/null +++ b/internal/sms-gateway/handlers/config.go @@ -0,0 +1,12 @@ +package handlers + +type GatewayMode string + +const ( + GatewayModePrivate GatewayMode = "private" + GatewayModePublic GatewayMode = "public" +) + +type Config struct { + GatewayMode GatewayMode +} diff --git a/internal/sms-gateway/handlers/module.go b/internal/sms-gateway/handlers/module.go index 34683c4..64906bc 100644 --- a/internal/sms-gateway/handlers/module.go +++ b/internal/sms-gateway/handlers/module.go @@ -15,5 +15,6 @@ var Module = fx.Module( http.AsRootHandler(newRootHandler), http.AsApiHandler(newThirdPartyHandler), http.AsApiHandler(newMobileHandler), + http.AsApiHandler(newUpstreamHandler), ), ) diff --git a/internal/sms-gateway/handlers/upstream.go b/internal/sms-gateway/handlers/upstream.go new file mode 100644 index 0000000..190886c --- /dev/null +++ b/internal/sms-gateway/handlers/upstream.go @@ -0,0 +1,77 @@ +package handlers + +import ( + "time" + + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/push" + "github.com/capcom6/sms-gateway/pkg/smsgateway" + "github.com/go-playground/validator/v10" + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/limiter" + "go.uber.org/fx" + "go.uber.org/zap" +) + +type upstreamHandler struct { + Handler + + config Config + pushSvc *push.Service +} + +type upstreamHandlerParams struct { + fx.In + + Config Config + PushSvc *push.Service + + Logger *zap.Logger + Validator *validator.Validate +} + +func newUpstreamHandler(params upstreamHandlerParams) *upstreamHandler { + return &upstreamHandler{ + Handler: Handler{Logger: params.Logger, Validator: params.Validator}, + config: params.Config, + pushSvc: params.PushSvc, + } +} + +func (h *upstreamHandler) postPush(c *fiber.Ctx) error { + req := smsgateway.UpstreamPushRequest{} + + if err := c.BodyParser(&req); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + + if len(req) == 0 { + return fiber.NewError(fiber.StatusBadRequest, "Empty request") + } + + for _, v := range req { + if err := h.validateStruct(v); err != nil { + return err + } + + if err := h.pushSvc.Enqueue(c.Context(), v.Token, map[string]string{}); err != nil { + h.Logger.Error("Can't push message", zap.Error(err)) + } + } + + return c.SendStatus(fiber.StatusAccepted) +} + +func (h *upstreamHandler) Register(router fiber.Router) { + // register only in public mode + if h.config.GatewayMode != GatewayModePublic { + return + } + + router = router.Group("/upstream/v1") + + router.Post("/push", limiter.New(limiter.Config{ + Max: 5, + Expiration: 60 * time.Second, + LimiterMiddleware: limiter.SlidingWindow{}, + }), h.postPush) +} diff --git a/internal/sms-gateway/modules/auth/service.go b/internal/sms-gateway/modules/auth/service.go index 37f3179..67e35ef 100644 --- a/internal/sms-gateway/modules/auth/service.go +++ b/internal/sms-gateway/modules/auth/service.go @@ -16,6 +16,17 @@ type Config struct { PrivateToken string } +type Params struct { + fx.In + + Config Config + + Users *repositories.UsersRepository + Devices *repositories.DevicesRepository + + Logger *zap.Logger +} + type Service struct { config Config @@ -27,6 +38,18 @@ type Service struct { idgen func() string } +func New(params Params) *Service { + idgen, _ := nanoid.Standard(21) + + return &Service{ + config: params.Config, + users: params.Users, + devices: params.Devices, + logger: params.Logger.Named("Service"), + idgen: idgen, + } +} + func (s *Service) RegisterUser(login, password string) (models.User, error) { user := models.User{ ID: login, @@ -93,26 +116,3 @@ func (s *Service) AuthorizeUser(username, password string) (models.User, error) return user, crypto.CompareBCryptHash(user.PasswordHash, password) } - -type Params struct { - fx.In - - Config Config - - Users *repositories.UsersRepository - Devices *repositories.DevicesRepository - - Logger *zap.Logger -} - -func New(params Params) *Service { - idgen, _ := nanoid.Standard(21) - - return &Service{ - config: params.Config, - users: params.Users, - devices: params.Devices, - logger: params.Logger.Named("Service"), - idgen: idgen, - } -} diff --git a/internal/sms-gateway/modules/push/fcm/client.go b/internal/sms-gateway/modules/push/fcm/client.go index b31effc..729947e 100644 --- a/internal/sms-gateway/modules/push/fcm/client.go +++ b/internal/sms-gateway/modules/push/fcm/client.go @@ -2,6 +2,7 @@ package fcm import ( "context" + "errors" "fmt" "sync" @@ -51,16 +52,23 @@ func (c *Client) Open(ctx context.Context) error { return nil } -func (c *Client) Send(ctx context.Context, address string, payload map[string]string) error { - _, err := c.client.Send(ctx, &messaging.Message{ - Data: payload, - Android: &messaging.AndroidConfig{ - Priority: "high", - }, - Token: address, - }) +func (c *Client) Send(ctx context.Context, messages map[string]map[string]string) error { + errs := make([]error, 0, len(messages)) + for address, payload := range messages { + _, err := c.client.Send(ctx, &messaging.Message{ + Data: payload, + Android: &messaging.AndroidConfig{ + Priority: "high", + }, + Token: address, + }) + + if err != nil { + errs = append(errs, fmt.Errorf("can't send message to %s: %w", address, err)) + } + } - return err + return errors.Join(errs...) } func (c *Client) Close(ctx context.Context) error { diff --git a/internal/sms-gateway/modules/push/module.go b/internal/sms-gateway/modules/push/module.go index 170ac30..9a0b917 100644 --- a/internal/sms-gateway/modules/push/module.go +++ b/internal/sms-gateway/modules/push/module.go @@ -2,8 +2,10 @@ package push import ( "context" + "errors" "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/push/fcm" + "github.com/capcom6/sms-gateway/internal/sms-gateway/modules/push/upstream" "go.uber.org/fx" "go.uber.org/zap" ) @@ -14,22 +16,29 @@ var Module = fx.Module( return log.Named("push") }), fx.Provide( - func(cfg Config, lc fx.Lifecycle) (client, error) { - client, err := fcm.New(cfg.ClientOptions) + func(cfg Config, lc fx.Lifecycle) (c client, err error) { + if cfg.Mode == ModeFCM { + c, err = fcm.New(cfg.ClientOptions) + } else if cfg.Mode == ModeUpstream { + c, err = upstream.New(cfg.ClientOptions) + } else { + return nil, errors.New("invalid push mode") + } + if err != nil { return nil, err } lc.Append(fx.Hook{ OnStart: func(ctx context.Context) error { - return client.Open(ctx) + return c.Open(ctx) }, OnStop: func(ctx context.Context) error { - return client.Close(ctx) + return c.Close(ctx) }, }) - return client, nil + return c, nil }, ), fx.Provide( diff --git a/internal/sms-gateway/modules/push/service.go b/internal/sms-gateway/modules/push/service.go index 7ca5e85..d69cc0f 100644 --- a/internal/sms-gateway/modules/push/service.go +++ b/internal/sms-gateway/modules/push/service.go @@ -84,16 +84,9 @@ func (s *Service) sendAll(ctx context.Context) { } s.logger.Info("Sending messages", zap.Int("count", len(targets))) - for token, data := range targets { - singleCtx, cancel := context.WithTimeout(ctx, s.config.Timeout) - if err := s.sendSingle(singleCtx, token, data); err != nil { - s.logger.Error("Can't send message", zap.String("token", token), zap.Error(err)) - } - cancel() + ctx, cancel := context.WithTimeout(ctx, s.config.Timeout) + if err := s.client.Send(ctx, targets); err != nil { + s.logger.Error("Can't send messages", zap.Error(err)) } -} - -// sendSingle sends a single message to the specified token -func (s *Service) sendSingle(ctx context.Context, token string, data map[string]string) error { - return s.client.Send(ctx, token, data) + cancel() } diff --git a/internal/sms-gateway/modules/push/types.go b/internal/sms-gateway/modules/push/types.go index 4f8581c..a072dcd 100644 --- a/internal/sms-gateway/modules/push/types.go +++ b/internal/sms-gateway/modules/push/types.go @@ -11,6 +11,6 @@ const ( type client interface { Open(ctx context.Context) error - Send(ctx context.Context, address string, payload map[string]string) error + Send(ctx context.Context, messages map[string]map[string]string) error Close(ctx context.Context) error } diff --git a/internal/sms-gateway/modules/push/upstream/client.go b/internal/sms-gateway/modules/push/upstream/client.go new file mode 100644 index 0000000..b22a48e --- /dev/null +++ b/internal/sms-gateway/modules/push/upstream/client.go @@ -0,0 +1,88 @@ +package upstream + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "sync" + + "github.com/capcom6/sms-gateway/pkg/smsgateway" +) + +const BASE_URL = "https://sms.capcom.me/api/upstream/v1" + +type Client struct { + options map[string]string + + client *http.Client + mux sync.Mutex +} + +func New(options map[string]string) (*Client, error) { + return &Client{ + options: options, + }, nil +} + +func (c *Client) Open(ctx context.Context) error { + c.mux.Lock() + defer c.mux.Unlock() + + if c.client != nil { + return nil + } + + c.client = &http.Client{} + + return nil +} + +func (c *Client) Send(ctx context.Context, messages map[string]map[string]string) error { + payload := make(smsgateway.UpstreamPushRequest, 0, len(messages)) + + for address := range messages { + payload = append(payload, smsgateway.PushNotification{ + Token: address, + }) + } + + payloadBytes, err := json.Marshal(payload) + if err != nil { + return fmt.Errorf("can't marshal payload: %w", err) + } + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, BASE_URL+"/push", bytes.NewReader(payloadBytes)) + if err != nil { + return fmt.Errorf("can't create request: %w", err) + } + + req.Header.Set("Content-Type", "application/json") + + resp, err := c.client.Do(req) + if err != nil { + return fmt.Errorf("can't send request: %w", err) + } + + defer func() { + _, _ = io.Copy(io.Discard, resp.Body) + _ = resp.Body.Close() + }() + + if resp.StatusCode >= 400 { + return fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + return nil +} + +func (c *Client) Close(ctx context.Context) error { + c.mux.Lock() + defer c.mux.Unlock() + + c.client = nil + + return nil +} diff --git a/pkg/smsgateway/domain.go b/pkg/smsgateway/domain.go index 062b612..0202fdf 100644 --- a/pkg/smsgateway/domain.go +++ b/pkg/smsgateway/domain.go @@ -60,3 +60,7 @@ type RecipientState struct { State ProcessState `json:"state" validate:"required" example:"Pending"` // Состояние Error *string `json:"error,omitempty" example:"timeout"` // Ошибка } + +type PushNotification struct { + Token string `json:"token" validate:"required" example:"PyDmBQZZXYmyxMwED8Fzy"` +} diff --git a/pkg/smsgateway/requests.go b/pkg/smsgateway/requests.go index ca56a70..381ff22 100644 --- a/pkg/smsgateway/requests.go +++ b/pkg/smsgateway/requests.go @@ -11,3 +11,5 @@ type MobileUpdateRequest struct { Id string `json:"id" example:"QslD_GefqiYV6RQXdkM6V"` // Идентификатор, если есть PushToken string `json:"pushToken" validate:"omitempty,max=256" example:"gHz-T6NezDlOfllr7F-Be"` // Токен для отправки PUSH-уведомлений } + +type UpstreamPushRequest = []PushNotification From 9d7bb54459313503a5bce6022411000f4d0b8a83 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Thu, 7 Mar 2024 17:00:41 +0700 Subject: [PATCH 05/12] [docs] add some information about private mode --- README.md | 97 ++++++++----------- bitbucket-pipelines.yml | 81 ---------------- configs/config.example.yml | 40 ++++---- .../docker-swarm-terraform/providers.tf | 5 - .../docker-swarm-terraform/variables.tf | 6 -- internal/config/config.go | 34 +++---- web/mkdocs/docs/getting-started.md | 41 -------- web/mkdocs/docs/getting-started/index.md | 11 +++ .../docs/getting-started/local-server.md | 19 ++++ .../docs/getting-started/private-server.md | 32 ++++++ .../getting-started/public-cloud-server.md | 20 ++++ web/mkdocs/docs/index.md | 5 +- web/mkdocs/mkdocs.yml | 6 +- 13 files changed, 166 insertions(+), 231 deletions(-) delete mode 100644 bitbucket-pipelines.yml delete mode 100644 web/mkdocs/docs/getting-started.md create mode 100644 web/mkdocs/docs/getting-started/index.md create mode 100644 web/mkdocs/docs/getting-started/local-server.md create mode 100644 web/mkdocs/docs/getting-started/private-server.md create mode 100644 web/mkdocs/docs/getting-started/public-cloud-server.md diff --git a/README.md b/README.md index 9962396..a671ea0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,12 @@ +[![Contributors][contributors-shield]][contributors-url] +[![Forks][forks-shield]][forks-url] +[![Stargazers][stars-shield]][stars-url] +[![Issues][issues-shield]][issues-url] +[![Apache 2.0 License][license-shield]][license-url] + # Android SMS Gateway Server -This server acts as the backend component of the Android SMS Gateway, facilitating the sending of SMS messages through connected Android devices. It includes a RESTful API for message management, integration with Firebase Cloud Messaging (FCM), and a database for persistent storage. +This server acts as the backend component of the [Android SMS Gateway](https://github.com/capcom6/android-sms-gateway), facilitating the sending of SMS messages through connected Android devices. It includes a RESTful API for message management, integration with Firebase Cloud Messaging (FCM), and a database for persistent storage. ## Table of Contents @@ -8,18 +14,17 @@ This server acts as the backend component of the Android SMS Gateway, facilitati - [Table of Contents](#table-of-contents) - [Features](#features) - [Prerequisites](#prerequisites) - - [Installation](#installation) - - [Configuration](#configuration) - - [Running the Server](#running-the-server) - - [Running with Docker](#running-with-docker) + - [Quickstart](#quickstart) + - [Work modes](#work-modes) - [Contributing](#contributing) - [License](#license) ## Features - Send SMS messages via a RESTful API. -- Schedule and perform periodic tasks. -- Integrate with Firebase Cloud Messaging for notifications. +- Get message status. +- Get the list of connected devices. +- Public and private modes. ## Prerequisites @@ -27,63 +32,30 @@ This server acts as the backend component of the Android SMS Gateway, facilitati - Docker and Docker Compose (for Docker-based setup) - A configured MySQL/MariaDB database -## Installation - -To set up the server on your local machine for development and testing purposes, follow these steps: - -1. Clone the repository to your local machine. -2. Install Go (version 1.21 or newer) if not already installed. -3. Navigate to the cloned directory and install dependencies: - -```bash -make init -``` - -4. Build the server binary: - -```bash -make build -``` - -## Configuration +## Quickstart -The server uses `yaml` for configuration with ability to override some values from environment variables. By default configuration is loaded from the `config.yml` file in the root directory. But path can be overridden with the `CONFIG_PATH` environment variable. +The easiest way to get started with the server is to use the Docker-based setup in Private Mode. In this mode device registration endpoint is protected, so no one can register a new device without knowing the token. -Below is a template for the `config.yml` file with environment variables in comments: +1. Set up MySQL or MariaDB database. +2. Create config.yml, based on [config.example.yml](configs/config.example.yml). The most important sections are `database`, `http` and `gateway`. Environment variables can be used to override values in the config file. + 1. In `gateway.mode` section set `private`. + 2. In `gateway.private_token` section set the access token for device registration in private mode. This token must be set on devices with private mode active. +3. Start the server in Docker: `docker run -p 3000:3000 -v ./config.yml:/app/config.yml capcom6/sms-gateway:latest`. +4. Set up private mode on devices. +5. Use started private server with the same API as the public server at [sms.capcom.me](https://sms.capcom.me). -```yaml -http: - listen: ":3000" # HTTP__LISTEN -database: - dialect: "mysql" # DATABASE__DIALECT - host: "localhost" # DATABASE__HOST - port: 3306 # DATABASE__PORT - user: "sms" # DATABASE__USER - password: "sms" # DATABASE__PASSWORD - database: "sms" # DATABASE__DATABASE - timezone: "UTC" # DATABASE__TIMEZONE -fcm: - credentials_json: > - { - ... - } -tasks: - hashing: - interval_seconds: 900 -``` +See also [docker-composee.yml](deployments/docker-compose/docker-compose.yml) for Docker-based setup. -Replace the placeholder values with your actual configuration. +## Work modes -## Running the Server +The server has two work modes: public and private. The public mode allows anonymous device registration and used at [sms.capcom.me](https://sms.capcom.me). Private mode can be used to send sensitive messages and running server in local infrastructure. -### Running with Docker +In most operations public and private modes are the same. But there are some differences: -For convenience, a Docker-based setup is provided. Please refer to the Docker prerequisites above before proceeding. +- `POST /api/mobile/v1/device` endpoint is protected by API key in private mode. So it is not possible to register a new device on private server without knowing the token. +- FCM notifications from private server are sent through `sms.capcom.me`. Notifications don't contain any sensitive data like phone numbers or message text. -1. Prepare configuration file `config.yml` -2. Pull the Docker image: `docker pull capcom6/sms-gateway` -3. Apply database migrations: `docker run --rm -it -v ./config.yml:/app/config.yml capcom6/sms-gateway db:migrate` -4. Start the server: `docker run -p 3000:3000 -v ./config.yml:/app/config.yml capcom6/sms-gateway` +See also [private mode discussion](https://github.com/capcom6/android-sms-gateway/issues/20). ## Contributing @@ -100,4 +72,15 @@ Don't forget to give the project a star! Thanks again! ## License -Distributed under the Apache-2.0 license. See [LICENSE](LICENSE) for more information. \ No newline at end of file +Distributed under the Apache-2.0 license. See [LICENSE](LICENSE) for more information. + +[contributors-shield]: https://img.shields.io/github/contributors/capcom6/sms-gateway.svg?style=for-the-badge +[contributors-url]: https://github.com/capcom6/sms-gateway/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/capcom6/sms-gateway.svg?style=for-the-badge +[forks-url]: https://github.com/capcom6/sms-gateway/network/members +[stars-shield]: https://img.shields.io/github/stars/capcom6/sms-gateway.svg?style=for-the-badge +[stars-url]: https://github.com/capcom6/sms-gateway/stargazers +[issues-shield]: https://img.shields.io/github/issues/capcom6/sms-gateway.svg?style=for-the-badge +[issues-url]: https://github.com/capcom6/sms-gateway/issues +[license-shield]: https://img.shields.io/github/license/capcom6/sms-gateway.svg?style=for-the-badge +[license-url]: https://github.com/capcom6/sms-gateway/blob/master/LICENSE \ No newline at end of file diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml deleted file mode 100644 index 1e3882f..0000000 --- a/bitbucket-pipelines.yml +++ /dev/null @@ -1,81 +0,0 @@ -image: atlassian/default-image:3 - -definitions: - caches: - gomodules: ~/.cache/go-build - steps: - - step: &docker-lint - runs-on: - - self.hosted - - linux - name: Lint the Dockerfile - image: hadolint/hadolint:latest-debian - script: - - hadolint build/package/Dockerfile* - - step: &unit-tests - runs-on: - - self.hosted - - linux - name: Run unit tests - image: golang:1.20 - caches: - - gomodules - script: - - echo '[url "ssh://git@bitbucket.org/"]' >> ~/.gitconfig - - echo ' insteadOf = https://bitbucket.org/' >> ~/.gitconfig - - go env -w GOPRIVATE="bitbucket.org/soft-c/*" - - go test ./... - - step: &build-docker - runs-on: - - self.hosted - - linux - name: Build and push Docker image - services: - - docker - caches: - - docker - script: - - docker version - - echo ${DOCKER_PASSWORD} | docker login ${DOCKER_CR} --username "$DOCKER_USERNAME" --password-stdin - - export SSH_PRV_KEY="$(cat /opt/atlassian/pipelines/agent/ssh/id_rsa)" - - chmod +x ./scripts/docker-build.sh && ./scripts/docker-build.sh - - step: &deploy - runs-on: - - self.hosted - - linux - name: Deploy to Docker Swarm - image: hashicorp/terraform:1.4 - deployment: production - script: - - terraform -chdir=./deployments/docker-swarm-terraform init - - | - terraform -chdir=./deployments/docker-swarm-terraform apply -auto-approve -input=false \ - -var "swarm-manager-host=${SWARM_MANAGER_HOST}" \ - -var "registry-password=${DOCKER_PASSWORD}" \ - -var "app-name=${APP_NAME}" \ - -var "app-version=${BITBUCKET_TAG#v}" \ - -var "app-host=${APP_HOST}" \ - -var "app-config-b64=${APP_CONFIG_B64}" \ - -var "app-env-json-b64=${APP_ENV_JSON_B64}" - -pipelines: - default: - - parallel: - - step: *docker-lint - - step: *unit-tests - - step: *build-docker - branches: - testing: - - parallel: - - step: *docker-lint - - step: *unit-tests - - step: *build-docker - master: - - parallel: - - step: *docker-lint - - step: *unit-tests - - step: *build-docker - tags: - v*: - - step: *build-docker - - step: *deploy diff --git a/configs/config.example.yml b/configs/config.example.yml index 79fad75..6a61a37 100644 --- a/configs/config.example.yml +++ b/configs/config.example.yml @@ -1,24 +1,20 @@ -gateway: - mode: private - private_token: 123456789 +gateway: # gateway config [GATEWAY__MODE] + mode: private # gateway mode (public - allow anonymous device registration, private - protected registration) [GATEWAY__PRIVATE_TOKEN] + private_token: 123456789 # access token for device registration in private mode http: # http server config - listen: 127.0.0.1:3000 # listen address + listen: 127.0.0.1:3000 # listen address [HTTP__LISTEN] database: # database - dialect: mysql # database dialect - host: localhost # database host - port: 3306 # database port - user: root # database user - password: root # database password - database: sms # database name - debug: true - timezone: UTC -fcm: - credentials_json: > - { - ... - } - timeout_seconds: 1 - debounce_seconds: 1 -tasks: - hashing: - interval_seconds: 15 + dialect: mysql # database dialect (only mysql supported at the moment) [DATABASE__DIALECT] + host: localhost # database host [DATABASE__HOST] + port: 3306 # database port [DATABASE__PORT] + user: root # database user [DATABASE__USER] + password: root # database password [DATABASE__PASSWORD] + database: sms # database name [DATABASE__DATABASE] + timezone: UTC # database timezone (important for message TTL calculation) [DATABASE__TIMEZONE] +fcm: # firebase cloud messaging config + credentials_json: "{}" # firebase credentials json (for public mode only) [FCM__CREDENTIALS_JSON] + timeout_seconds: 1 # push notification send timeout [FCM__DEBOUNCE_SECONDS] + debounce_seconds: 5 # push notification debounce (>= 5s) [FCM__TIMEOUT_SECONDS] +tasks: # tasks config + hashing: # hashing task (hashes processed messages for privacy purposes) + interval_seconds: 15 # hashing interval in seconds [TASKS__HASHING__INTERVAL_SECONDS] diff --git a/deployments/docker-swarm-terraform/providers.tf b/deployments/docker-swarm-terraform/providers.tf index b781059..114f5de 100644 --- a/deployments/docker-swarm-terraform/providers.tf +++ b/deployments/docker-swarm-terraform/providers.tf @@ -10,9 +10,4 @@ terraform { provider "docker" { host = var.swarm-manager-host ssh_opts = ["-o", "StrictHostKeyChecking=no", "-o", "UserKnownHostsFile=/dev/null"] - # registry_auth { - # address = "cr.selcloud.ru/soft-c" - # username = "token" - # password = var.registry-password - # } } diff --git a/deployments/docker-swarm-terraform/variables.tf b/deployments/docker-swarm-terraform/variables.tf index 094ea21..6b95e98 100644 --- a/deployments/docker-swarm-terraform/variables.tf +++ b/deployments/docker-swarm-terraform/variables.tf @@ -4,12 +4,6 @@ variable "swarm-manager-host" { description = "Address of swarm manager" } -# variable "registry-password" { -# type = string -# description = "Password for Docker Images Registry" -# sensitive = true -# } - variable "app-name" { type = string description = "Name of app" diff --git a/internal/config/config.go b/internal/config/config.go index c3d36af..d3d2cba 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -8,11 +8,11 @@ const ( ) type Config struct { - Gateway Gateway `yaml:"gateway"` - HTTP HTTP `yaml:"http"` - Database Database `yaml:"database"` - FCM FCMConfig `yaml:"fcm"` - Tasks Tasks `yaml:"tasks"` + Gateway Gateway `yaml:"gateway"` // gateway config + HTTP HTTP `yaml:"http"` // http server config + Database Database `yaml:"database"` // database config + FCM FCMConfig `yaml:"fcm"` // firebase cloud messaging config + Tasks Tasks `yaml:"tasks"` // tasks config } type Gateway struct { @@ -21,23 +21,23 @@ type Gateway struct { } type HTTP struct { - Listen string `yaml:"listen" envconfig:"HTTP__LISTEN"` + Listen string `yaml:"listen" envconfig:"HTTP__LISTEN"` // listen address } type Database struct { - Dialect string `yaml:"dialect" envconfig:"DATABASE__DIALECT"` - Host string `yaml:"host" envconfig:"DATABASE__HOST"` - Port int `yaml:"port" envconfig:"DATABASE__PORT"` - User string `yaml:"user" envconfig:"DATABASE__USER"` - Password string `yaml:"password" envconfig:"DATABASE__PASSWORD"` - Database string `yaml:"database" envconfig:"DATABASE__DATABASE"` - Timezone string `yaml:"timezone" envconfig:"DATABASE__TIMEZONE"` + Dialect string `yaml:"dialect" envconfig:"DATABASE__DIALECT"` // database dialect + Host string `yaml:"host" envconfig:"DATABASE__HOST"` // database host + Port int `yaml:"port" envconfig:"DATABASE__PORT"` // database port + User string `yaml:"user" envconfig:"DATABASE__USER"` // database user + Password string `yaml:"password" envconfig:"DATABASE__PASSWORD"` // database password + Database string `yaml:"database" envconfig:"DATABASE__DATABASE"` // database name + Timezone string `yaml:"timezone" envconfig:"DATABASE__TIMEZONE"` // database timezone } type FCMConfig struct { - CredentialsJSON string `yaml:"credentials_json"` - DebounceSeconds uint16 `yaml:"debounce_seconds"` - TimeoutSeconds uint16 `yaml:"timeout_seconds"` + CredentialsJSON string `yaml:"credentials_json" envconfig:"FCM__CREDENTIALS_JSON"` // firebase credentials json (public mode only) + DebounceSeconds uint16 `yaml:"debounce_seconds" envconfig:"FCM__DEBOUNCE_SECONDS"` // push notification debounce (>= 5s) + TimeoutSeconds uint16 `yaml:"timeout_seconds" envconfig:"FCM__TIMEOUT_SECONDS"` // push notification send timeout } type Tasks struct { @@ -45,7 +45,7 @@ type Tasks struct { } type HashingTask struct { - IntervalSeconds uint16 `yaml:"interval_seconds"` + IntervalSeconds uint16 `yaml:"interval_seconds" envconfig:"TASKS__HASHING__INTERVAL_SECONDS"` // hashing interval in seconds } var defaultConfig = Config{ diff --git a/web/mkdocs/docs/getting-started.md b/web/mkdocs/docs/getting-started.md deleted file mode 100644 index b370748..0000000 --- a/web/mkdocs/docs/getting-started.md +++ /dev/null @@ -1,41 +0,0 @@ -# Getting Started - -First of all, you need to install the Android SMS Gateway app on your device as described in the [Installation](installation.md). - -The Android SMS Gateway can work in two modes: with a local server started on the device or with a cloud server at [sms.capcom.me](https://sms.capcom.me). The basic API is the same for both modes and is documented on the [Android SMS Gateway API Documentation](https://capcom6.github.io/android-sms-gateway/). - -## Local server - -
- Local server example settings -
- -This mode is recommended for sending messages from local network. - -1. Start the app on the device. -2. Activate the `Local server` switch. -3. Tap the `Offline` button at the bottom of the screen. -4. In the `Local server` section, the local and public addresses of the device, along with the credentials for basic authentication, will be displayed. Please note that the public address is only usable if you have a "white" IP address and have correctly configured your firewall. -5. Make a `curl` call from the local network using a command like the following, replacing ``, ``, and `` with the values obtained in step 4: - - ``` - curl -X POST -u : -H "Content-Type: application/json" -d '{ "message": "Hello, world!", "phoneNumbers": ["79990001234", "79995556677"] }' http://:8080/message - ``` - -## Cloud server - -
- Cloud server example settings -
- -If you need to send messages with dynamic or shared device IP, you can use the cloud server. The best part? No registration, email, or phone number is required to start using it. - -1. Start the app on the device. -2. Activate the `Cloud server` switch. -3. Tap the `Offline` button at the bottom of the screen. -4. In the `Cloud server` section, the credentials for basic authentication will be displayed. -5. Make a curl call using a command like the following, replacing `` and `` with the values obtained in step 4: - - ``` - curl -X POST -u : -H "Content-Type: application/json" -d '{ "message": "Hello, world!", "phoneNumbers": ["79990001234", "79995556677"] }' https://sms.capcom.me/api/3rdparty/v1/message - ``` diff --git a/web/mkdocs/docs/getting-started/index.md b/web/mkdocs/docs/getting-started/index.md new file mode 100644 index 0000000..79203a7 --- /dev/null +++ b/web/mkdocs/docs/getting-started/index.md @@ -0,0 +1,11 @@ +# Getting Started + +The Android SMS Gateway can operate in three distinct modes, all using the same API: + +1. [**Local Server**](./local-server.md): Operate entirely within your local network by running the server directly on your Android device. This is perfect for a quick setup and use where Internet access isn't necessary. For remote access, you may need to adjust your network settings and consider additional security measures. +2. [**Public Cloud Server**](./public-cloud-server.md): Connect easily via the Internet using our public server at `sms.capcom.me`. Messages are routed through this server to your devices, which simplifies the setup without the need for network adjustments. This is suitable for non-sensitive data only — for more secure communication, please check out the [end-to-end encryption section](../privacy/encryption.md). +3. [**Private Server**](./private-server.md): Deploy your own server instance and connect your Android devices to ensure maximum privacy. We won't have access to your message content, making this the preferred option for sensitive communication. However, it requires setting up and maintaining your own infrastructure, which includes a database and server application. + +For any of these modes, you'll first need to install the Android SMS Gateway app on your device as described in the [Installation](../installation.md) section. + +For more information on how to use the API, please refer to the [API](../api.md) section. diff --git a/web/mkdocs/docs/getting-started/local-server.md b/web/mkdocs/docs/getting-started/local-server.md new file mode 100644 index 0000000..3a60fdb --- /dev/null +++ b/web/mkdocs/docs/getting-started/local-server.md @@ -0,0 +1,19 @@ +# Getting Started + +## Local Server + +
+ Example settings for Local Server mode +
+ +This mode is ideal for sending messages from a local network. + +1. Launch the app on your device. +2. Toggle the `Local Server` switch to the "on" position. +3. Tap the `Offline` button located at the bottom of the screen to activate the server. +4. The `Local Server` section will display your device's local and public IP addresses, as well as the credentials for basic authentication. Please note that the public IP address is only accessible if you have a public (also known as "white") IP and your firewall is configured appropriately. +5. To send a message from within the local network, execute a `curl` command like the following. Be sure to replace ``, ``, and `` with the actual values provided in the previous step: + + ```sh + curl -X POST -u : -H "Content-Type: application/json" -d '{ "message": "Hello, world!", "phoneNumbers": ["79990001234", "79995556677"] }' http://:8080/message + ``` \ No newline at end of file diff --git a/web/mkdocs/docs/getting-started/private-server.md b/web/mkdocs/docs/getting-started/private-server.md new file mode 100644 index 0000000..2e1cb58 --- /dev/null +++ b/web/mkdocs/docs/getting-started/private-server.md @@ -0,0 +1,32 @@ +# Getting Started + +## Private Server + +
+ Example settings for Private Server mode +
+ +To enhance privacy, you can host a private server within your own infrastructure, ensuring that your messages reside only on devices you control. The only required external network connection is for sending push notifications through the public server at `sms.capcom.me`. This architecture eliminates the need to set up Firebase Cloud Messaging (FCM) and rebuild the Android app, though it does require some technical expertise. + +### Prerequisites + +- A MySQL or MariaDB database server with an empty database and a user granted full access to that database. +- A VPS (Virtual Private Server) running Linux with Docker installed. +- A reverse proxy with an SSL certificate and HTTPS enabled. + +### Run the Server + +1. Create a `config.yml` file based on the [config.example.yml](https://github.com/capcom6/sms-gateway/blob/master/configs/config.example.yml). The critical sections to configure are `database`, `http`, and `gateway`. Environment variables can be used to override values in the config file. + - In the `gateway.mode` section, set the value to `private`. + - In the `gateway.private_token` section, specify the access token for device registration in private mode. This token must also be set on devices operating in private mode. +2. Launch the server in Docker with the following command: + ```sh + docker run -p 3000:3000 -v $(pwd)/config.yml:/app/config.yml capcom6/sms-gateway:latest + ``` +3. Set up your reverse proxy, configure SSL, and adjust your firewall to allow access to the server from the Internet. + +For additional details, refer to the server's [README.md](https://github.com/capcom6/sms-gateway/blob/master/README.md). + +### Configure Android App + +To be continued... diff --git a/web/mkdocs/docs/getting-started/public-cloud-server.md b/web/mkdocs/docs/getting-started/public-cloud-server.md new file mode 100644 index 0000000..afaea2d --- /dev/null +++ b/web/mkdocs/docs/getting-started/public-cloud-server.md @@ -0,0 +1,20 @@ +# Getting Started + +## Cloud Server + +
+ Example settings for Cloud Server mode +
+ +Use the cloud server mode when dealing with dynamic or shared device IP addresses. The best part? No registration, email, or phone number is required to start using it. + +1. Launch the app on your device. +2. Toggle the `Cloud Server` switch to the "on" position. +3. Tap the `Online` button located at the bottom of the screen to connect to the cloud server. +4. In the `Cloud Server` section, the credentials for basic authentication will be displayed. +5. To send a message via the cloud server, perform a `curl` request with a command similar to the following, substituting `` and `` with the actual values obtained in step 4: + + ```sh + curl -X POST -u : -H "Content-Type: application/json" -d '{ "message": "Hello, world!", "phoneNumbers": ["79990001234", "79995556677"] }' https://sms.capcom.me/api/3rdparty/v1/message + ``` + \ No newline at end of file diff --git a/web/mkdocs/docs/index.md b/web/mkdocs/docs/index.md index e6cfa0b..9928f7c 100644 --- a/web/mkdocs/docs/index.md +++ b/web/mkdocs/docs/index.md @@ -17,6 +17,9 @@ Android SMS Gateway turns your Android smartphone into an SMS gateway. It's a li - **Starts at boot:** The application starts running as soon as your device boots up. - **Multiple SIM cards:** The application supports multiple SIM cards. - **Multipart messages:** The application supports sending long messages with auto-partitioning. +- **End-to-end encryption:** The application supports end-to-end encryption by encrypting message text and recipients' phone numbers before sending them to the API and decrypting them on the device. +- **Messages expiration:** The application supports setting messages' expiration time. The messages will not be sent if they are expired. +- **Random delay between sending messages:** To avoid mobile operator restrictions. ## Ideal For @@ -34,7 +37,7 @@ The project is currently in the MVP stage. We're actively working on adding more Getting started with Android SMS Gateway is easy and straightforward. No registration, email, or phone number is required to create an account and start using the app. -Check out our [Getting Started Guide](getting-started.md) to learn how to install and use Android SMS Gateway. +Check out our [Getting Started Guide](getting-started/index.md) to learn how to install and use Android SMS Gateway. ## Contributing diff --git a/web/mkdocs/mkdocs.yml b/web/mkdocs/mkdocs.yml index 5d9217d..9e367f0 100644 --- a/web/mkdocs/mkdocs.yml +++ b/web/mkdocs/mkdocs.yml @@ -29,7 +29,11 @@ theme: nav: - Home: index.md - Installation: installation.md - - Getting Started: getting-started.md + - Getting Started: + - Overview: getting-started/index.md + - Local Server: getting-started/local-server.md + - Public Cloud Server: getting-started/public-cloud-server.md + - Private Server: getting-started/private-server.md - API: api.md - Pricing: pricing.md - Privacy: From 83e9b66ca0f8c094642e28309b8e9cfb98241837 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Sun, 10 Mar 2024 23:05:39 +0700 Subject: [PATCH 06/12] [fcm/upstream] add user agent to client --- internal/sms-gateway/modules/push/upstream/client.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/sms-gateway/modules/push/upstream/client.go b/internal/sms-gateway/modules/push/upstream/client.go index b22a48e..2b7d8eb 100644 --- a/internal/sms-gateway/modules/push/upstream/client.go +++ b/internal/sms-gateway/modules/push/upstream/client.go @@ -60,6 +60,7 @@ func (c *Client) Send(ctx context.Context, messages map[string]map[string]string } req.Header.Set("Content-Type", "application/json") + req.Header.Set("User-Agent", "android-sms-gateway/1.x (server; golang)") resp, err := c.client.Do(req) if err != nil { From 9880f7924866181d6fd5c47a4f5bf89b518617a0 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Wed, 13 Mar 2024 00:07:37 +0700 Subject: [PATCH 07/12] [api/mobile] fix registration auth in private mode --- api/requests.http | 4 ++-- internal/sms-gateway/handlers/mobile.go | 13 +++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/api/requests.http b/api/requests.http index 7d4c9d8..e745028 100644 --- a/api/requests.http +++ b/api/requests.http @@ -5,7 +5,7 @@ ### POST {{baseUrl}}/api/mobile/v1/device HTTP/1.1 -Authorization: 123456789 +Authorization: Bearer 123456789 Content-Type: application/json { @@ -20,7 +20,7 @@ Authorization: Basic {{credentials}} { "message": "{{$localDatetime iso8601}}", - "validUntil": "2024-02-10T12:00:00+07:00", + "ttl": 600, "phoneNumbers": [ "{{phone}}" ], diff --git a/internal/sms-gateway/handlers/mobile.go b/internal/sms-gateway/handlers/mobile.go index 0058661..d1e629f 100644 --- a/internal/sms-gateway/handlers/mobile.go +++ b/internal/sms-gateway/handlers/mobile.go @@ -170,14 +170,11 @@ func (h *mobileHandler) authorize(handler func(models.Device, *fiber.Ctx) error) func (h *mobileHandler) Register(router fiber.Router) { router = router.Group("/mobile/v1") - router.Post("/device", limiter.New(), func(c *fiber.Ctx) error { - token := c.Get(fiber.HeaderAuthorization) - if h.authSvc.AuthorizeRegistration(token) != nil { - return fiber.ErrUnauthorized - } - - return c.Next() - }, h.postDevice) + router.Post("/device", limiter.New(), apikey.New(apikey.Config{ + Authorizer: func(token string) bool { + return h.authSvc.AuthorizeRegistration(token) == nil + }, + }), h.postDevice) router.Use(apikey.New(apikey.Config{ Authorizer: func(token string) bool { From 05700f3d33a575b73b056435a54d7d9db3e16bb4 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Fri, 15 Mar 2024 09:25:44 +0700 Subject: [PATCH 08/12] [docs/config] fix config comments --- configs/config.example.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/config.example.yml b/configs/config.example.yml index 6a61a37..926ba16 100644 --- a/configs/config.example.yml +++ b/configs/config.example.yml @@ -1,6 +1,6 @@ -gateway: # gateway config [GATEWAY__MODE] - mode: private # gateway mode (public - allow anonymous device registration, private - protected registration) [GATEWAY__PRIVATE_TOKEN] - private_token: 123456789 # access token for device registration in private mode +gateway: # gateway config + mode: private # gateway mode (public - allow anonymous device registration, private - protected registration) [GATEWAY__MODE] + private_token: 123456789 # access token for device registration in private mode [GATEWAY__PRIVATE_TOKEN] http: # http server config listen: 127.0.0.1:3000 # listen address [HTTP__LISTEN] database: # database From 2460194d6660849c7539fb93fee23b837510233a Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Sat, 16 Mar 2024 23:28:05 +0700 Subject: [PATCH 09/12] [docs] add architecture schemes --- web/mkdocs/docs/assets/cloud-server-arch.png | Bin 0 -> 68428 bytes web/mkdocs/docs/assets/local-server-arch.png | Bin 0 -> 23087 bytes .../docs/assets/private-server-arch.png | Bin 0 -> 76371 bytes web/mkdocs/docs/assets/private-server.png | Bin 0 -> 24595 bytes .../docs/getting-started/local-server.md | 8 +++- .../docs/getting-started/private-server.md | 38 ++++++++++++------ .../getting-started/public-cloud-server.md | 7 +++- 7 files changed, 36 insertions(+), 17 deletions(-) create mode 100644 web/mkdocs/docs/assets/cloud-server-arch.png create mode 100644 web/mkdocs/docs/assets/local-server-arch.png create mode 100644 web/mkdocs/docs/assets/private-server-arch.png create mode 100644 web/mkdocs/docs/assets/private-server.png diff --git a/web/mkdocs/docs/assets/cloud-server-arch.png b/web/mkdocs/docs/assets/cloud-server-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..9e529fa86206a7ab69aaa49b50db91509fd0c8bb GIT binary patch literal 68428 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 literal 0 HcmV?d00001 diff --git a/web/mkdocs/docs/assets/private-server.png b/web/mkdocs/docs/assets/private-server.png new file mode 100644 index 0000000000000000000000000000000000000000..cb36f5f57fe1801f3e27644797ae65d589546e21 GIT binary patch literal 24595 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 F{{s`ntv~<( literal 0 HcmV?d00001 diff --git a/web/mkdocs/docs/getting-started/local-server.md b/web/mkdocs/docs/getting-started/local-server.md index 3a60fdb..ba8a8d1 100644 --- a/web/mkdocs/docs/getting-started/local-server.md +++ b/web/mkdocs/docs/getting-started/local-server.md @@ -3,7 +3,7 @@ ## Local Server

- Example settings for Local Server mode + Architecture of the Local Server mode
This mode is ideal for sending messages from a local network. @@ -16,4 +16,8 @@ This mode is ideal for sending messages from a local network. ```sh curl -X POST -u : -H "Content-Type: application/json" -d '{ "message": "Hello, world!", "phoneNumbers": ["79990001234", "79995556677"] }' http://:8080/message - ``` \ No newline at end of file + ``` + +
+ Example settings for Local Server mode +
\ No newline at end of file diff --git a/web/mkdocs/docs/getting-started/private-server.md b/web/mkdocs/docs/getting-started/private-server.md index 2e1cb58..ad0d2d9 100644 --- a/web/mkdocs/docs/getting-started/private-server.md +++ b/web/mkdocs/docs/getting-started/private-server.md @@ -3,30 +3,42 @@ ## Private Server
- Example settings for Private Server mode + Architecture of the Private Server mode
-To enhance privacy, you can host a private server within your own infrastructure, ensuring that your messages reside only on devices you control. The only required external network connection is for sending push notifications through the public server at `sms.capcom.me`. This architecture eliminates the need to set up Firebase Cloud Messaging (FCM) and rebuild the Android app, though it does require some technical expertise. +To enhance privacy, you can host a private server within your own infrastructure, ensuring that all messages remain solely on devices you control. The only required external network connection is for sending push notifications via the public server at `sms.capcom.me`. This setup eliminates the need to configure Firebase Cloud Messaging (FCM) or rebuild the Android app, but it does demand some technical know-how. ### Prerequisites -- A MySQL or MariaDB database server with an empty database and a user granted full access to that database. -- A VPS (Virtual Private Server) running Linux with Docker installed. -- A reverse proxy with an SSL certificate and HTTPS enabled. +- A MySQL or MariaDB database server with an empty database, and a user granted full access to that database. +- A Virtual Private Server (VPS) running Linux with Docker installed. +- A reverse proxy with a valid SSL certificate and HTTPS enabled. ### Run the Server -1. Create a `config.yml` file based on the [config.example.yml](https://github.com/capcom6/sms-gateway/blob/master/configs/config.example.yml). The critical sections to configure are `database`, `http`, and `gateway`. Environment variables can be used to override values in the config file. - - In the `gateway.mode` section, set the value to `private`. - - In the `gateway.private_token` section, specify the access token for device registration in private mode. This token must also be set on devices operating in private mode. -2. Launch the server in Docker with the following command: +1. Create a `config.yml` file based on the template provided in [config.example.yml](https://github.com/capcom6/sms-gateway/blob/master/configs/config.example.yml). Pay special attention to the `database`, `http`, and `gateway` sections. Environment variables can be used to override values in the config file. + - Set `gateway.mode` to `private`. + - Define `gateway.private_token` as the access token for device registration in private mode. Ensure this token matches the one on the devices set to private mode. +2. Start the server in Docker with the following command: ```sh docker run -p 3000:3000 -v $(pwd)/config.yml:/app/config.yml capcom6/sms-gateway:latest ``` -3. Set up your reverse proxy, configure SSL, and adjust your firewall to allow access to the server from the Internet. +3. Configure your reverse proxy, enable SSL, and modify your firewall settings to permit Internet access to the server. + +Refer to the server's [README.md](https://github.com/capcom6/sms-gateway/blob/master/README.md) for more information. + +### Configure the Android App + +
+ Example settings for Private Server mode +
-For additional details, refer to the server's [README.md](https://github.com/capcom6/sms-gateway/blob/master/README.md). +*Note*: Changing the server will invalidate current credentials, and the device will be re-registered with new ones. -### Configure Android App +1. Navigate to the Settings tab. +2. In the Cloud Server section, enter the API URL and Private token, ensuring they match those in the server configuration. Note that you should include the full URL with the path, such as `https://private.example.com/api/mobile/v1`. +3. Switch to the Home tab. +4. Activate the Cloud server option. +5. Apply the new configuration by stopping and starting the app using the button at the bottom of the screen. -To be continued... +If everything is configured correctly, the new credentials for the private server will be displayed in the Cloud Server section on the Home tab. diff --git a/web/mkdocs/docs/getting-started/public-cloud-server.md b/web/mkdocs/docs/getting-started/public-cloud-server.md index afaea2d..58a5856 100644 --- a/web/mkdocs/docs/getting-started/public-cloud-server.md +++ b/web/mkdocs/docs/getting-started/public-cloud-server.md @@ -3,7 +3,7 @@ ## Cloud Server
- Example settings for Cloud Server mode + Architecture of the Cloud Server mode
Use the cloud server mode when dealing with dynamic or shared device IP addresses. The best part? No registration, email, or phone number is required to start using it. @@ -17,4 +17,7 @@ Use the cloud server mode when dealing with dynamic or shared device IP addresse ```sh curl -X POST -u : -H "Content-Type: application/json" -d '{ "message": "Hello, world!", "phoneNumbers": ["79990001234", "79995556677"] }' https://sms.capcom.me/api/3rdparty/v1/message ``` - \ No newline at end of file + +
+ Example settings for Cloud Server mode +
\ No newline at end of file From db645c79ac50449d3e2775708f464050aad08f10 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Sun, 17 Mar 2024 18:29:29 +0700 Subject: [PATCH 10/12] [docs/api] update API docs --- api/swagger.json | 282 ++++++++++++++-------- api/swagger.yaml | 259 ++++++++++++-------- cmd/sms-gateway/main.go | 16 +- internal/sms-gateway/handlers/3rdparty.go | 56 ++--- internal/sms-gateway/handlers/mobile.go | 64 ++--- internal/sms-gateway/handlers/upstream.go | 13 + pkg/smsgateway/domain.go | 65 ++--- pkg/smsgateway/requests.go | 13 +- pkg/smsgateway/responses.go | 18 +- 9 files changed, 465 insertions(+), 321 deletions(-) diff --git a/api/swagger.json b/api/swagger.json index 77855bf..d35be3e 100644 --- a/api/swagger.json +++ b/api/swagger.json @@ -1,18 +1,18 @@ { "schemes": [ - "http" + "https" ], "swagger": "2.0", "info": { - "description": "Авторизацию пользователя по логин-паролю", - "title": "SMS-шлюз - API сервера", + "description": "End-user authentication key", + "title": "SMS Gateway - API", "contact": { "name": "Aleksandr Soloshenko", - "email": "capcom@soft-c.ru" + "email": "i@capcom.me" }, "version": "1.0.0" }, - "host": "localhost:3000", + "host": "sms.capcom.me", "basePath": "/api", "paths": { "/3rdparty/v1/device": { @@ -22,18 +22,17 @@ "ApiAuth": [] } ], - "description": "Возвращает все устройства пользователя", + "description": "Returns list of registered devices", "produces": [ "application/json" ], "tags": [ - "Пользователь", - "Устройства" + "User" ], - "summary": "Получить устройства", + "summary": "List devices", "responses": { "200": { - "description": "Состояние сообщения", + "description": "Device list", "schema": { "type": "array", "items": { @@ -42,19 +41,19 @@ } }, "400": { - "description": "Некорректный запрос", + "description": "Invalid request", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "401": { - "description": "Ошибка авторизации", + "description": "Unauthorized", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "500": { - "description": "Внутренняя ошибка сервера", + "description": "Internal server error", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } @@ -69,19 +68,19 @@ "ApiAuth": [] } ], - "description": "Возвращает состояние сообщения по его ID", + "description": "Returns message state by ID", "produces": [ "application/json" ], "tags": [ - "Пользователь", - "Сообщения" + "User", + "Messages" ], - "summary": "Получить состояние сообщения", + "summary": "Get message state", "parameters": [ { "type": "string", - "description": "ИД сообщения", + "description": "Message ID", "name": "id", "in": "path", "required": true @@ -89,25 +88,25 @@ ], "responses": { "200": { - "description": "Состояние сообщения", + "description": "Message state", "schema": { "$ref": "#/definitions/smsgateway.MessageState" } }, "400": { - "description": "Некорректный запрос", + "description": "Invalid request", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "401": { - "description": "Ошибка авторизации", + "description": "Unauthorized", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "500": { - "description": "Внутренняя ошибка сервера", + "description": "Internal server error", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } @@ -120,7 +119,7 @@ "ApiAuth": [] } ], - "description": "Ставит сообщение в очередь на отправку. Если идентификатор не указан, то он будет сгенерирован автоматически", + "description": "Enqueues message for sending. If ID is not specified, it will be generated", "consumes": [ "application/json" ], @@ -128,19 +127,19 @@ "application/json" ], "tags": [ - "Пользователь", - "Сообщения" + "User", + "Messages" ], - "summary": "Поставить сообщение в очередь", + "summary": "Enqueue message", "parameters": [ { "type": "boolean", - "description": "Пропустить проверку номеров телефона", + "description": "Skip phone validation", "name": "skipPhoneValidation", "in": "query" }, { - "description": "Сообщение", + "description": "Send message request", "name": "request", "in": "body", "required": true, @@ -151,31 +150,31 @@ ], "responses": { "202": { - "description": "Сообщение поставлено в очередь", + "description": "Message enqueued", "schema": { "$ref": "#/definitions/smsgateway.MessageState" }, "headers": { "Location": { "type": "string", - "description": "URL для получения состояния сообщения" + "description": "Get message state URL" } } }, "400": { - "description": "Некорректный запрос", + "description": "Invalid request", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "401": { - "description": "Ошибка авторизации", + "description": "Unauthorized", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "500": { - "description": "Внутренняя ошибка сервера", + "description": "Internal server error", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } @@ -185,7 +184,7 @@ }, "/mobile/v1/device": { "post": { - "description": "Регистрирует устройство на сервере, генерируя авторизационные данные", + "description": "Registers new device and returns credentials", "consumes": [ "application/json" ], @@ -193,13 +192,12 @@ "application/json" ], "tags": [ - "Устройство", - "Регистрация" + "Device" ], - "summary": "Регистрация устройства", + "summary": "Register device", "parameters": [ { - "description": "Запрос на регистрацию", + "description": "Device registration request", "name": "request", "in": "body", "required": true, @@ -210,19 +208,31 @@ ], "responses": { "201": { - "description": "Успешная регистрация", + "description": "Device registered", "schema": { "$ref": "#/definitions/smsgateway.MobileRegisterResponse" } }, "400": { - "description": "Некорректный запрос", + "description": "Invalid request", + "schema": { + "$ref": "#/definitions/smsgateway.ErrorResponse" + } + }, + "401": { + "description": "Unauthorized (private mode only)", + "schema": { + "$ref": "#/definitions/smsgateway.ErrorResponse" + } + }, + "429": { + "description": "Too many requests", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "500": { - "description": "Внутренняя ошибка сервера", + "description": "Internal server error", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } @@ -235,17 +245,17 @@ "MobileToken": [] } ], - "description": "Обновляет push-токен устройства", + "description": "Updates push token for device", "consumes": [ "application/json" ], "tags": [ - "Устройство" + "Device" ], - "summary": "Обновление устройства", + "summary": "Update device", "parameters": [ { - "description": "Запрос на обновление", + "description": "Device update request", "name": "request", "in": "body", "required": true, @@ -256,22 +266,22 @@ ], "responses": { "204": { - "description": "Успешное обновление" + "description": "Successfully updated" }, "400": { - "description": "Некорректный запрос", + "description": "Invalid request", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "403": { - "description": "Операция запрещена", + "description": "Forbidden (wrong device ID)", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "500": { - "description": "Внутренняя ошибка сервера", + "description": "Internal server error", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } @@ -286,7 +296,7 @@ "MobileToken": [] } ], - "description": "Возвращает список сообщений, требующих отправки", + "description": "Returns list of pending messages", "consumes": [ "application/json" ], @@ -294,13 +304,13 @@ "application/json" ], "tags": [ - "Устройство", - "Сообщения" + "Device", + "Messages" ], - "summary": "Получить сообщения для отправки", + "summary": "Get messages for sending", "responses": { "200": { - "description": "Список сообщений", + "description": "List of pending messages", "schema": { "type": "array", "items": { @@ -309,7 +319,7 @@ } }, "500": { - "description": "Внутренняя ошибка сервера", + "description": "Internal server error", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } @@ -322,7 +332,7 @@ "MobileToken": [] } ], - "description": "Обновляет состояние сообщений. Состояние обновляется индивидуально для каждого сообщения, игнорируя ошибки", + "description": "Updates message state", "consumes": [ "application/json" ], @@ -330,13 +340,13 @@ "application/json" ], "tags": [ - "Устройство", - "Сообщения" + "Device", + "Messages" ], - "summary": "Обновить состояние сообщений", + "summary": "Update message state", "parameters": [ { - "description": "Состояние сообщений", + "description": "New message state", "name": "request", "in": "body", "required": true, @@ -350,16 +360,69 @@ ], "responses": { "204": { - "description": "Обновление выполнено" + "description": "Successfully updated" + }, + "400": { + "description": "Invalid request", + "schema": { + "$ref": "#/definitions/smsgateway.ErrorResponse" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/smsgateway.ErrorResponse" + } + } + } + } + }, + "/upstream/v1/push": { + "post": { + "description": "Enqueues notifications for sending to devices", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Device", + "Upstream" + ], + "summary": "Send push notifications", + "parameters": [ + { + "description": "Push request", + "name": "request", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/smsgateway.PushNotification" + } + } + } + ], + "responses": { + "202": { + "description": "Notification enqueued" }, "400": { - "description": "Некорректный запрос", + "description": "Invalid request", + "schema": { + "$ref": "#/definitions/smsgateway.ErrorResponse" + } + }, + "429": { + "description": "Too many requests", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } }, "500": { - "description": "Внутренняя ошибка сервера", + "description": "Internal server error", "schema": { "$ref": "#/definitions/smsgateway.ErrorResponse" } @@ -373,32 +436,32 @@ "type": "object", "properties": { "createdAt": { - "description": "Дата создания", + "description": "Created at (read only)", "type": "string", "example": "2020-01-01T00:00:00Z" }, "deletedAt": { - "description": "Дата удаления", + "description": "Deleted at (read only)", "type": "string", "example": "2020-01-01T00:00:00Z" }, "id": { - "description": "Идентификатор", + "description": "ID", "type": "string", "example": "PyDmBQZZXYmyxMwED8Fzy" }, "lastSeen": { - "description": "Последняя активность", + "description": "Last seen at (read only)", "type": "string", "example": "2020-01-01T00:00:00Z" }, "name": { - "description": "Название устройства", + "description": "Name", "type": "string", "example": "My Device" }, "updatedAt": { - "description": "Дата обновления", + "description": "Updated at (read only)", "type": "string", "example": "2020-01-01T00:00:00Z" } @@ -408,16 +471,16 @@ "type": "object", "properties": { "code": { - "description": "код ошибки", + "description": "Error code", "type": "integer" }, "data": { - "description": "контекст" + "description": "Error context" }, "message": { - "description": "текст ошибки", + "description": "Error message", "type": "string", - "example": "Произошла ошибка" + "example": "An error occurred" } } }, @@ -429,24 +492,24 @@ ], "properties": { "id": { - "description": "Идентификатор", + "description": "ID (if not set - will be generated)", "type": "string", "maxLength": 36, "example": "PyDmBQZZXYmyxMwED8Fzy" }, "isEncrypted": { - "description": "Зашифровано", + "description": "Is encrypted", "type": "boolean", "example": true }, "message": { - "description": "Текст сообщения", + "description": "Content", "type": "string", "maxLength": 65535, "example": "Hello World!" }, "phoneNumbers": { - "description": "Получатели", + "description": "Recipients (phone numbers)", "type": "array", "maxItems": 100, "minItems": 1, @@ -458,24 +521,24 @@ ] }, "simNumber": { - "description": "Номер сим-карты", + "description": "SIM card number (1-3)", "type": "integer", "maximum": 3, "example": 1 }, "ttl": { - "description": "Время жизни сообщения в секундах", + "description": "Time to live in seconds (conflicts with `validUntil`)", "type": "integer", "minimum": 5, "example": 86400 }, "validUntil": { - "description": "Время окончания жизни сообщения", + "description": "Valid until (conflicts with `ttl`)", "type": "string", "example": "2020-01-01T00:00:00Z" }, "withDeliveryReport": { - "description": "Запрашивать отчет о доставке", + "description": "With delivery report", "type": "boolean", "example": true } @@ -489,23 +552,23 @@ ], "properties": { "id": { - "description": "Идентификатор", + "description": "Message ID", "type": "string", "maxLength": 36, "example": "PyDmBQZZXYmyxMwED8Fzy" }, "isEncrypted": { - "description": "Зашифровано", + "description": "Encrypted", "type": "boolean", "example": false }, "isHashed": { - "description": "Хэшировано", + "description": "Hashed", "type": "boolean", "example": false }, "recipients": { - "description": "Детализация состояния по получателям", + "description": "Recipients states", "type": "array", "minItems": 1, "items": { @@ -513,7 +576,7 @@ } }, "state": { - "description": "Состояние", + "description": "State", "allOf": [ { "$ref": "#/definitions/smsgateway.ProcessState" @@ -527,13 +590,13 @@ "type": "object", "properties": { "name": { - "description": "Имя устройства", + "description": "Device name", "type": "string", "maxLength": 128, "example": "Android Phone" }, "pushToken": { - "description": "Токен для отправки PUSH-уведомлений", + "description": "FCM token", "type": "string", "maxLength": 256, "example": "gHz-T6NezDlOfllr7F-Be" @@ -544,22 +607,22 @@ "type": "object", "properties": { "id": { - "description": "Идентификатор", + "description": "New device ID", "type": "string", "example": "QslD_GefqiYV6RQXdkM6V" }, "login": { - "description": "Логин пользователя", + "description": "User login", "type": "string", "example": "VQ4GII" }, "password": { - "description": "Пароль пользователя", + "description": "User password", "type": "string", "example": "cp2pydvxd2zwpx" }, "token": { - "description": "Ключ доступа", + "description": "Device access token", "type": "string", "example": "bP0ZdK6rC6hCYZSjzmqhQ" } @@ -569,12 +632,12 @@ "type": "object", "properties": { "id": { - "description": "Идентификатор, если есть", + "description": "ID", "type": "string", "example": "QslD_GefqiYV6RQXdkM6V" }, "pushToken": { - "description": "Токен для отправки PUSH-уведомлений", + "description": "FCM token", "type": "string", "maxLength": 256, "example": "gHz-T6NezDlOfllr7F-Be" @@ -591,11 +654,11 @@ "Failed" ], "x-enum-comments": { - "MessageStateDelivered": "Доставлено", - "MessageStateFailed": "Ошибка", - "MessageStatePending": "В ожидании", - "MessageStateProcessed": "Обработано", - "MessageStateSent": "Отправлено" + "MessageStateDelivered": "Delivered", + "MessageStateFailed": "Failed", + "MessageStatePending": "Pending", + "MessageStateProcessed": "Processed (received by device)", + "MessageStateSent": "Sent" }, "x-enum-varnames": [ "MessageStatePending", @@ -605,6 +668,19 @@ "MessageStateFailed" ] }, + "smsgateway.PushNotification": { + "type": "object", + "required": [ + "token" + ], + "properties": { + "token": { + "description": "Device FCM token", + "type": "string", + "example": "PyDmBQZZXYmyxMwED8Fzy" + } + } + }, "smsgateway.RecipientState": { "type": "object", "required": [ @@ -613,19 +689,19 @@ ], "properties": { "error": { - "description": "Ошибка", + "description": "Error (for `Failed` state)", "type": "string", "example": "timeout" }, "phoneNumber": { - "description": "Номер телефона или первые 16 символов SHA256", + "description": "Phone number or first 16 symbols of SHA256 hash", "type": "string", "maxLength": 128, "minLength": 10, "example": "79990001234" }, "state": { - "description": "Состояние", + "description": "State", "allOf": [ { "$ref": "#/definitions/smsgateway.ProcessState" @@ -641,7 +717,7 @@ "type": "basic" }, "MobileToken": { - "description": "Авторизацию устройства по токену", + "description": "Mobile device token", "type": "apiKey", "name": "Authorization", "in": "header" diff --git a/api/swagger.yaml b/api/swagger.yaml index 0df2d66..4933712 100644 --- a/api/swagger.yaml +++ b/api/swagger.yaml @@ -3,60 +3,60 @@ definitions: smsgateway.Device: properties: createdAt: - description: Дата создания + description: Created at (read only) example: "2020-01-01T00:00:00Z" type: string deletedAt: - description: Дата удаления + description: Deleted at (read only) example: "2020-01-01T00:00:00Z" type: string id: - description: Идентификатор + description: ID example: PyDmBQZZXYmyxMwED8Fzy type: string lastSeen: - description: Последняя активность + description: Last seen at (read only) example: "2020-01-01T00:00:00Z" type: string name: - description: Название устройства + description: Name example: My Device type: string updatedAt: - description: Дата обновления + description: Updated at (read only) example: "2020-01-01T00:00:00Z" type: string type: object smsgateway.ErrorResponse: properties: code: - description: код ошибки + description: Error code type: integer data: - description: контекст + description: Error context message: - description: текст ошибки - example: Произошла ошибка + description: Error message + example: An error occurred type: string type: object smsgateway.Message: properties: id: - description: Идентификатор + description: ID (if not set - will be generated) example: PyDmBQZZXYmyxMwED8Fzy maxLength: 36 type: string isEncrypted: - description: Зашифровано + description: Is encrypted example: true type: boolean message: - description: Текст сообщения + description: Content example: Hello World! maxLength: 65535 type: string phoneNumbers: - description: Получатели + description: Recipients (phone numbers) example: - "79990001234" items: @@ -65,21 +65,21 @@ definitions: minItems: 1 type: array simNumber: - description: Номер сим-карты + description: SIM card number (1-3) example: 1 maximum: 3 type: integer ttl: - description: Время жизни сообщения в секундах + description: Time to live in seconds (conflicts with `validUntil`) example: 86400 minimum: 5 type: integer validUntil: - description: Время окончания жизни сообщения + description: Valid until (conflicts with `ttl`) example: "2020-01-01T00:00:00Z" type: string withDeliveryReport: - description: Запрашивать отчет о доставке + description: With delivery report example: true type: boolean required: @@ -89,20 +89,20 @@ definitions: smsgateway.MessageState: properties: id: - description: Идентификатор + description: Message ID example: PyDmBQZZXYmyxMwED8Fzy maxLength: 36 type: string isEncrypted: - description: Зашифровано + description: Encrypted example: false type: boolean isHashed: - description: Хэшировано + description: Hashed example: false type: boolean recipients: - description: Детализация состояния по получателям + description: Recipients states items: $ref: '#/definitions/smsgateway.RecipientState' minItems: 1 @@ -110,7 +110,7 @@ definitions: state: allOf: - $ref: '#/definitions/smsgateway.ProcessState' - description: Состояние + description: State example: Pending required: - recipients @@ -119,12 +119,12 @@ definitions: smsgateway.MobileRegisterRequest: properties: name: - description: Имя устройства + description: Device name example: Android Phone maxLength: 128 type: string pushToken: - description: Токен для отправки PUSH-уведомлений + description: FCM token example: gHz-T6NezDlOfllr7F-Be maxLength: 256 type: string @@ -132,30 +132,30 @@ definitions: smsgateway.MobileRegisterResponse: properties: id: - description: Идентификатор + description: New device ID example: QslD_GefqiYV6RQXdkM6V type: string login: - description: Логин пользователя + description: User login example: VQ4GII type: string password: - description: Пароль пользователя + description: User password example: cp2pydvxd2zwpx type: string token: - description: Ключ доступа + description: Device access token example: bP0ZdK6rC6hCYZSjzmqhQ type: string type: object smsgateway.MobileUpdateRequest: properties: id: - description: Идентификатор, если есть + description: ID example: QslD_GefqiYV6RQXdkM6V type: string pushToken: - description: Токен для отправки PUSH-уведомлений + description: FCM token example: gHz-T6NezDlOfllr7F-Be maxLength: 256 type: string @@ -169,25 +169,34 @@ definitions: - Failed type: string x-enum-comments: - MessageStateDelivered: Доставлено - MessageStateFailed: Ошибка - MessageStatePending: В ожидании - MessageStateProcessed: Обработано - MessageStateSent: Отправлено + MessageStateDelivered: Delivered + MessageStateFailed: Failed + MessageStatePending: Pending + MessageStateProcessed: Processed (received by device) + MessageStateSent: Sent x-enum-varnames: - MessageStatePending - MessageStateProcessed - MessageStateSent - MessageStateDelivered - MessageStateFailed + smsgateway.PushNotification: + properties: + token: + description: Device FCM token + example: PyDmBQZZXYmyxMwED8Fzy + type: string + required: + - token + type: object smsgateway.RecipientState: properties: error: - description: Ошибка + description: Error (for `Failed` state) example: timeout type: string phoneNumber: - description: Номер телефона или первые 16 символов SHA256 + description: Phone number or first 16 symbols of SHA256 hash example: "79990001234" maxLength: 128 minLength: 10 @@ -195,56 +204,55 @@ definitions: state: allOf: - $ref: '#/definitions/smsgateway.ProcessState' - description: Состояние + description: State example: Pending required: - phoneNumber - state type: object -host: localhost:3000 +host: sms.capcom.me info: contact: - email: capcom@soft-c.ru + email: i@capcom.me name: Aleksandr Soloshenko - description: Авторизацию пользователя по логин-паролю - title: SMS-шлюз - API сервера + description: End-user authentication key + title: SMS Gateway - API version: 1.0.0 paths: /3rdparty/v1/device: get: - description: Возвращает все устройства пользователя + description: Returns list of registered devices produces: - application/json responses: "200": - description: Состояние сообщения + description: Device list schema: items: $ref: '#/definitions/smsgateway.Device' type: array "400": - description: Некорректный запрос + description: Invalid request schema: $ref: '#/definitions/smsgateway.ErrorResponse' "401": - description: Ошибка авторизации + description: Unauthorized schema: $ref: '#/definitions/smsgateway.ErrorResponse' "500": - description: Внутренняя ошибка сервера + description: Internal server error schema: $ref: '#/definitions/smsgateway.ErrorResponse' security: - ApiAuth: [] - summary: Получить устройства + summary: List devices tags: - - Пользователь - - Устройства + - User /3rdparty/v1/message: get: - description: Возвращает состояние сообщения по его ID + description: Returns message state by ID parameters: - - description: ИД сообщения + - description: Message ID in: path name: id required: true @@ -253,38 +261,38 @@ paths: - application/json responses: "200": - description: Состояние сообщения + description: Message state schema: $ref: '#/definitions/smsgateway.MessageState' "400": - description: Некорректный запрос + description: Invalid request schema: $ref: '#/definitions/smsgateway.ErrorResponse' "401": - description: Ошибка авторизации + description: Unauthorized schema: $ref: '#/definitions/smsgateway.ErrorResponse' "500": - description: Внутренняя ошибка сервера + description: Internal server error schema: $ref: '#/definitions/smsgateway.ErrorResponse' security: - ApiAuth: [] - summary: Получить состояние сообщения + summary: Get message state tags: - - Пользователь - - Сообщения + - User + - Messages post: consumes: - application/json - description: Ставит сообщение в очередь на отправку. Если идентификатор не указан, - то он будет сгенерирован автоматически + description: Enqueues message for sending. If ID is not specified, it will be + generated parameters: - - description: Пропустить проверку номеров телефона + - description: Skip phone validation in: query name: skipPhoneValidation type: boolean - - description: Сообщение + - description: Send message request in: body name: request required: true @@ -294,38 +302,38 @@ paths: - application/json responses: "202": - description: Сообщение поставлено в очередь + description: Message enqueued headers: Location: - description: URL для получения состояния сообщения + description: Get message state URL type: string schema: $ref: '#/definitions/smsgateway.MessageState' "400": - description: Некорректный запрос + description: Invalid request schema: $ref: '#/definitions/smsgateway.ErrorResponse' "401": - description: Ошибка авторизации + description: Unauthorized schema: $ref: '#/definitions/smsgateway.ErrorResponse' "500": - description: Внутренняя ошибка сервера + description: Internal server error schema: $ref: '#/definitions/smsgateway.ErrorResponse' security: - ApiAuth: [] - summary: Поставить сообщение в очередь + summary: Enqueue message tags: - - Пользователь - - Сообщения + - User + - Messages /mobile/v1/device: patch: consumes: - application/json - description: Обновляет push-токен устройства + description: Updates push token for device parameters: - - description: Запрос на обновление + - description: Device update request in: body name: request required: true @@ -333,30 +341,30 @@ paths: $ref: '#/definitions/smsgateway.MobileUpdateRequest' responses: "204": - description: Успешное обновление + description: Successfully updated "400": - description: Некорректный запрос + description: Invalid request schema: $ref: '#/definitions/smsgateway.ErrorResponse' "403": - description: Операция запрещена + description: Forbidden (wrong device ID) schema: $ref: '#/definitions/smsgateway.ErrorResponse' "500": - description: Внутренняя ошибка сервера + description: Internal server error schema: $ref: '#/definitions/smsgateway.ErrorResponse' security: - MobileToken: [] - summary: Обновление устройства + summary: Update device tags: - - Устройство + - Device post: consumes: - application/json - description: Регистрирует устройство на сервере, генерируя авторизационные данные + description: Registers new device and returns credentials parameters: - - description: Запрос на регистрацию + - description: Device registration request in: body name: request required: true @@ -366,52 +374,58 @@ paths: - application/json responses: "201": - description: Успешная регистрация + description: Device registered schema: $ref: '#/definitions/smsgateway.MobileRegisterResponse' "400": - description: Некорректный запрос + description: Invalid request + schema: + $ref: '#/definitions/smsgateway.ErrorResponse' + "401": + description: Unauthorized (private mode only) + schema: + $ref: '#/definitions/smsgateway.ErrorResponse' + "429": + description: Too many requests schema: $ref: '#/definitions/smsgateway.ErrorResponse' "500": - description: Внутренняя ошибка сервера + description: Internal server error schema: $ref: '#/definitions/smsgateway.ErrorResponse' - summary: Регистрация устройства + summary: Register device tags: - - Устройство - - Регистрация + - Device /mobile/v1/message: get: consumes: - application/json - description: Возвращает список сообщений, требующих отправки + description: Returns list of pending messages produces: - application/json responses: "200": - description: Список сообщений + description: List of pending messages schema: items: $ref: '#/definitions/smsgateway.Message' type: array "500": - description: Внутренняя ошибка сервера + description: Internal server error schema: $ref: '#/definitions/smsgateway.ErrorResponse' security: - MobileToken: [] - summary: Получить сообщения для отправки + summary: Get messages for sending tags: - - Устройство - - Сообщения + - Device + - Messages patch: consumes: - application/json - description: Обновляет состояние сообщений. Состояние обновляется индивидуально - для каждого сообщения, игнорируя ошибки + description: Updates message state parameters: - - description: Состояние сообщений + - description: New message state in: body name: request required: true @@ -423,28 +437,63 @@ paths: - application/json responses: "204": - description: Обновление выполнено + description: Successfully updated "400": - description: Некорректный запрос + description: Invalid request schema: $ref: '#/definitions/smsgateway.ErrorResponse' "500": - description: Внутренняя ошибка сервера + description: Internal server error schema: $ref: '#/definitions/smsgateway.ErrorResponse' security: - MobileToken: [] - summary: Обновить состояние сообщений + summary: Update message state + tags: + - Device + - Messages + /upstream/v1/push: + post: + consumes: + - application/json + description: Enqueues notifications for sending to devices + parameters: + - description: Push request + in: body + name: request + required: true + schema: + items: + $ref: '#/definitions/smsgateway.PushNotification' + type: array + produces: + - application/json + responses: + "202": + description: Notification enqueued + "400": + description: Invalid request + schema: + $ref: '#/definitions/smsgateway.ErrorResponse' + "429": + description: Too many requests + schema: + $ref: '#/definitions/smsgateway.ErrorResponse' + "500": + description: Internal server error + schema: + $ref: '#/definitions/smsgateway.ErrorResponse' + summary: Send push notifications tags: - - Устройство - - Сообщения + - Device + - Upstream schemes: -- http +- https securityDefinitions: ApiAuth: type: basic MobileToken: - description: Авторизацию устройства по токену + description: Mobile device token in: header name: Authorization type: apiKey diff --git a/cmd/sms-gateway/main.go b/cmd/sms-gateway/main.go index 84da707..f85c19e 100644 --- a/cmd/sms-gateway/main.go +++ b/cmd/sms-gateway/main.go @@ -4,26 +4,28 @@ import ( smsgateway "github.com/capcom6/sms-gateway/internal/sms-gateway" ) -// @title SMS-шлюз - API сервера +// @title SMS Gateway - API // @version 1.0.0 -// @description Предоставляет методы для взаимодействия с SMS-шлюзом +// @description Provides API for (Android) SMS Gateway // @contact.name Aleksandr Soloshenko -// @contact.email capcom@soft-c.ru +// @contact.email i@capcom.me // @securitydefinitions.apikey MobileToken // @in header // @name Authorization -// @description Авторизацию устройства по токену +// @description Mobile device token // @securitydefinitions.basic ApiAuth -// @description Авторизацию пользователя по логин-паролю +// @in header +// @description End-user authentication key // @host localhost:3000 -// @schemes http +// @host sms.capcom.me +// @schemes https // @BasePath /api // -// SMS-шлюз +// SMS Gateway func main() { smsgateway.Run() } diff --git a/internal/sms-gateway/handlers/3rdparty.go b/internal/sms-gateway/handlers/3rdparty.go index 203e6c5..5a96b04 100644 --- a/internal/sms-gateway/handlers/3rdparty.go +++ b/internal/sms-gateway/handlers/3rdparty.go @@ -40,18 +40,18 @@ type thirdPartyHandler struct { devicesSvc *services.DevicesService } -// @Summary Получить устройства -// @Description Возвращает все устройства пользователя +// @Summary List devices +// @Description Returns list of registered devices // @Security ApiAuth -// @Tags Пользователь, Устройства +// @Tags User // @Produce json -// @Success 200 {object} []smsgateway.Device "Состояние сообщения" -// @Failure 401 {object} smsgateway.ErrorResponse "Ошибка авторизации" -// @Failure 400 {object} smsgateway.ErrorResponse "Некорректный запрос" -// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера" +// @Success 200 {object} []smsgateway.Device "Device list" +// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request" +// @Failure 401 {object} smsgateway.ErrorResponse "Unauthorized" +// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error" // @Router /3rdparty/v1/device [get] // -// Получить устройства +// List devices func (h *thirdPartyHandler) getDevice(user models.User, c *fiber.Ctx) error { devices, err := h.devicesSvc.Select(user) if err != nil { @@ -74,22 +74,22 @@ func (h *thirdPartyHandler) getDevice(user models.User, c *fiber.Ctx) error { return c.JSON(response) } -// @Summary Поставить сообщение в очередь -// @Description Ставит сообщение в очередь на отправку. Если идентификатор не указан, то он будет сгенерирован автоматически +// @Summary Enqueue message +// @Description Enqueues message for sending. If ID is not specified, it will be generated // @Security ApiAuth -// @Tags Пользователь, Сообщения +// @Tags User, Messages // @Accept json // @Produce json -// @Param skipPhoneValidation query bool false "Пропустить проверку номеров телефона" -// @Param request body smsgateway.Message true "Сообщение" -// @Success 202 {object} smsgateway.MessageState "Сообщение поставлено в очередь" -// @Failure 401 {object} smsgateway.ErrorResponse "Ошибка авторизации" -// @Failure 400 {object} smsgateway.ErrorResponse "Некорректный запрос" -// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера" -// @Header 202 {string} Location "URL для получения состояния сообщения" +// @Param skipPhoneValidation query bool false "Skip phone validation" +// @Param request body smsgateway.Message true "Send message request" +// @Success 202 {object} smsgateway.MessageState "Message enqueued" +// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request" +// @Failure 401 {object} smsgateway.ErrorResponse "Unauthorized" +// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error" +// @Header 202 {string} Location "Get message state URL" // @Router /3rdparty/v1/message [post] // -// Поставить сообщение в очередь +// Enqueue message func (h *thirdPartyHandler) postMessage(user models.User, c *fiber.Ctx) error { req := smsgateway.Message{} if err := h.BodyParserValidator(c, &req); err != nil { @@ -133,19 +133,19 @@ func (h *thirdPartyHandler) postMessage(user models.User, c *fiber.Ctx) error { return c.Status(fiber.StatusAccepted).JSON(state) } -// @Summary Получить состояние сообщения -// @Description Возвращает состояние сообщения по его ID +// @Summary Get message state +// @Description Returns message state by ID // @Security ApiAuth -// @Tags Пользователь, Сообщения +// @Tags User, Messages // @Produce json -// @Param id path string true "ИД сообщения" -// @Success 200 {object} smsgateway.MessageState "Состояние сообщения" -// @Failure 401 {object} smsgateway.ErrorResponse "Ошибка авторизации" -// @Failure 400 {object} smsgateway.ErrorResponse "Некорректный запрос" -// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера" +// @Param id path string true "Message ID" +// @Success 200 {object} smsgateway.MessageState "Message state" +// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request" +// @Failure 401 {object} smsgateway.ErrorResponse "Unauthorized" +// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error" // @Router /3rdparty/v1/message [get] // -// Получить состояние сообщения +// Get message state func (h *thirdPartyHandler) getMessage(user models.User, c *fiber.Ctx) error { id := c.Params("id") diff --git a/internal/sms-gateway/handlers/mobile.go b/internal/sms-gateway/handlers/mobile.go index d1e629f..da30052 100644 --- a/internal/sms-gateway/handlers/mobile.go +++ b/internal/sms-gateway/handlers/mobile.go @@ -28,18 +28,20 @@ type mobileHandler struct { idGen func() string } -// @Summary Регистрация устройства -// @Description Регистрирует устройство на сервере, генерируя авторизационные данные -// @Tags Устройство, Регистрация +// @Summary Register device +// @Description Registers new device and returns credentials +// @Tags Device // @Accept json // @Produce json -// @Param request body smsgateway.MobileRegisterRequest true "Запрос на регистрацию" -// @Success 201 {object} smsgateway.MobileRegisterResponse "Успешная регистрация" -// @Failure 400 {object} smsgateway.ErrorResponse "Некорректный запрос" -// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера" +// @Param request body smsgateway.MobileRegisterRequest true "Device registration request" +// @Success 201 {object} smsgateway.MobileRegisterResponse "Device registered" +// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request" +// @Failure 401 {object} smsgateway.ErrorResponse "Unauthorized (private mode only)" +// @Failure 429 {object} smsgateway.ErrorResponse "Too many requests" +// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error" // @Router /mobile/v1/device [post] // -// Регистрация устройства +// Register device func (h *mobileHandler) postDevice(c *fiber.Ctx) error { req := smsgateway.MobileRegisterRequest{} @@ -69,19 +71,19 @@ func (h *mobileHandler) postDevice(c *fiber.Ctx) error { }) } -// @Summary Обновление устройства -// @Description Обновляет push-токен устройства +// @Summary Update device +// @Description Updates push token for device // @Security MobileToken -// @Tags Устройство +// @Tags Device // @Accept json -// @Param request body smsgateway.MobileUpdateRequest true "Запрос на обновление" -// @Success 204 "Успешное обновление" -// @Failure 400 {object} smsgateway.ErrorResponse "Некорректный запрос" -// @Failure 403 {object} smsgateway.ErrorResponse "Операция запрещена" -// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера" +// @Param request body smsgateway.MobileUpdateRequest true "Device update request" +// @Success 204 "Successfully updated" +// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request" +// @Failure 403 {object} smsgateway.ErrorResponse "Forbidden (wrong device ID)" +// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error" // @Router /mobile/v1/device [patch] // -// Обновление устройства +// Update device func (h *mobileHandler) patchDevice(device models.Device, c *fiber.Ctx) error { req := smsgateway.MobileUpdateRequest{} @@ -100,17 +102,17 @@ func (h *mobileHandler) patchDevice(device models.Device, c *fiber.Ctx) error { return c.SendStatus(fiber.StatusNoContent) } -// @Summary Получить сообщения для отправки -// @Description Возвращает список сообщений, требующих отправки +// @Summary Get messages for sending +// @Description Returns list of pending messages // @Security MobileToken -// @Tags Устройство, Сообщения +// @Tags Device, Messages // @Accept json // @Produce json -// @Success 200 {array} smsgateway.Message "Список сообщений" -// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера" +// @Success 200 {array} smsgateway.Message "List of pending messages" +// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error" // @Router /mobile/v1/message [get] // -// Получить сообщения для отправки +// Get messages for sending func (h *mobileHandler) getMessage(device models.Device, c *fiber.Ctx) error { messages, err := h.messagesSvc.SelectPending(device.ID) if err != nil { @@ -120,19 +122,19 @@ func (h *mobileHandler) getMessage(device models.Device, c *fiber.Ctx) error { return c.JSON(messages) } -// @Summary Обновить состояние сообщений -// @Description Обновляет состояние сообщений. Состояние обновляется индивидуально для каждого сообщения, игнорируя ошибки +// @Summary Update message state +// @Description Updates message state // @Security MobileToken -// @Tags Устройство, Сообщения +// @Tags Device, Messages // @Accept json // @Produce json -// @Param request body []smsgateway.MessageState true "Состояние сообщений" -// @Success 204 {object} nil "Обновление выполнено" -// @Failure 400 {object} smsgateway.ErrorResponse "Некорректный запрос" -// @Failure 500 {object} smsgateway.ErrorResponse "Внутренняя ошибка сервера" +// @Param request body []smsgateway.MessageState true "New message state" +// @Success 204 {object} nil "Successfully updated" +// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request" +// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error" // @Router /mobile/v1/message [patch] // -// Обновить состояние сообщений +// Update message state func (h *mobileHandler) patchMessage(device models.Device, c *fiber.Ctx) error { req := []smsgateway.MessageState{} if err := c.BodyParser(&req); err != nil { diff --git a/internal/sms-gateway/handlers/upstream.go b/internal/sms-gateway/handlers/upstream.go index 190886c..132d640 100644 --- a/internal/sms-gateway/handlers/upstream.go +++ b/internal/sms-gateway/handlers/upstream.go @@ -37,6 +37,19 @@ func newUpstreamHandler(params upstreamHandlerParams) *upstreamHandler { } } +// @Summary Send push notifications +// @Description Enqueues notifications for sending to devices +// @Tags Device, Upstream +// @Accept json +// @Produce json +// @Param request body smsgateway.UpstreamPushRequest true "Push request" +// @Success 202 "Notification enqueued" +// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request" +// @Failure 429 {object} smsgateway.ErrorResponse "Too many requests" +// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error" +// @Router /upstream/v1/push [post] +// +// Send push notifications func (h *upstreamHandler) postPush(c *fiber.Ctx) error { req := smsgateway.UpstreamPushRequest{} diff --git a/pkg/smsgateway/domain.go b/pkg/smsgateway/domain.go index 0202fdf..e2aade6 100644 --- a/pkg/smsgateway/domain.go +++ b/pkg/smsgateway/domain.go @@ -6,35 +6,35 @@ import ( ) const ( - MessageStatePending ProcessState = "Pending" // В ожидании - MessageStateProcessed ProcessState = "Processed" // Обработано - MessageStateSent ProcessState = "Sent" // Отправлено - MessageStateDelivered ProcessState = "Delivered" // Доставлено - MessageStateFailed ProcessState = "Failed" // Ошибка + MessageStatePending ProcessState = "Pending" // Pending + MessageStateProcessed ProcessState = "Processed" // Processed (received by device) + MessageStateSent ProcessState = "Sent" // Sent + MessageStateDelivered ProcessState = "Delivered" // Delivered + MessageStateFailed ProcessState = "Failed" // Failed ) -// Устройство +// Device type Device struct { - ID string `json:"id" example:"PyDmBQZZXYmyxMwED8Fzy"` // Идентификатор - Name string `json:"name" example:"My Device"` // Название устройства - CreatedAt time.Time `json:"createdAt" example:"2020-01-01T00:00:00Z"` // Дата создания - UpdatedAt time.Time `json:"updatedAt" example:"2020-01-01T00:00:00Z"` // Дата обновления - DeletedAt *time.Time `json:"deletedAt,omitempty" example:"2020-01-01T00:00:00Z"` // Дата удаления + ID string `json:"id" example:"PyDmBQZZXYmyxMwED8Fzy"` // ID + Name string `json:"name" example:"My Device"` // Name + CreatedAt time.Time `json:"createdAt" example:"2020-01-01T00:00:00Z"` // Created at (read only) + UpdatedAt time.Time `json:"updatedAt" example:"2020-01-01T00:00:00Z"` // Updated at (read only) + DeletedAt *time.Time `json:"deletedAt,omitempty" example:"2020-01-01T00:00:00Z"` // Deleted at (read only) - LastSeen time.Time `json:"lastSeen" example:"2020-01-01T00:00:00Z"` // Последняя активность + LastSeen time.Time `json:"lastSeen" example:"2020-01-01T00:00:00Z"` // Last seen at (read only) } -// Сообщение +// Message type Message struct { - ID string `json:"id,omitempty" validate:"omitempty,max=36" example:"PyDmBQZZXYmyxMwED8Fzy"` // Идентификатор - Message string `json:"message" validate:"required,max=65535" example:"Hello World!"` // Текст сообщения - SimNumber *uint8 `json:"simNumber,omitempty" validate:"omitempty,max=3" example:"1"` // Номер сим-карты - WithDeliveryReport *bool `json:"withDeliveryReport,omitempty" example:"true"` // Запрашивать отчет о доставке - IsEncrypted bool `json:"isEncrypted,omitempty" example:"true"` // Зашифровано - PhoneNumbers []string `json:"phoneNumbers" validate:"required,min=1,max=100,dive,required,min=10,max=128" example:"79990001234"` // Получатели + ID string `json:"id,omitempty" validate:"omitempty,max=36" example:"PyDmBQZZXYmyxMwED8Fzy"` // ID (if not set - will be generated) + Message string `json:"message" validate:"required,max=65535" example:"Hello World!"` // Content + SimNumber *uint8 `json:"simNumber,omitempty" validate:"omitempty,max=3" example:"1"` // SIM card number (1-3) + WithDeliveryReport *bool `json:"withDeliveryReport,omitempty" example:"true"` // With delivery report + IsEncrypted bool `json:"isEncrypted,omitempty" example:"true"` // Is encrypted + PhoneNumbers []string `json:"phoneNumbers" validate:"required,min=1,max=100,dive,required,min=10,max=128" example:"79990001234"` // Recipients (phone numbers) - TTL *uint64 `json:"ttl,omitempty" validate:"omitempty,min=5" example:"86400"` // Время жизни сообщения в секундах - ValidUntil *time.Time `json:"validUntil,omitempty" example:"2020-01-01T00:00:00Z"` // Время окончания жизни сообщения + TTL *uint64 `json:"ttl,omitempty" validate:"omitempty,min=5" example:"86400"` // Time to live in seconds (conflicts with `validUntil`) + ValidUntil *time.Time `json:"validUntil,omitempty" example:"2020-01-01T00:00:00Z"` // Valid until (conflicts with `ttl`) } func (m Message) Validate() error { @@ -45,22 +45,23 @@ func (m Message) Validate() error { return nil } -// Состояние сообщения +// Message state type MessageState struct { - ID string `json:"id,omitempty" validate:"omitempty,max=36" example:"PyDmBQZZXYmyxMwED8Fzy"` // Идентификатор - State ProcessState `json:"state" validate:"required" example:"Pending"` // Состояние - IsHashed bool `json:"isHashed" example:"false"` // Хэшировано - IsEncrypted bool `json:"isEncrypted" example:"false"` // Зашифровано - Recipients []RecipientState `json:"recipients" validate:"required,min=1,dive"` // Детализация состояния по получателям + ID string `json:"id,omitempty" validate:"omitempty,max=36" example:"PyDmBQZZXYmyxMwED8Fzy"` // Message ID + State ProcessState `json:"state" validate:"required" example:"Pending"` // State + IsHashed bool `json:"isHashed" example:"false"` // Hashed + IsEncrypted bool `json:"isEncrypted" example:"false"` // Encrypted + Recipients []RecipientState `json:"recipients" validate:"required,min=1,dive"` // Recipients states } -// Детализация состояния +// Recipient state type RecipientState struct { - PhoneNumber string `json:"phoneNumber" validate:"required,min=10,max=128" example:"79990001234"` // Номер телефона или первые 16 символов SHA256 - State ProcessState `json:"state" validate:"required" example:"Pending"` // Состояние - Error *string `json:"error,omitempty" example:"timeout"` // Ошибка + PhoneNumber string `json:"phoneNumber" validate:"required,min=10,max=128" example:"79990001234"` // Phone number or first 16 symbols of SHA256 hash + State ProcessState `json:"state" validate:"required" example:"Pending"` // State + Error *string `json:"error,omitempty" example:"timeout"` // Error (for `Failed` state) } +// Push notification type PushNotification struct { - Token string `json:"token" validate:"required" example:"PyDmBQZZXYmyxMwED8Fzy"` + Token string `json:"token" validate:"required" example:"PyDmBQZZXYmyxMwED8Fzy"` // Device FCM token } diff --git a/pkg/smsgateway/requests.go b/pkg/smsgateway/requests.go index 381ff22..c4d66b0 100644 --- a/pkg/smsgateway/requests.go +++ b/pkg/smsgateway/requests.go @@ -1,15 +1,16 @@ package smsgateway -// Запрос на регистрацию устройства +// Device registration request type MobileRegisterRequest struct { - Name *string `json:"name,omitempty" validate:"omitempty,max=128" example:"Android Phone"` // Имя устройства - PushToken *string `json:"pushToken" validate:"omitempty,max=256" example:"gHz-T6NezDlOfllr7F-Be"` // Токен для отправки PUSH-уведомлений + Name *string `json:"name,omitempty" validate:"omitempty,max=128" example:"Android Phone"` // Device name + PushToken *string `json:"pushToken" validate:"omitempty,max=256" example:"gHz-T6NezDlOfllr7F-Be"` // FCM token } -// Запрос на обновление данных об устройстве +// Device update request type MobileUpdateRequest struct { - Id string `json:"id" example:"QslD_GefqiYV6RQXdkM6V"` // Идентификатор, если есть - PushToken string `json:"pushToken" validate:"omitempty,max=256" example:"gHz-T6NezDlOfllr7F-Be"` // Токен для отправки PUSH-уведомлений + Id string `json:"id" example:"QslD_GefqiYV6RQXdkM6V"` // ID + PushToken string `json:"pushToken" validate:"omitempty,max=256" example:"gHz-T6NezDlOfllr7F-Be"` // FCM token } +// Push request type UpstreamPushRequest = []PushNotification diff --git a/pkg/smsgateway/responses.go b/pkg/smsgateway/responses.go index 7f97b72..54ba143 100644 --- a/pkg/smsgateway/responses.go +++ b/pkg/smsgateway/responses.go @@ -1,16 +1,16 @@ package smsgateway -// Успешная регистрация устройства +// Device registration response type MobileRegisterResponse struct { - Id string `json:"id" example:"QslD_GefqiYV6RQXdkM6V"` // Идентификатор - Token string `json:"token" example:"bP0ZdK6rC6hCYZSjzmqhQ"` // Ключ доступа - Login string `json:"login" example:"VQ4GII"` // Логин пользователя - Password string `json:"password" example:"cp2pydvxd2zwpx"` // Пароль пользователя + Id string `json:"id" example:"QslD_GefqiYV6RQXdkM6V"` // New device ID + Token string `json:"token" example:"bP0ZdK6rC6hCYZSjzmqhQ"` // Device access token + Login string `json:"login" example:"VQ4GII"` // User login + Password string `json:"password" example:"cp2pydvxd2zwpx"` // User password } -// Сообщение об ошибке +// Error response type ErrorResponse struct { - Message string `json:"message" example:"Произошла ошибка"` // текст ошибки - Code int32 `json:"code,omitempty"` // код ошибки - Data any `json:"data,omitempty"` // контекст + Message string `json:"message" example:"An error occurred"` // Error message + Code int32 `json:"code,omitempty"` // Error code + Data any `json:"data,omitempty"` // Error context } From 42cddd5a0e536a5a60465bf9cbfd35284816e26e Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Mon, 18 Mar 2024 10:49:58 +0700 Subject: [PATCH 11/12] [api/mobile] skip registration auth in public mode --- internal/sms-gateway/handlers/mobile.go | 1 + internal/sms-gateway/modules/auth/service.go | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/sms-gateway/handlers/mobile.go b/internal/sms-gateway/handlers/mobile.go index da30052..38f63cb 100644 --- a/internal/sms-gateway/handlers/mobile.go +++ b/internal/sms-gateway/handlers/mobile.go @@ -173,6 +173,7 @@ func (h *mobileHandler) Register(router fiber.Router) { router = router.Group("/mobile/v1") router.Post("/device", limiter.New(), apikey.New(apikey.Config{ + Next: func(c *fiber.Ctx) bool { return h.authSvc.IsPublic() }, Authorizer: func(token string) bool { return h.authSvc.AuthorizeRegistration(token) == nil }, diff --git a/internal/sms-gateway/modules/auth/service.go b/internal/sms-gateway/modules/auth/service.go index 67e35ef..0cbf61a 100644 --- a/internal/sms-gateway/modules/auth/service.go +++ b/internal/sms-gateway/modules/auth/service.go @@ -83,8 +83,12 @@ func (s *Service) UpdateDevice(id, pushToken string) error { return s.devices.UpdateToken(id, pushToken) } +func (s *Service) IsPublic() bool { + return s.config.Mode == ModePublic +} + func (s *Service) AuthorizeRegistration(token string) error { - if s.config.Mode == ModePublic { + if s.IsPublic() { return nil } From 61e60ba3869e8d24c54ff87fce7f139b2d3c02e8 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Tue, 19 Mar 2024 23:01:28 +0700 Subject: [PATCH 12/12] [docs] update getting started with new schemes --- web/mkdocs/docs/assets/cloud-server-arch.png | Bin 68428 -> 61952 bytes web/mkdocs/docs/assets/local-server-arch.png | Bin 23087 -> 24277 bytes .../docs/assets/private-server-arch.png | Bin 76371 -> 88320 bytes .../docs/getting-started/local-server.md | 7 +++---- .../getting-started/public-cloud-server.md | 7 +++---- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/web/mkdocs/docs/assets/cloud-server-arch.png b/web/mkdocs/docs/assets/cloud-server-arch.png index 9e529fa86206a7ab69aaa49b50db91509fd0c8bb..d9c68c4c4353231eddbf9890b3f3d5946fb18ebe 100644 GIT binary patch literal 61952 zcmeFYhgTC{)HRF+P?4e_Rf^K3{pd}CNS7uey-DxA*C?n+m#(x>q)6{QAR+{$gdS=F zLTCYkv_Jyn9iMl-|HHSw^-NgnhGb^eos)ac*=L`9V_)j3Q{G{|LqbAAsi~pziiG55 zDGA99k6YJ)Pq>fQHGqN4R!d!lg!u1O04+-+A>km=R8e{zoV&Xm6#m)}3Huv{Jx=}l zdXn~)#`Qv+?X{H09DIDAB62YMJM=-2p>=JDY*V0i0#@BH7t&ze7l{~HU;R6zg6mqL%(|BdDJDb)YQ*YW>*`Tv^k zf0qs53jgae{~Ip;g~b1VhDxo)nHxV^vr!^h#)etOv(vK7xw@^0O#`};O7fHH;whI= z9)r43W+pb~c>(Rp3ICH%BmotE5}Agt4H2{Q%sE|FwJ4Dw;8Xv{dAe>Aj8Pu5pXxqu z4SGX$5i^`WTeAjv-TiOZ!h;^Sau8p~!Z%yV<^@kV(k8x5?5NaNs-Jok-vU7pd%n_A z5)yJdlFT}`?yuEcy`cFh?PoFk{IyRr4PIiM|6{zX)Z6P=X;?O;d7r|AMDpl7eAKhG zv9MR)TIAMq3;){gh}01tJL6;ul$r|2!X>VVjy{VOl+P>h;AkZYUlUw zNrSSdqx&Gu+b%=5ndzrjem_23jXMmDkjJstRMjLV#KvNl&5Iped|KCV1g$%FhU4O+ z_LPcaPNiuE-wkJ2n}n}uwDdElf62COp6>{iA?Zjh;zO(U_kSQ&i;f(ryJi&MUa9`x z>)vDbnp~bTx5fQvHb{>iQ9E9;yfP-5!bdibx1m8riAmnQKxlAsrtexPqpCg?>*$aW zU!2~HxTIvKpAVl=)WZD!9M~ieOZsX!s+edPQXQo!w}v?8m`SV4CIZDb#s2 zb!}A*r8U$T*)X1JqpZxYrl|2R<}asb?5=gl*CK*e24e^3zI-Y#uVJHj>#39et!X4O zvd4E_CDJ&VbVq$%dGqi*TwQlvwSVAMZONus_UMGqUzo3MLlsX)`Dr5)a-RwDm}atN2z8PY;SKⅇ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 TnlueOGsxhMiB2)};j{k&r4~}_ literal 23087 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 VhY8kg1TeS2{F&V2{@g&Jf32nymaU>l5NW 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 vA%j?3{&$orCI5bHw@j)5YnAPcMmYs%m4$! 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 diff --git a/web/mkdocs/docs/getting-started/local-server.md b/web/mkdocs/docs/getting-started/local-server.md index ba8a8d1..7393af5 100644 --- a/web/mkdocs/docs/getting-started/local-server.md +++ b/web/mkdocs/docs/getting-started/local-server.md @@ -12,12 +12,11 @@ This mode is ideal for sending messages from a local network. 2. Toggle the `Local Server` switch to the "on" position. 3. Tap the `Offline` button located at the bottom of the screen to activate the server. 4. The `Local Server` section will display your device's local and public IP addresses, as well as the credentials for basic authentication. Please note that the public IP address is only accessible if you have a public (also known as "white") IP and your firewall is configured appropriately. +

5. To send a message from within the local network, execute a `curl` command like the following. Be sure to replace ``, ``, and `` with the actual values provided in the previous step: ```sh curl -X POST -u : -H "Content-Type: application/json" -d '{ "message": "Hello, world!", "phoneNumbers": ["79990001234", "79995556677"] }' http://:8080/message ``` - -
- Example settings for Local Server mode -
\ No newline at end of file diff --git a/web/mkdocs/docs/getting-started/public-cloud-server.md b/web/mkdocs/docs/getting-started/public-cloud-server.md index 58a5856..4a3a36f 100644 --- a/web/mkdocs/docs/getting-started/public-cloud-server.md +++ b/web/mkdocs/docs/getting-started/public-cloud-server.md @@ -12,12 +12,11 @@ Use the cloud server mode when dealing with dynamic or shared device IP addresse 2. Toggle the `Cloud Server` switch to the "on" position. 3. Tap the `Online` button located at the bottom of the screen to connect to the cloud server. 4. In the `Cloud Server` section, the credentials for basic authentication will be displayed. +
+ Example settings for Cloud Server mode +
5. To send a message via the cloud server, perform a `curl` request with a command similar to the following, substituting `` and `` with the actual values obtained in step 4: ```sh curl -X POST -u : -H "Content-Type: application/json" -d '{ "message": "Hello, world!", "phoneNumbers": ["79990001234", "79995556677"] }' https://sms.capcom.me/api/3rdparty/v1/message ``` - -
- Example settings for Cloud Server mode -
\ No newline at end of file