fastpanel_install()
{
    ### Change fastuser password from USERDATA
    info "Setting FastPanel password"
    echo -e "$panelpassword\n$panelpassword" | passwd fastuser > /dev/null 2>&1

    ### Reset fastuser db_password
    FASTUSER_DB_PASS="`pwgen -B -n1 16`"
    PASSWORD_DB=$(grep password /root/.my.cnf | awk '{print $3}')

    sed -i "s/.*database_password.*/\ \ database_password: $FASTUSER_DB_PASS/g" /usr/local/fastpanel2/app/config/parameters.yml
    mysql -uroot -p$PASSWORD_DB -e "SET PASSWORD FOR 'fastuser'@'localhost' = PASSWORD('$FASTUSER_DB_PASS'); FLUSH PRIVILEGES;"

    ###   Regen DB password
    FPMAIL_PASSWORD="`pwgen -B -n1 16`"
    mysql -uroot -p$PASSWORD_DB -e "SET PASSWORD FOR 'fp2mail'@'localhost' = PASSWORD('$FPMAIL_PASSWORD'); FLUSH PRIVILEGES;"
    sed -i "s/.*\$config\['db_dsnw'\].*/\$config\['db_dsnw'\]\ \=\ 'mysql\:\/\/fp2mail:$FPMAIL_PASSWORD\@localhost\/fp2roundcube';/g" /etc/fastpanel2-roundcube/config.inc.php

    ###   PMA update password
    PMA_PASSWORD="`pwgen -B -n1 16`"
    BLOWFISH="`openssl rand -base64 30`";

    mysql -uroot -p$PASSWORD_DB -e "SET PASSWORD FOR 'fp2phpmyadmin'@'localhost' = PASSWORD('$PMA_PASSWORD'); FLUSH PRIVILEGES;"

    cat <<EOF > /etc/fastpanel2-phpmyadmin/config.inc_controluser.php
<?php
\$cfg['blowfish_secret'] = '$BLOWFISH';

\$cfg['Servers'][\$i]['controlhost'] = '';
\$cfg['Servers'][\$i]['controlport'] = '';
\$cfg['Servers'][\$i]['controluser'] = 'fp2phpmyadmin';
\$cfg['Servers'][\$i]['controlpass'] = '$PMA_PASSWORD';
EOF

    ###   Generation of new certs for Exim, Dovecot and Nginx
    info "Regenerating SSL certificate"
    openssl req -x509 -nodes -days 500 -newkey rsa:2048 -keyout /etc/exim4/ssl/exim.key -out /etc/exim4/ssl/exim.crt -subj /C=RU/ST=Moscow/L=Moscow/O=${HOSTNAME}/OU=User/CN=etc/emailAddress=support@${HOSTNAME}  > /dev/null 2>&1
    openssl req -new -x509 -days 3650 -sha256 -newkey rsa:2048 -nodes -keyform PEM -keyout /etc/dovecot/private/dovecot.pem -outform PEM -out /etc/dovecot/dovecot.pem -subj "/O=${HOSTNAME} Org/CN=${HOSTNAME}" > /dev/null 2>&1
    openssl req -new -x509 -days 3650 -sha256 -newkey rsa:2048 -nodes -keyform PEM -keyout /etc/nginx/ssl-certs/parking.key -outform PEM -out /etc/nginx/ssl-certs/parking.crt -subj '/O=FASTVPS/CN=parking'  > /dev/null 2>&1
    openssl req -x509 -nodes -days 500 -newkey rsa:2048 -keyout /usr/local/fastpanel2-nginx/ssl-certs/fastpanel2.key -out /usr/local/fastpanel2-nginx/ssl-certs/fastpanel2.crt -subj /C=RU/ST=Moscow/L=Moscow/O=Companyname/OU=User/CN=etc/emailAddress=support@${HOSTNAME} > /dev/null 2>&1

    ###   Replace IP address
    IP=$(ip addr show scope global up | awk -F '[ /]' '/inet/ {print $6}' | xargs)

    echo -e "${IP}\t`hostname`" >> /etc/hosts

    sed -i "s|RPAF_ProxyIPs.*|RPAF_ProxyIPs 127.0.0.1 $IP|" /etc/apache2/mods-available/rpaf.conf

    sed -i "s/.*hostlist\ relay_from_hosts.*/hostlist\ relay_from_hosts\ \=\ 127.0.0.1\ \:\ $IP/g" /etc/exim4/exim4.conf.template

    cat <<EOF > /etc/nginx/conf.d/parking.conf
server {
#    network_conf
    listen $IP:80 default_server;
    listen $IP:443 ssl default_server;
    server_name _;
    ssl_certificate /etc/nginx/ssl-certs/parking.crt;
    ssl_certificate_key /etc/nginx/ssl-certs/parking.key;
    index index.html;
    access_log /var/log/nginx/parking.access.log;
    location /index.html {
       root /var/www/;
    }
    location / {
        return 302 \$scheme://\$host/index.html;
    }
}
EOF

    ### Restart fastpanel2 services
    systemctl restart proftpd
    systemctl restart fastpanel2
    systemctl restart fastpanel2-nginx.service
    systemctl restart mariadb.service
    systemctl restart exim4.service
    systemctl restart dovecot.service
    systemctl restart nginx.service

    ### Update packages
    /usr/local/bin/mogwai updating
    /usr/local/fastpanel2/app/updater

    info "Configure of FastPanel is finished."
}

app_setup()
{
    fastpanel_install
    if [ $? != 0 ]; then
        error "ERROR: Failed to install fastpanel"
        exit 3
    fi
}
