site.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import type { CertificateInfo } from '@/api/cert'
  2. import type { ModelBase } from '@/api/curd'
  3. import type { EnvGroup } from '@/api/env_group'
  4. import type { NgxConfig } from '@/api/ngx'
  5. import type { ChatComplicationMessage } from '@/api/openai'
  6. import type { PrivateKeyType } from '@/constants'
  7. import Curd from '@/api/curd'
  8. import http from '@/lib/http'
  9. export interface Site extends ModelBase {
  10. modified_at: string
  11. path: string
  12. advanced: boolean
  13. enabled: boolean
  14. name: string
  15. filepath: string
  16. config: string
  17. auto_cert: boolean
  18. chatgpt_messages: ChatComplicationMessage[]
  19. tokenized?: NgxConfig
  20. cert_info?: Record<number, CertificateInfo[]>
  21. env_group_id: number
  22. env_group?: EnvGroup
  23. sync_node_ids: number[]
  24. urls?: string[]
  25. }
  26. export interface AutoCertRequest {
  27. dns_credential_id: number | null
  28. challenge_method: string
  29. domains: string[]
  30. key_type: PrivateKeyType
  31. }
  32. class SiteCurd extends Curd<Site> {
  33. // eslint-disable-next-line ts/no-explicit-any
  34. enable(name: string, config?: any) {
  35. return http.post(`${this.baseUrl}/${name}/enable`, undefined, config)
  36. }
  37. disable(name: string) {
  38. return http.post(`${this.baseUrl}/${name}/disable`)
  39. }
  40. rename(oldName: string, newName: string) {
  41. return http.post(`${this.baseUrl}/${oldName}/rename`, { new_name: newName })
  42. }
  43. get_default_template() {
  44. return http.get('default_site_template')
  45. }
  46. add_auto_cert(domain: string, data: AutoCertRequest) {
  47. return http.post(`auto_cert/${domain}`, data)
  48. }
  49. remove_auto_cert(domain: string) {
  50. return http.delete(`auto_cert/${domain}`)
  51. }
  52. duplicate(name: string, data: { name: string }): Promise<{ dst: string }> {
  53. return http.post(`${this.baseUrl}/${name}/duplicate`, data)
  54. }
  55. advance_mode(name: string, data: { advanced: boolean }) {
  56. return http.post(`${this.baseUrl}/${name}/advance`, data)
  57. }
  58. }
  59. const site = new SiteCurd('/sites')
  60. export default site