73 lines
3.5 KiB
Bash
73 lines
3.5 KiB
Bash
#!/bin/bash
|
|
|
|
echo -e "${PURPLE}${BOLD}If it does not already exists, create a webhook at the following url${RESET}"
|
|
echo -e "${PURPLE}${BOLD}${repo_url}/settings/hooks/gitea/new${RESET}"
|
|
echo -e "${BLUE}${BOLD}Target URL ${RESET}${BLUE}https://${DOMAIN_NAME}/webhook.php${RESET}"
|
|
echo -e "${BLUE}${BOLD}Branch filter ${RESET}${BLUE}prod${RESET}"
|
|
echo -e "${BLUE}${BOLD}Authorization Header ${RESET}${ORANGE}Generate a safe string using \`openssl rand -base64 32\`${RESET}"
|
|
echo -e "${PURPLE}${BOLD}Enter the Authorization Header${RESET}"
|
|
read -s auth_header
|
|
|
|
# check if the build flow already exists and get the auth header from there if so
|
|
|
|
install_pkg php
|
|
install_pkg php-fpm
|
|
install_pkg jq
|
|
|
|
rm /var/www/html/index.html
|
|
cp ./assets/webhook.php /var/www/html/
|
|
mkdir /var/www/webhook
|
|
cp ./assets/webhook.sh /var/www/webhook
|
|
chown www-data:www-data /var/www/webhook/webhook.sh
|
|
chmod u+x /var/www/webhook/webhook.sh
|
|
mkdir /var/www/webhook/logs
|
|
chown www-data:www-data /var/www/webhook/logs
|
|
|
|
get_ip
|
|
|
|
head -n $(($(wc -l < $CADDYFILE) - 2)) $CADDYFILE > temp_Caddyfile && mv temp_Caddyfile $CADDYFILE
|
|
echo "handle /webhook.php {" >> $CADDYFILE
|
|
echo "@unauthorized not header Authorization \"${auth_header}\"" >> $CADDYFILE
|
|
echo "respond @unauthorized \"Unauthorized access\"" >> $CADDYFILE
|
|
echo "root * /var/www/html" >> $CADDYFILE
|
|
echo "php_fastcgi unix//run/php/php8.2-fpm.sock" >> $CADDYFILE
|
|
echo "file_server" >> $CADDYFILE
|
|
echo "}" >> $CADDYFILE
|
|
echo "handle {" >> $CADDYFILE
|
|
echo "root * /var/www/html/public" >> $CADDYFILE
|
|
echo "file_server" >> $CADDYFILE
|
|
echo "}" >> $CADDYFILE
|
|
echo "}" >> $CADDYFILE
|
|
caddy fmt $CADDYFILE -w
|
|
caddy reload -c $CADDYFILE
|
|
|
|
if [[ -z "$DB_DIRECTUS_PASSWORD" ]]; then
|
|
echo -e "${PURPLE}${BOLD}Enter the MariaDB Directus password : ${RESET}"
|
|
read -s DB_DIRECTUS_PASSWORD
|
|
echo
|
|
fi
|
|
|
|
FLOW_EXISTS=$(echo $(mariadb -u directus -p${DB_DIRECTUS_PASSWORD} directus -e "SELECT COUNT(*) FROM directus_flows WHERE name='build';") | awk '{print $2}')
|
|
|
|
website_role_uuid=$(echo $(mariadb -u directus -p${DB_DIRECTUS_PASSWORD} \
|
|
-e "SELECT id FROM directus.directus_roles WHERE name='Website'") | awk '{print $2}')
|
|
|
|
website_user_uuid=$(echo $(mariadb -u directus -p${DB_DIRECTUS_PASSWORD} \
|
|
-e "SELECT id FROM directus.directus_users WHERE role='${website_role_uuid}'") | awk '{print $2}')
|
|
|
|
if [ $FLOW_EXISTS -eq 0 ]; then
|
|
flow_id="fdd75914-80dd-44ac-9d62-c7a08bc9cae6"
|
|
operation_id="371b1b41-312d-4df6-ab68-336b416e1f16"
|
|
|
|
mariadb -u directus -p${DB_DIRECTUS_PASSWORD} directus -e \
|
|
"INSERT INTO directus_flows (id, name, icon, color, description, status, \`trigger\`, accountability, options, operation, user_created) \
|
|
VALUES (\"${flow_id}\", 'Build', 'bolt', '#FFA439', 'Trigger static site build on content modification', 'active', 'event', 'all', \
|
|
'{\"type\":\"action\",\"scope\":[\"items.create\",\"items.update\",\"items.sort\",\"items.delete\",\"items.promote\"],\"collections\":[\"directus_files\"]}', \
|
|
\"${operation_id}\", \"${website_user_uuid}\")"
|
|
|
|
mariadb -u directus -p${DB_DIRECTUS_PASSWORD} directus -e \
|
|
"INSERT INTO directus_operations (id, name, \`key\`, type, position_x, position_y, options, flow, user_created) \
|
|
VALUES (\"${operation_id}\", 'Webhook / Request URL', 'request_56aby', 'request', 23, 2, \
|
|
'{\"headers\":[{\"header\":\"Authorization\",\"value\":\"${auth_header}\"},{\"header\":\"Content-Type\",\"value\":\"application/json\"}],\"method\":\"POST\",\"url\":\"https://${DOMAIN_NAME}/webhook.php\",\"body\":null}', \
|
|
\"${flow_id}\", \"${website_user_uuid}\")"
|
|
fi |