jenkins_install()
{
    ip_addr=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
    secret_key=$(</dev/urandom tr -dc '1234567890abcdef' | head -c64; echo "")
    initial_admin_passwd=$(</dev/urandom tr -dc '1234567890abcdef' | head -c32; echo "")
    master_key=$(</dev/urandom tr -dc '1234567890abcdef' | head -c256; echo "")
    timestamp=$(date +%s%N | cut -c 1-13)
    api_token=$(< /dev/urandom tr -dc A-Z-a-z-0-9+ | head -c98)


    info "Configuring Jenkins secrets"
    echo $secret_key > /var/lib/jenkins/secret.key
    echo $initial_admin_passwd > /var/lib/jenkins/secrets/initialAdminPassword
    echo $master_key > /var/lib/jenkins/secrets/master.key
    sed -e '0,/<apiToken>.*/s//<apiToken>{'${api_token}'==}<\/apiToken>/' -e '0,/<timestamp>.*/s//<timestamp>'${timestamp}'<\/timestamp>/'  -i /var/lib/jenkins/users/admin*/config.xml

    info "Configuring Jenkins Admin password"
    sed -e '0,/fromPlainPassword.*/s//fromPlainPassword(\x27'${panelpassword}'\x27)/' -e '0,/createAccount.*/s//createAccount(\x27admin\x27, \x27'${panelpassword}'\x27)/' -i /var/lib/jenkins/init.groovy.d/admin-user.groovy

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

    info "Restarting services"
    sleep 10
    systemctl restart jenkins
    systemctl restart nginx
    sleep 20
    rm -f /var/lib/jenkins/init.groovy.d/admin-user.groovy
}

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