Integrate Easy Asterisk Intercom into v0.9.8 installer

Added to install_kiosk_v0.9.8.sh:
- SECTION 14.5: Easy Asterisk Intercom addon functions
- get_latest_easy_asterisk_version() - Fetches latest version from GitHub API
- get_installed_easy_asterisk_version() - Checks installed version
- backup_easy_asterisk_configs() - Backs up configs before updates
- restore_easy_asterisk_configs() - Restores configs after install
- download_and_install_easy_asterisk() - Downloads and runs installer
- addon_easy_asterisk_intercom() - Main menu function with update logic

- Added option 4 "Easy Asterisk Intercom" to Addons menu
- Updated show_addon_status() to display Intercom installation status
- Integration uses stable v0.9.8 as base (v0.9.9 was broken)

README updates:
- Fixed all references from v0.9.9 to v0.9.8
- Updated menu paths (2) Addons → (4) Easy Asterisk Intercom
- Corrected version number throughout
- Updated Quick Install section

Features:
- Downloads latest easy-asterisk-v*.sh from GitHub repo
- Automatic version detection and update checking
- Configuration preservation during updates/reruns
- Safe to run multiple times
- User prompts for install/update/rerun decisions
This commit is contained in:
Claude
2025-12-10 22:32:22 +00:00
parent 38e732b976
commit 234dd900f6
2 changed files with 276 additions and 17 deletions
+15 -14
View File
@@ -48,9 +48,9 @@ Home/office kiosk for reusing old hardware, displaying:
# Enable SSH during installation
# Download and run installer
wget https://github.com/outis1one/ubk/raw/main/install_kiosk_v0.9.9.sh
chmod +x install_kiosk_v0.9.9.sh
./install_kiosk_v0.9.9.sh
wget https://github.com/outis1one/ubk/raw/main/install_kiosk_v0.9.8.sh
chmod +x install_kiosk_v0.9.8.sh
./install_kiosk_v0.9.8.sh
```
The installer will guide you through configuration during setup.
@@ -393,7 +393,7 @@ smb://WORKGROUP/COMPUTER/PrinterName
```bash
# Run installer script again to access menu
./install_kiosk_0.9.9.sh
./install_kiosk_v0.9.8.sh
# Menu structure:
# 1. Core Settings - Sites, WiFi, schedules, passwords, full reinstall, complete uninstall
@@ -408,9 +408,9 @@ The Easy Asterisk Intercom addon provides voice communication capabilities to yo
**Access the addon menu:**
```bash
./install_kiosk_v0.9.9.sh
# Select: 2) Manage Addons
# Then: 1) Install/Update Intercom (Easy Asterisk)
./install_kiosk_v0.9.8.sh
# Select: 2) Addons
# Then: 4) Easy Asterisk Intercom
```
**Features:**
@@ -437,9 +437,9 @@ asterisk -rvvv
# Restart Asterisk
systemctl restart asterisk
# Configure intercom
./install_kiosk_v0.9.9.sh
# Select: 2) Manage Addons → 4) Configure Intercom
# Configure intercom (rerun installation to update)
./install_kiosk_v0.9.8.sh
# Select: 2) Addons → 4) Easy Asterisk Intercom
```
**Installation location:**
@@ -972,12 +972,13 @@ See the LICENSE file in the repository for full terms.
## Project Status & Future Plans
**Current Version:** 0.9.9 - Easy Asterisk Intercom Integration
**Current Version:** 0.9.8 - Named Sites & Easy Asterisk Intercom
**Recent Updates (v0.9.9):**
**Recent Updates (v0.9.8):**
- Easy Asterisk Intercom addon with automatic updates
- Smart version detection and configuration preservation
- Enhanced addon management system
- Named websites feature for user-friendly site identification
- Navigation menu with key icon
**Planned Features:**
- Web-based GUI configuration interface
@@ -1019,4 +1020,4 @@ Special thanks to the maintainers of all upstream projects that make UBK possibl
---
*Last Updated: December 10, 2025*
*Version: 0.9.9*
*Version: 0.9.8*
+261 -3
View File
@@ -513,7 +513,18 @@ show_addon_status() {
[[ -x /usr/bin/wg ]] && { any_addon=true; echo "WireGuard: ✓ Installed"; }
[[ -x /usr/bin/tailscale ]] && { any_addon=true; echo "Tailscale: ✓ Installed"; }
[[ -x /usr/bin/netbird ]] && { any_addon=true; echo "Netbird: ✓ Installed"; }
# Easy Asterisk Intercom - FAST CHECK
if [[ -f "${EASY_ASTERISK_VERSION_FILE:-/opt/easy-asterisk/.version}" ]]; then
any_addon=true
local ea_version=$(cat "${EASY_ASTERISK_VERSION_FILE:-/opt/easy-asterisk/.version}" 2>/dev/null || echo "Unknown")
if systemctl is-active asterisk &>/dev/null; then
echo "Easy Asterisk: ✓ Running (v${ea_version})"
else
echo "Easy Asterisk: ✓ Installed (v${ea_version}) - Not running"
fi
fi
if ! $any_addon; then
echo "No addons installed"
fi
@@ -8933,6 +8944,251 @@ uninstall_html_keyboard() {
log_success "HTML Keyboard removed"
pause
}
################################################################################
### SECTION 14.5: ADDON - EASY ASTERISK INTERCOM
################################################################################
# GitHub repository details for Easy Asterisk
EASY_ASTERISK_REPO="outis1one/easy-asterisk"
EASY_ASTERISK_RAW_URL="https://raw.githubusercontent.com/${EASY_ASTERISK_REPO}/main"
EASY_ASTERISK_API_URL="https://api.github.com/repos/${EASY_ASTERISK_REPO}/contents"
# Local installation paths
EASY_ASTERISK_INSTALL_DIR="/opt/easy-asterisk"
EASY_ASTERISK_VERSION_FILE="${EASY_ASTERISK_INSTALL_DIR}/.version"
EASY_ASTERISK_CONFIG_BACKUP="${EASY_ASTERISK_INSTALL_DIR}/config_backup"
get_latest_easy_asterisk_version() {
# Try to get file list from GitHub API
local files_json=$(curl -s "${EASY_ASTERISK_API_URL}" 2>/dev/null)
if [ $? -ne 0 ] || [ -z "$files_json" ]; then
return 1
fi
# Extract easy-asterisk-v*.sh files and find the latest version
local latest_version=$(echo "$files_json" | grep -oP 'easy-asterisk-v\K[0-9]+\.[0-9]+\.[0-9]+(?=\.sh)' | sort -V | tail -1)
if [ -z "$latest_version" ]; then
return 1
fi
echo "$latest_version"
return 0
}
get_installed_easy_asterisk_version() {
if [ -f "$EASY_ASTERISK_VERSION_FILE" ]; then
cat "$EASY_ASTERISK_VERSION_FILE"
return 0
fi
echo ""
return 1
}
backup_easy_asterisk_configs() {
if [ ! -d "$EASY_ASTERISK_INSTALL_DIR" ]; then
return 0
fi
# Create backup directory with timestamp
local backup_dir="${EASY_ASTERISK_CONFIG_BACKUP}/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$backup_dir"
# Backup common config directories and files
for item in config etc *.conf *.cfg; do
if [ -e "${EASY_ASTERISK_INSTALL_DIR}/${item}" ]; then
cp -r "${EASY_ASTERISK_INSTALL_DIR}/${item}" "$backup_dir/" 2>/dev/null || true
fi
done
# Also backup Asterisk configs if they exist
if [ -d "/etc/asterisk" ]; then
mkdir -p "${backup_dir}/asterisk_etc"
cp -r /etc/asterisk/*.conf "${backup_dir}/asterisk_etc/" 2>/dev/null || true
fi
log_success "Configuration backup created"
return 0
}
restore_easy_asterisk_configs() {
local backup_dir="$1"
if [ -z "$backup_dir" ] || [ ! -d "$backup_dir" ]; then
return 0
fi
# Restore backed up items
for item in $(ls -A "$backup_dir" 2>/dev/null); do
if [ "$item" != "asterisk_etc" ]; then
cp -r "${backup_dir}/${item}" "${EASY_ASTERISK_INSTALL_DIR}/" 2>/dev/null || true
fi
done
# Restore Asterisk configs if they were backed up
if [ -d "${backup_dir}/asterisk_etc" ]; then
cp -r "${backup_dir}/asterisk_etc"/*.conf /etc/asterisk/ 2>/dev/null || true
fi
log_success "Configuration restored"
return 0
}
download_and_install_easy_asterisk() {
local version="$1"
local script_name="easy-asterisk-v${version}.sh"
local script_url="${EASY_ASTERISK_RAW_URL}/${script_name}"
local temp_script="/tmp/${script_name}"
echo "Downloading Easy Asterisk v${version}..."
# Download the installation script
if ! curl -fsSL "$script_url" -o "$temp_script"; then
log_error "Failed to download Easy Asterisk installation script"
log_error "URL: $script_url"
return 1
fi
# Verify the script was downloaded
if [ ! -f "$temp_script" ] || [ ! -s "$temp_script" ]; then
log_error "Downloaded script is empty or missing"
return 1
fi
# Make script executable
chmod +x "$temp_script"
echo "Running Easy Asterisk installation script..."
echo "This may take several minutes..."
echo
# Run the installation script
if bash "$temp_script"; then
log_success "Easy Asterisk installation completed"
# Save version information
mkdir -p "$EASY_ASTERISK_INSTALL_DIR"
echo "$version" > "$EASY_ASTERISK_VERSION_FILE"
# Clean up temp file
rm -f "$temp_script"
return 0
else
log_error "Easy Asterisk installation failed"
rm -f "$temp_script"
return 1
fi
}
addon_easy_asterisk_intercom() {
clear
echo "════════════════════════════════════════════════════════════"
echo " EASY ASTERISK INTERCOM SETUP "
echo "════════════════════════════════════════════════════════════"
echo
# Get latest version from GitHub
echo "Checking for latest version..."
local latest_version=$(get_latest_easy_asterisk_version)
if [ -z "$latest_version" ]; then
log_error "Could not determine latest version"
log_error "Please check your internet connection and that the repository is accessible"
log_error "Repository: https://github.com/${EASY_ASTERISK_REPO}"
pause
return 1
fi
log_success "Latest version available: v${latest_version}"
echo
# Check if already installed
local installed_version=$(get_installed_easy_asterisk_version)
if [ -n "$installed_version" ]; then
echo "Currently installed version: v${installed_version}"
echo
# Compare versions
if [ "$installed_version" = "$latest_version" ]; then
log_success "Easy Asterisk v${installed_version} is already installed (latest version)"
echo
read -r -p "Do you want to re-run the installation? (y/N): " rerun_choice
if [[ ! "$rerun_choice" =~ ^[Yy]$ ]]; then
echo "Installation cancelled"
pause
return 0
fi
echo "Re-running installation (configs will be preserved)..."
else
echo "Update available: v${installed_version} → v${latest_version}"
echo
read -r -p "Do you want to update? (Y/n): " update_choice
if [[ "$update_choice" =~ ^[Nn]$ ]]; then
echo "Update cancelled"
pause
return 0
fi
echo "Updating Easy Asterisk..."
fi
# Backup existing configurations
backup_easy_asterisk_configs
local backup_dir=$(ls -td "${EASY_ASTERISK_CONFIG_BACKUP}"/* 2>/dev/null | head -1)
else
echo "Easy Asterisk is not currently installed"
echo
read -r -p "Do you want to install Easy Asterisk v${latest_version}? (Y/n): " install_choice
if [[ "$install_choice" =~ ^[Nn]$ ]]; then
echo "Installation cancelled"
pause
return 0
fi
fi
echo
# Download and install
if download_and_install_easy_asterisk "$latest_version"; then
# Restore configurations if this was an update/rerun
if [ -n "$backup_dir" ]; then
restore_easy_asterisk_configs "$backup_dir"
fi
echo
log_success "Easy Asterisk Intercom is ready!"
echo "Installation directory: $EASY_ASTERISK_INSTALL_DIR"
echo "Version: v${latest_version}"
if [ -n "$installed_version" ] && [ "$installed_version" != "$latest_version" ]; then
log_success "Successfully updated from v${installed_version} to v${latest_version}"
echo "Your configurations have been preserved"
fi
echo
echo "Management commands:"
echo " Check status: systemctl status asterisk"
echo " Asterisk CLI: asterisk -rvvv"
echo " Restart: systemctl restart asterisk"
echo
else
log_error "Installation failed"
# Attempt to restore from backup if update failed
if [ -n "$backup_dir" ]; then
echo "Attempting to restore previous configuration..."
restore_easy_asterisk_configs "$backup_dir"
fi
fi
pause
}
################################################################################
### SECTION 15: ADVANCED MENU FUNCTIONS
################################################################################
@@ -9494,14 +9750,16 @@ addons_menu() {
echo " 1. LMS Server / Squeezelite Player"
echo " 2. CUPS Printing"
echo " 3. Remote Access (VNC/VPN)"
echo " 4. Easy Asterisk Intercom"
echo " 0. Return"
echo
read -r -p "Choose [0-3]: " choice
read -r -p "Choose [0-4]: " choice
case "$choice" in
1) addon_lms_squeezelite ;;
2) addon_cups ;;
3) remote_access_menu ;;
4) addon_easy_asterisk_intercom ;;
0) return ;;
esac
done