170 lines
6.3 KiB
Bash
Executable File
170 lines
6.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#move to script directory so all relative paths work
|
|
cd "$(dirname "$0")"
|
|
|
|
#includes
|
|
. ./config.sh
|
|
. ./colors.sh
|
|
|
|
#set the current working directory
|
|
cwd=$(pwd)
|
|
|
|
if [ .$nginx_enabled = .'true' ]; then
|
|
|
|
#database details
|
|
database_username=fusionpbx
|
|
if [ .$database_password = .'random' ]; then
|
|
database_password=$(cat /dev/random | env LC_CTYPE=C tr -dc a-zA-Z0-9 | head -c 20)
|
|
fi
|
|
|
|
#allow the script to use the new password
|
|
export PGPASSWORD=$database_password
|
|
|
|
#install the dependencies
|
|
pkg install --yes sudo
|
|
|
|
#update the database password
|
|
sudo -u postgres psql -c "ALTER USER fusionpbx WITH PASSWORD '$database_password';"
|
|
sudo -u postgres psql -c "ALTER USER freeswitch WITH PASSWORD '$database_password';"
|
|
|
|
#add the config.php
|
|
mkdir -p /etc/fusionpbx
|
|
chown -R www:www /etc/fusionpbx
|
|
cp fusionpbx/config.php /etc/fusionpbx
|
|
sed -i' ' -e s:"{database_host}:$database_host:" /etc/fusionpbx/config.php
|
|
sed -i' ' -e s:'{database_username}:fusionpbx:' /etc/fusionpbx/config.php
|
|
sed -i' ' -e s:"{database_password}:$database_password:" /etc/fusionpbx/config.php
|
|
|
|
#add the database schema
|
|
cd /usr/local/www/fusionpbx && /usr/local/bin/php /usr/local/www/fusionpbx/core/upgrade/upgrade_schema.php > /dev/null 2>&1
|
|
|
|
#get the primary interface name
|
|
if [ .$interface_name = .'auto' ]; then
|
|
interface_name=$(ifconfig -l | awk '{print $1}')
|
|
if [ .$interface_name = .'lo0' ]; then
|
|
interface_name=$(ifconfig -l | awk '{print $2}')
|
|
fi
|
|
fi
|
|
|
|
#get the ip address
|
|
local_ip_v4=$(ifconfig $interface_name | grep 'inet ' | awk '{print $2}')
|
|
|
|
#get the server hostname
|
|
if [ .$domain_name = .'hostname' ]; then
|
|
domain_name=$(hostname -f)
|
|
fi
|
|
|
|
#get the ip address
|
|
if [ .$domain_name = .'ip_address' ]; then
|
|
domain_name=$(ifconfig $interface_name | grep 'inet ' | awk '{print $2}')
|
|
fi
|
|
|
|
#get the domain uuid
|
|
domain_uuid=$(uuidgen);
|
|
|
|
#add the domain name
|
|
psql --host=$database_host --port=$database_port --username=$database_username -c "insert into v_domains (domain_uuid, domain_name, domain_enabled) values('$domain_uuid', '$domain_name', 'true');"
|
|
|
|
#app defaults
|
|
cd /usr/local/www/fusionpbx && /usr/local/bin/php /usr/local/www/fusionpbx/core/upgrade/upgrade_domains.php
|
|
|
|
#add the user
|
|
user_uuid=$(/usr/local/bin/php /usr/local/www/fusionpbx/resources/uuid.php);
|
|
user_salt=$(/usr/local/bin/php /usr/local/www/fusionpbx/resources/uuid.php);
|
|
user_name=$system_username
|
|
if [ .$system_password = .'random' ]; then
|
|
user_password=$(cat /dev/random | env LC_CTYPE=C tr -dc a-zA-Z0-9 | head -c 20)
|
|
else
|
|
user_password=$system_password
|
|
fi
|
|
password_hash=$(php -r "echo md5('$user_salt$user_password');");
|
|
psql --host=$database_host --port=$database_port --username=$database_username -t -c "insert into v_users (user_uuid, domain_uuid, username, password, salt, user_enabled) values('$user_uuid', '$domain_uuid', '$user_name', '$password_hash', '$user_salt', 'true');"
|
|
|
|
#get the superadmin group_uuid
|
|
group_uuid=$(psql --host=$database_host --port=$database_port --username=$database_username -t -c "select group_uuid from v_groups where group_name = 'superadmin';");
|
|
group_uuid=$(echo $group_uuid | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//')
|
|
|
|
#add the user to the group
|
|
user_group_uuid=$(/usr/local/bin/php /usr/local/www/fusionpbx/resources/uuid.php);
|
|
group_name=superadmin
|
|
psql --host=$database_host --port=$database_port --username=$database_username -c "insert into v_user_groups (user_group_uuid, domain_uuid, group_name, group_uuid, user_uuid) values('$user_group_uuid', '$domain_uuid', '$group_name', '$group_uuid', '$user_uuid');"
|
|
|
|
#add the local_ip_v4 address
|
|
psql --host=$database_host --port=$database_port --username=$database_username -t -c "insert into v_vars (var_uuid, var_name, var_value, var_category, var_order, var_enabled) values ('4507f7a9-2cbb-40a6-8799-f8f168082585', 'local_ip_v4', '$local_ip_v4', 'Defaults', '0', 'true');";
|
|
|
|
#app defaults
|
|
if [ .$nginx_enabled = .'true' ]; then
|
|
cd /usr/local/www/fusionpbx && php /usr/local/www/fusionpbx/core/upgrade/upgrade_domains.php
|
|
fi
|
|
|
|
#reset the current working directory
|
|
cd $cwd
|
|
|
|
fi
|
|
|
|
if [ .$switch_enabled = .'true' ]; then
|
|
|
|
#update xml_cdr url, user and password
|
|
xml_cdr_username=$(cat /dev/random | env LC_CTYPE=C tr -dc a-zA-Z0-9 | head -c 20)
|
|
xml_cdr_password=$(cat /dev/random | env LC_CTYPE=C tr -dc a-zA-Z0-9 | head -c 20)
|
|
|
|
#set the conf directory
|
|
if [ .$switch_source = ."package" ]; then
|
|
conf_dir="/usr/local/etc/freeswitch";
|
|
fi
|
|
if [ .$switch_source = ."source" ]; then
|
|
conf_dir="/usr/local/freeswitch/conf";
|
|
fi
|
|
|
|
#update the xml_cdr.conf.xml file
|
|
sed -i' ' -e s:"{v_http_protocol}:http:" $conf_dir/autoload_configs/xml_cdr.conf.xml
|
|
sed -i' ' -e s:"{domain_name}:127.0.0.1:" $conf_dir/autoload_configs/xml_cdr.conf.xml
|
|
sed -i' ' -e s:"{v_project_path}::" $conf_dir/autoload_configs/xml_cdr.conf.xml
|
|
sed -i' ' -e s:"{v_user}:$xml_cdr_username:" $conf_dir/autoload_configs/xml_cdr.conf.xml
|
|
sed -i' ' -e s:"{v_pass}:$xml_cdr_password:" $conf_dir/autoload_configs/xml_cdr.conf.xml
|
|
|
|
#restart freeswitch
|
|
service freeswitch restart
|
|
|
|
#install monit.sh
|
|
if [ .$monit_enabled = .'true' ]; then
|
|
. ./monit.sh
|
|
fi
|
|
|
|
fi
|
|
|
|
#welcome message
|
|
echo ""
|
|
echo ""
|
|
verbose "Installation has completed."
|
|
echo ""
|
|
if [ .$nginx_enabled = .'true' ]; then
|
|
echo " Use a web browser to login."
|
|
echo " domain name: http://$domain_name"
|
|
echo " username: $user_name"
|
|
echo " password: $user_password"
|
|
echo ""
|
|
echo " The domain name in the browser is used by default as part of the authentication."
|
|
echo " If you need to login to a different domain then use username@domain."
|
|
echo " username: $user_name@$domain_name";
|
|
echo ""
|
|
fi
|
|
echo " Official FusionPBX Training"
|
|
echo " Fastest way to learn FusionPBX. For more information https://www.fusionpbx.com."
|
|
echo " Available online and in person. Includes documentation and recording."
|
|
echo ""
|
|
echo " Location: Online"
|
|
echo " Admin Training: TBA"
|
|
echo " Advanced Training: TBA"
|
|
echo " Continuing Education: https://www.fusionpbx.com/training"
|
|
echo " Timezone: https://www.timeanddate.com/weather/usa/idaho"
|
|
echo ""
|
|
echo " Additional information."
|
|
echo " https://fusionpbx.com/members.php"
|
|
echo " https://fusionpbx.com/training.php"
|
|
echo " https://fusionpbx.com/support.php"
|
|
echo " https://www.fusionpbx.com"
|
|
echo " http://docs.fusionpbx.com"
|
|
echo ""
|