structs.go 4.3 KB

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