setting.ts 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. panelProxy: z.string().optional(),
  15. pageSize: z.number().int().min(1).max(1000).optional(),
  16. expireDiff: nonNegativeInt.optional(),
  17. trafficDiff: nonNegativeInt.max(100).optional(),
  18. remarkModel: 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. tgBotLoginNotify: z.boolean().optional(),
  28. tgCpu: z.number().int().min(0).max(100).optional(),
  29. tgLang: z.string().optional(),
  30. twoFactorEnable: z.boolean().optional(),
  31. twoFactorToken: z.string().optional(),
  32. xrayTemplateConfig: z.string().optional(),
  33. subEnable: z.boolean().optional(),
  34. subJsonEnable: z.boolean().optional(),
  35. subTitle: z.string().optional(),
  36. subSupportUrl: z.string().optional(),
  37. subProfileUrl: z.string().optional(),
  38. subAnnounce: z.string().optional(),
  39. subEnableRouting: z.boolean().optional(),
  40. subRoutingRules: z.string().optional(),
  41. subListen: z.string().optional(),
  42. subPort: port.optional(),
  43. subPath: absolutePath.optional(),
  44. subJsonPath: absolutePath.optional(),
  45. subClashEnable: z.boolean().optional(),
  46. subClashPath: absolutePath.optional(),
  47. subDomain: z.string().optional(),
  48. externalTrafficInformEnable: z.boolean().optional(),
  49. externalTrafficInformURI: z.string().optional(),
  50. restartXrayOnClientDisable: z.boolean().optional(),
  51. subCertFile: z.string().optional(),
  52. subKeyFile: z.string().optional(),
  53. subUpdates: z.number().int().min(1).max(168).optional(),
  54. subEncrypt: z.boolean().optional(),
  55. subShowInfo: z.boolean().optional(),
  56. subEmailInRemark: z.boolean().optional(),
  57. subURI: z.string().optional(),
  58. subJsonURI: z.string().optional(),
  59. subClashURI: z.string().optional(),
  60. subJsonFragment: z.string().optional(),
  61. subJsonNoises: z.string().optional(),
  62. subJsonMux: z.string().optional(),
  63. subJsonRules: z.string().optional(),
  64. timeLocation: z.string().optional(),
  65. ldapEnable: z.boolean().optional(),
  66. ldapHost: z.string().optional(),
  67. ldapPort: port.optional(),
  68. ldapUseTLS: z.boolean().optional(),
  69. ldapBindDN: z.string().optional(),
  70. ldapPassword: z.string().optional(),
  71. ldapBaseDN: z.string().optional(),
  72. ldapUserFilter: z.string().optional(),
  73. ldapUserAttr: z.string().optional(),
  74. ldapVlessField: z.string().optional(),
  75. ldapSyncCron: z.string().optional(),
  76. ldapFlagField: z.string().optional(),
  77. ldapTruthyValues: z.string().optional(),
  78. ldapInvertFlag: z.boolean().optional(),
  79. ldapInboundTags: z.string().optional(),
  80. ldapAutoCreate: z.boolean().optional(),
  81. ldapAutoDelete: z.boolean().optional(),
  82. ldapDefaultTotalGB: nonNegativeInt.optional(),
  83. ldapDefaultExpiryDays: nonNegativeInt.optional(),
  84. ldapDefaultLimitIP: nonNegativeInt.optional(),
  85. hasTgBotToken: z.boolean().optional(),
  86. hasTwoFactorToken: z.boolean().optional(),
  87. hasLdapPassword: z.boolean().optional(),
  88. hasApiToken: z.boolean().optional(),
  89. hasWarpSecret: z.boolean().optional(),
  90. hasNordSecret: z.boolean().optional(),
  91. }).loose();
  92. export type AllSettingInput = z.infer<typeof AllSettingSchema>;