diff --git a/debug.log b/debug.log new file mode 100644 index 00000000..6d3159b0 --- /dev/null +++ b/debug.log @@ -0,0 +1 @@ +[0109/144328.376:ERROR:registration_protocol_win.cc(108)] CreateFile: Das System kann die angegebene Datei nicht finden. (0x2) diff --git a/misc/install.func b/misc/install.func index 1a3cf5eb..9c345f77 100644 --- a/misc/install.func +++ b/misc/install.func @@ -19,7 +19,7 @@ color() { BOLD=$(echo "\033[1m") HOLD=" " TAB=" " - + # System RETRY_NUM=10 RETRY_EVERY=3 @@ -56,7 +56,7 @@ catch_errors() { # This function handles errors error_handler() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi printf "\e[?25h" local exit_code="$?" local line_number="$1" @@ -79,7 +79,7 @@ spinner() { while true; do printf "\r ${color}%s${CL}" "${frames[spin_i]}" - spin_i=$(( (spin_i + 1) % ${#frames[@]} )) + spin_i=$(((spin_i + 1) % ${#frames[@]})) sleep "$interval" done } @@ -94,7 +94,7 @@ msg_info() { # This function displays a success message with a green color. msg_ok() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi printf "\e[?25h" local msg="$1" echo -e "${BFR}${CM}${GN}${msg}${CL}" @@ -102,11 +102,44 @@ msg_ok() { # This function displays a error message with a red color. msg_error() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi printf "\e[?25h" local msg="$1" echo -e "${BFR}${CROSS}${RD}${msg}${CL}" } +install_figlet() { + if ! command -v figlet &>/dev/null; then + + # Install necessary dependencies and figlet + if [ -f /etc/debian_version ] || [ -f /etc/lsb-release ]; then + apt-get update -y &>/dev/null + apt-get install -y tar build-essential curl &>/dev/null + elif [ -f /etc/alpine-release ]; then + apk add --no-cache tar build-base curl &>/dev/null + export TERM=xterm + else + return 1 + fi + temp_dir=$(mktemp -d) + curl -sL https://github.com/community-scripts/ProxmoxVE/raw/refs/heads/main/misc/figlet.tar.xz -o "$temp_dir/figlet.tar.xz" + mkdir -p /tmp/figlet + tar -xf "$temp_dir/figlet.tar.xz" -C /tmp/figlet --strip-components=1 + cd /tmp/figlet + # Run make to compile the figlet binary + make >/dev/null + # Check if the figlet binary exists + if [ -f "figlet" ]; then + chmod +x figlet + # Move figlet to /usr/local/bin if not already there + if [ ! -e /usr/local/bin/figlet ]; then + mv figlet /usr/local/bin/ + mkdir -p /usr/local/share/figlet + cp -r /tmp/figlet/fonts/*.flf /usr/local/share/figlet/ + fi + fi + rm -rf "$temp_dir" + fi +} # This function sets up the Container OS by generating the locale, setting the timezone, and checking the network connection setting_up_container() { @@ -143,23 +176,23 @@ network_check() { ipv4_connected=false ipv6_connected=false sleep 1 -# Check IPv4 connectivity to Google, Cloudflare & Quad9 DNS servers. - if ping -c 1 -W 1 1.1.1.1 &>/dev/null || ping -c 1 -W 1 8.8.8.8 &>/dev/null || ping -c 1 -W 1 9.9.9.9 &>/dev/null; then - msg_ok "IPv4 Internet Connected"; + # Check IPv4 connectivity to Google, Cloudflare & Quad9 DNS servers. + if ping -c 1 -W 1 1.1.1.1 &>/dev/null || ping -c 1 -W 1 8.8.8.8 &>/dev/null || ping -c 1 -W 1 9.9.9.9 &>/dev/null; then + msg_ok "IPv4 Internet Connected" ipv4_connected=true else - msg_error "IPv4 Internet Not Connected"; + msg_error "IPv4 Internet Not Connected" fi -# Check IPv6 connectivity to Google, Cloudflare & Quad9 DNS servers. + # Check IPv6 connectivity to Google, Cloudflare & Quad9 DNS servers. if ping6 -c 1 -W 1 2606:4700:4700::1111 &>/dev/null || ping6 -c 1 -W 1 2001:4860:4860::8888 &>/dev/null || ping6 -c 1 -W 1 2620:fe::fe &>/dev/null; then - msg_ok "IPv6 Internet Connected"; + msg_ok "IPv6 Internet Connected" ipv6_connected=true else - msg_error "IPv6 Internet Not Connected"; + msg_error "IPv6 Internet Not Connected" fi -# If both IPv4 and IPv6 checks fail, prompt the user + # If both IPv4 and IPv6 checks fail, prompt the user if [[ $ipv4_connected == false && $ipv6_connected == false ]]; then read -r -p "No Internet detected,would you like to continue anyway? " prompt if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then @@ -189,7 +222,7 @@ else echo -n "DIRECT" fi EOF - chmod +x /usr/local/bin/apt-proxy-detect.sh + chmod +x /usr/local/bin/apt-proxy-detect.sh fi $STD apt-get update $STD apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade @@ -200,10 +233,10 @@ EOF # This function modifies the message of the day (motd) and SSH settings motd_ssh() { # Set terminal to 256-color mode - grep -qxF "export TERM='xterm-256color'" /root/.bashrc || echo "export TERM='xterm-256color'" >> /root/.bashrc + grep -qxF "export TERM='xterm-256color'" /root/.bashrc || echo "export TERM='xterm-256color'" >>/root/.bashrc # Get the current private IP address - IP=$(hostname -I | awk '{print $1}') # Private IP + IP=$(hostname -I | awk '{print $1}') # Private IP # Get OS information (Debian / Ubuntu) if [ -f "/etc/os-release" ]; then @@ -218,13 +251,13 @@ motd_ssh() { MOTD_FILE="/etc/motd" if [ -f "$MOTD_FILE" ]; then # Start MOTD with application info and link - echo -e "\n${BOLD}${APPLICATION} LXC Container${CL}" > "$MOTD_FILE" - echo -e "${TAB}${GATEWAY}${YW} Provided by: ${GN}community-scripts ORG ${YW}| GitHub: ${GN}https://github.com/community-scripts/ProxmoxVE${CL}\n" >> "$MOTD_FILE" + echo -e "\n${BOLD}${APPLICATION} LXC Container${CL}" >"$MOTD_FILE" + echo -e "${TAB}${GATEWAY}${YW} Provided by: ${GN}community-scripts ORG ${YW}| GitHub: ${GN}https://github.com/community-scripts/ProxmoxVE${CL}\n" >>"$MOTD_FILE" # Add system information with icons - echo -e "${TAB}${OS}${YW} OS: ${GN}${OS_NAME} - Version: ${OS_VERSION}${CL}" >> "$MOTD_FILE" - echo -e "${TAB}${HOSTNAME}${YW} Hostname: ${GN}$(hostname)${CL}" >> "$MOTD_FILE" - echo -e "${TAB}${INFO}${YW} IP Address: ${GN}${IP}${CL}" >> "$MOTD_FILE" + echo -e "${TAB}${OS}${YW} OS: ${GN}${OS_NAME} - Version: ${OS_VERSION}${CL}" >>"$MOTD_FILE" + echo -e "${TAB}${HOSTNAME}${YW} Hostname: ${GN}$(hostname)${CL}" >>"$MOTD_FILE" + echo -e "${TAB}${INFO}${YW} IP Address: ${GN}${IP}${CL}" >>"$MOTD_FILE" else echo "MotD file does not exist!" >&2 fi @@ -255,4 +288,5 @@ EOF fi echo "bash -c \"\$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/${app}.sh)\"" >/usr/bin/update chmod +x /usr/bin/update + install_figlet }