setting.ts 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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).max(525600).optional(),
  13. trustedProxyCIDRs: z.string().optional(),
  14. panelOutbound: z.string().optional(),
  15. pageSize: z.number().int().min(0).max(1000).optional(),
  16. expireDiff: nonNegativeInt.optional(),
  17. trafficDiff: nonNegativeInt.max(100).optional(),
  18. remarkTemplate: z.string().optional(),
  19. datepicker: z.enum(['gregorian', 'jalalian']).optional(),
  20. tgBotEnable: z.boolean().optional(),
  21. tgBotToken: z.string().optional(),
  22. tgBotProxy: z.string().optional(),
  23. tgBotAPIServer: z.string().optional(),
  24. tgBotChatId: z.string().optional(),
  25. tgRunTime: z.string().optional(),
  26. tgBotBackup: 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. subIncyEnableRouting: z.boolean().optional(),
  41. subIncyRoutingRules: z.string().optional(),
  42. subListen: z.string().optional(),
  43. subPort: port.optional(),
  44. subPath: absolutePath.optional(),
  45. subJsonPath: absolutePath.optional(),
  46. subClashEnable: z.boolean().optional(),
  47. subClashPath: absolutePath.optional(),
  48. subDomain: z.string().optional(),
  49. externalTrafficInformEnable: z.boolean().optional(),
  50. externalTrafficInformURI: z.string().optional(),
  51. restartXrayOnClientDisable: z.boolean().optional(),
  52. subCertFile: z.string().optional(),
  53. subKeyFile: z.string().optional(),
  54. subUpdates: z.number().int().min(1).max(168).optional(),
  55. subEncrypt: z.boolean().optional(),
  56. subURI: z.string().optional(),
  57. subJsonURI: z.string().optional(),
  58. subClashURI: z.string().optional(),
  59. subClashEnableRouting: z.boolean().optional(),
  60. subClashRules: z.string().optional(),
  61. subJsonMux: z.string().optional(),
  62. subJsonRules: z.string().optional(),
  63. subJsonFinalMask: z.string().optional(),
  64. subHideSettings: z.boolean().optional(),
  65. timeLocation: z.string().optional(),
  66. ldapEnable: z.boolean().optional(),
  67. ldapHost: z.string().optional(),
  68. ldapPort: port.optional(),
  69. ldapUseTLS: z.boolean().optional(),
  70. ldapBindDN: z.string().optional(),
  71. ldapPassword: z.string().optional(),
  72. ldapBaseDN: z.string().optional(),
  73. ldapUserFilter: z.string().optional(),
  74. ldapUserAttr: z.string().optional(),
  75. ldapVlessField: z.string().optional(),
  76. ldapSyncCron: z.string().optional(),
  77. ldapFlagField: z.string().optional(),
  78. ldapTruthyValues: z.string().optional(),
  79. ldapInvertFlag: z.boolean().optional(),
  80. ldapInboundTags: z.string().optional(),
  81. ldapAutoCreate: z.boolean().optional(),
  82. ldapAutoDelete: z.boolean().optional(),
  83. ldapDefaultTotalGB: nonNegativeInt.optional(),
  84. ldapDefaultExpiryDays: nonNegativeInt.optional(),
  85. ldapDefaultLimitIP: nonNegativeInt.optional(),
  86. hasTgBotToken: z.boolean().optional(),
  87. hasTwoFactorToken: z.boolean().optional(),
  88. hasLdapPassword: z.boolean().optional(),
  89. hasApiToken: z.boolean().optional(),
  90. hasWarpSecret: z.boolean().optional(),
  91. hasNordSecret: z.boolean().optional(),
  92. hasSmtpPassword: z.boolean().optional(),
  93. }).loose();
  94. export type AllSettingInput = z.infer<typeof AllSettingSchema>;