#!/bin/bash headscaleCommands() { # Setup Headscale for Localhost if [[ "$headscaleclientlocal" == [yY] ]]; then setupHeadscale localhost; fi # Setup Headscale for app if [[ "$headscaleclientapp" == [yY] ]]; then local app_names=() local app_dir isHeader "Install Headscale Apps List" # Find all subdirectories under the directory where your apps are installed for app_dir in "$containers_dir"/*/; do if [[ -d "$app_dir" ]]; then # Extract the app name (folder name) local app_name=$(basename "$app_dir") local app_names+=("$app_name") fi done # Check if any apps were found if [ ${#app_names[@]} -eq 0 ]; then isNotice "No apps found in the installation directory." fi # List numbered options for app names isNotice "Select an app to set up Headscale for:" echo "" for i in "${!app_names[@]}"; do isOption "$((i + 1)). ${app_names[i]}" done # Read user input for app selection echo "" isQuestion "Enter the number of the app (or 'x' to exit): " read -p "" selected_option case "$selected_option" in [1-9]*) # Check if the selected option is a valid number if ((selected_option >= 1 && selected_option <= ${#app_names[@]})); then local selected_app="${app_names[selected_option - 1]}" # Call the setupHeadscale function with the selected app name setupHeadscale "$selected_app" else isNotice "Invalid app number. Please choose a valid option." fi ;; x) isNotice "Exiting..." ;; *) isNotice "Invalid option. Please choose a valid option or 'x' to exit." ;; esac fi # Create a user if [[ "$headscaleusercreate" == [yY] ]]; then echo "" echo "---- Creating user $CFG_INSTALL_NAME for Headscale :" echo "" local CFG_INSTALL_NAME=$(echo "$CFG_INSTALL_NAME" | tr '[:upper:]' '[:lower:]') dockerCommandRun "docker exec headscale headscale users create $CFG_INSTALL_NAME" echo "" isNotice "Press Enter to continue..." read fi # Create a user if [[ "$headscaleusercreate" == [yY] ]]; then echo "" echo "---- Creating user $CFG_INSTALL_NAME for Headscale :" echo "" local CFG_INSTALL_NAME=$(echo "$CFG_INSTALL_NAME" | tr '[:upper:]' '[:lower:]') dockerCommandRun "docker exec headscale headscale users create $CFG_INSTALL_NAME" echo "" isNotice "Press Enter to continue..." read fi # Create a key if [[ "$headscaleapikeyscreate" == [yY] ]]; then echo "" echo "---- Generating Auth Key in Headscale for user $CFG_INSTALL_NAME :" echo "" local CFG_INSTALL_NAME=$(echo "$CFG_INSTALL_NAME" | tr '[:upper:]' '[:lower:]') dockerCommandRun "docker exec headscale headscale preauthkeys create -e 1h -u $CFG_INSTALL_NAME" echo "" isNotice "Press Enter to continue..." read fi # Show list of keys if [[ "$headscaleapikeyslist" == [yY] ]]; then echo "" echo "---- Showing all Headscale API Keys :" echo "" dockerCommandRun "docker exec headscale headscale apikeys list" echo "" isNotice "Press Enter to continue..." read fi # Show list of nodes if [[ "$headscalenodeslist" == [yY] ]]; then echo "" echo "---- Showing all Headscale Nodes :" echo "" dockerCommandRun "docker exec headscale headscale nodes list" echo "" isNotice "Press Enter to continue..." read fi # Show list of users if [[ "$headscaleuserlist" == [yY] ]]; then echo "" echo "---- Showing all Headscale Users :" echo "" dockerCommandRun "docker exec headscale headscale user list" echo "" isNotice "Press Enter to continue..." read fi # Show version if [[ "$headscaleversion" == [yY] ]]; then echo "" checkSuccess "Showing the Headscale Version :" echo "" dockerCommandRun "docker exec headscale headscale version" echo "" isNotice "Press Enter to continue..." read fi }