Skip to content

install.func ‐ script function explanations

CanbiZ edited this page Jan 17, 2025 · 1 revision

Debian/Ubuntu Container Setup Script Function Explanations

1. color()

Purpose: Sets up various color and formatting variables for terminal output.

Details:

  • Defines colors like yellow (YW), green (GN), and red (RD) using ANSI escape codes for text formatting.
  • Also defines icons for different types of output, such as checkmarks (CM), error crosses (CROSS), and network-related icons (NETWORK, GATEWAY).

Example:

color
echo -e "${GN}Success${CL}"   # Output: Green colored "Success"
echo -e "${NETWORK}Network${CL}"  # Network icon followed by text "Network"

2. verb_ip6()

Purpose: Enables or disables IPv6 based on the DISABLEIPV6 variable and sets the verbose mode.

Details:

  • Disables IPv6 by adding a line to /etc/sysctl.conf if DISABLEIPV6 is set to yes.
  • Optionally suppresses output based on the VERBOSE variable.

Example:

DISABLEIPV6="yes"
verb_ip6  # Disables IPv6 if the variable is set

3. catch_errors()

Purpose: Sets up error handling for the script.

Details:

  • Configures the script to exit immediately on errors using set -Eeuo pipefail.
  • Defines a trap that calls error_handler() when an error occurs.

Example:

catch_errors
ls non_existent_file  # This will trigger the error handler

4. error_handler()

Purpose: Handles errors that occur during script execution.

Details:

  • Stops the spinner if it's running.
  • Prints the error message with details like the exit code, line number, and the command that failed.

Example:

error_handler 42 "ls non_existent_file"
# Output: [ERROR] in line 42: exit code 2: while executing command "ls non_existent_file"

5. spinner()

Purpose: Displays a rotating spinner animation.

Details:

  • Uses a set of frames to create a spinning effect in the terminal.

Example:

spinner  # Starts the spinner animation

6. msg_info(), msg_ok(), msg_error()

Purpose: Displays messages with different statuses.

Details:

  • msg_info(): Displays an informational message with a spinner animation.
  • msg_ok(): Displays a success message and stops the spinner.
  • msg_error(): Displays an error message and stops the spinner.

Example:

msg_info "This is an informational message"
msg_ok "Success!"
msg_error "An error occurred"

7. setting_up_container()

Purpose: Sets up the container OS, configures locale, timezone, and network.

Details:

  • Modifies /etc/locale.gen to enable the correct locale.
  • Configures timezone and network, retrying network configuration if necessary.

Example:

setting_up_container  # Configures OS, locale, timezone, and network

8. network_check()

Purpose: Verifies internet connectivity via IPv4 and IPv6.

Details:

  • Checks IPv4 connectivity to Google, Cloudflare, and Quad9 DNS servers.
  • Checks IPv6 connectivity and performs DNS lookup for github.com.

Example:

network_check  # Verifies internet connectivity

9. update_os()

Purpose: Updates the container's OS using apt-get update and apt-get dist-upgrade.

Details:

  • If CACHER is enabled, it configures a proxy for package fetching.
  • Runs system update and upgrades all installed packages.

Example:

update_os  # Updates the container's OS

10. motd_ssh()

Purpose: Modifies the message of the day (MOTD) and SSH settings.

Details:

  • Sets terminal to 256-color mode and updates /etc/motd with system information.
  • Configures SSH settings to allow root login if enabled.

Example:

motd_ssh  # Modifies MOTD and SSH settings

11. customize()

Purpose: Customizes the container by enabling auto-login and setting up SSH keys.

Details:

  • If no password is provided, it enables auto-login for the root user.
  • Optionally configures SSH by adding the provided public key to the root user.

Example:

customize  # Customizes the container with auto-login and SSH key setup