| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | package modelsimport jwt "github.com/golang-jwt/jwt/v4"// AuthParams - struct for auth paramstype AuthParams struct {	MacAddress string `json:"macaddress"`	Password   string `json:"password"`}// User struct - struct for Userstype User struct {	UserName string   `json:"username" bson:"username" validate:"min=3,max=40,regexp=^(([a-zA-Z,\-,\.]*)|([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})){3,40}$"`	Password string   `json:"password" bson:"password" validate:"required,min=5"`	Networks []string `json:"networks" bson:"networks"`	IsAdmin  bool     `json:"isadmin" bson:"isadmin"`}// ReturnUser - return user structtype ReturnUser struct {	UserName string   `json:"username" bson:"username" validate:"min=3,max=40,regexp=^(([a-zA-Z,\-,\.]*)|([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})){3,40}$"`	Networks []string `json:"networks" bson:"networks"`	IsAdmin  bool     `json:"isadmin" bson:"isadmin"`}// UserAuthParams - user auth params structtype UserAuthParams struct {	UserName string `json:"username"`	Password string `json:"password"`}// UserClaims - user claims structtype UserClaims struct {	IsAdmin  bool	UserName string	Networks []string	jwt.StandardClaims}// SuccessfulUserLoginResponse - successlogin structtype SuccessfulUserLoginResponse struct {	UserName  string	AuthToken string}// Claims is  a struct that will be encoded to a JWT.// jwt.StandardClaims is an embedded type to provide expiry timetype Claims struct {	Network    string	MacAddress string	jwt.StandardClaims}// SuccessfulLoginResponse is struct to send the request responsetype SuccessfulLoginResponse struct {	MacAddress string	AuthToken  string}// ErrorResponse is struct for errortype ErrorResponse struct {	Code    int	Message string}// NodeAuth - struct for node authtype NodeAuth struct {	Network    string	Password   string	MacAddress string}// SuccessResponse is struct for sending error message with code.type SuccessResponse struct {	Code     int	Message  string	Response interface{}}// AccessKey - access key structtype AccessKey struct {	Name         string `json:"name" bson:"name" validate:"omitempty,max=20"`	Value        string `json:"value" bson:"value" validate:"omitempty,alphanum,max=16"`	AccessString string `json:"accessstring" bson:"accessstring"`	Uses         int    `json:"uses" bson:"uses"`}// DisplayKey - what is displayed for keytype DisplayKey struct {	Name string `json:"name" bson:"name"`	Uses int    `json:"uses" bson:"uses"`}// GlobalConfig - global configtype GlobalConfig struct {	Name       string `json:"name" bson:"name"`	PortGRPC   string `json:"portgrpc" bson:"portgrpc"`	ServerGRPC string `json:"servergrpc" bson:"servergrpc"`}// CheckInResponse - checkin responsetype CheckInResponse struct {	Success          bool   `json:"success" bson:"success"`	NeedPeerUpdate   bool   `json:"needpeerupdate" bson:"needpeerupdate"`	NeedConfigUpdate bool   `json:"needconfigupdate" bson:"needconfigupdate"`	NeedKeyUpdate    bool   `json:"needkeyupdate" bson:"needkeyupdate"`	NeedDelete       bool   `json:"needdelete" bson:"needdelete"`	NodeMessage      string `json:"nodemessage" bson:"nodemessage"`	IsPending        bool   `json:"ispending" bson:"ispending"`}// PeersResponse - peers responsetype PeersResponse struct {	PublicKey           string `json:"publickey" bson:"publickey"`	Endpoint            string `json:"endpoint" bson:"endpoint"`	Address             string `json:"address" bson:"address"`	Address6            string `json:"address6" bson:"address6"`	LocalAddress        string `json:"localaddress" bson:"localaddress"`	IsEgressGateway     string `json:"isegressgateway" bson:"isegressgateway"`	EgressGatewayRanges string `json:"egressgatewayrange" bson:"egressgatewayrange"`	ListenPort          int32  `json:"listenport" bson:"listenport"`	KeepAlive           int32  `json:"persistentkeepalive" bson:"persistentkeepalive"`}// ExtPeersResponse - ext peers responsetype ExtPeersResponse struct {	PublicKey    string `json:"publickey" bson:"publickey"`	Endpoint     string `json:"endpoint" bson:"endpoint"`	Address      string `json:"address" bson:"address"`	Address6     string `json:"address6" bson:"address6"`	LocalAddress string `json:"localaddress" bson:"localaddress"`	ListenPort   int32  `json:"listenport" bson:"listenport"`	KeepAlive    int32  `json:"persistentkeepalive" bson:"persistentkeepalive"`}// EgressGatewayRequest - egress gateway requesttype EgressGatewayRequest struct {	NodeID      string   `json:"nodeid" bson:"nodeid"`	NetID       string   `json:"netid" bson:"netid"`	RangeString string   `json:"rangestring" bson:"rangestring"`	Ranges      []string `json:"ranges" bson:"ranges"`	Interface   string   `json:"interface" bson:"interface"`	PostUp      string   `json:"postup" bson:"postup"`	PostDown    string   `json:"postdown" bson:"postdown"`}// RelayRequest - relay request structtype RelayRequest struct {	NodeID     string   `json:"nodeid" bson:"nodeid"`	NetID      string   `json:"netid" bson:"netid"`	RelayAddrs []string `json:"relayaddrs" bson:"relayaddrs"`}
 |