setting.ts 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { z } from 'zod';
  2. const port = z.number().int().min(1).max(65535);
  3. const nonNegativeInt = z.number().int().min(0);
  4. const absolutePath = z.string().regex(/^\//, 'pages.settings.validation.pathLeadingSlash');
  5. export const AllSettingSchema = z.object({
  6. webListen: z.string().optional(),
  7. webDomain: z.string().optional(),
  8. webPort: port.optional(),
  9. webCertFile: z.string().optional(),
  10. webKeyFile: z.string().optional(),
  11. webBasePath: absolutePath.optional(),
  12. sessionMaxAge: z.number().int().min(1).optional(),
  13. trustedProxyCIDRs: z.string().optional(),
  14. pageSize: z.number().int().min(1).max(1000).optional(),
  15. expireDiff: nonNegativeInt.optional(),
  16. trafficDiff: nonNegativeInt.optional(),
  17. remarkModel: z.string().optional(),
  18. datepicker: z.enum(['gregorian', 'jalalian']).optional(),
  19. tgBotEnable: z.boolean().optional(),
  20. tgBotToken: z.string().optional(),
  21. tgBotProxy: z.string().optional(),
  22. tgBotAPIServer: z.string().optional(),
  23. tgBotChatId: z.string().optional(),
  24. tgRunTime: z.string().optional(),
  25. tgBotBackup: z.boolean().optional(),
  26. tgBotLoginNotify: z.boolean().optional(),
  27. tgCpu: z.number().int().min(0).max(100).optional(),
  28. tgLang: z.string().optional(),
  29. twoFactorEnable: z.boolean().optional(),
  30. twoFactorToken: z.string().optional(),
  31. xrayTemplateConfig: z.string().optional(),
  32. subEnable: z.boolean().optional(),
  33. subJsonEnable: z.boolean().optional(),
  34. subTitle: z.string().optional(),
  35. subSupportUrl: z.string().optional(),
  36. subProfileUrl: z.string().optional(),
  37. subAnnounce: z.string().optional(),
  38. subEnableRouting: z.boolean().optional(),
  39. subRoutingRules: z.string().optional(),
  40. subListen: z.string().optional(),
  41. subPort: port.optional(),
  42. subPath: absolutePath.optional(),
  43. subJsonPath: absolutePath.optional(),
  44. subClashEnable: z.boolean().optional(),
  45. subClashPath: absolutePath.optional(),
  46. subDomain: z.string().optional(),
  47. externalTrafficInformEnable: z.boolean().optional(),
  48. externalTrafficInformURI: z.string().optional(),
  49. restartXrayOnClientDisable: z.boolean().optional(),
  50. subCertFile: z.string().optional(),
  51. subKeyFile: z.string().optional(),
  52. subUpdates: z.number().int().min(1).max(168).optional(),
  53. subEncrypt: z.boolean().optional(),
  54. subShowInfo: z.boolean().optional(),
  55. subEmailInRemark: z.boolean().optional(),
  56. subURI: z.string().optional(),
  57. subJsonURI: z.string().optional(),
  58. subClashURI: z.string().optional(),
  59. subJsonFragment: z.string().optional(),
  60. subJsonNoises: z.string().optional(),
  61. subJsonMux: z.string().optional(),
  62. subJsonRules: z.string().optional(),
  63. timeLocation: z.string().optional(),
  64. ldapEnable: z.boolean().optional(),
  65. ldapHost: z.string().optional(),
  66. ldapPort: port.optional(),
  67. ldapUseTLS: z.boolean().optional(),
  68. ldapBindDN: z.string().optional(),
  69. ldapPassword: z.string().optional(),
  70. ldapBaseDN: z.string().optional(),
  71. ldapUserFilter: z.string().optional(),
  72. ldapUserAttr: z.string().optional(),
  73. ldapVlessField: z.string().optional(),
  74. ldapSyncCron: z.string().optional(),
  75. ldapFlagField: z.string().optional(),
  76. ldapTruthyValues: z.string().optional(),
  77. ldapInvertFlag: z.boolean().optional(),
  78. ldapInboundTags: z.string().optional(),
  79. ldapAutoCreate: z.boolean().optional(),
  80. ldapAutoDelete: z.boolean().optional(),
  81. ldapDefaultTotalGB: nonNegativeInt.optional(),
  82. ldapDefaultExpiryDays: nonNegativeInt.optional(),
  83. ldapDefaultLimitIP: nonNegativeInt.optional(),
  84. hasTgBotToken: z.boolean().optional(),
  85. hasTwoFactorToken: z.boolean().optional(),
  86. hasLdapPassword: z.boolean().optional(),
  87. hasApiToken: z.boolean().optional(),
  88. hasWarpSecret: z.boolean().optional(),
  89. hasNordSecret: z.boolean().optional(),
  90. }).loose();
  91. export type AllSettingInput = z.infer<typeof AllSettingSchema>;