Loading src/entry.sh +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ set -Eeuo pipefail cd /run . utils.sh # Load functions . reset.sh # Initialize system . install.sh # Run installation . disk.sh # Initialize disks Loading src/reset.sh +3 −145 Original line number Diff line number Diff line #!/usr/bin/env bash set -Eeuo pipefail info () { printf "%b%s%b" "\E[1;34m❯ \E[1;36m" "${1:-}" "\E[0m\n"; } error () { printf "%b%s%b" "\E[1;31m❯ " "ERROR: ${1:-}" "\E[0m\n" >&2; } warn () { printf "%b%s%b" "\E[1;31m❯ " "Warning: ${1:-}" "\E[0m\n" >&2; } trap 'error "Status $? while: $BASH_COMMAND (line $LINENO/$BASH_LINENO)"' ERR [ ! -f "/run/entry.sh" ] && error "Script must run inside Docker container!" && exit 11 Loading Loading @@ -38,7 +34,7 @@ TEMPLATE="/var/www/index.html" FOOTER1="$APP for Docker v$(</run/version)" FOOTER2="<a href='$SUPPORT'>$SUPPORT</a>" CPI=$(lscpu) CPU=$(cpu) SYS=$(uname -r) HOST=$(hostname -s) KERNEL=$(echo "$SYS" | cut -b 1) Loading @@ -46,41 +42,12 @@ MINOR=$(echo "$SYS" | cut -d '.' -f2) ARCH=$(dpkg --print-architecture) CORES=$(grep -c '^processor' /proc/cpuinfo) if ! grep -qi "socket(s)" <<< "$CPI"; then if ! grep -qi "socket(s)" <<< "$(lscpu)"; then SOCKETS=1 else SOCKETS=$(echo "$CPI" | grep -m 1 -i 'socket(s)' | awk '{print $(2)}') fi if ! grep -qi "model name" <<< "$CPI"; then CPU="" else CPU=$(echo "$CPI" | grep -m 1 -i 'model name' | cut -f 2 -d ":" | awk '{$1=$1}1' | sed 's# @.*##g' | sed s/"(R)"//g | sed 's/[^[:alnum:] ]\+/ /g' | sed 's/ */ /g') SOCKETS=$(lscpu | grep -m 1 -i 'socket(s)' | awk '{print $(2)}') fi if [ -z "${CPU// /}" ] && grep -qi "model:" <<< "$CPI"; then CPU=$(echo "$CPI" | grep -m 1 -i 'model:' | cut -f 2 -d ":" | awk '{$1=$1}1' | sed 's# @.*##g' | sed s/"(R)"//g | sed 's/[^[:alnum:] ]\+/ /g' | sed 's/ */ /g') fi CPU="${CPU// CPU/}" CPU="${CPU// 6 Core/}" CPU="${CPU// 8 Core/}" CPU="${CPU// 16 Core/}" CPU="${CPU// 32 Core/}" CPU="${CPU// 64 Core/}" CPU="${CPU//10th Gen /}" CPU="${CPU//11th Gen /}" CPU="${CPU//12th Gen /}" CPU="${CPU//13th Gen /}" CPU="${CPU//14th Gen /}" CPU="${CPU//15th Gen /}" CPU="${CPU// Processor/}" CPU="${CPU// Quad core/}" CPU="${CPU// Core TM/ Core}" CPU="${CPU// with Radeon Graphics/}" CPU="${CPU// with Radeon Vega Graphics/}" [ -z "${CPU// /}" ] && CPU="Unknown" [ -n "${CPU_CORES//[0-9 ]}" ] && error "Invalid amount of CPU_CORES: $CPU_CORES" && exit 15 # Check system Loading Loading @@ -110,30 +77,6 @@ if [[ "${FS,,}" == "ecryptfs" ]] || [[ "${FS,,}" == "tmpfs" ]]; then DISK_CACHE="writeback" fi formatBytes() { local result result=$(numfmt --to=iec "$1") local unit="${result//[0-9. ]}" if [ -z "$unit" ]; then unit="bytes" else unit=$(echo "${unit^^}" | sed 's/K/KB/g;s/M/MB/g;s/G/GB/g;s/T/TB/g') fi result="${result//[a-zA-Z ]/}" if [[ "${2:-}" == "up" ]]; then if [[ "$result" == *"."* ]]; then result="${result%%.*}" result=$((result+1)) fi else if [[ "${2:-}" == "down" ]]; then result="${result%%.*}" fi fi echo "$result $unit" return 0 } # Read memory RAM_SPARE=500000000 RAM_AVAIL=$(free -b | grep -m 1 Mem: | awk '{print $7}') Loading Loading @@ -181,91 +124,6 @@ rm -f /run/shm/dsm.url rm -rf /tmp/dsm rm -rf "$STORAGE/tmp" # Helper functions isAlive() { local pid="$1" if kill -0 "$pid" 2>/dev/null; then return 0 fi return 1 } pKill() { local pid="$1" { kill -15 "$pid" || true; } 2>/dev/null while isAlive "$pid"; do sleep 0.2 done return 0 } fWait() { local name="$1" while pgrep -f -l "$name" >/dev/null; do sleep 0.2 done return 0 } fKill() { local name="$1" { pkill -f "$name" || true; } 2>/dev/null fWait "$name" return 0 } escape () { local s s=${1//&/\&} s=${s//</\<} s=${s//>/\>} s=${s//'"'/\"} printf -- %s "$s" return 0 } html() { local title local body local script local footer title=$(escape "$APP") title="<title>$title</title>" footer=$(escape "$FOOTER1") body=$(escape "$1") if [[ "$body" == *"..." ]]; then body="<p class=\"loading\">${body/.../}</p>" fi [ -n "${2:-}" ] && script="$2" || script="" local HTML HTML=$(<"$TEMPLATE") HTML="${HTML/\[1\]/$title}" HTML="${HTML/\[2\]/$script}" HTML="${HTML/\[3\]/$body}" HTML="${HTML/\[4\]/$footer}" HTML="${HTML/\[5\]/$FOOTER2}" echo "$HTML" > "$PAGE" echo "$body" > "$INFO" return 0 } getCountry() { local url=$1 local query=$2 Loading src/utils.sh 0 → 100644 +171 −0 Original line number Diff line number Diff line #!/usr/bin/env bash set -Eeuo pipefail # Helper functions info () { printf "%b%s%b" "\E[1;34m❯ \E[1;36m" "${1:-}" "\E[0m\n"; } error () { printf "%b%s%b" "\E[1;31m❯ " "ERROR: ${1:-}" "\E[0m\n" >&2; } warn () { printf "%b%s%b" "\E[1;31m❯ " "Warning: ${1:-}" "\E[0m\n" >&2; } formatBytes() { local result result=$(numfmt --to=iec --suffix=B "$1" | sed -r 's/([A-Z])/ \1/' | sed 's/ B/ bytes/g;') local unit="${result//[0-9. ]}" result="${result//[a-zA-Z ]/}" if [[ "${2:-}" == "up" ]]; then if [[ "$result" == *"."* ]]; then result="${result%%.*}" result=$((result+1)) fi else if [[ "${2:-}" == "down" ]]; then result="${result%%.*}" fi fi echo "$result $unit" return 0 } isAlive() { local pid="$1" if kill -0 "$pid" 2>/dev/null; then return 0 fi return 1 } pKill() { local pid="$1" { kill -15 "$pid" || true; } 2>/dev/null while isAlive "$pid"; do sleep 0.2 done return 0 } fWait() { local name="$1" while pgrep -f -l "$name" >/dev/null; do sleep 0.2 done return 0 } fKill() { local name="$1" { pkill -f "$name" || true; } 2>/dev/null fWait "$name" return 0 } escape () { local s s=${1//&/\&} s=${s//</\<} s=${s//>/\>} s=${s//'"'/\"} printf -- %s "$s" return 0 } html() { local title local body local script local footer title=$(escape "$APP") title="<title>$title</title>" footer=$(escape "$FOOTER1") body=$(escape "$1") if [[ "$body" == *"..." ]]; then body="<p class=\"loading\">${body/.../}</p>" fi [ -n "${2:-}" ] && script="$2" || script="" local HTML HTML=$(<"$TEMPLATE") HTML="${HTML/\[1\]/$title}" HTML="${HTML/\[2\]/$script}" HTML="${HTML/\[3\]/$body}" HTML="${HTML/\[4\]/$footer}" HTML="${HTML/\[5\]/$FOOTER2}" echo "$HTML" > "$PAGE" echo "$body" > "$INFO" return 0 } cpu() { local ret local cpu="" ret=$(lscpu) if grep -qi "model name" <<< "$ret"; then cpu=$(echo "$ret" | grep -m 1 -i 'model name' | cut -f 2 -d ":" | awk '{$1=$1}1' | sed 's# @.*##g' | sed s/"(R)"//g | sed 's/[^[:alnum:] ]\+/ /g' | sed 's/ */ /g') fi if [ -z "${cpu// /}" ] && grep -qi "model:" <<< "$ret"; then cpu=$(echo "$ret" | grep -m 1 -i 'model:' | cut -f 2 -d ":" | awk '{$1=$1}1' | sed 's# @.*##g' | sed s/"(R)"//g | sed 's/[^[:alnum:] ]\+/ /g' | sed 's/ */ /g') fi cpu="${cpu// CPU/}" cpu="${cpu// 4 Core/}" cpu="${cpu// 6 Core/}" cpu="${cpu// 8 Core/}" cpu="${cpu// 10 Core/}" cpu="${cpu// 12 Core/}" cpu="${cpu// 16 Core/}" cpu="${cpu// 32 Core/}" cpu="${cpu// 64 Core/}" cpu="${cpu//7th Gen /}" cpu="${cpu//8th Gen /}" cpu="${cpu//9th Gen /}" cpu="${cpu//10th Gen /}" cpu="${cpu//11th Gen /}" cpu="${cpu//12th Gen /}" cpu="${cpu//13th Gen /}" cpu="${cpu//14th Gen /}" cpu="${cpu//15th Gen /}" cpu="${cpu// Processor/}" cpu="${cpu// Quad core/}" cpu="${cpu// Dual core/}" cpu="${cpu// Octa core/}" cpu="${cpu// Core TM/ Core}" cpu="${cpu// with Radeon Graphics/}" cpu="${cpu// with Radeon Vega Graphics/}" [ -z "${cpu// /}" ] && cpu="Unknown" echo "$cpu" return 0 } hasDisk() { [ -b "/disk" ] && return 0 [ -b "/disk1" ] && return 0 [ -b "/dev/disk1" ] && return 0 [ -b "${DEVICE:-}" ] && return 0 [ -z "${DISK_NAME:-}" ] && DISK_NAME="data" [ -s "$STORAGE/$DISK_NAME.img" ] && return 0 [ -s "$STORAGE/$DISK_NAME.qcow2" ] && return 0 return 1 } return 0 src/progress.sh +1 −1 File changed.Contains only whitespace changes. Show changes Loading
src/entry.sh +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ set -Eeuo pipefail cd /run . utils.sh # Load functions . reset.sh # Initialize system . install.sh # Run installation . disk.sh # Initialize disks Loading
src/reset.sh +3 −145 Original line number Diff line number Diff line #!/usr/bin/env bash set -Eeuo pipefail info () { printf "%b%s%b" "\E[1;34m❯ \E[1;36m" "${1:-}" "\E[0m\n"; } error () { printf "%b%s%b" "\E[1;31m❯ " "ERROR: ${1:-}" "\E[0m\n" >&2; } warn () { printf "%b%s%b" "\E[1;31m❯ " "Warning: ${1:-}" "\E[0m\n" >&2; } trap 'error "Status $? while: $BASH_COMMAND (line $LINENO/$BASH_LINENO)"' ERR [ ! -f "/run/entry.sh" ] && error "Script must run inside Docker container!" && exit 11 Loading Loading @@ -38,7 +34,7 @@ TEMPLATE="/var/www/index.html" FOOTER1="$APP for Docker v$(</run/version)" FOOTER2="<a href='$SUPPORT'>$SUPPORT</a>" CPI=$(lscpu) CPU=$(cpu) SYS=$(uname -r) HOST=$(hostname -s) KERNEL=$(echo "$SYS" | cut -b 1) Loading @@ -46,41 +42,12 @@ MINOR=$(echo "$SYS" | cut -d '.' -f2) ARCH=$(dpkg --print-architecture) CORES=$(grep -c '^processor' /proc/cpuinfo) if ! grep -qi "socket(s)" <<< "$CPI"; then if ! grep -qi "socket(s)" <<< "$(lscpu)"; then SOCKETS=1 else SOCKETS=$(echo "$CPI" | grep -m 1 -i 'socket(s)' | awk '{print $(2)}') fi if ! grep -qi "model name" <<< "$CPI"; then CPU="" else CPU=$(echo "$CPI" | grep -m 1 -i 'model name' | cut -f 2 -d ":" | awk '{$1=$1}1' | sed 's# @.*##g' | sed s/"(R)"//g | sed 's/[^[:alnum:] ]\+/ /g' | sed 's/ */ /g') SOCKETS=$(lscpu | grep -m 1 -i 'socket(s)' | awk '{print $(2)}') fi if [ -z "${CPU// /}" ] && grep -qi "model:" <<< "$CPI"; then CPU=$(echo "$CPI" | grep -m 1 -i 'model:' | cut -f 2 -d ":" | awk '{$1=$1}1' | sed 's# @.*##g' | sed s/"(R)"//g | sed 's/[^[:alnum:] ]\+/ /g' | sed 's/ */ /g') fi CPU="${CPU// CPU/}" CPU="${CPU// 6 Core/}" CPU="${CPU// 8 Core/}" CPU="${CPU// 16 Core/}" CPU="${CPU// 32 Core/}" CPU="${CPU// 64 Core/}" CPU="${CPU//10th Gen /}" CPU="${CPU//11th Gen /}" CPU="${CPU//12th Gen /}" CPU="${CPU//13th Gen /}" CPU="${CPU//14th Gen /}" CPU="${CPU//15th Gen /}" CPU="${CPU// Processor/}" CPU="${CPU// Quad core/}" CPU="${CPU// Core TM/ Core}" CPU="${CPU// with Radeon Graphics/}" CPU="${CPU// with Radeon Vega Graphics/}" [ -z "${CPU// /}" ] && CPU="Unknown" [ -n "${CPU_CORES//[0-9 ]}" ] && error "Invalid amount of CPU_CORES: $CPU_CORES" && exit 15 # Check system Loading Loading @@ -110,30 +77,6 @@ if [[ "${FS,,}" == "ecryptfs" ]] || [[ "${FS,,}" == "tmpfs" ]]; then DISK_CACHE="writeback" fi formatBytes() { local result result=$(numfmt --to=iec "$1") local unit="${result//[0-9. ]}" if [ -z "$unit" ]; then unit="bytes" else unit=$(echo "${unit^^}" | sed 's/K/KB/g;s/M/MB/g;s/G/GB/g;s/T/TB/g') fi result="${result//[a-zA-Z ]/}" if [[ "${2:-}" == "up" ]]; then if [[ "$result" == *"."* ]]; then result="${result%%.*}" result=$((result+1)) fi else if [[ "${2:-}" == "down" ]]; then result="${result%%.*}" fi fi echo "$result $unit" return 0 } # Read memory RAM_SPARE=500000000 RAM_AVAIL=$(free -b | grep -m 1 Mem: | awk '{print $7}') Loading Loading @@ -181,91 +124,6 @@ rm -f /run/shm/dsm.url rm -rf /tmp/dsm rm -rf "$STORAGE/tmp" # Helper functions isAlive() { local pid="$1" if kill -0 "$pid" 2>/dev/null; then return 0 fi return 1 } pKill() { local pid="$1" { kill -15 "$pid" || true; } 2>/dev/null while isAlive "$pid"; do sleep 0.2 done return 0 } fWait() { local name="$1" while pgrep -f -l "$name" >/dev/null; do sleep 0.2 done return 0 } fKill() { local name="$1" { pkill -f "$name" || true; } 2>/dev/null fWait "$name" return 0 } escape () { local s s=${1//&/\&} s=${s//</\<} s=${s//>/\>} s=${s//'"'/\"} printf -- %s "$s" return 0 } html() { local title local body local script local footer title=$(escape "$APP") title="<title>$title</title>" footer=$(escape "$FOOTER1") body=$(escape "$1") if [[ "$body" == *"..." ]]; then body="<p class=\"loading\">${body/.../}</p>" fi [ -n "${2:-}" ] && script="$2" || script="" local HTML HTML=$(<"$TEMPLATE") HTML="${HTML/\[1\]/$title}" HTML="${HTML/\[2\]/$script}" HTML="${HTML/\[3\]/$body}" HTML="${HTML/\[4\]/$footer}" HTML="${HTML/\[5\]/$FOOTER2}" echo "$HTML" > "$PAGE" echo "$body" > "$INFO" return 0 } getCountry() { local url=$1 local query=$2 Loading
src/utils.sh 0 → 100644 +171 −0 Original line number Diff line number Diff line #!/usr/bin/env bash set -Eeuo pipefail # Helper functions info () { printf "%b%s%b" "\E[1;34m❯ \E[1;36m" "${1:-}" "\E[0m\n"; } error () { printf "%b%s%b" "\E[1;31m❯ " "ERROR: ${1:-}" "\E[0m\n" >&2; } warn () { printf "%b%s%b" "\E[1;31m❯ " "Warning: ${1:-}" "\E[0m\n" >&2; } formatBytes() { local result result=$(numfmt --to=iec --suffix=B "$1" | sed -r 's/([A-Z])/ \1/' | sed 's/ B/ bytes/g;') local unit="${result//[0-9. ]}" result="${result//[a-zA-Z ]/}" if [[ "${2:-}" == "up" ]]; then if [[ "$result" == *"."* ]]; then result="${result%%.*}" result=$((result+1)) fi else if [[ "${2:-}" == "down" ]]; then result="${result%%.*}" fi fi echo "$result $unit" return 0 } isAlive() { local pid="$1" if kill -0 "$pid" 2>/dev/null; then return 0 fi return 1 } pKill() { local pid="$1" { kill -15 "$pid" || true; } 2>/dev/null while isAlive "$pid"; do sleep 0.2 done return 0 } fWait() { local name="$1" while pgrep -f -l "$name" >/dev/null; do sleep 0.2 done return 0 } fKill() { local name="$1" { pkill -f "$name" || true; } 2>/dev/null fWait "$name" return 0 } escape () { local s s=${1//&/\&} s=${s//</\<} s=${s//>/\>} s=${s//'"'/\"} printf -- %s "$s" return 0 } html() { local title local body local script local footer title=$(escape "$APP") title="<title>$title</title>" footer=$(escape "$FOOTER1") body=$(escape "$1") if [[ "$body" == *"..." ]]; then body="<p class=\"loading\">${body/.../}</p>" fi [ -n "${2:-}" ] && script="$2" || script="" local HTML HTML=$(<"$TEMPLATE") HTML="${HTML/\[1\]/$title}" HTML="${HTML/\[2\]/$script}" HTML="${HTML/\[3\]/$body}" HTML="${HTML/\[4\]/$footer}" HTML="${HTML/\[5\]/$FOOTER2}" echo "$HTML" > "$PAGE" echo "$body" > "$INFO" return 0 } cpu() { local ret local cpu="" ret=$(lscpu) if grep -qi "model name" <<< "$ret"; then cpu=$(echo "$ret" | grep -m 1 -i 'model name' | cut -f 2 -d ":" | awk '{$1=$1}1' | sed 's# @.*##g' | sed s/"(R)"//g | sed 's/[^[:alnum:] ]\+/ /g' | sed 's/ */ /g') fi if [ -z "${cpu// /}" ] && grep -qi "model:" <<< "$ret"; then cpu=$(echo "$ret" | grep -m 1 -i 'model:' | cut -f 2 -d ":" | awk '{$1=$1}1' | sed 's# @.*##g' | sed s/"(R)"//g | sed 's/[^[:alnum:] ]\+/ /g' | sed 's/ */ /g') fi cpu="${cpu// CPU/}" cpu="${cpu// 4 Core/}" cpu="${cpu// 6 Core/}" cpu="${cpu// 8 Core/}" cpu="${cpu// 10 Core/}" cpu="${cpu// 12 Core/}" cpu="${cpu// 16 Core/}" cpu="${cpu// 32 Core/}" cpu="${cpu// 64 Core/}" cpu="${cpu//7th Gen /}" cpu="${cpu//8th Gen /}" cpu="${cpu//9th Gen /}" cpu="${cpu//10th Gen /}" cpu="${cpu//11th Gen /}" cpu="${cpu//12th Gen /}" cpu="${cpu//13th Gen /}" cpu="${cpu//14th Gen /}" cpu="${cpu//15th Gen /}" cpu="${cpu// Processor/}" cpu="${cpu// Quad core/}" cpu="${cpu// Dual core/}" cpu="${cpu// Octa core/}" cpu="${cpu// Core TM/ Core}" cpu="${cpu// with Radeon Graphics/}" cpu="${cpu// with Radeon Vega Graphics/}" [ -z "${cpu// /}" ] && cpu="Unknown" echo "$cpu" return 0 } hasDisk() { [ -b "/disk" ] && return 0 [ -b "/disk1" ] && return 0 [ -b "/dev/disk1" ] && return 0 [ -b "${DEVICE:-}" ] && return 0 [ -z "${DISK_NAME:-}" ] && DISK_NAME="data" [ -s "$STORAGE/$DISK_NAME.img" ] && return 0 [ -s "$STORAGE/$DISK_NAME.qcow2" ] && return 0 return 1 } return 0