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. 34
      src/server/utils/types.ts

2
src/server/utils/WireGuard.ts

@ -213,7 +213,7 @@ class WireGuard {
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...');
const headers = new Set<number>();

34
src/server/utils/types.ts

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

Loading…
Cancel
Save