structs.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package models
  2. import jwt "github.com/golang-jwt/jwt/v4"
  3. const PLACEHOLDER_KEY_TEXT = "ACCESS_KEY"
  4. const PLACEHOLDER_TOKEN_TEXT = "ACCESS_TOKEN"
  5. // AuthParams - struct for auth params
  6. type AuthParams struct {
  7. MacAddress string `json:"macaddress"`
  8. Password string `json:"password"`
  9. }
  10. // User struct - struct for Users
  11. type User struct {
  12. 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}$"`
  13. Password string `json:"password" bson:"password" validate:"required,min=5"`
  14. Networks []string `json:"networks" bson:"networks"`
  15. IsAdmin bool `json:"isadmin" bson:"isadmin"`
  16. }
  17. // ReturnUser - return user struct
  18. type ReturnUser struct {
  19. 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}$"`
  20. Networks []string `json:"networks" bson:"networks"`
  21. IsAdmin bool `json:"isadmin" bson:"isadmin"`
  22. }
  23. // UserAuthParams - user auth params struct
  24. type UserAuthParams struct {
  25. UserName string `json:"username"`
  26. Password string `json:"password"`
  27. }
  28. // UserClaims - user claims struct
  29. type UserClaims struct {
  30. IsAdmin bool
  31. UserName string
  32. Networks []string
  33. jwt.StandardClaims
  34. }
  35. // SuccessfulUserLoginResponse - successlogin struct
  36. type SuccessfulUserLoginResponse struct {
  37. UserName string
  38. AuthToken string
  39. }
  40. // Claims is a struct that will be encoded to a JWT.
  41. // jwt.StandardClaims is an embedded type to provide expiry time
  42. type Claims struct {
  43. Network string
  44. MacAddress string
  45. jwt.StandardClaims
  46. }
  47. // SuccessfulLoginResponse is struct to send the request response
  48. type SuccessfulLoginResponse struct {
  49. MacAddress string
  50. AuthToken string
  51. }
  52. // ErrorResponse is struct for error
  53. type ErrorResponse struct {
  54. Code int
  55. Message string
  56. }
  57. // NodeAuth - struct for node auth
  58. type NodeAuth struct {
  59. Network string
  60. Password string
  61. MacAddress string
  62. }
  63. // SuccessResponse is struct for sending error message with code.
  64. type SuccessResponse struct {
  65. Code int
  66. Message string
  67. Response interface{}
  68. }
  69. // AccessKey - access key struct
  70. type AccessKey struct {
  71. Name string `json:"name" bson:"name" validate:"omitempty,max=20"`
  72. Value string `json:"value" bson:"value" validate:"omitempty,alphanum,max=16"`
  73. AccessString string `json:"accessstring" bson:"accessstring"`
  74. Uses int `json:"uses" bson:"uses" validate:"numeric,min=0"`
  75. }
  76. // DisplayKey - what is displayed for key
  77. type DisplayKey struct {
  78. Name string `json:"name" bson:"name"`
  79. Uses int `json:"uses" bson:"uses"`
  80. }
  81. // GlobalConfig - global config
  82. type GlobalConfig struct {
  83. Name string `json:"name" bson:"name"`
  84. PortGRPC string `json:"portgrpc" bson:"portgrpc"`
  85. ServerGRPC string `json:"servergrpc" bson:"servergrpc"`
  86. }
  87. // CheckInResponse - checkin response
  88. type CheckInResponse struct {
  89. Success bool `json:"success" bson:"success"`
  90. NeedPeerUpdate bool `json:"needpeerupdate" bson:"needpeerupdate"`
  91. NeedConfigUpdate bool `json:"needconfigupdate" bson:"needconfigupdate"`
  92. NeedKeyUpdate bool `json:"needkeyupdate" bson:"needkeyupdate"`
  93. NeedDelete bool `json:"needdelete" bson:"needdelete"`
  94. NodeMessage string `json:"nodemessage" bson:"nodemessage"`
  95. IsPending bool `json:"ispending" bson:"ispending"`
  96. }
  97. // PeersResponse - peers response
  98. type PeersResponse struct {
  99. PublicKey string `json:"publickey" bson:"publickey"`
  100. Endpoint string `json:"endpoint" bson:"endpoint"`
  101. Address string `json:"address" bson:"address"`
  102. Address6 string `json:"address6" bson:"address6"`
  103. LocalAddress string `json:"localaddress" bson:"localaddress"`
  104. IsEgressGateway string `json:"isegressgateway" bson:"isegressgateway"`
  105. EgressGatewayRanges string `json:"egressgatewayrange" bson:"egressgatewayrange"`
  106. ListenPort int32 `json:"listenport" bson:"listenport"`
  107. KeepAlive int32 `json:"persistentkeepalive" bson:"persistentkeepalive"`
  108. }
  109. // ExtPeersResponse - ext peers response
  110. type ExtPeersResponse struct {
  111. PublicKey string `json:"publickey" bson:"publickey"`
  112. Endpoint string `json:"endpoint" bson:"endpoint"`
  113. Address string `json:"address" bson:"address"`
  114. Address6 string `json:"address6" bson:"address6"`
  115. LocalAddress string `json:"localaddress" bson:"localaddress"`
  116. ListenPort int32 `json:"listenport" bson:"listenport"`
  117. KeepAlive int32 `json:"persistentkeepalive" bson:"persistentkeepalive"`
  118. }
  119. // EgressGatewayRequest - egress gateway request
  120. type EgressGatewayRequest struct {
  121. NodeID string `json:"nodeid" bson:"nodeid"`
  122. NetID string `json:"netid" bson:"netid"`
  123. RangeString string `json:"rangestring" bson:"rangestring"`
  124. Ranges []string `json:"ranges" bson:"ranges"`
  125. Interface string `json:"interface" bson:"interface"`
  126. PostUp string `json:"postup" bson:"postup"`
  127. PostDown string `json:"postdown" bson:"postdown"`
  128. }
  129. // RelayRequest - relay request struct
  130. type RelayRequest struct {
  131. NodeID string `json:"nodeid" bson:"nodeid"`
  132. NetID string `json:"netid" bson:"netid"`
  133. RelayAddrs []string `json:"relayaddrs" bson:"relayaddrs"`
  134. }