Browse Source

AmneziaWG 2.0: support for H1-H4 ranges

## Changes:
```
- [+] Added support for H1-H4 ranges
- [!] Fixed interface fields order (H1-H4 goes before I1-I5)
```

## Known issues:
```
- [!] no check for unique/overlap of H1-H4 values on settings apply:
  settings will be applied but wg interface will crash with "Invalid argument" error
```
pull/2480/head
CthulhuVRN 5 months ago
parent
commit
657f43d0d6
  1. 2
      src/server/utils/WireGuard.ts
  2. 18
      src/server/utils/types.ts

2
src/server/utils/WireGuard.ts

@ -213,7 +213,7 @@ class WireGuard {
WG_DEBUG('New Wireguard Keys generated successfully.'); WG_DEBUG('New Wireguard Keys generated successfully.');
} }
if (wgInterface.h1 === 0 || wgInterface.h1 === '0') { if (wgInterface.h1 === '0') {
WG_DEBUG('Generating random AmneziaWG obfuscation parameters...'); WG_DEBUG('Generating random AmneziaWG obfuscation parameters...');
const headers = new Set<number>(); const headers = new Set<number>();

18
src/server/utils/types.ts

@ -39,8 +39,9 @@ const H_MAX = 2 ** 31 - 1;
export const HSchema = z export const HSchema = z
.string() .string()
.transform(v => v.replace(/\s+/g, '')) .transform((v) => v.replace(/\s+/g, ''))
.refine(v => { .refine(
(v) => {
if (!v) return false; if (!v) return false;
if (!/^\d+(-\d+)?$/.test(v)) return false; if (!/^\d+(-\d+)?$/.test(v)) return false;
@ -51,11 +52,16 @@ export const HSchema = z
} }
const [min, max] = v.split('-').map(Number); const [min, max] = v.split('-').map(Number);
if ( min && max )
return min >= H_MIN && max <= H_MAX && min <= max; return min >= H_MIN && max <= H_MAX && min <= max;
}, {
message: t('zod.generic.validNumberRange') return false;
}) },
.transform(v => { {
message: t('zod.generic.validNumberRange'),
}
)
.transform((v) => {
if (!v.includes('-')) return `${Number(v)}`; if (!v.includes('-')) return `${Number(v)}`;
const [min, max] = v.split('-').map(Number); const [min, max] = v.split('-').map(Number);

Loading…
Cancel
Save