Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c0509e090 |
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "rknboost",
|
||||
"version": "0.5.3",
|
||||
"version": "0.5.4",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "rknboost",
|
||||
"version": "0.5.3",
|
||||
"version": "0.5.4",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "rknboost",
|
||||
"version": "0.5.3",
|
||||
"version": "0.5.4",
|
||||
"description": "Кроссплатформенное десктопное приложение на Electron + React + TypeScript",
|
||||
"main": "./out/main/index.js",
|
||||
"desktopName": "rknboost.desktop",
|
||||
|
||||
@@ -23,6 +23,7 @@ CONFIG="$RUN_DIR/strategy.cfg"
|
||||
ERRLOG="$RUN_DIR/nfqws.err"
|
||||
TABLE_FAMILY=inet
|
||||
TABLE_NAME=rknboost
|
||||
# Держать в синхроне с NFQUEUE_NUM в nfqws.linux.ts (используется там же для --dry-run).
|
||||
QUEUE_NUM=220
|
||||
FW_MARK=0x40000000
|
||||
|
||||
|
||||
@@ -78,18 +78,30 @@ export async function stageRuntime(): Promise<void> {
|
||||
}
|
||||
|
||||
/**
|
||||
* `nfqws --dry-run @<файл>` — проверяет только аргументы фильтра, root не нужен (в отличие
|
||||
* от рабочего запуска демона). Запускаем бинарник из сборки напрямую: dry-run идёт от uid
|
||||
* Номер очереди NFQUEUE — держать в синхроне с `QUEUE_NUM` в `rknboost-helper.sh`
|
||||
* (там же и объяснение выбора числа). В TS он нужен только для `--dry-run` ниже: сам
|
||||
* помощник получает его не отсюда, а как захардкоженное значение в своём коде.
|
||||
*/
|
||||
const NFQUEUE_NUM = 220
|
||||
|
||||
/**
|
||||
* `nfqws --dry-run @<файл>` — проверяет аргументы фильтра, root не нужен (в отличие от
|
||||
* рабочего запуска демона). Запускаем бинарник из сборки напрямую: dry-run идёт от uid
|
||||
* самого приложения, а не root, так что FUSE-примонтированный AppImage тут не помеха —
|
||||
* ограничение касается только `pkexec` (см. linuxStagingDir()). Дословный аналог
|
||||
* `Win32Engine['dryRun']`.
|
||||
* ограничение касается только `pkexec` (см. linuxStagingDir()).
|
||||
*
|
||||
* В отличие от `Win32Engine['dryRun']` (там `winws.exe --dry-run @file` без доп. флагов
|
||||
* достаточно) nfqws требует `--qnum` даже для проверки — «Need queue number (--qnum)»,
|
||||
* даже когда реальная очередь не открывается. Значение то же, что использует помощник
|
||||
* при настоящем запуске: раз номер не совпадёт — `nft`-правила и демон всё равно будут
|
||||
* рассинхронизированы, но сам факт валидности остальных аргументов dry-run проверяет верно.
|
||||
*/
|
||||
export async function dryRun(configBody: string): Promise<void> {
|
||||
const dir = await mkdtemp(join(tmpdir(), 'rknboost-dryrun-'))
|
||||
const configPath = join(dir, 'dry-run.cfg')
|
||||
try {
|
||||
await writeFile(configPath, configBody, 'utf8')
|
||||
await run(nfqwsPath(), ['--dry-run', `@${configPath}`])
|
||||
await run(nfqwsPath(), ['--dry-run', `--qnum=${NFQUEUE_NUM}`, `@${configPath}`])
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : String(error)
|
||||
throw new Error(`Стратегия содержит недопустимые параметры nfqws: ${message}`, {
|
||||
|
||||
Reference in New Issue
Block a user