diff --git a/.dockerignore b/.dockerignore index 4f5f732..a1e41eb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,5 @@ .dockerignore +.devcontainer .git .github .gitignore diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 12fdd10..e57f9bc 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -22,3 +22,8 @@ jobs: dockerfile: Dockerfile ignore: DL3008,DL3003,DL3006,DL3013 failure-threshold: warning + - + name: Validate JSON and YML files + uses: GrantBirki/json-yaml-validate@v4 + with: + yaml_exclude_regex: ".*\\kubernetes\\.yml$" diff --git a/src/entry.sh b/src/entry.sh index 3512b91..2154ce5 100755 --- a/src/entry.sh +++ b/src/entry.sh @@ -18,8 +18,8 @@ cd /run . proc.sh # Initialize processor . serial.sh # Initialize serialport . power.sh # Configure shutdown -. config.sh # Configure arguments . memory.sh # Check available memory +. config.sh # Configure arguments . finish.sh # Finish initialization trap - ERR diff --git a/src/memory.sh b/src/memory.sh index 76c17e5..246405d 100644 --- a/src/memory.sh +++ b/src/memory.sh @@ -2,7 +2,7 @@ set -Eeuo pipefail RAM_AVAIL=$(free -b | grep -m 1 Mem: | awk '{print $7}') - + if [[ "$RAM_CHECK" != [Nn]* && "${RAM_SIZE,,}" != "max" && "${RAM_SIZE,,}" != "half" ]]; then AVAIL_MEM=$(formatBytes "$RAM_AVAIL") @@ -59,15 +59,15 @@ if [[ "${RAM_SIZE,,}" == "max" ]]; then RAM_WANTED=$(( RAM_WANTED / 1073741825 )) if (( "$RAM_WANTED" < 1 )); then - + RAM_WANTED=$(( RAM_AVAIL - RAM_SPARE )) RAM_WANTED=$(( RAM_WANTED / 1048577 )) - + if (( "$RAM_WANTED" < 1 )); then RAM_WANTED=$(( RAM_AVAIL )) RAM_WANTED=$(( RAM_WANTED / 1048577 )) - + fi RAM_SIZE="${RAM_WANTED}M" @@ -80,7 +80,7 @@ if [[ "${RAM_SIZE,,}" == "max" ]]; then else RAM_SIZE="${RAM_WANTED}G" fi - + fi return 0 diff --git a/src/network.sh b/src/network.sh index e183305..8a45ad1 100644 --- a/src/network.sh +++ b/src/network.sh @@ -271,6 +271,7 @@ getSlirp() { configureSlirp() { + NETWORK="slirp" [[ "$DEBUG" == [Yy1]* ]] && echo "Configuring slirp networking..." local ip="$IP" @@ -302,6 +303,7 @@ configureSlirp() { configurePasst() { + NETWORK="passt" [[ "$DEBUG" == [Yy1]* ]] && echo "Configuring user-mode networking..." local log="/var/log/passt.log" @@ -785,7 +787,7 @@ else fi case "${NETWORK,,}" in - "user"* | "passt" | "slirp" ) ;; + "passt" | "slirp" | "user"* ) ;; "tap" | "tun" | "tuntap" | "y" ) # Configure tap interface @@ -800,11 +802,9 @@ else esac - [[ "${NETWORK,,}" == "user"* ]] && NETWORK="passt" - case "${NETWORK,,}" in "tap" | "tun" | "tuntap" | "y" ) ;; - "passt" ) + "passt" | "user"* ) # Configure for user-mode networking (passt) if ! configurePasst; then diff --git a/src/socket.sh b/src/socket.sh index cc91de9..5a4007c 100644 --- a/src/socket.sh +++ b/src/socket.sh @@ -1,16 +1,31 @@ #!/usr/bin/env bash set -Eeuo pipefail +lastmsg="" path="/run/shm/msg.html" -if [ -f "$path" ] && [ -s "$path" ]; then - echo -n "s: " && cat "$path" -fi +refresh() { + + [ ! -f "$path" ] && return 0 + [ ! -s "$path" ] && return 0 + + msg=$(< "$path") + msg="${msg%$'\n'}" + + [ -z "$msg" ] && return 0 + [[ "$msg" == "$lastmsg" ]] && return 0 + + lastmsg="$msg" + echo "s: $msg" + return 0 +} + +refresh inotifywait -m "$path" | while read -r fp event fn; do case "${event,,}" in - "modify"* ) echo -n "s: " && cat "$path" ;; + "modify"* ) refresh ;; "delete_self" ) echo "c: vnc" ;; esac done