Add Easy Asterisk client-only installation option
- Add sub-menu to Easy Asterisk addon with Server/Client/Both options - Implement Baresip SIP client installation for client-only mode - Add configuration prompts for server connection details (IP, port, extension, password) - Create systemd user service for automatic Baresip startup - Support TLS encryption and auto-answer mode options - Update status display to show both server and client installation status
This commit is contained in:
+467
-58
@@ -514,17 +514,25 @@ show_addon_status() {
|
|||||||
[[ -x /usr/bin/tailscale ]] && { any_addon=true; echo "Tailscale: ✓ Installed"; }
|
[[ -x /usr/bin/tailscale ]] && { any_addon=true; echo "Tailscale: ✓ Installed"; }
|
||||||
[[ -x /usr/bin/netbird ]] && { any_addon=true; echo "Netbird: ✓ Installed"; }
|
[[ -x /usr/bin/netbird ]] && { any_addon=true; echo "Netbird: ✓ Installed"; }
|
||||||
|
|
||||||
# Easy Asterisk Intercom - FAST CHECK
|
# Easy Asterisk Server - FAST CHECK
|
||||||
if [[ -f "${EASY_ASTERISK_VERSION_FILE:-/opt/easy-asterisk/.version}" ]]; then
|
if [[ -f "${EASY_ASTERISK_VERSION_FILE:-/opt/easy-asterisk/.version}" ]]; then
|
||||||
any_addon=true
|
any_addon=true
|
||||||
local ea_version=$(cat "${EASY_ASTERISK_VERSION_FILE:-/opt/easy-asterisk/.version}" 2>/dev/null || echo "Unknown")
|
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
|
if systemctl is-active asterisk &>/dev/null; then
|
||||||
echo "Easy Asterisk: ✓ Running (v${ea_version})"
|
echo "Easy Asterisk Server: ✓ Running (v${ea_version})"
|
||||||
else
|
else
|
||||||
echo "Easy Asterisk: ✓ Installed (v${ea_version}) - Not running"
|
echo "Easy Asterisk Server: ✓ Installed (v${ea_version}) - Not running"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Easy Asterisk Client (Baresip) - FAST CHECK
|
||||||
|
local client_version_file="/home/${KIOSK_USER}/.baresip/.client_version"
|
||||||
|
if [[ -f "$client_version_file" ]] && command -v baresip &>/dev/null; then
|
||||||
|
any_addon=true
|
||||||
|
local client_ver=$(cat "$client_version_file" 2>/dev/null || echo "Unknown")
|
||||||
|
echo "Easy Asterisk Client: ✓ Installed (v${client_ver})"
|
||||||
|
fi
|
||||||
|
|
||||||
if ! $any_addon; then
|
if ! $any_addon; then
|
||||||
echo "No addons installed"
|
echo "No addons installed"
|
||||||
fi
|
fi
|
||||||
@@ -9082,12 +9090,337 @@ download_and_install_easy_asterisk() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
addon_easy_asterisk_intercom() {
|
# Client installation paths
|
||||||
|
BARESIP_CONFIG_DIR="/home/${KIOSK_USER}/.baresip"
|
||||||
|
BARESIP_CLIENT_VERSION_FILE="/home/${KIOSK_USER}/.baresip/.client_version"
|
||||||
|
|
||||||
|
# Check if Baresip client is installed
|
||||||
|
is_baresip_client_installed() {
|
||||||
|
if [ -f "$BARESIP_CLIENT_VERSION_FILE" ] && command -v baresip &>/dev/null; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get installed client version
|
||||||
|
get_installed_client_version() {
|
||||||
|
if [ -f "$BARESIP_CLIENT_VERSION_FILE" ]; then
|
||||||
|
cat "$BARESIP_CLIENT_VERSION_FILE"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install Baresip SIP client packages
|
||||||
|
install_baresip_packages() {
|
||||||
|
echo "Installing Baresip SIP client..."
|
||||||
|
|
||||||
|
# Update package lists
|
||||||
|
apt-get update -qq
|
||||||
|
|
||||||
|
# Install baresip and dependencies
|
||||||
|
if ! apt-get install -y baresip 2>/dev/null; then
|
||||||
|
log_error "Failed to install baresip package"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install audio dependencies
|
||||||
|
apt-get install -y pulseaudio-utils pipewire-pulse 2>/dev/null || true
|
||||||
|
|
||||||
|
log_success "Baresip packages installed"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configure Baresip client
|
||||||
|
configure_baresip_client() {
|
||||||
|
local server_ip="$1"
|
||||||
|
local server_port="$2"
|
||||||
|
local extension="$3"
|
||||||
|
local password="$4"
|
||||||
|
local auto_answer="$5"
|
||||||
|
local use_tls="$6"
|
||||||
|
|
||||||
|
# Determine transport and answer mode
|
||||||
|
local transport="udp"
|
||||||
|
local answermode="manual"
|
||||||
|
local media_enc=""
|
||||||
|
|
||||||
|
if [ "$use_tls" = "yes" ]; then
|
||||||
|
transport="tls"
|
||||||
|
media_enc=";mediaenc=srtp"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$auto_answer" = "yes" ]; then
|
||||||
|
answermode="auto"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create baresip config directory
|
||||||
|
mkdir -p "$BARESIP_CONFIG_DIR"
|
||||||
|
chown -R "${KIOSK_USER}:${KIOSK_USER}" "$BARESIP_CONFIG_DIR"
|
||||||
|
|
||||||
|
# Create accounts file
|
||||||
|
cat > "${BARESIP_CONFIG_DIR}/accounts" << EOF
|
||||||
|
<sip:${extension}@${server_ip}:${server_port};transport=${transport}>;auth_pass=${password};answermode=${answermode}${media_enc}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Create basic config file if it doesn't exist
|
||||||
|
if [ ! -f "${BARESIP_CONFIG_DIR}/config" ]; then
|
||||||
|
cat > "${BARESIP_CONFIG_DIR}/config" << 'EOF'
|
||||||
|
# Baresip configuration for Easy Asterisk Intercom
|
||||||
|
|
||||||
|
# Audio settings
|
||||||
|
audio_player pulse,default
|
||||||
|
audio_source pulse,default
|
||||||
|
audio_alert pulse,default
|
||||||
|
|
||||||
|
# Call settings
|
||||||
|
call_local_timeout 120
|
||||||
|
call_max_calls 4
|
||||||
|
|
||||||
|
# Network settings
|
||||||
|
net_interface
|
||||||
|
|
||||||
|
# SIP settings
|
||||||
|
sip_trans_bsize 128
|
||||||
|
sip_verify_server no
|
||||||
|
|
||||||
|
# Module loading
|
||||||
|
module pulse.so
|
||||||
|
module account.so
|
||||||
|
module contact.so
|
||||||
|
module menu.so
|
||||||
|
module stdio.so
|
||||||
|
module uuid.so
|
||||||
|
module debug_cmd.so
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
chown -R "${KIOSK_USER}:${KIOSK_USER}" "$BARESIP_CONFIG_DIR"
|
||||||
|
chmod 600 "${BARESIP_CONFIG_DIR}/accounts"
|
||||||
|
|
||||||
|
log_success "Baresip client configured"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create systemd user service for Baresip
|
||||||
|
create_baresip_service() {
|
||||||
|
local user_service_dir="/home/${KIOSK_USER}/.config/systemd/user"
|
||||||
|
|
||||||
|
# Create directory
|
||||||
|
mkdir -p "$user_service_dir"
|
||||||
|
|
||||||
|
# Create service file
|
||||||
|
cat > "${user_service_dir}/baresip.service" << 'EOF'
|
||||||
|
[Unit]
|
||||||
|
Description=Baresip SIP Client
|
||||||
|
After=pipewire.service pipewire-pulse.service
|
||||||
|
Wants=pipewire-pulse.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/baresip -f %h/.baresip
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5
|
||||||
|
Environment=PULSE_SERVER=unix:/run/user/%U/pulse/native
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chown -R "${KIOSK_USER}:${KIOSK_USER}" "/home/${KIOSK_USER}/.config"
|
||||||
|
|
||||||
|
# Enable and start the service as the kiosk user
|
||||||
|
local kiosk_uid=$(id -u "$KIOSK_USER")
|
||||||
|
local user_dbus="DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${kiosk_uid}/bus"
|
||||||
|
|
||||||
|
# Reload systemd user daemon and enable service
|
||||||
|
sudo -u "$KIOSK_USER" XDG_RUNTIME_DIR="/run/user/${kiosk_uid}" $user_dbus systemctl --user daemon-reload 2>/dev/null || true
|
||||||
|
sudo -u "$KIOSK_USER" XDG_RUNTIME_DIR="/run/user/${kiosk_uid}" $user_dbus systemctl --user enable baresip.service 2>/dev/null || true
|
||||||
|
|
||||||
|
log_success "Baresip systemd service created"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Start Baresip service
|
||||||
|
start_baresip_service() {
|
||||||
|
local kiosk_uid=$(id -u "$KIOSK_USER")
|
||||||
|
local user_dbus="DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${kiosk_uid}/bus"
|
||||||
|
|
||||||
|
sudo -u "$KIOSK_USER" XDG_RUNTIME_DIR="/run/user/${kiosk_uid}" $user_dbus systemctl --user start baresip.service 2>/dev/null
|
||||||
|
|
||||||
|
# Wait a moment and check status
|
||||||
|
sleep 2
|
||||||
|
if sudo -u "$KIOSK_USER" XDG_RUNTIME_DIR="/run/user/${kiosk_uid}" $user_dbus systemctl --user is-active baresip.service &>/dev/null; then
|
||||||
|
log_success "Baresip service started"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
log_warning "Baresip service may not have started (will start on next login)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Client-only installation
|
||||||
|
install_easy_asterisk_client() {
|
||||||
clear
|
clear
|
||||||
echo "════════════════════════════════════════════════════════════"
|
echo "════════════════════════════════════════════════════════════"
|
||||||
echo " EASY ASTERISK INTERCOM SETUP "
|
echo " EASY ASTERISK CLIENT INSTALLATION "
|
||||||
echo "════════════════════════════════════════════════════════════"
|
echo "════════════════════════════════════════════════════════════"
|
||||||
echo
|
echo
|
||||||
|
echo "This will install the Baresip SIP client to connect to an"
|
||||||
|
echo "existing Easy Asterisk server."
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Check if already installed
|
||||||
|
if is_baresip_client_installed; then
|
||||||
|
local installed_ver=$(get_installed_client_version)
|
||||||
|
echo "Baresip client is already installed (v${installed_ver})"
|
||||||
|
echo
|
||||||
|
read -r -p "Do you want to reconfigure it? (y/N): " reconf_choice
|
||||||
|
if [[ ! "$reconf_choice" =~ ^[Yy]$ ]]; then
|
||||||
|
echo "Configuration cancelled"
|
||||||
|
pause
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Please enter your Easy Asterisk server details:"
|
||||||
|
echo "(These should match what was configured on the server)"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Get server IP/hostname
|
||||||
|
local server_ip=""
|
||||||
|
while [ -z "$server_ip" ]; do
|
||||||
|
read -r -p "Server IP or hostname: " server_ip
|
||||||
|
if [ -z "$server_ip" ]; then
|
||||||
|
log_error "Server address is required"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Get server port
|
||||||
|
local server_port=""
|
||||||
|
read -r -p "Server port [5060]: " server_port
|
||||||
|
server_port="${server_port:-5060}"
|
||||||
|
|
||||||
|
# Get extension
|
||||||
|
local extension=""
|
||||||
|
while [ -z "$extension" ]; do
|
||||||
|
read -r -p "Extension number (e.g., 201): " extension
|
||||||
|
if [ -z "$extension" ]; then
|
||||||
|
log_error "Extension is required"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Get password
|
||||||
|
local password=""
|
||||||
|
while [ -z "$password" ]; do
|
||||||
|
read -r -s -p "SIP Password: " password
|
||||||
|
echo
|
||||||
|
if [ -z "$password" ]; then
|
||||||
|
log_error "Password is required"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Auto-answer mode
|
||||||
|
echo
|
||||||
|
echo "Answer mode:"
|
||||||
|
echo " 1. Manual - Phone will ring, requires user to answer"
|
||||||
|
echo " 2. Auto - Automatically answers incoming calls (intercom mode)"
|
||||||
|
local answer_choice=""
|
||||||
|
read -r -p "Select answer mode [1]: " answer_choice
|
||||||
|
local auto_answer="no"
|
||||||
|
if [ "$answer_choice" = "2" ]; then
|
||||||
|
auto_answer="yes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# TLS option
|
||||||
|
echo
|
||||||
|
read -r -p "Use TLS encryption? (y/N): " tls_choice
|
||||||
|
local use_tls="no"
|
||||||
|
if [[ "$tls_choice" =~ ^[Yy]$ ]]; then
|
||||||
|
use_tls="yes"
|
||||||
|
if [ "$server_port" = "5060" ]; then
|
||||||
|
server_port="5061"
|
||||||
|
echo "Note: Port changed to 5061 for TLS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Configuration summary:"
|
||||||
|
echo " Server: ${server_ip}:${server_port}"
|
||||||
|
echo " Extension: ${extension}"
|
||||||
|
echo " Answer: $([ "$auto_answer" = "yes" ] && echo "Auto" || echo "Manual")"
|
||||||
|
echo " TLS: $([ "$use_tls" = "yes" ] && echo "Yes" || echo "No")"
|
||||||
|
echo
|
||||||
|
|
||||||
|
read -r -p "Proceed with installation? (Y/n): " proceed
|
||||||
|
if [[ "$proceed" =~ ^[Nn]$ ]]; then
|
||||||
|
echo "Installation cancelled"
|
||||||
|
pause
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Installing Baresip client..."
|
||||||
|
|
||||||
|
# Install packages
|
||||||
|
if ! install_baresip_packages; then
|
||||||
|
log_error "Failed to install Baresip packages"
|
||||||
|
pause
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure client
|
||||||
|
if ! configure_baresip_client "$server_ip" "$server_port" "$extension" "$password" "$auto_answer" "$use_tls"; then
|
||||||
|
log_error "Failed to configure Baresip client"
|
||||||
|
pause
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create systemd service
|
||||||
|
if ! create_baresip_service; then
|
||||||
|
log_error "Failed to create Baresip service"
|
||||||
|
pause
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Save version info
|
||||||
|
local latest_version=$(get_latest_easy_asterisk_version)
|
||||||
|
echo "${latest_version:-1.0.0}-client" > "$BARESIP_CLIENT_VERSION_FILE"
|
||||||
|
chown "${KIOSK_USER}:${KIOSK_USER}" "$BARESIP_CLIENT_VERSION_FILE"
|
||||||
|
|
||||||
|
# Try to start the service
|
||||||
|
start_baresip_service
|
||||||
|
|
||||||
|
echo
|
||||||
|
log_success "Easy Asterisk Client installed successfully!"
|
||||||
|
echo
|
||||||
|
echo "Client Configuration:"
|
||||||
|
echo " Config dir: ${BARESIP_CONFIG_DIR}"
|
||||||
|
echo " Server: ${server_ip}:${server_port}"
|
||||||
|
echo " Extension: ${extension}"
|
||||||
|
echo
|
||||||
|
echo "Management commands:"
|
||||||
|
echo " Check status: systemctl --user status baresip"
|
||||||
|
echo " Restart: systemctl --user restart baresip"
|
||||||
|
echo " View logs: journalctl --user -u baresip -f"
|
||||||
|
echo
|
||||||
|
echo "Note: The client will auto-start when the user logs in."
|
||||||
|
|
||||||
|
pause
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Server-only installation (launches the Easy Asterisk interactive installer)
|
||||||
|
install_easy_asterisk_server() {
|
||||||
|
clear
|
||||||
|
echo "════════════════════════════════════════════════════════════"
|
||||||
|
echo " EASY ASTERISK SERVER INSTALLATION "
|
||||||
|
echo "════════════════════════════════════════════════════════════"
|
||||||
|
echo
|
||||||
|
echo "This will download and run the Easy Asterisk installer."
|
||||||
|
echo "Select 'Server only' when prompted in the installer."
|
||||||
|
echo
|
||||||
|
|
||||||
# Get latest version from GitHub
|
# Get latest version from GitHub
|
||||||
echo "Checking for latest version..."
|
echo "Checking for latest version..."
|
||||||
@@ -9095,8 +9428,7 @@ addon_easy_asterisk_intercom() {
|
|||||||
|
|
||||||
if [ -z "$latest_version" ]; then
|
if [ -z "$latest_version" ]; then
|
||||||
log_error "Could not determine latest version"
|
log_error "Could not determine latest version"
|
||||||
log_error "Please check your internet connection and that the repository is accessible"
|
log_error "Please check your internet connection"
|
||||||
log_error "Repository: https://github.com/${EASY_ASTERISK_REPO}"
|
|
||||||
pause
|
pause
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -9110,42 +9442,15 @@ addon_easy_asterisk_intercom() {
|
|||||||
if [ -n "$installed_version" ]; then
|
if [ -n "$installed_version" ]; then
|
||||||
echo "Currently installed version: v${installed_version}"
|
echo "Currently installed version: v${installed_version}"
|
||||||
echo
|
echo
|
||||||
|
read -r -p "Re-run the installer? (y/N): " rerun_choice
|
||||||
# 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
|
if [[ ! "$rerun_choice" =~ ^[Yy]$ ]]; then
|
||||||
echo "Installation cancelled"
|
echo "Installation cancelled"
|
||||||
pause
|
pause
|
||||||
return 0
|
return 0
|
||||||
fi
|
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
|
backup_easy_asterisk_configs
|
||||||
local backup_dir=$(ls -td "${EASY_ASTERISK_CONFIG_BACKUP}"/* 2>/dev/null | head -1)
|
|
||||||
else
|
else
|
||||||
echo "Easy Asterisk is not currently installed"
|
read -r -p "Install Easy Asterisk Server v${latest_version}? (Y/n): " install_choice
|
||||||
echo
|
|
||||||
read -r -p "Do you want to install Easy Asterisk v${latest_version}? (Y/n): " install_choice
|
|
||||||
|
|
||||||
if [[ "$install_choice" =~ ^[Nn]$ ]]; then
|
if [[ "$install_choice" =~ ^[Nn]$ ]]; then
|
||||||
echo "Installation cancelled"
|
echo "Installation cancelled"
|
||||||
pause
|
pause
|
||||||
@@ -9154,42 +9459,146 @@ addon_easy_asterisk_intercom() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
# Download and install
|
|
||||||
if download_and_install_easy_asterisk "$latest_version"; then
|
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
|
echo
|
||||||
log_success "Easy Asterisk Intercom is ready!"
|
log_success "Easy Asterisk Server installation completed!"
|
||||||
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
|
||||||
echo "Management commands:"
|
echo "Management commands:"
|
||||||
echo " Check status: systemctl status asterisk"
|
echo " Check status: systemctl status asterisk"
|
||||||
echo " Asterisk CLI: asterisk -rvvv"
|
echo " Asterisk CLI: asterisk -rvvv"
|
||||||
echo " Restart: systemctl restart asterisk"
|
echo " Restart: systemctl restart asterisk"
|
||||||
echo
|
|
||||||
else
|
else
|
||||||
log_error "Installation failed"
|
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
|
fi
|
||||||
|
|
||||||
pause
|
pause
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Full installation (server + client)
|
||||||
|
install_easy_asterisk_full() {
|
||||||
|
clear
|
||||||
|
echo "════════════════════════════════════════════════════════════"
|
||||||
|
echo " EASY ASTERISK FULL INSTALLATION "
|
||||||
|
echo "════════════════════════════════════════════════════════════"
|
||||||
|
echo
|
||||||
|
echo "This will download and run the Easy Asterisk installer."
|
||||||
|
echo "Select 'Full' when prompted to install both server and client."
|
||||||
|
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"
|
||||||
|
pause
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_success "Latest version available: v${latest_version}"
|
||||||
|
echo
|
||||||
|
|
||||||
|
read -r -p "Install Easy Asterisk Full v${latest_version}? (Y/n): " install_choice
|
||||||
|
if [[ "$install_choice" =~ ^[Nn]$ ]]; then
|
||||||
|
echo "Installation cancelled"
|
||||||
|
pause
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
if download_and_install_easy_asterisk "$latest_version"; then
|
||||||
|
echo
|
||||||
|
log_success "Easy Asterisk Full installation completed!"
|
||||||
|
else
|
||||||
|
log_error "Installation failed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
pause
|
||||||
|
}
|
||||||
|
|
||||||
|
# Show Easy Asterisk status
|
||||||
|
show_easy_asterisk_status() {
|
||||||
|
echo "Current Installation Status:"
|
||||||
|
echo "────────────────────────────────────────────────────────────"
|
||||||
|
|
||||||
|
# Check server
|
||||||
|
local server_installed=false
|
||||||
|
if [ -f "$EASY_ASTERISK_VERSION_FILE" ]; then
|
||||||
|
local server_ver=$(cat "$EASY_ASTERISK_VERSION_FILE")
|
||||||
|
server_installed=true
|
||||||
|
if systemctl is-active asterisk &>/dev/null; then
|
||||||
|
echo " Server: ✓ Installed (v${server_ver}) - Running"
|
||||||
|
else
|
||||||
|
echo " Server: ✓ Installed (v${server_ver}) - Not running"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " Server: ✗ Not installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check client
|
||||||
|
if is_baresip_client_installed; then
|
||||||
|
local client_ver=$(get_installed_client_version)
|
||||||
|
local kiosk_uid=$(id -u "$KIOSK_USER" 2>/dev/null)
|
||||||
|
if [ -n "$kiosk_uid" ]; then
|
||||||
|
local user_dbus="DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${kiosk_uid}/bus"
|
||||||
|
if sudo -u "$KIOSK_USER" XDG_RUNTIME_DIR="/run/user/${kiosk_uid}" $user_dbus systemctl --user is-active baresip.service &>/dev/null 2>&1; then
|
||||||
|
echo " Client: ✓ Installed (v${client_ver}) - Running"
|
||||||
|
else
|
||||||
|
echo " Client: ✓ Installed (v${client_ver}) - Not running"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " Client: ✓ Installed (v${client_ver})"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " Client: ✗ Not installed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "────────────────────────────────────────────────────────────"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main Easy Asterisk addon menu
|
||||||
|
addon_easy_asterisk_intercom() {
|
||||||
|
while true; do
|
||||||
|
clear
|
||||||
|
echo "════════════════════════════════════════════════════════════"
|
||||||
|
echo " EASY ASTERISK INTERCOM "
|
||||||
|
echo "════════════════════════════════════════════════════════════"
|
||||||
|
echo
|
||||||
|
|
||||||
|
show_easy_asterisk_status
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "Installation Options:"
|
||||||
|
echo " 1. Install Client Only (Baresip SIP client)"
|
||||||
|
echo " 2. Install Server Only (Asterisk PBX server)"
|
||||||
|
echo " 3. Install Full (Server + Client)"
|
||||||
|
echo
|
||||||
|
echo " 0. Return to Addons Menu"
|
||||||
|
echo
|
||||||
|
|
||||||
|
read -r -p "Select option: " choice
|
||||||
|
|
||||||
|
case "$choice" in
|
||||||
|
1)
|
||||||
|
install_easy_asterisk_client
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
install_easy_asterisk_server
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
install_easy_asterisk_full
|
||||||
|
;;
|
||||||
|
0)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log_error "Invalid option"
|
||||||
|
sleep 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
### SECTION 15: ADVANCED MENU FUNCTIONS
|
### SECTION 15: ADVANCED MENU FUNCTIONS
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user