structs.go 5.0 KB

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