site.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 { ConfigStatus, PrivateKeyType } from '@/constants'
  7. import { http, useCurdApi } from '@uozi-admin/request'
  8. export type SiteStatus = ConfigStatus.Enabled | ConfigStatus.Disabled | ConfigStatus.Maintenance
  9. export interface Site extends ModelBase {
  10. modified_at: string
  11. path: string
  12. advanced: boolean
  13. name: string
  14. filepath: string
  15. config: string
  16. auto_cert: boolean
  17. chatgpt_messages: ChatComplicationMessage[]
  18. tokenized?: NgxConfig
  19. cert_info?: Record<number, CertificateInfo[]>
  20. env_group_id: number
  21. env_group?: EnvGroup
  22. sync_node_ids: number[]
  23. urls?: string[]
  24. status: SiteStatus
  25. }
  26. export interface AutoCertRequest {
  27. dns_credential_id: number | null
  28. challenge_method: string
  29. domains: string[]
  30. key_type: PrivateKeyType
  31. }
  32. const baseUrl = '/sites'
  33. const site = useCurdApi<Site>(baseUrl, {
  34. enable: (name: string) => http.post(`${baseUrl}/${encodeURIComponent(name)}/enable`),
  35. disable: (name: string) => http.post(`${baseUrl}/${name}/disable`),
  36. rename: (oldName: string, newName: string) => http.post(`${baseUrl}/${encodeURIComponent(oldName)}/rename`, { new_name: newName }),
  37. get_default_template: () => http.get('default_site_template'),
  38. add_auto_cert: (domain: string, data: AutoCertRequest) => http.post(`auto_cert/${encodeURIComponent(domain)}`, data),
  39. remove_auto_cert: (domain: string) => http.delete(`auto_cert/${encodeURIComponent(domain)}`),
  40. duplicate: (name: string, data: { name: string }) => http.post(`${baseUrl}/${encodeURIComponent(name)}/duplicate`, data),
  41. advance_mode: (name: string, data: { advanced: boolean }) => http.post(`${baseUrl}/${encodeURIComponent(name)}/advance`, data),
  42. enableMaintenance: (name: string) => http.post(`${baseUrl}/${encodeURIComponent(name)}/maintenance`),
  43. })
  44. export default site