57 lines
2.3 KiB
Bash
57 lines
2.3 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");
|
|
|
|
// ipv6_supported function exists and returns boolean
|
|
assert(type(ip.ipv6_supported()) == "bool", "ipv6_supported returns bool");
|
|
'
|
|
|
|
# Test override environment variable
|
|
[ "$(TACHYON_ENABLE_IPV6=0 ucode -L "$TACHYON_LIB" -e 'let ip = require("core.ip"); print(ip.ipv6_supported() ? "true" : "false");')" = "false" ] || { echo "ipv6 override 0 failed" >&2; exit 1; }
|
|
[ "$(TACHYON_ENABLE_IPV6=1 ucode -L "$TACHYON_LIB" -e 'let ip = require("core.ip"); print(ip.ipv6_supported() ? "true" : "false");')" = "true" ] || { echo "ipv6 override 1 failed" >&2; exit 1; }
|
|
|
|
printf 'core/ip checks passed\n'
|