#!/bin/bash set -e # Init script to copy configuration files to the correct locations # This handles the discrepancy between where K8s mounts configs # and where the socktop package expects them (HOME directory) echo "===================================" echo "Initializing socktop webterm config" echo "===================================" # Determine the actual HOME directory for the socktop user SOCKTOP_HOME=$(eval echo ~socktop) echo "Socktop HOME: ${SOCKTOP_HOME}" # Check if we're running as root if [ "$(id -u)" -eq 0 ]; then echo "Running as root, will set permissions" # Create necessary directories in the actual HOME mkdir -p "${SOCKTOP_HOME}/.config/socktop/certs" mkdir -p "${SOCKTOP_HOME}/.config/alacritty" else echo "Running as non-root user ($(id -u)), creating directories without root" # Try to create directories - will work if HOME is writable mkdir -p "${SOCKTOP_HOME}/.config/socktop/certs" 2>/dev/null || echo " ⚠ Could not create directories (may already exist)" mkdir -p "${SOCKTOP_HOME}/.config/alacritty" 2>/dev/null || true fi # Copy files from mounted locations to actual HOME if they exist echo "Copying configuration files..." # Copy profiles.json if [ -f "/home/socktop/.config/socktop/profiles.json" ]; then cp /home/socktop/.config/socktop/profiles.json "${SOCKTOP_HOME}/.config/socktop/profiles.json" echo " ✓ Copied profiles.json" else echo " ⚠ profiles.json not found at mount point" fi # Copy alacritty.toml if [ -f "/home/socktop/.config/alacritty/alacritty.toml" ]; then cp /home/socktop/.config/alacritty/alacritty.toml "${SOCKTOP_HOME}/.config/alacritty/alacritty.toml" echo " ✓ Copied alacritty.toml" else echo " ⚠ alacritty.toml not found at mount point" fi # Copy catppuccin-frappe.toml if [ -f "/home/socktop/.config/alacritty/catppuccin-frappe.toml" ]; then cp /home/socktop/.config/alacritty/catppuccin-frappe.toml "${SOCKTOP_HOME}/.config/alacritty/catppuccin-frappe.toml" echo " ✓ Copied catppuccin-frappe.toml" else echo " ⚠ catppuccin-frappe.toml not found at mount point" fi # Copy certificates if they exist if [ -d "/home/socktop/.config/socktop/certs" ]; then for cert in /home/socktop/.config/socktop/certs/*.pem; do if [ -f "$cert" ]; then cp "$cert" "${SOCKTOP_HOME}/.config/socktop/certs/" echo " ✓ Copied $(basename "$cert")" fi done else echo " ℹ No certificates directory found (optional)" fi # Set proper ownership (only if running as root) if [ "$(id -u)" -eq 0 ]; then chown -R socktop:socktop "${SOCKTOP_HOME}/.config" echo " ✓ Set ownership to socktop:socktop" fi # Fix paths in profiles.json if it exists if [ -f "${SOCKTOP_HOME}/.config/socktop/profiles.json" ]; then echo "Rewriting paths in profiles.json..." # Replace /home/socktop with actual HOME directory and ensure certs/ subdirectory sed -i "s|/home/socktop/.config/socktop/rpi-|${SOCKTOP_HOME}/.config/socktop/certs/rpi-|g" "${SOCKTOP_HOME}/.config/socktop/profiles.json" echo " ✓ Updated certificate paths" fi echo "===================================" echo "Configuration initialization complete" echo "===================================" # Switch to socktop user only if running as root if [ "$(id -u)" -eq 0 ]; then echo "Switching to socktop user..." exec runuser -u socktop -- "$@" else echo "Already running as non-root user ($(whoami)), continuing..." exec "$@" fi