#!/usr/bin/env bash validate_root_usage() { if [[ "$(id -u)" -ne 0 ]]; then fail "$(t root_required)" fi } validate_core_support() { local supported_cores="pmmp,paper,purpur,velocity,powernukkitx,nethergamesmc,bds" local supported_os="ubuntu,debian" local planned_os="arch,fedora,rocky,almalinux" case "$CORE" in pmmp|paper|purpur|velocity|powernukkitx|nethergamesmc|bds) ;; *) fail "$(t unsupported_core "$CORE" "$supported_cores" "${SCRIPT_DIR}/manifests/cores.json")" ;; esac case "$OS_ID" in ubuntu|debian) return 0 ;; arch|fedora|rocky|almalinux) warn "$(t os_coreplanned "$OS_ID" "${SCRIPT_DIR}/manifests/os-support.json")" ;; *) fail "$(t unsupported_os "$OS_ID" "$supported_os" "$planned_os" "${SCRIPT_DIR}/manifests/os-support.json")" ;; esac } validate_eula() { if ! is_java_core "$CORE"; then return 0 fi if [[ "${ACCEPT_EULA,,}" != "yes" ]]; then fail "$(t eula_denied)" fi } validate_port() { local port="$1" local protocol="$2" if ! command -v ss >/dev/null 2>&1; then if command -v lsof >/dev/null 2>&1; then if [[ "$protocol" == "tcp" ]]; then if lsof -iTCP:"$port" -sTCP:LISTEN -n -P >/dev/null 2>&1; then fail "$(t tcp_port_in_use "$port")" fi else if lsof -iUDP:"$port" -n -P >/dev/null 2>&1; then fail "$(t udp_port_in_use "$port")" fi fi return 0 fi fi if [[ "$protocol" == "tcp" ]]; then if ss -ltn | awk '{print $4}' | grep -q ":${port}$"; then fail "$(t tcp_port_in_use "$port")" fi else if ss -lun | awk '{print $5}' | grep -q ":${port}$"; then fail "$(t udp_port_in_use "$port")" fi fi }