models.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. export interface AppVersion {
  2. major: number;
  3. minor: number;
  4. revision: number;
  5. }
  6. export interface UserPermissions {
  7. id?: number;
  8. createdOn?: string;
  9. modifiedOn?: string;
  10. userId?: number;
  11. visibility: string;
  12. proxyHosts: string;
  13. redirectionHosts: string;
  14. deadHosts: string;
  15. streams: string;
  16. accessLists: string;
  17. certificates: string;
  18. }
  19. export interface User {
  20. id: number;
  21. createdOn: string;
  22. modifiedOn: string;
  23. isDisabled: boolean;
  24. email: string;
  25. name: string;
  26. nickname: string;
  27. avatar: string;
  28. roles: string[];
  29. permissions?: UserPermissions;
  30. }
  31. export interface AuditLog {
  32. id: number;
  33. createdOn: string;
  34. modifiedOn: string;
  35. userId: number;
  36. objectType: string;
  37. objectId: number;
  38. action: string;
  39. meta: Record<string, any>;
  40. // Expansions:
  41. user?: User;
  42. }
  43. export interface AccessList {
  44. id?: number;
  45. createdOn?: string;
  46. modifiedOn?: string;
  47. ownerUserId: number;
  48. name: string;
  49. meta: Record<string, any>;
  50. satisfyAny: boolean;
  51. passAuth: boolean;
  52. proxyHostCount?: number;
  53. // Expansions:
  54. owner?: User;
  55. items?: AccessListItem[];
  56. clients?: AccessListClient[];
  57. }
  58. export interface AccessListItem {
  59. id?: number;
  60. createdOn?: string;
  61. modifiedOn?: string;
  62. accessListId?: number;
  63. username: string;
  64. password: string;
  65. meta?: Record<string, any>;
  66. hint?: string;
  67. }
  68. export type AccessListClient = {
  69. id?: number;
  70. createdOn?: string;
  71. modifiedOn?: string;
  72. accessListId?: number;
  73. address: string;
  74. directive: "allow" | "deny";
  75. meta?: Record<string, any>;
  76. };
  77. export interface Certificate {
  78. id: number;
  79. createdOn: string;
  80. modifiedOn: string;
  81. ownerUserId: number;
  82. provider: string;
  83. niceName: string;
  84. domainNames: string[];
  85. expiresOn: string;
  86. meta: Record<string, any>;
  87. owner?: User;
  88. proxyHosts?: ProxyHost[];
  89. deadHosts?: DeadHost[];
  90. redirectionHosts?: RedirectionHost[];
  91. }
  92. export interface ProxyLocation {
  93. path: string;
  94. advancedConfig: string;
  95. forwardScheme: string;
  96. forwardHost: string;
  97. forwardPort: number;
  98. }
  99. export interface ProxyHost {
  100. id: number;
  101. createdOn: string;
  102. modifiedOn: string;
  103. ownerUserId: number;
  104. domainNames: string[];
  105. forwardScheme: string;
  106. forwardHost: string;
  107. forwardPort: number;
  108. accessListId: number;
  109. certificateId: number;
  110. sslForced: boolean;
  111. cachingEnabled: boolean;
  112. blockExploits: boolean;
  113. advancedConfig: string;
  114. meta: Record<string, any>;
  115. allowWebsocketUpgrade: boolean;
  116. http2Support: boolean;
  117. enabled: boolean;
  118. locations?: ProxyLocation[];
  119. hstsEnabled: boolean;
  120. hstsSubdomains: boolean;
  121. // Expansions:
  122. owner?: User;
  123. accessList?: AccessList;
  124. certificate?: Certificate;
  125. }
  126. export interface DeadHost {
  127. id: number;
  128. createdOn: string;
  129. modifiedOn: string;
  130. ownerUserId: number;
  131. domainNames: string[];
  132. certificateId: number;
  133. sslForced: boolean;
  134. advancedConfig: string;
  135. meta: Record<string, any>;
  136. http2Support: boolean;
  137. enabled: boolean;
  138. hstsEnabled: boolean;
  139. hstsSubdomains: boolean;
  140. // Expansions:
  141. owner?: User;
  142. certificate?: Certificate;
  143. }
  144. export interface RedirectionHost {
  145. id: number;
  146. createdOn: string;
  147. modifiedOn: string;
  148. ownerUserId: number;
  149. domainNames: string[];
  150. forwardDomainName: string;
  151. preservePath: boolean;
  152. certificateId: number;
  153. sslForced: boolean;
  154. blockExploits: boolean;
  155. advancedConfig: string;
  156. meta: Record<string, any>;
  157. http2Support: boolean;
  158. forwardScheme: string;
  159. forwardHttpCode: number;
  160. enabled: boolean;
  161. hstsEnabled: boolean;
  162. hstsSubdomains: boolean;
  163. // Expansions:
  164. owner?: User;
  165. certificate?: Certificate;
  166. }
  167. export interface Stream {
  168. id: number;
  169. createdOn: string;
  170. modifiedOn: string;
  171. ownerUserId: number;
  172. incomingPort: number;
  173. forwardingHost: string;
  174. forwardingPort: number;
  175. tcpForwarding: boolean;
  176. udpForwarding: boolean;
  177. meta: Record<string, any>;
  178. enabled: boolean;
  179. certificateId: number;
  180. // Expansions:
  181. owner?: User;
  182. certificate?: Certificate;
  183. }
  184. export interface Setting {
  185. id: string;
  186. name?: string;
  187. description?: string;
  188. value: string;
  189. meta?: Record<string, any>;
  190. }
  191. export interface DNSProvider {
  192. id: string;
  193. name: string;
  194. credentials: string;
  195. }