core

package
v0.0.0-...-39e08ed Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2021 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SigningKeyBytesAmount   = 4096
	TokenExpireTimeDuration = 24 * time.Hour
)
View Source
const (
	UsersCollectionName = "users"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AppContext

type AppContext struct {
	// contains filtered or unexported fields
}

func NewAppContext

func NewAppContext(cfg *Config) *AppContext

func (*AppContext) Run

func (ac *AppContext) Run() error

type AuthHandler

type AuthHandler struct {
	// contains filtered or unexported fields
}

func NewAuthHandler

func NewAuthHandler(am *AuthManager, serverID string) *AuthHandler

func (*AuthHandler) HandleMessage

func (ah *AuthHandler) HandleMessage(s *Session, message models.BaseMessage)

func (*AuthHandler) HandlingType

func (ah *AuthHandler) HandlingType() string

func (*AuthHandler) IsAuthorizationRequired

func (ah *AuthHandler) IsAuthorizationRequired() bool

type AuthManager

type AuthManager struct {
	// contains filtered or unexported fields
}

func NewAuthManager

func NewAuthManager(um *UserManager, serverID string, r *Router) (*AuthManager, error)

func (*AuthManager) CreateNewToken

func (am *AuthManager) CreateNewToken(entityID *models.EntityID, deviceID string, tokenExpireTimeDuration time.Duration) (*JWTCustomClaims, string, error)

func (*AuthManager) HandleSimpleAuth

func (am *AuthManager) HandleSimpleAuth(username string, pass string) (string, *JWTCustomClaims, error)

func (*AuthManager) ValidateToken

func (am *AuthManager) ValidateToken(tokenString string) (*JWTCustomClaims, error)

type C2SMessageHandler

type C2SMessageHandler interface {
	HandleMessage(s *Session, message models.BaseMessage)
	IsAuthorizationRequired() bool
	HandlingType() string
}

type Config

type Config struct {
	ServerDomains []string `comment:"Server domain names (e.g. example.com)"`
	ServerID      string
	Websocket     struct {
		Host     string
		Port     int
		Endpoint string
	}
	Mongo struct {
		Host     string
		Port     int
		User     string
		Password string
		Database string
	}
}

type JWTCustomClaims

type JWTCustomClaims struct {
	EntityID []*models.EntityID `json:"entityID"`
	DeviceID string             `json:"deviceID"`
	jwt.StandardClaims
}

type Router

type Router struct {
	// contains filtered or unexported fields
}

func NewRouter

func NewRouter(ctx *AppContext) (*Router, error)

func (*Router) RegisterC2SHandler

func (r *Router) RegisterC2SHandler(c C2SMessageHandler)

func (*Router) RouteMessage

func (r *Router) RouteMessage(origin *Session, message models.BaseMessage)

type Session

type Session struct {
	Claims *JWTCustomClaims
	// contains filtered or unexported fields
}

func (*Session) Close

func (s *Session) Close() error

func (*Session) Receive

func (s *Session) Receive() (models.BaseMessage, error)

func (*Session) Send

func (s *Session) Send(message models.BaseMessage) error

type SessionManager

type SessionManager struct {
	// contains filtered or unexported fields
}

func NewSessionManager

func NewSessionManager(r *Router, domains []string) *SessionManager

func (*SessionManager) HandleNewConnection

func (sm *SessionManager) HandleNewConnection(wsocket *websocket.Conn)

type UserManager

type UserManager struct {
	// contains filtered or unexported fields
}

func NewUserManager

func NewUserManager(db *mongo.Database) (*UserManager, error)

func (*UserManager) GetByUsername

func (um *UserManager) GetByUsername(username string) (*models.User, error)

func (*UserManager) SaveUser

func (um *UserManager) SaveUser(user *models.User) error

type WebsocketServer

type WebsocketServer struct {
	// contains filtered or unexported fields
}

func NewWebsocketServer

func NewWebsocketServer(cfg *Config, sessionManager *SessionManager) *WebsocketServer

func (*WebsocketServer) Run

func (wss *WebsocketServer) Run() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL