setting.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. subShowIdentityOnAllLinks: z.boolean().optional(),
  20. datepicker: z.enum(['gregorian', 'jalalian']).optional(),
  21. tgBotEnable: z.boolean().optional(),
  22. tgBotToken: z.string().optional(),
  23. tgBotProxy: z.string().optional(),
  24. tgBotAPIServer: z.string().optional(),
  25. tgBotChatId: z.string().optional(),
  26. tgRunTime: z.string().optional(),
  27. tgBotBackup: z.boolean().optional(),
  28. tgCpu: z.number().int().min(0).max(100).optional(),
  29. outboundDownThreshold: z.number().int().min(1).max(100).optional(),
  30. tgLang: z.string().optional(),
  31. twoFactorEnable: z.boolean().optional(),
  32. twoFactorToken: z.string().optional(),
  33. xrayTemplateConfig: z.string().optional(),
  34. subEnable: z.boolean().optional(),
  35. subJsonEnable: z.boolean().optional(),
  36. subJsonAutoDetect: z.boolean().optional(),
  37. subJsonAlwaysArray: z.boolean().optional(),
  38. subJsonUserAgentRegex: z.string().max(2048).optional(),
  39. subClashAutoDetect: z.boolean().optional(),
  40. subClashUserAgentRegex: z.string().max(2048).optional(),
  41. subTitle: z.string().optional(),
  42. subSupportUrl: z.string().optional(),
  43. subProfileUrl: z.string().optional(),
  44. subAnnounce: z.string().optional(),
  45. subEnableRouting: z.boolean().optional(),
  46. subRoutingRules: z.string().optional(),
  47. subIncyEnableRouting: z.boolean().optional(),
  48. subIncyRoutingRules: z.string().optional(),
  49. subListen: z.string().optional(),
  50. subPort: port.optional(),
  51. subPath: absolutePath.optional(),
  52. subJsonPath: absolutePath.optional(),
  53. subClashEnable: z.boolean().optional(),
  54. subClashPath: absolutePath.optional(),
  55. subDomain: z.string().optional(),
  56. externalTrafficInformEnable: z.boolean().optional(),
  57. externalTrafficInformURI: z.string().optional(),
  58. restartXrayOnClientDisable: z.boolean().optional(),
  59. subCertFile: z.string().optional(),
  60. subKeyFile: z.string().optional(),
  61. subUpdates: z.number().int().min(0).max(525600).optional(),
  62. subEncrypt: z.boolean().optional(),
  63. subURI: z.string().optional(),
  64. subJsonURI: z.string().optional(),
  65. subClashURI: z.string().optional(),
  66. subClashEnableRouting: z.boolean().optional(),
  67. subClashRules: z.string().optional(),
  68. subJsonMux: z.string().optional(),
  69. subJsonRules: z.string().optional(),
  70. subJsonFinalMask: z.string().optional(),
  71. subHideSettings: z.boolean().optional(),
  72. timeLocation: z.string().optional(),
  73. ldapEnable: z.boolean().optional(),
  74. ldapHost: z.string().optional(),
  75. ldapPort: port.optional(),
  76. ldapUseTLS: z.boolean().optional(),
  77. ldapInsecureSkipVerify: z.boolean().optional(),
  78. ldapBindDN: z.string().optional(),
  79. ldapPassword: z.string().optional(),
  80. ldapBaseDN: z.string().optional(),
  81. ldapUserFilter: z.string().optional(),
  82. ldapUserAttr: z.string().optional(),
  83. ldapVlessField: z.string().optional(),
  84. ldapSyncCron: z.string().optional(),
  85. ldapFlagField: z.string().optional(),
  86. ldapTruthyValues: z.string().optional(),
  87. ldapInvertFlag: z.boolean().optional(),
  88. ldapInboundTags: z.string().optional(),
  89. ldapAutoCreate: z.boolean().optional(),
  90. ldapAutoDelete: z.boolean().optional(),
  91. ldapDefaultTotalGB: nonNegativeInt.optional(),
  92. ldapDefaultExpiryDays: nonNegativeInt.optional(),
  93. ldapDefaultLimitIP: nonNegativeInt.optional(),
  94. hasTgBotToken: z.boolean().optional(),
  95. hasTwoFactorToken: z.boolean().optional(),
  96. hasLdapPassword: z.boolean().optional(),
  97. hasApiToken: z.boolean().optional(),
  98. hasWarpSecret: z.boolean().optional(),
  99. hasNordSecret: z.boolean().optional(),
  100. hasSmtpPassword: z.boolean().optional(),
  101. }).loose();
  102. export type AllSettingInput = z.infer<typeof AllSettingSchema>;