fork: инструменты сборки и локальные дополнения (швы, синхронизация с автором)
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env bash
|
||||
# 3X-UI_KIT (форк hacker07) — локальные дополнения.
|
||||
#
|
||||
# Этот файл наш: автор его не знает и не правит, поэтому обновления автора его не ломают.
|
||||
# kit подключает его одной строкой из kit.sh (шов в tools/fork_apply.py) и передаёт сюда
|
||||
# аргументы командной строки. Всё, что мы дописываем к kit, живёт ЗДЕСЬ.
|
||||
#
|
||||
# Команды: kit local <команда> (справка: kit local help)
|
||||
#
|
||||
# Правила работы с файлом: только функции и никакого кода на верхнем уровне (он выполняется
|
||||
# при каждом запуске kit). Всё, что нужно от автора, читается лениво — сам kit на момент
|
||||
# подключения ещё не объявил свои функции.
|
||||
|
||||
kit_local_help() {
|
||||
cat <<'EOF'
|
||||
3X-UI KIT — дополнения форка (hacker07):
|
||||
kit local help эта справка
|
||||
kit local version версия kit, источник обновлений и номер нашего патч-уровня
|
||||
kit local channel откуда берутся обновления и чем проверяется подпись
|
||||
kit local seams какие места форк правит в файлах автора (метки в /usr/local/bin/kit)
|
||||
kit local masking состояние маскировки: REALITY (свой домен) и прочие входы
|
||||
|
||||
Файл дополнений: /usr/local/lib/kit/kit-local.sh (ставится установщиком и обновляется
|
||||
вместе с релизом форка). Правки автора этот файл не перезаписывают.
|
||||
EOF
|
||||
}
|
||||
|
||||
kit_local_version() {
|
||||
printf 'kit: %s (форк hacker07)\n' "${KIT_VERSION:-?}"
|
||||
printf 'источник: %s\n' "${KIT_RAW:-?}"
|
||||
local lib=${KIT_LOCAL_LIB:-/usr/local/lib/kit/kit-local.sh}
|
||||
printf 'наш файл: %s\n' "$lib"
|
||||
[[ -r $lib ]] && printf 'собран: %s\n' "$(date -r "$lib" '+%Y-%m-%d %H:%M' 2>/dev/null || echo '?')"
|
||||
local latest
|
||||
latest=$(cat /etc/kit/latest-version 2>/dev/null || true)
|
||||
[[ -n $latest ]] && printf 'последняя: %s\n' "$latest"
|
||||
return 0
|
||||
}
|
||||
|
||||
kit_local_channel() {
|
||||
printf 'файлы релиза: %s\n' "${KIT_RAW:-?}"
|
||||
printf 'подпись: id=%s namespace=%s\n' "${KIT_SIG_ID:-?}" "${KIT_SIG_NS:-?}"
|
||||
local n=0 k
|
||||
for k in "${KIT_SIGNERS[@]:-}"; do [[ -n $k ]] && n=$((n + 1)); done
|
||||
printf 'ключей в KIT_SIGNERS: %d (должен быть только ключ форка)\n' "$n"
|
||||
if [[ $n -eq 0 ]]; then
|
||||
printf 'ВНИМАНИЕ: список ключей пуст — обновление не пройдёт проверку подписи.\n'
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
kit_local_seams() {
|
||||
local bin=/usr/local/bin/kit
|
||||
[[ -r $bin ]] || { printf 'нет %s\n' "$bin"; return 1; }
|
||||
grep -n '3X-UI_KIT (форк hacker07)' "$bin" 2>/dev/null \
|
||||
|| printf 'метки форка в %s не найдены — сборка не наша?\n' "$bin"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Короткая сводка по маскировке: у REALITY должно быть «свой домен», у остальных — сосед.
|
||||
kit_local_masking() {
|
||||
command -v kit >/dev/null 2>&1 || { printf 'нет команды kit\n'; return 1; }
|
||||
kit net site 2>/dev/null || printf 'посмотреть: kit net site (в этой версии — kit sni rotate)\n'
|
||||
return 0
|
||||
}
|
||||
|
||||
kit_local_cmd() {
|
||||
case ${1:-help} in
|
||||
help | -h | --help) kit_local_help ;;
|
||||
version | -v) kit_local_version ;;
|
||||
channel) kit_local_channel ;;
|
||||
seams) kit_local_seams ;;
|
||||
masking | mask) kit_local_masking ;;
|
||||
*)
|
||||
printf 'Неизвестная команда форка: %s\n' "$1" >&2
|
||||
kit_local_help >&2
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Точка входа: вызывается из kit.sh с аргументами командной строки.
|
||||
# Если команда не наша — возвращаем 0, и kit работает ровно как раньше.
|
||||
kit_local_dispatch() {
|
||||
case ${1:-} in
|
||||
local)
|
||||
shift
|
||||
kit_local_cmd "$@"
|
||||
exit $?
|
||||
;;
|
||||
*) return 0 ;;
|
||||
esac
|
||||
}
|
||||
Reference in New Issue
Block a user