redmine_setup()
{
    PRJ_DIR=/home/redmine/rails-projects
    PRJ_NAME=redmine
    FB_DIR=/var/lib/cloud/instances

    ip_addr=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
    db_pass=$(< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c28)
    secret_key_base=$(</dev/urandom tr -dc '1234567890abcdef' | head -c80; echo "")

    info "Setting Redmine database password"
    sudo -u postgres psql -c "ALTER USER redmine WITH PASSWORD '${db_pass}';"

    if [ $? != 0 ]; then
        error "ERROR: Failed to set PostgreSQL password..."
        exit 5
    fi

    info "Password for PostgreSQL successfully set"

    info "Configuring Redmine RoR project"
    sed '0,/password.*/s//password: '${db_pass}'/g' -i ${PRJ_DIR}/${PRJ_NAME}/config/database.yml
    sed '0,/secret_key_base.*/s//secret_key_base = \x27'${secret_key_base}'\x27/g' -i ${PRJ_DIR}/${PRJ_NAME}/config/initializers/secret_token.rb

    info "Configuring Nginx RoR app"
    sed '0,/.*server_name.*/s//    server_name '${ip_addr}';/' -i /etc/nginx/sites-available/rails-redmine

    info "Configuring the Redmine administrator password"
    hashed_password=$(echo -n $panelpassword | sha1sum | awk '{print $1}' | tr -d '\n' | sha1sum | awk '{print $1}' | tr -d '\n')
    sudo -u redmine psql -d redmine -c "UPDATE users SET hashed_password='${hashed_password}', salt='', must_change_passwd='f' WHERE login='admin';"


    info "Restarting services"
    systemctl stop unicorn-redmine
    systemctl start unicorn-redmine
    systemctl restart nginx
}

app_setup()
{
    redmine_setup
    if [ $? != 0 ]; then
        error "ERROR: Failed to setup redmine..."
        exit 3
    fi
}
