- Установщик (install.sh): внедрена верификация хешей sha256sums.txt, нормализована очерёдность бутстрапа ucode до языковых проверок. - Сборщик (build.sh): добавлена автоматическая генерация sha256sums.txt для пакетов релиза. - Бэкенд: права на honeypot FIFO ограничены до 0660 в watchdog.uc, исправлена опечатка в SUBNETS_TELEGRAM, удалён helpers.old.uc. - Тесты бэкенда: написаны тесты для core_ip, core_url и config_connections. - Фронтенд: реализовано автопереподключение WebSocket с экспоненциальным бэкоффом, проведена дедупликация виджетов и модальных окон в initController.ts, мигрирован CSS-префикс с fkp_ на tachyon_. - Тесты фронтенда: добавлен initController.test.ts для тестирования загрузки дашборда.
50 lines
1.8 KiB
Bash
50 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
TACHYON_LIB="$ROOT_DIR/tachyon/files/usr/lib"
|
|
|
|
ucode -L "$TACHYON_LIB" -e '
|
|
let ip = require("core.ip");
|
|
|
|
function assert(val, msg) {
|
|
if (!val) {
|
|
warn("Assertion failed: " + msg + "\n");
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
// valid_ipv4
|
|
assert(ip.valid_ipv4("1.1.1.1"), "1.1.1.1 should be valid");
|
|
assert(ip.valid_ipv4("255.255.255.255"), "255.255.255.255 should be valid");
|
|
assert(!ip.valid_ipv4("256.1.1.1"), "256.1.1.1 should be invalid");
|
|
assert(!ip.valid_ipv4("1.1.1.1.1"), "1.1.1.1.1 should be invalid");
|
|
assert(!ip.valid_ipv4("abc"), "abc should be invalid");
|
|
|
|
// valid_ipv4_cidr
|
|
assert(ip.valid_ipv4_cidr("1.1.1.1/32"), "1.1.1.1/32 should be valid");
|
|
assert(ip.valid_ipv4_cidr("192.168.1.0/24"), "192.168.1.0/24 should be valid");
|
|
assert(!ip.valid_ipv4_cidr("1.1.1.1/33"), "1.1.1.1/33 should be invalid");
|
|
assert(!ip.valid_ipv4_cidr("256.1.1.1/24"), "256.1.1.1/24 should be invalid");
|
|
|
|
// valid_ipv6
|
|
assert(ip.valid_ipv6("2001:db8::1"), "2001:db8::1 should be valid");
|
|
assert(ip.valid_ipv6("::1"), "::1 should be valid");
|
|
assert(!ip.valid_ipv6("2001:db8:::1"), "2001:db8:::1 should be invalid");
|
|
|
|
// valid_ipv6_cidr
|
|
assert(ip.valid_ipv6_cidr("2001:db8::1/64"), "2001:db8::1/64 should be valid");
|
|
assert(ip.valid_ipv6_cidr("::1/128"), "::1/128 should be valid");
|
|
assert(!ip.valid_ipv6_cidr("2001:db8::1/129"), "2001:db8::1/129 should be invalid");
|
|
|
|
// ip_family
|
|
assert(ip.ip_family("1.1.1.1") == 4, "family of 1.1.1.1 is 4");
|
|
assert(ip.ip_family("2001:db8::1") == 6, "family of 2001:db8::1 is 6");
|
|
assert(ip.ip_family("abc") == 0, "family of abc is 0");
|
|
|
|
// format_ipv6_tproxy_target
|
|
assert(ip.format_ipv6_tproxy_target("2001:db8::1", 1234) == "[2001:db8::1]:1234", "format IPv6 target");
|
|
'
|
|
|
|
printf 'core/ip checks passed\n'
|