amneziawg.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { z } from 'zod';
  2. // Wire format of an "amneziawg" OUTBOUND settings block; form-edited and
  3. // backend-validated, swapped for a socks bridge at config generation.
  4. export const AmneziaWGOutboundPeerSchema = z.object({
  5. publicKey: z.string().default(''),
  6. presharedKey: z.string().default(''),
  7. allowedIPs: z.array(z.string()).default(['0.0.0.0/0', '::/0']),
  8. endpoint: z.string().default(''),
  9. keepAlive: z.number().int().min(0).default(0),
  10. });
  11. export type AmneziaWGOutboundPeer = z.infer<typeof AmneziaWGOutboundPeerSchema>;
  12. export const AmneziaWGOutboundSettingsSchema = z.object({
  13. // 0 = unset, so the backend derives MTU from S4 (amneziawg.EffectiveMTU);
  14. // a pinned 1420 fragments every full-size packet once S4 exceeds 20.
  15. mtu: z.number().int().min(0).default(0),
  16. secretKey: z.string().default(''),
  17. address: z.array(z.string()).default([]),
  18. listenPort: z.number().int().min(0).max(65535).default(0),
  19. dns: z.string().default(''),
  20. jc: z.number().int().min(0).default(0),
  21. jmin: z.number().int().min(0).default(40),
  22. jmax: z.number().int().min(0).default(100),
  23. s1: z.number().int().min(0).default(15),
  24. s2: z.number().int().min(0).default(80),
  25. s3: z.number().int().min(0).max(64).default(12),
  26. s4: z.number().int().min(0).max(32).default(12),
  27. h1: z.string().default(''),
  28. h2: z.string().default(''),
  29. h3: z.string().default(''),
  30. h4: z.string().default(''),
  31. i1: z.string().default(''),
  32. i2: z.string().default(''),
  33. i3: z.string().default(''),
  34. i4: z.string().default(''),
  35. i5: z.string().default(''),
  36. headerProtectionKey: z.string().default(''),
  37. contentPaddingAddition: z.string().default(''),
  38. rekeyAfterTime: z.string().default(''),
  39. rekeyTimeout: z.string().default(''),
  40. rejectAfterTime: z.string().default(''),
  41. keepaliveTimeout: z.string().default(''),
  42. maxHandshakeAttempts: z.string().default(''),
  43. randomTrailers: z.boolean().default(false),
  44. disableCookies: z.boolean().default(true),
  45. peers: z.array(AmneziaWGOutboundPeerSchema).default([]),
  46. });
  47. export type AmneziaWGOutboundSettings = z.infer<typeof AmneziaWGOutboundSettingsSchema>;