315 lines
8.9 KiB
Bash
315 lines
8.9 KiB
Bash
#!/bin/bash
|
|
|
|
################################################################################
|
|
# Asterisk-Easy Addon Installation Functions
|
|
# Description: Addon module for installing and configuring Asterisk-Easy
|
|
# Version: 1.0
|
|
################################################################################
|
|
|
|
# Color definitions for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
################################################################################
|
|
# Function: install_asterisk_easy
|
|
# Description: Main function to install Asterisk-Easy
|
|
# Parameters: None
|
|
# Returns: 0 on success, 1 on failure
|
|
################################################################################
|
|
install_asterisk_easy() {
|
|
echo -e "${BLUE}================================${NC}"
|
|
echo -e "${BLUE}Asterisk-Easy Installation${NC}"
|
|
echo -e "${BLUE}================================${NC}"
|
|
|
|
# Update system packages
|
|
echo -e "${YELLOW}Updating system packages...${NC}"
|
|
apt-get update -qq
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to update system packages${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# Install Asterisk dependencies
|
|
echo -e "${YELLOW}Installing Asterisk dependencies...${NC}"
|
|
apt-get install -y \
|
|
asterisk \
|
|
asterisk-config \
|
|
asterisk-dev \
|
|
asterisk-doc \
|
|
asterisk-modules \
|
|
asterisk-voicemail \
|
|
dahdi \
|
|
libpri \
|
|
asterisk-dahdi &>/dev/null
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to install Asterisk packages${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# Install additional dependencies
|
|
echo -e "${YELLOW}Installing additional dependencies...${NC}"
|
|
apt-get install -y \
|
|
build-essential \
|
|
libssl-dev \
|
|
libxml2-dev \
|
|
libsqlite3-dev \
|
|
uuid-dev &>/dev/null
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to install additional dependencies${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# Configure Asterisk
|
|
echo -e "${YELLOW}Configuring Asterisk...${NC}"
|
|
configure_asterisk_easy
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to configure Asterisk-Easy${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# Start Asterisk service
|
|
echo -e "${YELLOW}Starting Asterisk service...${NC}"
|
|
systemctl enable asterisk
|
|
systemctl start asterisk
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to start Asterisk service${NC}"
|
|
return 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ Asterisk-Easy installation completed successfully${NC}"
|
|
return 0
|
|
}
|
|
|
|
################################################################################
|
|
# Function: configure_asterisk_easy
|
|
# Description: Configure Asterisk-Easy with basic settings
|
|
# Parameters: None
|
|
# Returns: 0 on success, 1 on failure
|
|
################################################################################
|
|
configure_asterisk_easy() {
|
|
local asterisk_dir="/etc/asterisk"
|
|
|
|
# Check if Asterisk directory exists
|
|
if [ ! -d "$asterisk_dir" ]; then
|
|
echo -e "${RED}Asterisk configuration directory not found: $asterisk_dir${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# Backup original configuration files
|
|
echo -e "${YELLOW}Backing up original Asterisk configuration...${NC}"
|
|
if [ -f "$asterisk_dir/extensions.conf" ]; then
|
|
cp "$asterisk_dir/extensions.conf" "$asterisk_dir/extensions.conf.bak.$(date +%s)"
|
|
fi
|
|
|
|
if [ -f "$asterisk_dir/sip.conf" ]; then
|
|
cp "$asterisk_dir/sip.conf" "$asterisk_dir/sip.conf.bak.$(date +%s)"
|
|
fi
|
|
|
|
# Create basic extensions configuration
|
|
echo -e "${YELLOW}Creating basic extensions configuration...${NC}"
|
|
create_extensions_conf "$asterisk_dir"
|
|
|
|
# Create basic SIP configuration
|
|
echo -e "${YELLOW}Creating basic SIP configuration...${NC}"
|
|
create_sip_conf "$asterisk_dir"
|
|
|
|
return 0
|
|
}
|
|
|
|
################################################################################
|
|
# Function: create_extensions_conf
|
|
# Description: Create basic extensions configuration file
|
|
# Parameters: $1 - Asterisk configuration directory
|
|
# Returns: 0 on success, 1 on failure
|
|
################################################################################
|
|
create_extensions_conf() {
|
|
local asterisk_dir="$1"
|
|
local extensions_file="$asterisk_dir/extensions.conf"
|
|
|
|
cat > "$extensions_file" << 'EOF'
|
|
[general]
|
|
static=yes
|
|
writeprotect=no
|
|
|
|
[default]
|
|
exten => 100,1,Dial(SIP/100)
|
|
exten => 100,n,Voicemail(100@default)
|
|
exten => 100,n,Hangup()
|
|
|
|
exten => 101,1,Dial(SIP/101)
|
|
exten => 101,n,Voicemail(101@default)
|
|
exten => 101,n,Hangup()
|
|
|
|
exten => 102,1,Dial(SIP/102)
|
|
exten => 102,n,Voicemail(102@default)
|
|
exten => 102,n,Hangup()
|
|
|
|
exten => 200,1,VoicemailMain(${CALLERID(num)}@default)
|
|
exten => 200,n,Hangup()
|
|
EOF
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to create extensions configuration${NC}"
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
################################################################################
|
|
# Function: create_sip_conf
|
|
# Description: Create basic SIP configuration file
|
|
# Parameters: $1 - Asterisk configuration directory
|
|
# Returns: 0 on success, 1 on failure
|
|
################################################################################
|
|
create_sip_conf() {
|
|
local asterisk_dir="$1"
|
|
local sip_file="$asterisk_dir/sip.conf"
|
|
|
|
cat > "$sip_file" << 'EOF'
|
|
[general]
|
|
context=default
|
|
allowoverlap=no
|
|
bindport=5060
|
|
bindaddr=0.0.0.0
|
|
srvlookup=yes
|
|
pedantic=no
|
|
maxexpiry=3600
|
|
minexpiry=60
|
|
defaultexpiry=120
|
|
defaultexpirey=120
|
|
rtptimeout=30
|
|
rtpholdtimeout=300
|
|
videosupport=yes
|
|
allowtransfer=yes
|
|
nat=force_rport,comedia
|
|
|
|
[100]
|
|
type=friend
|
|
secret=123456
|
|
host=dynamic
|
|
context=default
|
|
|
|
[101]
|
|
type=friend
|
|
secret=123456
|
|
host=dynamic
|
|
context=default
|
|
|
|
[102]
|
|
type=friend
|
|
secret=123456
|
|
host=dynamic
|
|
context=default
|
|
EOF
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to create SIP configuration${NC}"
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
################################################################################
|
|
# Function: verify_asterisk_easy
|
|
# Description: Verify Asterisk-Easy installation
|
|
# Parameters: None
|
|
# Returns: 0 if installed and running, 1 otherwise
|
|
################################################################################
|
|
verify_asterisk_easy() {
|
|
# Check if Asterisk is installed
|
|
if ! command -v asterisk &> /dev/null; then
|
|
echo -e "${RED}Asterisk is not installed${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# Check if Asterisk service is running
|
|
if ! systemctl is-active --quiet asterisk; then
|
|
echo -e "${YELLOW}Asterisk service is not running${NC}"
|
|
return 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ Asterisk-Easy is properly installed and running${NC}"
|
|
return 0
|
|
}
|
|
|
|
################################################################################
|
|
# Function: show_asterisk_easy_status
|
|
# Description: Display Asterisk-Easy status information
|
|
# Parameters: None
|
|
# Returns: 0 on success
|
|
################################################################################
|
|
show_asterisk_easy_status() {
|
|
echo -e "${BLUE}================================${NC}"
|
|
echo -e "${BLUE}Asterisk-Easy Status${NC}"
|
|
echo -e "${BLUE}================================${NC}"
|
|
|
|
# Check service status
|
|
if systemctl is-active --quiet asterisk; then
|
|
echo -e "${GREEN}Service Status: Running${NC}"
|
|
else
|
|
echo -e "${RED}Service Status: Not Running${NC}"
|
|
fi
|
|
|
|
# Check Asterisk version
|
|
if command -v asterisk &> /dev/null; then
|
|
local version=$(asterisk -v | grep -oP 'Asterisk \K[0-9.]+')
|
|
echo -e "${BLUE}Asterisk Version: $version${NC}"
|
|
fi
|
|
|
|
# Check configuration files
|
|
if [ -f "/etc/asterisk/extensions.conf" ]; then
|
|
echo -e "${GREEN}✓ Extensions Configuration: Present${NC}"
|
|
else
|
|
echo -e "${RED}✗ Extensions Configuration: Missing${NC}"
|
|
fi
|
|
|
|
if [ -f "/etc/asterisk/sip.conf" ]; then
|
|
echo -e "${GREEN}✓ SIP Configuration: Present${NC}"
|
|
else
|
|
echo -e "${RED}✗ SIP Configuration: Missing${NC}"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
################################################################################
|
|
# Function: remove_asterisk_easy
|
|
# Description: Remove Asterisk-Easy installation
|
|
# Parameters: None
|
|
# Returns: 0 on success, 1 on failure
|
|
################################################################################
|
|
remove_asterisk_easy() {
|
|
echo -e "${YELLOW}Removing Asterisk-Easy...${NC}"
|
|
|
|
# Stop Asterisk service
|
|
systemctl stop asterisk
|
|
systemctl disable asterisk
|
|
|
|
# Remove Asterisk packages
|
|
apt-get remove -y asterisk asterisk-* &>/dev/null
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}Failed to remove Asterisk packages${NC}"
|
|
return 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ Asterisk-Easy has been removed${NC}"
|
|
return 0
|
|
}
|
|
|
|
# Export functions for use in main script
|
|
export -f install_asterisk_easy
|
|
export -f configure_asterisk_easy
|
|
export -f verify_asterisk_easy
|
|
export -f show_asterisk_easy_status
|
|
export -f remove_asterisk_easy
|