mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-09 21:00:58 +00:00
refactor(wireguard): drop removed workers field (xray v26.6.22) (#5509)
* v3.4.0 * refactor(wireguard): drop removed `workers` field (xray v26.6.22) xray-core v26.6.22 (PR #6287) removed the WireGuard `workers` (num_workers) config field; the engine now relies on wireguard-go's internal worker fallback and no longer reads it. Remove it from the panel so it stops emitting a key xray ignores. Removed from the inbound/outbound/outbound-form WireGuard schemas, both WireGuard forms, the outbound form adapter (both directions) and defaults, the two affected tests, and the `workers` label in all 13 locales. Existing configs that still carry workers are simply dropped on parse — no migration needed since the field had no runtime effect. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Update version --------- Co-authored-by: MHSanaei <ho3ein.sanaei@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -111,7 +111,6 @@ export function createDefaultWireguardOutboundSettings(
|
|||||||
mtu: 1420,
|
mtu: 1420,
|
||||||
secretKey,
|
secretKey,
|
||||||
address: [],
|
address: [],
|
||||||
workers: 2,
|
|
||||||
peers: [{
|
peers: [{
|
||||||
publicKey: '',
|
publicKey: '',
|
||||||
allowedIPs: ['0.0.0.0/0', '::/0'],
|
allowedIPs: ['0.0.0.0/0', '::/0'],
|
||||||
|
|||||||
@@ -205,7 +205,6 @@ function wireguardFromWire(raw: Raw): WireguardOutboundFormSettings {
|
|||||||
secretKey,
|
secretKey,
|
||||||
pubKey,
|
pubKey,
|
||||||
address: addressArr.join(','),
|
address: addressArr.join(','),
|
||||||
workers: asNumber(raw.workers, 2),
|
|
||||||
domainStrategy: ((): WireguardOutboundFormSettings['domainStrategy'] => {
|
domainStrategy: ((): WireguardOutboundFormSettings['domainStrategy'] => {
|
||||||
const allowed = ['ForceIP', 'ForceIPv4', 'ForceIPv4v6', 'ForceIPv6', 'ForceIPv6v4'];
|
const allowed = ['ForceIP', 'ForceIPv4', 'ForceIPv4v6', 'ForceIPv6', 'ForceIPv6v4'];
|
||||||
const s = asString(raw.domainStrategy);
|
const s = asString(raw.domainStrategy);
|
||||||
@@ -495,7 +494,6 @@ function wireguardToWire(s: WireguardOutboundFormSettings) {
|
|||||||
mtu: s.mtu || undefined,
|
mtu: s.mtu || undefined,
|
||||||
secretKey: s.secretKey,
|
secretKey: s.secretKey,
|
||||||
address: s.address ? s.address.split(',').map((x) => x.trim()).filter(Boolean) : [],
|
address: s.address ? s.address.split(',').map((x) => x.trim()).filter(Boolean) : [],
|
||||||
workers: s.workers || undefined,
|
|
||||||
domainStrategy: s.domainStrategy || undefined,
|
domainStrategy: s.domainStrategy || undefined,
|
||||||
reserved: s.reserved
|
reserved: s.reserved
|
||||||
? s.reserved.split(',').map((x) => Number(x.trim())).filter((n) => Number.isFinite(n))
|
? s.reserved.split(',').map((x) => Number(x.trim())).filter((n) => Number.isFinite(n))
|
||||||
|
|||||||
@@ -62,9 +62,6 @@ export default function WireguardFields({ wgPubKey, regenInboundWg, regenWgPeerK
|
|||||||
>
|
>
|
||||||
<Switch />
|
<Switch />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name={['settings', 'workers']} label='Workers'>
|
|
||||||
<InputNumber min={1} />
|
|
||||||
</Form.Item>
|
|
||||||
<Form.Item name={['settings', 'domainStrategy']} label={t('pages.xray.wireguard.domainStrategy')}>
|
<Form.Item name={['settings', 'domainStrategy']} label={t('pages.xray.wireguard.domainStrategy')}>
|
||||||
<Select
|
<Select
|
||||||
allowClear
|
allowClear
|
||||||
|
|||||||
@@ -43,9 +43,6 @@ export default function WireguardFields({ form }: { form: FormInstance<OutboundF
|
|||||||
<Form.Item label="MTU" name={['settings', 'mtu']}>
|
<Form.Item label="MTU" name={['settings', 'mtu']}>
|
||||||
<InputNumber min={0} />
|
<InputNumber min={0} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t('pages.xray.outboundForm.workers')} name={['settings', 'workers']}>
|
|
||||||
<InputNumber min={0} />
|
|
||||||
</Form.Item>
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t('pages.inbounds.info.noKernelTun')}
|
label={t('pages.inbounds.info.noKernelTun')}
|
||||||
name={['settings', 'noKernelTun']}
|
name={['settings', 'noKernelTun']}
|
||||||
|
|||||||
@@ -103,7 +103,6 @@ export const WireguardOutboundFormSettingsSchema = z.object({
|
|||||||
secretKey: z.string().default(''),
|
secretKey: z.string().default(''),
|
||||||
pubKey: z.string().default(''),
|
pubKey: z.string().default(''),
|
||||||
address: z.string().default(''),
|
address: z.string().default(''),
|
||||||
workers: z.number().int().min(0).default(2),
|
|
||||||
domainStrategy: z.union([WireguardDomainStrategySchema, z.literal('')]).default(''),
|
domainStrategy: z.union([WireguardDomainStrategySchema, z.literal('')]).default(''),
|
||||||
reserved: z.string().default(''),
|
reserved: z.string().default(''),
|
||||||
peers: z.array(WireguardOutboundFormPeerSchema).default([]),
|
peers: z.array(WireguardOutboundFormPeerSchema).default([]),
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ export const WireguardInboundSettingsSchema = z.object({
|
|||||||
secretKey: z.string().min(1),
|
secretKey: z.string().min(1),
|
||||||
peers: z.array(WireguardInboundPeerSchema).default([]),
|
peers: z.array(WireguardInboundPeerSchema).default([]),
|
||||||
noKernelTun: z.boolean().default(false),
|
noKernelTun: z.boolean().default(false),
|
||||||
workers: optionalClearedInt(z.number().int().min(1)),
|
|
||||||
domainStrategy: WireguardDomainStrategySchema.optional(),
|
domainStrategy: WireguardDomainStrategySchema.optional(),
|
||||||
});
|
});
|
||||||
export type WireguardInboundSettings = z.infer<typeof WireguardInboundSettingsSchema>;
|
export type WireguardInboundSettings = z.infer<typeof WireguardInboundSettingsSchema>;
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ export const WireguardOutboundSettingsSchema = z.object({
|
|||||||
mtu: z.number().int().min(1).optional(),
|
mtu: z.number().int().min(1).optional(),
|
||||||
secretKey: z.string().min(1),
|
secretKey: z.string().min(1),
|
||||||
address: z.array(z.string()).default([]),
|
address: z.array(z.string()).default([]),
|
||||||
workers: z.number().int().min(1).optional(),
|
|
||||||
domainStrategy: WireguardDomainStrategySchema.optional(),
|
domainStrategy: WireguardDomainStrategySchema.optional(),
|
||||||
reserved: z.array(z.number().int()).optional(),
|
reserved: z.array(z.number().int()).optional(),
|
||||||
peers: z.array(WireguardOutboundPeerSchema).min(1),
|
peers: z.array(WireguardOutboundPeerSchema).min(1),
|
||||||
|
|||||||
@@ -111,7 +111,6 @@ describe('outbound default factories: shape snapshots', () => {
|
|||||||
const out = createDefaultWireguardOutboundSettings({ secretKey: SAMPLE_SECRET });
|
const out = createDefaultWireguardOutboundSettings({ secretKey: SAMPLE_SECRET });
|
||||||
expect(out.secretKey).toBe(SAMPLE_SECRET);
|
expect(out.secretKey).toBe(SAMPLE_SECRET);
|
||||||
expect(out.mtu).toBe(1420);
|
expect(out.mtu).toBe(1420);
|
||||||
expect(out.workers).toBe(2);
|
|
||||||
expect(out.address).toEqual([]);
|
expect(out.address).toEqual([]);
|
||||||
expect(out.noKernelTun).toBe(false);
|
expect(out.noKernelTun).toBe(false);
|
||||||
expect(out.peers).toEqual([{
|
expect(out.peers).toEqual([{
|
||||||
|
|||||||
@@ -182,7 +182,6 @@ describe('outbound-form-adapter: round-trip', () => {
|
|||||||
mtu: 1420,
|
mtu: 1420,
|
||||||
secretKey: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=',
|
secretKey: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=',
|
||||||
address: ['10.0.0.1', 'fd00::1'],
|
address: ['10.0.0.1', 'fd00::1'],
|
||||||
workers: 2,
|
|
||||||
peers: [{ publicKey: 'pk', allowedIPs: ['0.0.0.0/0'], endpoint: 'e:51820', preSharedKey: 'psk' }],
|
peers: [{ publicKey: 'pk', allowedIPs: ['0.0.0.0/0'], endpoint: 'e:51820', preSharedKey: 'psk' }],
|
||||||
reserved: [1, 2, 3],
|
reserved: [1, 2, 3],
|
||||||
noKernelTun: false,
|
noKernelTun: false,
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "تجاوز حظر IP الخاص الافتراضي في Xray",
|
"overrideXrayPrivateIp": "تجاوز حظر IP الخاص الافتراضي في Xray",
|
||||||
"blockDelay": "تأخير الحظر (ms)",
|
"blockDelay": "تأخير الحظر (ms)",
|
||||||
"reverseSniffing": "Sniffing عكسي",
|
"reverseSniffing": "Sniffing عكسي",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "محجوز",
|
"reserved": "محجوز",
|
||||||
"minUploadInterval": "أدنى فاصل رفع (ms)",
|
"minUploadInterval": "أدنى فاصل رفع (ms)",
|
||||||
"maxUploadSizeBytes": "حجم الرفع الأقصى (بايت)",
|
"maxUploadSizeBytes": "حجم الرفع الأقصى (بايت)",
|
||||||
|
|||||||
@@ -1597,7 +1597,6 @@
|
|||||||
"overrideXrayPrivateIp": "Override Xray's default private-IP block",
|
"overrideXrayPrivateIp": "Override Xray's default private-IP block",
|
||||||
"blockDelay": "Block delay (ms)",
|
"blockDelay": "Block delay (ms)",
|
||||||
"reverseSniffing": "Reverse Sniffing",
|
"reverseSniffing": "Reverse Sniffing",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "Reserved",
|
"reserved": "Reserved",
|
||||||
"minUploadInterval": "Min upload interval (ms)",
|
"minUploadInterval": "Min upload interval (ms)",
|
||||||
"maxUploadSizeBytes": "Max upload size (bytes)",
|
"maxUploadSizeBytes": "Max upload size (bytes)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "Sobrescribir el bloqueo de IP privada por defecto de Xray",
|
"overrideXrayPrivateIp": "Sobrescribir el bloqueo de IP privada por defecto de Xray",
|
||||||
"blockDelay": "Retraso de bloqueo (ms)",
|
"blockDelay": "Retraso de bloqueo (ms)",
|
||||||
"reverseSniffing": "Sniffing inverso",
|
"reverseSniffing": "Sniffing inverso",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "Reservado",
|
"reserved": "Reservado",
|
||||||
"minUploadInterval": "Intervalo mín. de subida (ms)",
|
"minUploadInterval": "Intervalo mín. de subida (ms)",
|
||||||
"maxUploadSizeBytes": "Tamaño máx. de subida (bytes)",
|
"maxUploadSizeBytes": "Tamaño máx. de subida (bytes)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "override بلاک پیشفرض IP خصوصی Xray",
|
"overrideXrayPrivateIp": "override بلاک پیشفرض IP خصوصی Xray",
|
||||||
"blockDelay": "تأخیر بلاک (ms)",
|
"blockDelay": "تأخیر بلاک (ms)",
|
||||||
"reverseSniffing": "Sniffing معکوس",
|
"reverseSniffing": "Sniffing معکوس",
|
||||||
"workers": "Workerها",
|
|
||||||
"reserved": "رزرو شده",
|
"reserved": "رزرو شده",
|
||||||
"minUploadInterval": "حداقل بازه آپلود (ms)",
|
"minUploadInterval": "حداقل بازه آپلود (ms)",
|
||||||
"maxUploadSizeBytes": "حداکثر اندازه آپلود (بایت)",
|
"maxUploadSizeBytes": "حداکثر اندازه آپلود (بایت)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "Timpa blok IP privat default Xray",
|
"overrideXrayPrivateIp": "Timpa blok IP privat default Xray",
|
||||||
"blockDelay": "Penundaan blokir (ms)",
|
"blockDelay": "Penundaan blokir (ms)",
|
||||||
"reverseSniffing": "Sniffing terbalik",
|
"reverseSniffing": "Sniffing terbalik",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "Dicadangkan",
|
"reserved": "Dicadangkan",
|
||||||
"minUploadInterval": "Min. interval upload (ms)",
|
"minUploadInterval": "Min. interval upload (ms)",
|
||||||
"maxUploadSizeBytes": "Ukuran upload maks. (byte)",
|
"maxUploadSizeBytes": "Ukuran upload maks. (byte)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "Xray のデフォルトプライベート IP ブロックを上書き",
|
"overrideXrayPrivateIp": "Xray のデフォルトプライベート IP ブロックを上書き",
|
||||||
"blockDelay": "ブロック遅延 (ms)",
|
"blockDelay": "ブロック遅延 (ms)",
|
||||||
"reverseSniffing": "逆 sniffing",
|
"reverseSniffing": "逆 sniffing",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "予約",
|
"reserved": "予約",
|
||||||
"minUploadInterval": "最小アップロード間隔 (ms)",
|
"minUploadInterval": "最小アップロード間隔 (ms)",
|
||||||
"maxUploadSizeBytes": "最大アップロードサイズ (バイト)",
|
"maxUploadSizeBytes": "最大アップロードサイズ (バイト)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "Sobrescrever o bloqueio de IP privado padrão do Xray",
|
"overrideXrayPrivateIp": "Sobrescrever o bloqueio de IP privado padrão do Xray",
|
||||||
"blockDelay": "Atraso do bloqueio (ms)",
|
"blockDelay": "Atraso do bloqueio (ms)",
|
||||||
"reverseSniffing": "Sniffing reverso",
|
"reverseSniffing": "Sniffing reverso",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "Reservado",
|
"reserved": "Reservado",
|
||||||
"minUploadInterval": "Intervalo mín. de upload (ms)",
|
"minUploadInterval": "Intervalo mín. de upload (ms)",
|
||||||
"maxUploadSizeBytes": "Tamanho máx. de upload (bytes)",
|
"maxUploadSizeBytes": "Tamanho máx. de upload (bytes)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "Переопределить дефолтный блок частных IP в Xray",
|
"overrideXrayPrivateIp": "Переопределить дефолтный блок частных IP в Xray",
|
||||||
"blockDelay": "Задержка блока (мс)",
|
"blockDelay": "Задержка блока (мс)",
|
||||||
"reverseSniffing": "Обратный sniffing",
|
"reverseSniffing": "Обратный sniffing",
|
||||||
"workers": "Воркеры",
|
|
||||||
"reserved": "Зарезервировано",
|
"reserved": "Зарезервировано",
|
||||||
"minUploadInterval": "Мин. интервал загрузки (мс)",
|
"minUploadInterval": "Мин. интервал загрузки (мс)",
|
||||||
"maxUploadSizeBytes": "Макс. размер загрузки (байт)",
|
"maxUploadSizeBytes": "Макс. размер загрузки (байт)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "Xray'in varsayılan özel IP bloğunu geçersiz kıl",
|
"overrideXrayPrivateIp": "Xray'in varsayılan özel IP bloğunu geçersiz kıl",
|
||||||
"blockDelay": "Engelleme Gecikmesi (ms)",
|
"blockDelay": "Engelleme Gecikmesi (ms)",
|
||||||
"reverseSniffing": "Ters Sniffing",
|
"reverseSniffing": "Ters Sniffing",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "Ayrılmış",
|
"reserved": "Ayrılmış",
|
||||||
"minUploadInterval": "Min. Yükleme Aralığı (ms)",
|
"minUploadInterval": "Min. Yükleme Aralığı (ms)",
|
||||||
"maxUploadSizeBytes": "Maks. Yükleme Boyutu (bayt)",
|
"maxUploadSizeBytes": "Maks. Yükleme Boyutu (bayt)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "Перевизначити дефолтний блок приватних IP у Xray",
|
"overrideXrayPrivateIp": "Перевизначити дефолтний блок приватних IP у Xray",
|
||||||
"blockDelay": "Затримка блоку (мс)",
|
"blockDelay": "Затримка блоку (мс)",
|
||||||
"reverseSniffing": "Зворотний sniffing",
|
"reverseSniffing": "Зворотний sniffing",
|
||||||
"workers": "Воркери",
|
|
||||||
"reserved": "Зарезервовано",
|
"reserved": "Зарезервовано",
|
||||||
"minUploadInterval": "Мін. інтервал завантаження (мс)",
|
"minUploadInterval": "Мін. інтервал завантаження (мс)",
|
||||||
"maxUploadSizeBytes": "Макс. розмір завантаження (байт)",
|
"maxUploadSizeBytes": "Макс. розмір завантаження (байт)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "Ghi đè chặn IP riêng mặc định của Xray",
|
"overrideXrayPrivateIp": "Ghi đè chặn IP riêng mặc định của Xray",
|
||||||
"blockDelay": "Trễ chặn (ms)",
|
"blockDelay": "Trễ chặn (ms)",
|
||||||
"reverseSniffing": "Sniffing ngược",
|
"reverseSniffing": "Sniffing ngược",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "Đã đặt trước",
|
"reserved": "Đã đặt trước",
|
||||||
"minUploadInterval": "Khoảng upload tối thiểu (ms)",
|
"minUploadInterval": "Khoảng upload tối thiểu (ms)",
|
||||||
"maxUploadSizeBytes": "Kích thước upload tối đa (byte)",
|
"maxUploadSizeBytes": "Kích thước upload tối đa (byte)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "覆盖 Xray 默认的私有 IP 阻止",
|
"overrideXrayPrivateIp": "覆盖 Xray 默认的私有 IP 阻止",
|
||||||
"blockDelay": "阻塞延迟 (ms)",
|
"blockDelay": "阻塞延迟 (ms)",
|
||||||
"reverseSniffing": "反向 sniffing",
|
"reverseSniffing": "反向 sniffing",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "保留",
|
"reserved": "保留",
|
||||||
"minUploadInterval": "最小上传间隔 (ms)",
|
"minUploadInterval": "最小上传间隔 (ms)",
|
||||||
"maxUploadSizeBytes": "最大上传大小 (字节)",
|
"maxUploadSizeBytes": "最大上传大小 (字节)",
|
||||||
|
|||||||
@@ -1489,7 +1489,6 @@
|
|||||||
"overrideXrayPrivateIp": "覆寫 Xray 預設的私有 IP 封鎖",
|
"overrideXrayPrivateIp": "覆寫 Xray 預設的私有 IP 封鎖",
|
||||||
"blockDelay": "阻斷延遲 (ms)",
|
"blockDelay": "阻斷延遲 (ms)",
|
||||||
"reverseSniffing": "反向 sniffing",
|
"reverseSniffing": "反向 sniffing",
|
||||||
"workers": "Workers",
|
|
||||||
"reserved": "保留",
|
"reserved": "保留",
|
||||||
"minUploadInterval": "最小上傳間隔 (ms)",
|
"minUploadInterval": "最小上傳間隔 (ms)",
|
||||||
"maxUploadSizeBytes": "最大上傳大小 (位元組)",
|
"maxUploadSizeBytes": "最大上傳大小 (位元組)",
|
||||||
|
|||||||
Reference in New Issue
Block a user