AmneziaWG 2.0: support for H1-H4 ranges (#2480)
* 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 ``` * 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 ``` * 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 ``` * Update types.ts Lint fixes --------- Co-authored-by: CthulhuVRN <alexander@ptitsyn.info>
This commit is contained in:
@@ -213,7 +213,7 @@ class WireGuard {
|
||||
WG_DEBUG('New Wireguard Keys generated successfully.');
|
||||
}
|
||||
|
||||
if (wgInterface.h1 === 0) {
|
||||
if (wgInterface.h1 === '0') {
|
||||
WG_DEBUG('Generating random AmneziaWG obfuscation parameters...');
|
||||
const headers = new Set<number>();
|
||||
|
||||
@@ -222,10 +222,10 @@ class WireGuard {
|
||||
}
|
||||
const [h1, h2, h3, h4] = Array.from(headers);
|
||||
|
||||
wgInterface.h1 = h1!;
|
||||
wgInterface.h2 = h2!;
|
||||
wgInterface.h3 = h3!;
|
||||
wgInterface.h4 = h4!;
|
||||
wgInterface.h1 = String(h1)!;
|
||||
wgInterface.h2 = String(h2)!;
|
||||
wgInterface.h3 = String(h3)!;
|
||||
wgInterface.h4 = String(h4)!;
|
||||
|
||||
Database.interfaces.update(wgInterface);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,39 @@ export const JmaxSchema = z.number().max(1280).nullable();
|
||||
|
||||
export const SSchema = z.number().max(1132).nullable();
|
||||
|
||||
export const HSchema = z.number().min(5).max(2147483647).nullable();
|
||||
const H_MIN = 5;
|
||||
const H_MAX = 2 ** 31 - 1;
|
||||
|
||||
export const HSchema = z
|
||||
.string()
|
||||
.transform((v) => v.replace(/\s+/g, ''))
|
||||
.refine(
|
||||
(v) => {
|
||||
if (!v) return false;
|
||||
|
||||
if (!/^\d+(-\d+)?$/.test(v)) return false;
|
||||
|
||||
if (!v.includes('-')) {
|
||||
const num = Number(v);
|
||||
return num >= H_MIN && num <= H_MAX;
|
||||
}
|
||||
|
||||
const [min, max] = v.split('-').map(Number);
|
||||
return min && max && 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);
|
||||
return min === max ? `${min}` : `${min}-${max}`;
|
||||
})
|
||||
.nullable();
|
||||
|
||||
export const ISchema = z.string().nullable();
|
||||
|
||||
|
||||
@@ -63,15 +63,15 @@ AllowedIPs = ${allowedIps.join(', ')}${extraLines.length ? `\n${extraLines.join(
|
||||
S2: wgInterface.s2,
|
||||
S3: wgInterface.s3,
|
||||
S4: wgInterface.s4,
|
||||
H1: wgInterface.h1,
|
||||
H2: wgInterface.h2,
|
||||
H3: wgInterface.h3,
|
||||
H4: wgInterface.h4,
|
||||
I1: wgInterface.i1,
|
||||
I2: wgInterface.i2,
|
||||
I3: wgInterface.i3,
|
||||
I4: wgInterface.i4,
|
||||
I5: wgInterface.i5,
|
||||
H1: wgInterface.h1,
|
||||
H2: wgInterface.h2,
|
||||
H3: wgInterface.h3,
|
||||
H4: wgInterface.h4,
|
||||
} as const;
|
||||
|
||||
awgLines = Object.entries(parameters)
|
||||
@@ -131,15 +131,15 @@ PostDown = ${iptablesTemplate(hooks.postDown, wgInterface)}`;
|
||||
S2: wgInterface.s2,
|
||||
S3: wgInterface.s3,
|
||||
S4: wgInterface.s4,
|
||||
H1: wgInterface.h1,
|
||||
H2: wgInterface.h2,
|
||||
H3: wgInterface.h3,
|
||||
H4: wgInterface.h4,
|
||||
I1: client.i1,
|
||||
I2: client.i2,
|
||||
I3: client.i3,
|
||||
I4: client.i4,
|
||||
I5: client.i5,
|
||||
H1: wgInterface.h1,
|
||||
H2: wgInterface.h2,
|
||||
H3: wgInterface.h3,
|
||||
H4: wgInterface.h4,
|
||||
} as const;
|
||||
|
||||
awgLines = Object.entries(parameters)
|
||||
|
||||
Reference in New Issue
Block a user