From 8de8fa1db7e213baedf88c2f7da30ba48b38ea7d Mon Sep 17 00:00:00 2001 From: Jay Sharma Date: Mon, 3 Jun 2024 13:49:37 +0000 Subject: [PATCH] Merged in bugfix/fixdb (pull request #53) cleanup * cleanup * Merged develop into bugfix/fixdb Approved-by: Rachit Bhargava --- backups/common-jobs-bitbucket.sh | 314 ---- backups/common-jobs.sh | 68 - backups/envvars-phpfpm | 5 - backups/jobs.tpl | 50 - backups/mysql-medicalalertweb.yaml | 49 - backups/ngx_http_cache_purge_module.so | Bin 129752 -> 0 bytes backups/php.ini | 1947 ------------------------ backups/redinessprobe-wp.sh | 14 - backups/validation.sh | 83 - multidev-sync.sh | 18 - schedule-pipeline.sh | 83 - 11 files changed, 2631 deletions(-) delete mode 100644 backups/common-jobs-bitbucket.sh delete mode 100644 backups/common-jobs.sh delete mode 100644 backups/envvars-phpfpm delete mode 100644 backups/jobs.tpl delete mode 100644 backups/mysql-medicalalertweb.yaml delete mode 100644 backups/ngx_http_cache_purge_module.so delete mode 100644 backups/php.ini delete mode 100644 backups/redinessprobe-wp.sh delete mode 100644 backups/validation.sh delete mode 100644 multidev-sync.sh delete mode 100644 schedule-pipeline.sh diff --git a/backups/common-jobs-bitbucket.sh b/backups/common-jobs-bitbucket.sh deleted file mode 100644 index 68c5c045..00000000 --- a/backups/common-jobs-bitbucket.sh +++ /dev/null @@ -1,314 +0,0 @@ -#!/bin/bash -exec > >(tee -a script.log) 2>&1 - - -# Install the required packages # -# -------------------------------------------------------------- -apk upgrade && apk add curl wget zip unzip coreutils -curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x ./kubectl && mv ./kubectl /usr/local/bin/kubectl - - -. ./setenv.sh -# ---------------------------------------------------------------------- -export NEW_URL=https://$URL_DOMAIN -export CLUSTER=caresage-eks-cluster-$ENV - -if [[ "$ENV" = "prod" ]] ; then -export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $2}'` -else -export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $3}'` -fi - -export NAMESPACE=$APP-web - -export REPO=$BITBUCKET_REPO_SLUG -export REPLACE=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'` -export MAIN_DOMAIN=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'` -export URL_DOMAIN=$URL_DOMAIN -# --------------------------- -echo "export NEW_URL=https://$URL_DOMAIN" >> setenv.sh - -if [[ "$ENV" = "prod" ]] ; then -echo "export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $2}'`" >> setenv.sh -else -echo "export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $3}'`" >> setenv.sh -fi - -echo "export NAMESPACE=$APP-web" >> setenv.sh - -echo "export REPO=$BITBUCKET_REPO_SLUG" >> setenv.sh -echo "export REPLACE=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'`" >> setenv.sh -echo "export MAIN_DOMAIN=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'`" >> setenv.sh -echo "export URL_DOMAIN=$URL_DOMAIN" >> setenv.sh -echo "export TOKEN=$TOKEN" >> setenv.sh -# --------------------------------------------------------------- -echo "JOBNAME -- $JOBNAME" -echo "ENV -- $ENV" -echo "CLUSTER -- $CLUSTER" -echo "VERSION -- $BITBUCKET_BUILD_NUMBER" -echo "RESTORE_VERSION -- $RESTORE_VERSION" -echo "URL_DOMAIN -- $URL_DOMAIN" -echo "SUBDOMAIN -- $SUBDOMAIN" -echo "VERSION -- $VERSION" -echo "RESTORE_VERSION -- $RESTORE_VERSION" -echo "DB_NAME -- $DB_NAME" -echo "MYSQL_FILE_NAME -- $MYSQL_FILE_NAME" -echo "STATIC_FILE_NAME -- $STATIC_FILE_NAME" - - -# Initial VALIDATION check # -# ------------------------------------- -cat ./setenv.sh && . ./setenv.sh -if [[ "$SUBDOMAIN" != "www" ]] && [[ "$ENV" = "qa" || "$ENV" = "stage" || "$ENV" = "prod" ]] ; then echo VALIDATION-FAIL && exit 9 ; else echo VALIDATION-PASS;fi -#validation () { chmod 755 ./validation.sh && ./validation.sh; } && validation -# ---------------------------------------------------------------------------------- - -# Check if it is already running # -# ------------------------------------- -echo "Deploy the wordpress source code from the branch to pvc mount of subdomain..." -aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1 -echo "common-job-pod will be deleted if already there and thus make sure you run single common job for a given repo" -echo "" -kubectl get po -A | grep common-job-pod | grep $NAMESPACE && kubectl delete po common-job-pod -n $NAMESPACE || echo ----common-job-pod-t0-be-created -# ---------------------------------------------------------------------------------- - -opt=$1 -deploy_version=$2 - -case $opt in - -cleanup-backup) - -aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1 && . ./setenv.sh && chmod 755 ./s3cleanup.sh - -./s3cleanup.sh && echo list-of-files-older-than-thirty-days-done || exit 9 - -cat script.log | egrep -v "Errors:|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|Permission denied|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt - -;; -wp-auto-patch) - -# The auto patch to be executed for dev01 to be specific -# ---------------------------------------------------------- -if [[ "$SUBDOMAIN" != "dev01" ]] ; then echo VALIDATION-NOPASS-AUTO-PATCH-IS-FOR-DEV01 && exit 9 ; else echo VALIDATION-PASS-AUTO-PATCH-IS-FOR-DEV01;fi - -aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1 -kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && echo pod-created && sleep 15 -kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh' -kubectl exec common-job-pod -n $NAMESPACE -- apt-key adv --fetch-keys 'https://packages.sury.org/php/apt.gpg' > /dev/null 2>&1 -kubectl exec common-job-pod -n $NAMESPACE -- apt update -kubectl exec common-job-pod -n $NAMESPACE -- apt install wget zip unzip curl git rclone rsync -y - -# --------------------------------------------------------------------------------------------------------------------------------------------------------- -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; -cd /tmp; -git clone --branch="develop" https://x-token-auth:$TOKEN@bitbucket.org/connectamerica/$REPO.git; -cd $REPO/; -git config user.email "{botid}@bots.bitbucket.org" ; -git checkout -b feature/$VERSION-$ENV-$SUBDOMAIN && git push --set-upstream origin feature/$VERSION-$ENV-$SUBDOMAIN; -rclone sync --exclude wp-content/uploads/** /usr/share/nginx/subdomain/$SUBDOMAIN/ wp -q ; -echo "-----sync-done-----" ; -git add --all && git commit -m "auto-patch $VERSION-$ENV-$SUBDOMAIN-$(date +%Y-%m-%dT%H_%M_%S)" ; -git push && echo ---git-push-done--- ' - #-------------------------------------------------------------------------------------------------------------- - -kubectl delete po common-job-pod -n $NAMESPACE - -cat script.log | egrep -v "Errors:|inflating|adding|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt - -;; - -subdomain_deploy) - -aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1 -kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && echo pod-created && sleep 15 - -kubectl cp wp $NAMESPACE/common-job-pod:/tmp && echo "wp copy to /tmp done" || exit 9 -kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh && echo "setenv copy done" || exit 9 -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh' -# -------------------------------------------------------------------------------------------- -kubectl exec common-job-pod -n $NAMESPACE -- apt-key adv --fetch-keys 'https://packages.sury.org/php/apt.gpg' > /dev/null 2>&1 -kubectl exec common-job-pod -n $NAMESPACE -- apt update -kubectl exec common-job-pod -n $NAMESPACE -- apt install rclone rsync -y - -echo "BITBUCKET_BRANCH: $BITBUCKET_BRANCH" > env.txt -echo "BITBUCKET_BUILD_NUMBER: $BITBUCKET_BUILD_NUMBER" >> env.txt -echo "BITBUCKET_COMMIT: $BITBUCKET_COMMIT" >> env.txt - -kubectl cp env.txt $NAMESPACE/common-job-pod:/tmp/wp/env.txt && echo "-------env.txt details done" || exit 9 - -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; cd /tmp && rclone sync --exclude wp-content/uploads/** wp/ /usr/share/nginx/subdomain/$SUBDOMAIN -q && echo ---sync-done--- ' - - # ----------------------------------------------------------- -if [ "$ENV" = "dev" ] ; then -pods=`kubectl get pods --no-headers -o custom-columns=":metadata.name" -n $NAMESPACE` -for i in $pods; do -kubectl exec $i -n $NAMESPACE -- apt-key adv --fetch-keys 'https://packages.sury.org/php/apt.gpg' > /dev/null 2>&1 -kubectl exec $i -n $NAMESPACE -- apt update -kubectl exec $i -n $NAMESPACE -- apt install rclone rsync -y - -kubectl cp setenv.sh $NAMESPACE/$i:/tmp/setenv.sh && echo "setenv copy done" || exit 9 - -kubectl exec $i -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; cd /usr/share/nginx/subdomain && rclone sync --exclude wp-content/uploads/** $SUBDOMAIN/ /usr/share/nginx/subdomain/$SUBDOMAIN-web -q && echo ---sync-done from efs to local for $SUBDOMAIN-web --- && cd $SUBDOMAIN-web/wp-content && [ -L uploads ] && [ -e uploads ]] && echo ----symlink-exist--- || ln -s /usr/share/nginx/subdomain/$SUBDOMAIN/wp-content/uploads uploads && chown -R nginx:nginx /usr/share/nginx/subdomain/$SUBDOMAIN-web' -done -else - -echo ----The env is $ENV and thus no multidev applicable---- - -fi - -kubectl delete po common-job-pod -n $NAMESPACE -# ------------------------------------------------------------------------------------------------------------------------- - -cat script.log | egrep -v "Errors:|inflating|adding|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt - -;; - - -mysql-backup) - -echo "Running mysql backup with s3..." -aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1 -kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && echo pod-created && sleep 15 - -kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh' -kubectl exec common-job-pod -n $NAMESPACE -- apt-key adv --fetch-keys 'https://packages.sury.org/php/apt.gpg' > /dev/null 2>&1 -kubectl exec common-job-pod -n $NAMESPACE -- apt update -kubectl exec common-job-pod -n $NAMESPACE -- apt install zip wget unzip curl mariadb-client -y -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh ;mysqldump -h $DB_HOST --single-transaction --quick --lock-tables=false --user=$DB_USER --password=$DB_PASSWORD $SUBDOMAIN --skip-lock-tables | gzip > /tmp/$NAMESPACE-pantheon.sql.gz' - -kubectl cp $NAMESPACE/common-job-pod:/tmp/$NAMESPACE-pantheon.sql.gz $NAMESPACE-pantheon-$VERSION-$ENV-$SUBDOMAIN-$(date +%Y-%m-%dT%H_%M_%S).sql.gz -FILE=`ls $NAMESPACE-pantheon-*.sql.gz` - -aws s3 cp $FILE s3://commonjobs/$NAMESPACE/$opt/ - -curl --request POST -F files=@"$FILE" --url "https://api.bitbucket.org/2.0/repositories/connectamerica/$REPO/downloads" \ - --header "Authorization: Bearer $TOKEN" - -kubectl delete po common-job-pod -n $NAMESPACE - -cat script.log | egrep -v "Errors:|inflating|adding|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt - -;; - -wp-data-backup) - -aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1 -kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && echo pod-created && sleep 15 -kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh' -kubectl exec common-job-pod -n $NAMESPACE -- apt-key adv --fetch-keys 'https://packages.sury.org/php/apt.gpg' > /dev/null 2>&1 -kubectl exec common-job-pod -n $NAMESPACE -- apt update -kubectl exec common-job-pod -n $NAMESPACE -- apt install wget zip unzip curl -y -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh;cd /usr/share/nginx/subdomain/$SUBDOMAIN/wp-content/uploads;zip -r /tmp/upload.zip . -x "./wc-logs/*.log"' -kubectl cp $NAMESPACE/common-job-pod:/tmp/upload.zip $NAMESPACE-$VERSION-$ENV-$SUBDOMAIN-$(date +%Y-%m-%dT%H_%M_%S).zip -FILE=`ls $NAMESPACE-*.zip` -aws s3 cp $FILE s3://commonjobs/$NAMESPACE/$opt/ -kubectl delete po common-job-pod -n $NAMESPACE -cat script.log | egrep -v "Errors:|inflating|adding|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt -;; - -mysql-restore) - -aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1 -kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && echo pod-created && sleep 15 -kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh' - -[ -n "$RESTORE_VERSION" ] && FILE=$RESTORE_VERSION || FILE=$deploy_version -kubectl exec common-job-pod -n $NAMESPACE -- apt-key adv --fetch-keys 'https://packages.sury.org/php/apt.gpg' > /dev/null 2>&1 -kubectl exec common-job-pod -n $NAMESPACE -- apt update -kubectl exec common-job-pod -n $NAMESPACE -- apt install zip wget unzip curl mariadb-client -y - -#Check if file is present in bitbucket download else check on s3 -# ------------------------------------------------------------------- -curl -s -L -O -H "Authorization: Bearer $TOKEN" https://api.bitbucket.org/2.0/repositories/connectamerica/$REPO/downloads/$FILE && echo file_downloaded || aws s3 cp s3://commonjobs/$NAMESPACE/mysql-backup/$FILE $FILE - -# -------------------------------------------------------- -kubectl cp $FILE $NAMESPACE/common-job-pod:/tmp/$FILE -kubectl cp wp $NAMESPACE/common-job-pod:/tmp && echo "wp copy to /tmp done" || exit 9 -kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh && echo "setenv copy done" || exit 9 -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh' -# ---------------------------------------------------------------------------------------- - -#Create schema if not present # -# ------------------------------- -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; mysql -h $DB_HOST --user=$DB_USER --password=$DB_PASSWORD -e "create schema IF NOT EXISTS $SUBDOMAIN"' - -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; export FILE=`ls /tmp/*.sql.gz` ; gunzip -c $FILE | mysql -h $DB_HOST --user=$DB_USER --password=$DB_PASSWORD $SUBDOMAIN' -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; mysql -h $DB_HOST --user=$DB_USER --password=$DB_PASSWORD -e "DROP TABLE IF EXISTS $SUBDOMAIN._pantheon_heartbeat"' - -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar ; chmod u+x wp-cli.phar;mv wp-cli.phar /usr/local/bin/wp; php /usr/local/bin/wp --info' - -# ---------------------------------------------------------------------------------------------------------------------------------------------------- -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; OLD_URL=`wp option get siteurl --allow-root --path=/tmp/wp`; echo "export OLD_URL=$OLD_URL" >> /tmp/setenv.sh; echo "export FIND=$(echo $OLD_URL|cut -d. -f2,3)" >> /tmp/setenv.sh; echo "export OLD_MAIN_DOMAIN=$(echo $OLD_URL|cut -d. -f2,3)" >> /tmp/setenv.sh; echo "export OLD_URL_DOMAIN=$(echo $OLD_URL| cut -d/ -f3)" >> /tmp/setenv.sh; echo "export OLD_SUBDOMAIN=$(echo $OLD_URL| cut -d/ -f3|cut -d. -f1)" >> /tmp/setenv.sh' -# ----------------------------------------------------------------------------------------- -kubectl cp $NAMESPACE/common-job-pod:/tmp/setenv.sh setenv.sh && . ./setenv.sh -# ----------------------------------------------------------------------------------------- -if [[ "$OLD_SUBDOMAIN" = "www" ]] && [[ "$SUBDOMAIN" = "www" ]]; then -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/tmp/wp "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables' - -[[ "$APP" = "connectamerica" ]] && kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/tmp/wp ".$OLD_MAIN_DOMAIN" ".$MAIN_DOMAIN" --all-tables' - - -elif [[ "$OLD_SUBDOMAIN" = "www" ]] && [[ "$SUBDOMAIN" != "www" ]]; then -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/tmp/wp "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables' -[[ "$APP" = "connectamerica" ]] && kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/tmp/wp ".$OLD_MAIN_DOMAIN" ".$URL_DOMAIN" --all-tables' - - -elif [[ "$OLD_SUBDOMAIN" != "www" ]] && [[ "$SUBDOMAIN" = "www" ]]; then -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/tmp/wp ".$OLD_URL_DOMAIN" ".$MAIN_DOMAIN" --all-tables' -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/tmp/wp "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables' - - -elif [[ "$OLD_SUBDOMAIN" != "www" ]] && [[ "$SUBDOMAIN" != "www" ]]; then -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/tmp/wp "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables' - -else -echo "======== fix the issues =============" -fi - -# ---------------------------------------------------------------------------------------------------------------------------------------- -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; wp search-replace --allow-root --path=/tmp/wp "http://$NEW_URL" "https://$NEW_URL" --all-tables' - -kubectl delete po common-job-pod -n $NAMESPACE -cat script.log | egrep -v "Errors:|inflating|adding|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt -;; - - -wp-data-restore) -aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1 -kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && echo pod-created && sleep 15 -kubectl get po common-job-pod -n $NAMESPACE | grep -i pending && exit 9 || echo ----common-pod-NOT-in-pending-state -- - -kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh -kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh' - -[ -n "$RESTORE_VERSION" ] && FILE=$RESTORE_VERSION || FILE=$deploy_version -kubectl exec common-job-pod -n $NAMESPACE -- apt-key adv --fetch-keys 'https://packages.sury.org/php/apt.gpg' > /dev/null 2>&1 -kubectl exec common-job-pod -n $NAMESPACE -- apt update -kubectl exec common-job-pod -n $NAMESPACE -- apt install wget zip unzip curl rsync rclone -y -aws s3 cp s3://commonjobs/$NAMESPACE/wp-data-backup/$FILE $FILE -kubectl cp $FILE $NAMESPACE/common-job-pod:/tmp/$FILE -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; mkdir -p /usr/share/nginx/subdomain/$SUBDOMAIN/wp-content/uploads' -# ---------------------------------------------------------------------------------------------------------------------------------------------------- -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; mkdir /tmp/uploads ;export FILE=`ls /tmp/*.zip`;unzip -o $FILE -d /tmp/uploads' -kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; rclone sync /tmp/uploads/ /usr/share/nginx/subdomain/$SUBDOMAIN/wp-content/uploads -q && echo ---sync-done--- ' - -#------------------------------------------------------------------------------------------------------------------------------------------ - -kubectl delete po common-job-pod -n $NAMESPACE -cat script.log | egrep -v "Errors:|inflating|adding|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt - -;; - - *) - echo "common job shell script utility taking variables from env" - echo "Usage: $0 {mysql-backup|wp-data-backup|mysql-restore|wp-data-restore}" - echo "mysql-backup : Run MySQL backup utility and upload" - echo "mysql-restore : Run MySQL backup utility and upload it to bitbucket." - echo "wp-data-backup : Run web server backup utility and uplaod." - echo "wp-data-restore : Run web server backup utility and uplaod to bitbucket." ;; -esac diff --git a/backups/common-jobs.sh b/backups/common-jobs.sh deleted file mode 100644 index ae0e47b8..00000000 --- a/backups/common-jobs.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash - - -# Install the required packages # -# -------------------------------------------------------------- -apt update && apt install curl unzip zip mariadb-client -y -curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install -# ------------------------------------------------------------------------------------------------------------------------- - -opt=$1 -case $opt in - mysql-backup) - echo "Running mysql backup with s3..." - export DATABASES=perchon - export MYSQL_USER=perchona - - # execute the command now # - # -------------------------------------------------------------------------------------------------------------- - mysqldump -h $DB_HOST --single-transaction --quick --lock-tables=false --user=pantheon --password=$DB_PASSWORD \ - pantheon --skip-lock-tables | gzip > "/tmp/lifeline-web-pantheon-$(date +%Y-%m-%dT%H_%M_%S).sql.gz" - # ---------------------------------------------------------------------------------------------------------- - - # upload the same to s3 # - # ----------------------------------------- - # aws s3 cp /tmp/lifeline-web-pantheon-*.sql.gz s3://caresage-dev-ws/mysqlbackups/ - # aws s3 ls s3://caresage-dev-ws/mysqlbackups/ - - # upload to bitbucket # - # --------------------------------------- - FILE=`ls /tmp/lifeline-web-pantheon-*.sql.gz` - curl --request POST -F files=@"$FILE" --url 'https://api.bitbucket.org/2.0/repositories/connectamerica/lifeline-ecommerce/downloads' \ - --header "Authorization: Bearer $TOKEN" - ;; - - - mysql-backup-bitbucket) - echo "Running bmysql-backup-s3 with bitbucket ..." - export DATABASES=perchona - export MYSQL_USER=perchona - ;; - - - wp-data-backup) - echo "Running wp-data-s3..." - cd /usr/share/nginx/html/wp-content/ - zip -r lifeline-web-static-data-$(date +%Y-%m-%dT%H_%M_%S).zip ./uploads && FILE=`ls lifeline-web-static-data-*.zip` - curl --request POST -F files=@"$FILE" --url 'https://api.bitbucket.org/2.0/repositories/connectamerica/lifeline-ecommerce/downloads' \ - --header "Authorization: Bearer $TOKEN" - #aws s3 mv lifeline-web-static-data-*.zip s3://caresage-dev-ws/staticbackups/ - #aws s3 ls s3://caresage-dev-ws/staticbackups/ - - - ;; - - - wp-data-bitbucket) - echo "Running wp-data-bitbucket ..." - ;; - - - *) - echo "common job shell script utility taking variables from env" - echo "Usage: $0 {mysql-backup|mysql-backup-bitbucket|wp-data-backup}" - echo " mysql-backup : Run MySQL backup utility and upload" - echo " mysql-backup-bitbucket : Run MySQL backup utility and upload it to bitbucket." - echo " wp-data-backup : Run web server backup utility and uplaod." - echo " wp-data-bitbucket : Run web server backup utility and uplaod to bitbucket." ;; -esac diff --git a/backups/envvars-phpfpm b/backups/envvars-phpfpm deleted file mode 100644 index b857dd66..00000000 --- a/backups/envvars-phpfpm +++ /dev/null @@ -1,5 +0,0 @@ -env["CACHE_PASSWORD"] = $CACHE_PASSWORD -env["CACHE_HOST"] = $CACHE_HOST -env["CACHE_PORT"] = $CACHE_PORT -env["DB_PASSWORD"] = $DB_PASSWORD -env["DB_HOST"] = $DB_HOST diff --git a/backups/jobs.tpl b/backups/jobs.tpl deleted file mode 100644 index bd90bb9b..00000000 --- a/backups/jobs.tpl +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: common-jobs - namespace: lifeline-web - labels: - app: lifeline-web - rds: enable -spec: - ttlSecondsAfterFinished: 10 - template: - metadata: - labels: - app: lifeline-web - rds: enable - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/arch - operator: In - values: - - amd64 - - arm64 - containers: - - name: common-jobs - image: ubuntu:latest - envFrom: - - secretRef: - name: lifeline-web-secrets - - configMapRef: - name: lifeline-web-cm - command: ["bash"] - args: - - -c - - cp -rf /usr/share/nginx/subdomain/www/wp-content/uploads/common-jobs.sh /root/ && chmod 755 /root/common-jobs.sh && /root/common-jobs.sh $JOBNAME - volumeMounts: - - mountPath: /usr/share/nginx/subdomain/www/wp-content/uploads - name: persistent-storage - imagePullSecrets: - - name: regcred - nodeSelector: - kubernetes.io/os: linux - restartPolicy: Never - volumes: - - name: persistent-storage - persistentVolumeClaim: - claimName: efs-claim-lifeline diff --git a/backups/mysql-medicalalertweb.yaml b/backups/mysql-medicalalertweb.yaml deleted file mode 100644 index 8a0253b9..00000000 --- a/backups/mysql-medicalalertweb.yaml +++ /dev/null @@ -1,49 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - deployment.kubernetes.io/revision: "1" - generation: 1 - labels: - role: db-ca - type: rds-mysql-ca - name: mysql-medicalalert - namespace: caresage-exec -spec: - progressDeadlineSeconds: 600 - replicas: 1 - revisionHistoryLimit: 10 - selector: - matchLabels: - role: db-ca - type: rds-mysql-ca - strategy: - rollingUpdate: - maxSurge: 25% - maxUnavailable: 25% - type: RollingUpdate - template: - metadata: - creationTimestamp: null - labels: - role: db-ca - type: rds-mysql-ca - spec: - containers: - - args: - - tcp-listen:3306,fork,reuseaddr - - tcp-connect:dev-medicalalert-ecommerce.c5om7w6xopq1.us-east-1.rds.amazonaws.com:3306 - image: alpine/socat - imagePullPolicy: Always - name: mysql-100plus - ports: - - containerPort: 3306 - protocol: TCP - resources: {} - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - dnsPolicy: ClusterFirst - restartPolicy: Always - schedulerName: default-scheduler - securityContext: {} - terminationGracePeriodSeconds: 30 diff --git a/backups/ngx_http_cache_purge_module.so b/backups/ngx_http_cache_purge_module.so deleted file mode 100644 index db9d10f652f72a4a2ffc3d5eddc6d98b6554405a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129752 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 chf7H&{?S~2qwTAE{VV=KOAh8L tags as PHP source which should be processed as such. It is -; generally recommended that should be used and that this feature -; should be disabled, as enabling it may result in issues when generating XML -; documents, however this remains supported for backward compatibility reasons. -; Note that this directive does not control the would work. -; http://php.net/syntax-highlighting -;highlight.string = #DD0000 -;highlight.comment = #FF9900 -;highlight.keyword = #007700 -;highlight.default = #0000BB -;highlight.html = #000000 - -; If enabled, the request will be allowed to complete even if the user aborts -; the request. Consider enabling it if executing long requests, which may end up -; being interrupted by the user or a browser timing out. PHP's default behavior -; is to disable this feature. -; http://php.net/ignore-user-abort -;ignore_user_abort = On - -; Determines the size of the realpath cache to be used by PHP. This value should -; be increased on systems where PHP opens many files to reflect the quantity of -; the file operations performed. -; Note: if open_basedir is set, the cache is disabled -; http://php.net/realpath-cache-size -;realpath_cache_size = 4096k - -; Duration of time, in seconds for which to cache realpath information for a given -; file or directory. For systems with rarely changing files, consider increasing this -; value. -; http://php.net/realpath-cache-ttl -;realpath_cache_ttl = 120 - -; Enables or disables the circular reference collector. -; http://php.net/zend.enable-gc -zend.enable_gc = On - -; If enabled, scripts may be written in encodings that are incompatible with -; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such -; encodings. To use this feature, mbstring extension must be enabled. -; Default: Off -;zend.multibyte = Off - -; Allows to set the default encoding for the scripts. This value will be used -; unless "declare(encoding=...)" directive appears at the top of the script. -; Only affects if zend.multibyte is set. -; Default: "" -;zend.script_encoding = - -; Allows to include or exclude arguments from stack traces generated for exceptions. -; In production, it is recommended to turn this setting on to prohibit the output -; of sensitive information in stack traces -; Default: Off -zend.exception_ignore_args = On - -;;;;;;;;;;;;;;;;; -; Miscellaneous ; -;;;;;;;;;;;;;;;;; - -; Decides whether PHP may expose the fact that it is installed on the server -; (e.g. by adding its signature to the Web server header). It is no security -; threat in any way, but it makes it possible to determine whether you use PHP -; on your server or not. -; http://php.net/expose-php -expose_php = Off - -;;;;;;;;;;;;;;;;;;; -; Resource Limits ; -;;;;;;;;;;;;;;;;;;; - -; Maximum execution time of each script, in seconds -; http://php.net/max-execution-time -; Note: This directive is hardcoded to 0 for the CLI SAPI -max_execution_time = 120 - -; Maximum amount of time each script may spend parsing request data. It's a good -; idea to limit this time on productions servers in order to eliminate unexpectedly -; long running scripts. -; Note: This directive is hardcoded to -1 for the CLI SAPI -; Default Value: -1 (Unlimited) -; Development Value: 60 (60 seconds) -; Production Value: 60 (60 seconds) -; http://php.net/max-input-time -max_input_time = 60 - -; Maximum input variable nesting level -; http://php.net/max-input-nesting-level -;max_input_nesting_level = 64 - -; How many GET/POST/COOKIE input variables may be accepted -max_input_vars = 10000 - -; Maximum amount of memory a script may consume -; http://php.net/memory-limit -memory_limit = 1024M - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Error handling and logging ; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -; This directive informs PHP of which errors, warnings and notices you would like -; it to take action for. The recommended way of setting values for this -; directive is through the use of the error level constants and bitwise -; operators. The error level constants are below here for convenience as well as -; some common settings and their meanings. -; By default, PHP is set to take action on all errors, notices and warnings EXCEPT -; those related to E_NOTICE and E_STRICT, which together cover best practices and -; recommended coding standards in PHP. For performance reasons, this is the -; recommend error reporting setting. Your production server shouldn't be wasting -; resources complaining about best practices and coding standards. That's what -; development servers and development settings are for. -; Note: The php.ini-development file has this setting as E_ALL. This -; means it pretty much reports everything which is exactly what you want during -; development and early testing. -; -; Error Level Constants: -; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) -; E_ERROR - fatal run-time errors -; E_RECOVERABLE_ERROR - almost fatal run-time errors -; E_WARNING - run-time warnings (non-fatal errors) -; E_PARSE - compile-time parse errors -; E_NOTICE - run-time notices (these are warnings which often result -; from a bug in your code, but it's possible that it was -; intentional (e.g., using an uninitialized variable and -; relying on the fact it is automatically initialized to an -; empty string) -; E_STRICT - run-time notices, enable to have PHP suggest changes -; to your code which will ensure the best interoperability -; and forward compatibility of your code -; E_CORE_ERROR - fatal errors that occur during PHP's initial startup -; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's -; initial startup -; E_COMPILE_ERROR - fatal compile-time errors -; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) -; E_USER_ERROR - user-generated error message -; E_USER_WARNING - user-generated warning message -; E_USER_NOTICE - user-generated notice message -; E_DEPRECATED - warn about code that will not work in future versions -; of PHP -; E_USER_DEPRECATED - user-generated deprecation warnings -; -; Common Values: -; E_ALL (Show all errors, warnings and notices including coding standards.) -; E_ALL & ~E_NOTICE (Show all errors, except for notices) -; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) -; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) -; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED -; Development Value: E_ALL -; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT -; http://php.net/error-reporting -error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT - -; This directive controls whether or not and where PHP will output errors, -; notices and warnings too. Error output is very useful during development, but -; it could be very dangerous in production environments. Depending on the code -; which is triggering the error, sensitive information could potentially leak -; out of your application such as database usernames and passwords or worse. -; For production environments, we recommend logging errors rather than -; sending them to STDOUT. -; Possible Values: -; Off = Do not display any errors -; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) -; On or stdout = Display errors to STDOUT -; Default Value: On -; Development Value: On -; Production Value: Off -; http://php.net/display-errors -display_errors = Off - -; The display of errors which occur during PHP's startup sequence are handled -; separately from display_errors. PHP's default behavior is to suppress those -; errors from clients. Turning the display of startup errors on can be useful in -; debugging configuration problems. We strongly recommend you -; set this to 'off' for production servers. -; Default Value: Off -; Development Value: On -; Production Value: Off -; http://php.net/display-startup-errors -display_startup_errors = Off - -; Besides displaying errors, PHP can also log errors to locations such as a -; server-specific log, STDERR, or a location specified by the error_log -; directive found below. While errors should not be displayed on productions -; servers they should still be monitored and logging is a great way to do that. -; Default Value: Off -; Development Value: On -; Production Value: On -; http://php.net/log-errors -log_errors = On - -; Set maximum length of log_errors. In error_log information about the source is -; added. The default is 1024 and 0 allows to not apply any maximum length at all. -; http://php.net/log-errors-max-len -log_errors_max_len = 1024 - -; Do not log repeated messages. Repeated errors must occur in same file on same -; line unless ignore_repeated_source is set true. -; http://php.net/ignore-repeated-errors -ignore_repeated_errors = Off - -; Ignore source of message when ignoring repeated messages. When this setting -; is On you will not log errors with repeated messages from different files or -; source lines. -; http://php.net/ignore-repeated-source -ignore_repeated_source = Off - -; If this parameter is set to Off, then memory leaks will not be shown (on -; stdout or in the log). This is only effective in a debug compile, and if -; error reporting includes E_WARNING in the allowed list -; http://php.net/report-memleaks -report_memleaks = On - -; This setting is on by default. -;report_zend_debug = 0 - -; Store the last error/warning message in $php_errormsg (boolean). Setting this value -; to On can assist in debugging and is appropriate for development servers. It should -; however be disabled on production servers. -; This directive is DEPRECATED. -; Default Value: Off -; Development Value: Off -; Production Value: Off -; http://php.net/track-errors -;track_errors = Off - -; Turn off normal error reporting and emit XML-RPC error XML -; http://php.net/xmlrpc-errors -;xmlrpc_errors = 0 - -; An XML-RPC faultCode -;xmlrpc_error_number = 0 - -; When PHP displays or logs an error, it has the capability of formatting the -; error message as HTML for easier reading. This directive controls whether -; the error message is formatted as HTML or not. -; Note: This directive is hardcoded to Off for the CLI SAPI -; http://php.net/html-errors -;html_errors = On - -; If html_errors is set to On *and* docref_root is not empty, then PHP -; produces clickable error messages that direct to a page describing the error -; or function causing the error in detail. -; You can download a copy of the PHP manual from http://php.net/docs -; and change docref_root to the base URL of your local copy including the -; leading '/'. You must also specify the file extension being used including -; the dot. PHP's default behavior is to leave these settings empty, in which -; case no links to documentation are generated. -; Note: Never use this feature for production boxes. -; http://php.net/docref-root -; Examples -;docref_root = "/phpmanual/" - -; http://php.net/docref-ext -;docref_ext = .html - -; String to output before an error message. PHP's default behavior is to leave -; this setting blank. -; http://php.net/error-prepend-string -; Example: -;error_prepend_string = "" - -; String to output after an error message. PHP's default behavior is to leave -; this setting blank. -; http://php.net/error-append-string -; Example: -;error_append_string = "" - -; Log errors to specified file. PHP's default behavior is to leave this value -; empty. -; http://php.net/error-log -; Example: -;error_log = php_errors.log -; Log errors to syslog (Event Log on Windows). -;error_log = syslog - -; The syslog ident is a string which is prepended to every message logged -; to syslog. Only used when error_log is set to syslog. -;syslog.ident = php - -; The syslog facility is used to specify what type of program is logging -; the message. Only used when error_log is set to syslog. -;syslog.facility = user - -; Set this to disable filtering control characters (the default). -; Some loggers only accept NVT-ASCII, others accept anything that's not -; control characters. If your logger accepts everything, then no filtering -; is needed at all. -; Allowed values are: -; ascii (all printable ASCII characters and NL) -; no-ctrl (all characters except control characters) -; all (all characters) -; raw (like "all", but messages are not split at newlines) -; http://php.net/syslog.filter -;syslog.filter = ascii - -;windows.show_crt_warning -; Default value: 0 -; Development value: 0 -; Production value: 0 - -;;;;;;;;;;;;;;;;; -; Data Handling ; -;;;;;;;;;;;;;;;;; - -; The separator used in PHP generated URLs to separate arguments. -; PHP's default setting is "&". -; http://php.net/arg-separator.output -; Example: -;arg_separator.output = "&" - -; List of separator(s) used by PHP to parse input URLs into variables. -; PHP's default setting is "&". -; NOTE: Every character in this directive is considered as separator! -; http://php.net/arg-separator.input -; Example: -;arg_separator.input = ";&" - -; This directive determines which super global arrays are registered when PHP -; starts up. G,P,C,E & S are abbreviations for the following respective super -; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty -; paid for the registration of these arrays and because ENV is not as commonly -; used as the others, ENV is not recommended on productions servers. You -; can still get access to the environment variables through getenv() should you -; need to. -; Default Value: "EGPCS" -; Development Value: "GPCS" -; Production Value: "GPCS"; -; http://php.net/variables-order -variables_order = "EGPCS" - -; This directive determines which super global data (G,P & C) should be -; registered into the super global array REQUEST. If so, it also determines -; the order in which that data is registered. The values for this directive -; are specified in the same manner as the variables_order directive, -; EXCEPT one. Leaving this value empty will cause PHP to use the value set -; in the variables_order directive. It does not mean it will leave the super -; globals array REQUEST empty. -; Default Value: None -; Development Value: "GP" -; Production Value: "GP" -; http://php.net/request-order -request_order = "GP" - -; This directive determines whether PHP registers $argv & $argc each time it -; runs. $argv contains an array of all the arguments passed to PHP when a script -; is invoked. $argc contains an integer representing the number of arguments -; that were passed when the script was invoked. These arrays are extremely -; useful when running scripts from the command line. When this directive is -; enabled, registering these variables consumes CPU cycles and memory each time -; a script is executed. For performance reasons, this feature should be disabled -; on production servers. -; Note: This directive is hardcoded to On for the CLI SAPI -; Default Value: On -; Development Value: Off -; Production Value: Off -; http://php.net/register-argc-argv -register_argc_argv = Off - -; When enabled, the ENV, REQUEST and SERVER variables are created when they're -; first used (Just In Time) instead of when the script starts. If these -; variables are not used within a script, having this directive on will result -; in a performance gain. The PHP directive register_argc_argv must be disabled -; for this directive to have any effect. -; http://php.net/auto-globals-jit -auto_globals_jit = On - -; Whether PHP will read the POST data. -; This option is enabled by default. -; Most likely, you won't want to disable this option globally. It causes $_POST -; and $_FILES to always be empty; the only way you will be able to read the -; POST data will be through the php://input stream wrapper. This can be useful -; to proxy requests or to process the POST data in a memory efficient fashion. -; http://php.net/enable-post-data-reading -;enable_post_data_reading = Off - -; Maximum size of POST data that PHP will accept. -; Its value may be 0 to disable the limit. It is ignored if POST data reading -; is disabled through enable_post_data_reading. -; http://php.net/post-max-size -post_max_size = 512M - -; Automatically add files before PHP document. -; http://php.net/auto-prepend-file -auto_prepend_file = - -; Automatically add files after PHP document. -; http://php.net/auto-append-file -auto_append_file = - -; By default, PHP will output a media type using the Content-Type header. To -; disable this, simply set it to be empty. -; -; PHP's built-in default media type is set to text/html. -; http://php.net/default-mimetype -default_mimetype = "text/html" - -; PHP's default character set is set to UTF-8. -; http://php.net/default-charset -default_charset = "UTF-8" - -; PHP internal character encoding is set to empty. -; If empty, default_charset is used. -; http://php.net/internal-encoding -;internal_encoding = - -; PHP input character encoding is set to empty. -; If empty, default_charset is used. -; http://php.net/input-encoding -;input_encoding = - -; PHP output character encoding is set to empty. -; If empty, default_charset is used. -; See also output_buffer. -; http://php.net/output-encoding -;output_encoding = - -;;;;;;;;;;;;;;;;;;;;;;;;; -; Paths and Directories ; -;;;;;;;;;;;;;;;;;;;;;;;;; - -; UNIX: "/path1:/path2" -;include_path = ".:/usr/share/php" -; -; Windows: "\path1;\path2" -;include_path = ".;c:\php\includes" -; -; PHP's default setting for include_path is ".;/path/to/php/pear" -; http://php.net/include-path - -; The root of the PHP pages, used only if nonempty. -; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root -; if you are running php as a CGI under any web server (other than IIS) -; see documentation for security issues. The alternate is to use the -; cgi.force_redirect configuration below -; http://php.net/doc-root -doc_root = - -; The directory under which PHP opens the script using /~username used only -; if nonempty. -; http://php.net/user-dir -user_dir = - -; Directory in which the loadable extensions (modules) reside. -; http://php.net/extension-dir -;extension_dir = "./" -; On windows: -;extension_dir = "ext" - -; Directory where the temporary files should be placed. -; Defaults to the system default (see sys_get_temp_dir) -;sys_temp_dir = "/tmp" - -; Whether or not to enable the dl() function. The dl() function does NOT work -; properly in multithreaded servers, such as IIS or Zeus, and is automatically -; disabled on them. -; http://php.net/enable-dl -enable_dl = Off - -; cgi.force_redirect is necessary to provide security running PHP as a CGI under -; most web servers. Left undefined, PHP turns this on by default. You can -; turn it off here AT YOUR OWN RISK -; **You CAN safely turn this off for IIS, in fact, you MUST.** -; http://php.net/cgi.force-redirect -;cgi.force_redirect = 1 - -; if cgi.nph is enabled it will force cgi to always sent Status: 200 with -; every request. PHP's default behavior is to disable this feature. -;cgi.nph = 1 - -; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape -; (iPlanet) web servers, you MAY need to set an environment variable name that PHP -; will look for to know it is OK to continue execution. Setting this variable MAY -; cause security issues, KNOW WHAT YOU ARE DOING FIRST. -; http://php.net/cgi.redirect-status-env -;cgi.redirect_status_env = - -; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's -; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok -; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting -; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting -; of zero causes PHP to behave as before. Default is 1. You should fix your scripts -; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. -; http://php.net/cgi.fix-pathinfo -cgi.fix_pathinfo=0 - -; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside -; of the web tree and people will not be able to circumvent .htaccess security. -;cgi.discard_path=1 - -; FastCGI under IIS supports the ability to impersonate -; security tokens of the calling client. This allows IIS to define the -; security context that the request runs under. mod_fastcgi under Apache -; does not currently support this feature (03/17/2002) -; Set to 1 if running under IIS. Default is zero. -; http://php.net/fastcgi.impersonate -;fastcgi.impersonate = 1 - -; Disable logging through FastCGI connection. PHP's default behavior is to enable -; this feature. -;fastcgi.logging = 0 - -; cgi.rfc2616_headers configuration option tells PHP what type of headers to -; use when sending HTTP response code. If set to 0, PHP sends Status: header that -; is supported by Apache. When this option is set to 1, PHP will send -; RFC2616 compliant header. -; Default is zero. -; http://php.net/cgi.rfc2616-headers -;cgi.rfc2616_headers = 0 - -; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #! -; (shebang) at the top of the running script. This line might be needed if the -; script support running both as stand-alone script and via PHP CGI<. PHP in CGI -; mode skips this line and ignores its content if this directive is turned on. -; http://php.net/cgi.check-shebang-line -;cgi.check_shebang_line=1 - -;;;;;;;;;;;;;;;; -; File Uploads ; -;;;;;;;;;;;;;;;; - -; Whether to allow HTTP file uploads. -; http://php.net/file-uploads -file_uploads = On - -; Temporary directory for HTTP uploaded files (will use system default if not -; specified). -; http://php.net/upload-tmp-dir -;upload_tmp_dir = - -; Maximum allowed size for uploaded files. -; http://php.net/upload-max-filesize -upload_max_filesize = 512M - -; Maximum number of files that can be uploaded via a single request -max_file_uploads = 50 - -;;;;;;;;;;;;;;;;;; -; Fopen wrappers ; -;;;;;;;;;;;;;;;;;; - -; Whether to allow the treatment of URLs (like http:// or ftp://) as files. -; http://php.net/allow-url-fopen -allow_url_fopen = On - -; Whether to allow include/require to open URLs (like http:// or ftp://) as files. -; http://php.net/allow-url-include -allow_url_include = Off - -; Define the anonymous ftp password (your email address). PHP's default setting -; for this is empty. -; http://php.net/from -;from="john@doe.com" - -; Define the User-Agent string. PHP's default setting for this is empty. -; http://php.net/user-agent -;user_agent="PHP" - -; Default timeout for socket based streams (seconds) -; http://php.net/default-socket-timeout -default_socket_timeout = 60 - -; If your scripts have to deal with files from Macintosh systems, -; or you are running on a Mac and need to deal with files from -; unix or win32 systems, setting this flag will cause PHP to -; automatically detect the EOL character in those files so that -; fgets() and file() will work regardless of the source of the file. -; http://php.net/auto-detect-line-endings -;auto_detect_line_endings = Off - -;;;;;;;;;;;;;;;;;;;;;; -; Dynamic Extensions ; -;;;;;;;;;;;;;;;;;;;;;; - -; If you wish to have an extension loaded automatically, use the following -; syntax: -; -; extension=modulename -; -; For example: -; -; extension=mysqli -; -; When the extension library to load is not located in the default extension -; directory, You may specify an absolute path to the library file: -; -; extension=/path/to/extension/mysqli.so -; -; Note : The syntax used in previous PHP versions ('extension=.so' and -; 'extension='php_.dll') is supported for legacy reasons and may be -; deprecated in a future PHP major version. So, when it is possible, please -; move to the new ('extension=) syntax. -; -; Notes for Windows environments : -; -; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) -; extension folders as well as the separate PECL DLL download (PHP 5+). -; Be sure to appropriately set the extension_dir directive. -; -;extension=bz2 -;extension=curl -;extension=ffi -;extension=ftp -;extension=fileinfo -;extension=gd2 -;extension=gettext -;extension=gmp -;extension=intl -;extension=imap -;extension=ldap -;extension=mbstring -;extension=exif ; Must be after mbstring as it depends on it -;extension=mysqli -;extension=oci8_12c ; Use with Oracle Database 12c Instant Client -;extension=odbc -;extension=openssl -;extension=pdo_firebird -;extension=pdo_mysql -;extension=pdo_oci -;extension=pdo_odbc -;extension=pdo_pgsql -;extension=pdo_sqlite -;extension=pgsql -;extension=shmop - -; The MIBS data available in the PHP distribution must be installed. -; See http://www.php.net/manual/en/snmp.installation.php -;extension=snmp - -;extension=soap -;extension=sockets -;extension=sodium -;extension=sqlite3 -;extension=tidy -;extension=xmlrpc -;extension=xsl - -;;;;;;;;;;;;;;;;;;; -; Module Settings ; -;;;;;;;;;;;;;;;;;;; - -[CLI Server] -; Whether the CLI web server uses ANSI color coding in its terminal output. -cli_server.color = On - -[Date] -; Defines the default timezone used by the date functions -; http://php.net/date.timezone -;date.timezone = - -; http://php.net/date.default-latitude -;date.default_latitude = 31.7667 - -; http://php.net/date.default-longitude -;date.default_longitude = 35.2333 - -; http://php.net/date.sunrise-zenith -;date.sunrise_zenith = 90.583333 - -; http://php.net/date.sunset-zenith -;date.sunset_zenith = 90.583333 - -[filter] -; http://php.net/filter.default -;filter.default = unsafe_raw - -; http://php.net/filter.default-flags -;filter.default_flags = - -[iconv] -; Use of this INI entry is deprecated, use global input_encoding instead. -; If empty, default_charset or input_encoding or iconv.input_encoding is used. -; The precedence is: default_charset < input_encoding < iconv.input_encoding -;iconv.input_encoding = - -; Use of this INI entry is deprecated, use global internal_encoding instead. -; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. -; The precedence is: default_charset < internal_encoding < iconv.internal_encoding -;iconv.internal_encoding = - -; Use of this INI entry is deprecated, use global output_encoding instead. -; If empty, default_charset or output_encoding or iconv.output_encoding is used. -; The precedence is: default_charset < output_encoding < iconv.output_encoding -; To use an output encoding conversion, iconv's output handler must be set -; otherwise output encoding conversion cannot be performed. -;iconv.output_encoding = - -[imap] -; rsh/ssh logins are disabled by default. Use this INI entry if you want to -; enable them. Note that the IMAP library does not filter mailbox names before -; passing them to rsh/ssh command, thus passing untrusted data to this function -; with rsh/ssh enabled is insecure. -;imap.enable_insecure_rsh=0 - -[intl] -;intl.default_locale = -; This directive allows you to produce PHP errors when some error -; happens within intl functions. The value is the level of the error produced. -; Default is 0, which does not produce any errors. -;intl.error_level = E_WARNING -;intl.use_exceptions = 0 - -[sqlite3] -; Directory pointing to SQLite3 extensions -; http://php.net/sqlite3.extension-dir -;sqlite3.extension_dir = - -; SQLite defensive mode flag (only available from SQLite 3.26+) -; When the defensive flag is enabled, language features that allow ordinary -; SQL to deliberately corrupt the database file are disabled. This forbids -; writing directly to the schema, shadow tables (eg. FTS data tables), or -; the sqlite_dbpage virtual table. -; https://www.sqlite.org/c3ref/c_dbconfig_defensive.html -; (for older SQLite versions, this flag has no use) -;sqlite3.defensive = 1 - -[Pcre] -; PCRE library backtracking limit. -; http://php.net/pcre.backtrack-limit -;pcre.backtrack_limit=100000 - -; PCRE library recursion limit. -; Please note that if you set this value to a high number you may consume all -; the available process stack and eventually crash PHP (due to reaching the -; stack size limit imposed by the Operating System). -; http://php.net/pcre.recursion-limit -;pcre.recursion_limit=100000 - -; Enables or disables JIT compilation of patterns. This requires the PCRE -; library to be compiled with JIT support. -;pcre.jit=1 - -[Pdo] -; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" -; http://php.net/pdo-odbc.connection-pooling -;pdo_odbc.connection_pooling=strict - -;pdo_odbc.db2_instance_name - -[Pdo_mysql] -; Default socket name for local MySQL connects. If empty, uses the built-in -; MySQL defaults. -pdo_mysql.default_socket= - -[Phar] -; http://php.net/phar.readonly -;phar.readonly = On - -; http://php.net/phar.require-hash -;phar.require_hash = On - -;phar.cache_list = - -[mail function] -; For Win32 only. -; http://php.net/smtp -SMTP = localhost -; http://php.net/smtp-port -smtp_port = 25 - -; For Win32 only. -; http://php.net/sendmail-from -;sendmail_from = me@example.com - -; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). -; http://php.net/sendmail-path -;sendmail_path = - -; Force the addition of the specified parameters to be passed as extra parameters -; to the sendmail binary. These parameters will always replace the value of -; the 5th parameter to mail(). -;mail.force_extra_parameters = - -; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename -mail.add_x_header = Off - -; The path to a log file that will log all mail() calls. Log entries include -; the full path of the script, line number, To address and headers. -;mail.log = -; Log mail to syslog (Event Log on Windows). -;mail.log = syslog - -[ODBC] -; http://php.net/odbc.default-db -;odbc.default_db = Not yet implemented - -; http://php.net/odbc.default-user -;odbc.default_user = Not yet implemented - -; http://php.net/odbc.default-pw -;odbc.default_pw = Not yet implemented - -; Controls the ODBC cursor model. -; Default: SQL_CURSOR_STATIC (default). -;odbc.default_cursortype - -; Allow or prevent persistent links. -; http://php.net/odbc.allow-persistent -odbc.allow_persistent = On - -; Check that a connection is still valid before reuse. -; http://php.net/odbc.check-persistent -odbc.check_persistent = On - -; Maximum number of persistent links. -1 means no limit. -; http://php.net/odbc.max-persistent -odbc.max_persistent = -1 - -; Maximum number of links (persistent + non-persistent). -1 means no limit. -; http://php.net/odbc.max-links -odbc.max_links = -1 - -; Handling of LONG fields. Returns number of bytes to variables. 0 means -; passthru. -; http://php.net/odbc.defaultlrl -odbc.defaultlrl = 4096 - -; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. -; See the documentation on odbc_binmode and odbc_longreadlen for an explanation -; of odbc.defaultlrl and odbc.defaultbinmode -; http://php.net/odbc.defaultbinmode -odbc.defaultbinmode = 1 - -[MySQLi] - -; Maximum number of persistent links. -1 means no limit. -; http://php.net/mysqli.max-persistent -mysqli.max_persistent = -1 - -; Allow accessing, from PHP's perspective, local files with LOAD DATA statements -; http://php.net/mysqli.allow_local_infile -;mysqli.allow_local_infile = On - -; Allow or prevent persistent links. -; http://php.net/mysqli.allow-persistent -mysqli.allow_persistent = On - -; Maximum number of links. -1 means no limit. -; http://php.net/mysqli.max-links -mysqli.max_links = -1 - -; Default port number for mysqli_connect(). If unset, mysqli_connect() will use -; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the -; compile-time value defined MYSQL_PORT (in that order). Win32 will only look -; at MYSQL_PORT. -; http://php.net/mysqli.default-port -mysqli.default_port = 3306 - -; Default socket name for local MySQL connects. If empty, uses the built-in -; MySQL defaults. -; http://php.net/mysqli.default-socket -mysqli.default_socket = - -; Default host for mysqli_connect() (doesn't apply in safe mode). -; http://php.net/mysqli.default-host -mysqli.default_host = - -; Default user for mysqli_connect() (doesn't apply in safe mode). -; http://php.net/mysqli.default-user -mysqli.default_user = - -; Default password for mysqli_connect() (doesn't apply in safe mode). -; Note that this is generally a *bad* idea to store passwords in this file. -; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") -; and reveal this password! And of course, any users with read access to this -; file will be able to reveal the password as well. -; http://php.net/mysqli.default-pw -mysqli.default_pw = - -; Allow or prevent reconnect -mysqli.reconnect = Off - -[mysqlnd] -; Enable / Disable collection of general statistics by mysqlnd which can be -; used to tune and monitor MySQL operations. -mysqlnd.collect_statistics = On - -; Enable / Disable collection of memory usage statistics by mysqlnd which can be -; used to tune and monitor MySQL operations. -mysqlnd.collect_memory_statistics = Off - -; Records communication from all extensions using mysqlnd to the specified log -; file. -; http://php.net/mysqlnd.debug -;mysqlnd.debug = - -; Defines which queries will be logged. -;mysqlnd.log_mask = 0 - -; Default size of the mysqlnd memory pool, which is used by result sets. -;mysqlnd.mempool_default_size = 16000 - -; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. -;mysqlnd.net_cmd_buffer_size = 2048 - -; Size of a pre-allocated buffer used for reading data sent by the server in -; bytes. -;mysqlnd.net_read_buffer_size = 32768 - -; Timeout for network requests in seconds. -;mysqlnd.net_read_timeout = 31536000 - -; SHA-256 Authentication Plugin related. File with the MySQL server public RSA -; key. -;mysqlnd.sha256_server_public_key = - -[OCI8] - -; Connection: Enables privileged connections using external -; credentials (OCI_SYSOPER, OCI_SYSDBA) -; http://php.net/oci8.privileged-connect -;oci8.privileged_connect = Off - -; Connection: The maximum number of persistent OCI8 connections per -; process. Using -1 means no limit. -; http://php.net/oci8.max-persistent -;oci8.max_persistent = -1 - -; Connection: The maximum number of seconds a process is allowed to -; maintain an idle persistent connection. Using -1 means idle -; persistent connections will be maintained forever. -; http://php.net/oci8.persistent-timeout -;oci8.persistent_timeout = -1 - -; Connection: The number of seconds that must pass before issuing a -; ping during oci_pconnect() to check the connection validity. When -; set to 0, each oci_pconnect() will cause a ping. Using -1 disables -; pings completely. -; http://php.net/oci8.ping-interval -;oci8.ping_interval = 60 - -; Connection: Set this to a user chosen connection class to be used -; for all pooled server requests with Oracle 11g Database Resident -; Connection Pooling (DRCP). To use DRCP, this value should be set to -; the same string for all web servers running the same application, -; the database pool must be configured, and the connection string must -; specify to use a pooled server. -;oci8.connection_class = - -; High Availability: Using On lets PHP receive Fast Application -; Notification (FAN) events generated when a database node fails. The -; database must also be configured to post FAN events. -;oci8.events = Off - -; Tuning: This option enables statement caching, and specifies how -; many statements to cache. Using 0 disables statement caching. -; http://php.net/oci8.statement-cache-size -;oci8.statement_cache_size = 20 - -; Tuning: Enables statement prefetching and sets the default number of -; rows that will be fetched automatically after statement execution. -; http://php.net/oci8.default-prefetch -;oci8.default_prefetch = 100 - -; Compatibility. Using On means oci_close() will not close -; oci_connect() and oci_new_connect() connections. -; http://php.net/oci8.old-oci-close-semantics -;oci8.old_oci_close_semantics = Off - -[PostgreSQL] -; Allow or prevent persistent links. -; http://php.net/pgsql.allow-persistent -pgsql.allow_persistent = On - -; Detect broken persistent links always with pg_pconnect(). -; Auto reset feature requires a little overheads. -; http://php.net/pgsql.auto-reset-persistent -pgsql.auto_reset_persistent = Off - -; Maximum number of persistent links. -1 means no limit. -; http://php.net/pgsql.max-persistent -pgsql.max_persistent = -1 - -; Maximum number of links (persistent+non persistent). -1 means no limit. -; http://php.net/pgsql.max-links -pgsql.max_links = -1 - -; Ignore PostgreSQL backends Notice message or not. -; Notice message logging require a little overheads. -; http://php.net/pgsql.ignore-notice -pgsql.ignore_notice = 0 - -; Log PostgreSQL backends Notice message or not. -; Unless pgsql.ignore_notice=0, module cannot log notice message. -; http://php.net/pgsql.log-notice -pgsql.log_notice = 0 - -[bcmath] -; Number of decimal digits for all bcmath functions. -; http://php.net/bcmath.scale -bcmath.scale = 0 - -[browscap] -; http://php.net/browscap -;browscap = extra/browscap.ini - -[Session] -; Handler used to store/retrieve data. -; http://php.net/session.save-handler -session.save_handler = files - -; Argument passed to save_handler. In the case of files, this is the path -; where data files are stored. Note: Windows users have to change this -; variable in order to use PHP's session functions. -; -; The path can be defined as: -; -; session.save_path = "N;/path" -; -; where N is an integer. Instead of storing all the session files in -; /path, what this will do is use subdirectories N-levels deep, and -; store the session data in those directories. This is useful if -; your OS has problems with many files in one directory, and is -; a more efficient layout for servers that handle many sessions. -; -; NOTE 1: PHP will not create this directory structure automatically. -; You can use the script in the ext/session dir for that purpose. -; NOTE 2: See the section on garbage collection below if you choose to -; use subdirectories for session storage -; -; The file storage module creates files using mode 600 by default. -; You can change that by using -; -; session.save_path = "N;MODE;/path" -; -; where MODE is the octal representation of the mode. Note that this -; does not overwrite the process's umask. -; http://php.net/session.save-path -;session.save_path = "/var/lib/php/sessions" - -; Whether to use strict session mode. -; Strict session mode does not accept an uninitialized session ID, and -; regenerates the session ID if the browser sends an uninitialized session ID. -; Strict mode protects applications from session fixation via a session adoption -; vulnerability. It is disabled by default for maximum compatibility, but -; enabling it is encouraged. -; https://wiki.php.net/rfc/strict_sessions -session.use_strict_mode = 0 - -; Whether to use cookies. -; http://php.net/session.use-cookies -session.use_cookies = 1 - -; http://php.net/session.cookie-secure -;session.cookie_secure = - -; This option forces PHP to fetch and use a cookie for storing and maintaining -; the session id. We encourage this operation as it's very helpful in combating -; session hijacking when not specifying and managing your own session id. It is -; not the be-all and end-all of session hijacking defense, but it's a good start. -; http://php.net/session.use-only-cookies -session.use_only_cookies = 1 - -; Name of the session (used as cookie name). -; http://php.net/session.name -session.name = PHPSESSID - -; Initialize session on request startup. -; http://php.net/session.auto-start -session.auto_start = 0 - -; Lifetime in seconds of cookie or, if 0, until browser is restarted. -; http://php.net/session.cookie-lifetime -session.cookie_lifetime = 0 - -; The path for which the cookie is valid. -; http://php.net/session.cookie-path -session.cookie_path = / - -; The domain for which the cookie is valid. -; http://php.net/session.cookie-domain -session.cookie_domain = - -; Whether or not to add the httpOnly flag to the cookie, which makes it -; inaccessible to browser scripting languages such as JavaScript. -; http://php.net/session.cookie-httponly -session.cookie_httponly = - -; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF) -; Current valid values are "Strict", "Lax" or "None". When using "None", -; make sure to include the quotes, as `none` is interpreted like `false` in ini files. -; https://tools.ietf.org/html/draft-west-first-party-cookies-07 -session.cookie_samesite = - -; Handler used to serialize data. php is the standard serializer of PHP. -; http://php.net/session.serialize-handler -session.serialize_handler = php - -; Defines the probability that the 'garbage collection' process is started on every -; session initialization. The probability is calculated by using gc_probability/gc_divisor, -; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. -; Default Value: 1 -; Development Value: 1 -; Production Value: 1 -; http://php.net/session.gc-probability -session.gc_probability = 0 - -; Defines the probability that the 'garbage collection' process is started on every -; session initialization. The probability is calculated by using gc_probability/gc_divisor, -; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. -; For high volume production servers, using a value of 1000 is a more efficient approach. -; Default Value: 100 -; Development Value: 1000 -; Production Value: 1000 -; http://php.net/session.gc-divisor -session.gc_divisor = 1000 - -; After this number of seconds, stored data will be seen as 'garbage' and -; cleaned up by the garbage collection process. -; http://php.net/session.gc-maxlifetime -session.gc_maxlifetime = 1440 - -; NOTE: If you are using the subdirectory option for storing session files -; (see session.save_path above), then garbage collection does *not* -; happen automatically. You will need to do your own garbage -; collection through a shell script, cron entry, or some other method. -; For example, the following script is the equivalent of setting -; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): -; find /path/to/sessions -cmin +24 -type f | xargs rm - -; Check HTTP Referer to invalidate externally stored URLs containing ids. -; HTTP_REFERER has to contain this substring for the session to be -; considered as valid. -; http://php.net/session.referer-check -session.referer_check = - -; Set to {nocache,private,public,} to determine HTTP caching aspects -; or leave this empty to avoid sending anti-caching headers. -; http://php.net/session.cache-limiter -session.cache_limiter = nocache - -; Document expires after n minutes. -; http://php.net/session.cache-expire -session.cache_expire = 180 - -; trans sid support is disabled by default. -; Use of trans sid may risk your users' security. -; Use this option with caution. -; - User may send URL contains active session ID -; to other person via. email/irc/etc. -; - URL that contains active session ID may be stored -; in publicly accessible computer. -; - User may access your site with the same session ID -; always using URL stored in browser's history or bookmarks. -; http://php.net/session.use-trans-sid -session.use_trans_sid = 0 - -; Set session ID character length. This value could be between 22 to 256. -; Shorter length than default is supported only for compatibility reason. -; Users should use 32 or more chars. -; http://php.net/session.sid-length -; Default Value: 32 -; Development Value: 26 -; Production Value: 26 -session.sid_length = 26 - -; The URL rewriter will look for URLs in a defined set of HTML tags. -;

is special; if you include them here, the rewriter will -; add a hidden field with the info which is otherwise appended -; to URLs. tag's action attribute URL will not be modified -; unless it is specified. -; Note that all valid entries require a "=", even if no value follows. -; Default Value: "a=href,area=href,frame=src,form=" -; Development Value: "a=href,area=href,frame=src,form=" -; Production Value: "a=href,area=href,frame=src,form=" -; http://php.net/url-rewriter.tags -session.trans_sid_tags = "a=href,area=href,frame=src,form=" - -; URL rewriter does not rewrite absolute URLs by default. -; To enable rewrites for absolute paths, target hosts must be specified -; at RUNTIME. i.e. use ini_set() -; tags is special. PHP will check action attribute's URL regardless -; of session.trans_sid_tags setting. -; If no host is defined, HTTP_HOST will be used for allowed host. -; Example value: php.net,www.php.net,wiki.php.net -; Use "," for multiple hosts. No spaces are allowed. -; Default Value: "" -; Development Value: "" -; Production Value: "" -;session.trans_sid_hosts="" - -; Define how many bits are stored in each character when converting -; the binary hash data to something readable. -; Possible values: -; 4 (4 bits: 0-9, a-f) -; 5 (5 bits: 0-9, a-v) -; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") -; Default Value: 4 -; Development Value: 5 -; Production Value: 5 -; http://php.net/session.hash-bits-per-character -session.sid_bits_per_character = 5 - -; Enable upload progress tracking in $_SESSION -; Default Value: On -; Development Value: On -; Production Value: On -; http://php.net/session.upload-progress.enabled -;session.upload_progress.enabled = On - -; Cleanup the progress information as soon as all POST data has been read -; (i.e. upload completed). -; Default Value: On -; Development Value: On -; Production Value: On -; http://php.net/session.upload-progress.cleanup -;session.upload_progress.cleanup = On - -; A prefix used for the upload progress key in $_SESSION -; Default Value: "upload_progress_" -; Development Value: "upload_progress_" -; Production Value: "upload_progress_" -; http://php.net/session.upload-progress.prefix -;session.upload_progress.prefix = "upload_progress_" - -; The index name (concatenated with the prefix) in $_SESSION -; containing the upload progress information -; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" -; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" -; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" -; http://php.net/session.upload-progress.name -;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" - -; How frequently the upload progress should be updated. -; Given either in percentages (per-file), or in bytes -; Default Value: "1%" -; Development Value: "1%" -; Production Value: "1%" -; http://php.net/session.upload-progress.freq -;session.upload_progress.freq = "1%" - -; The minimum delay between updates, in seconds -; Default Value: 1 -; Development Value: 1 -; Production Value: 1 -; http://php.net/session.upload-progress.min-freq -;session.upload_progress.min_freq = "1" - -; Only write session data when session data is changed. Enabled by default. -; http://php.net/session.lazy-write -;session.lazy_write = On - -[Assertion] -; Switch whether to compile assertions at all (to have no overhead at run-time) -; -1: Do not compile at all -; 0: Jump over assertion at run-time -; 1: Execute assertions -; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1) -; Default Value: 1 -; Development Value: 1 -; Production Value: -1 -; http://php.net/zend.assertions -zend.assertions = -1 - -; Assert(expr); active by default. -; http://php.net/assert.active -;assert.active = On - -; Throw an AssertionError on failed assertions -; http://php.net/assert.exception -;assert.exception = On - -; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active) -; http://php.net/assert.warning -;assert.warning = On - -; Don't bail out by default. -; http://php.net/assert.bail -;assert.bail = Off - -; User-function to be called if an assertion fails. -; http://php.net/assert.callback -;assert.callback = 0 - -; Eval the expression with current error_reporting(). Set to true if you want -; error_reporting(0) around the eval(). -; http://php.net/assert.quiet-eval -;assert.quiet_eval = 0 - -[COM] -; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs -; http://php.net/com.typelib-file -;com.typelib_file = - -; allow Distributed-COM calls -; http://php.net/com.allow-dcom -;com.allow_dcom = true - -; autoregister constants of a component's typlib on com_load() -; http://php.net/com.autoregister-typelib -;com.autoregister_typelib = true - -; register constants casesensitive -; http://php.net/com.autoregister-casesensitive -;com.autoregister_casesensitive = false - -; show warnings on duplicate constant registrations -; http://php.net/com.autoregister-verbose -;com.autoregister_verbose = true - -; The default character set code-page to use when passing strings to and from COM objects. -; Default: system ANSI code page -;com.code_page= - -[mbstring] -; language for internal character representation. -; This affects mb_send_mail() and mbstring.detect_order. -; http://php.net/mbstring.language -;mbstring.language = Japanese - -; Use of this INI entry is deprecated, use global internal_encoding instead. -; internal/script encoding. -; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*) -; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. -; The precedence is: default_charset < internal_encoding < iconv.internal_encoding -;mbstring.internal_encoding = - -; Use of this INI entry is deprecated, use global input_encoding instead. -; http input encoding. -; mbstring.encoding_translation = On is needed to use this setting. -; If empty, default_charset or input_encoding or mbstring.input is used. -; The precedence is: default_charset < input_encoding < mbstring.http_input -; http://php.net/mbstring.http-input -;mbstring.http_input = - -; Use of this INI entry is deprecated, use global output_encoding instead. -; http output encoding. -; mb_output_handler must be registered as output buffer to function. -; If empty, default_charset or output_encoding or mbstring.http_output is used. -; The precedence is: default_charset < output_encoding < mbstring.http_output -; To use an output encoding conversion, mbstring's output handler must be set -; otherwise output encoding conversion cannot be performed. -; http://php.net/mbstring.http-output -;mbstring.http_output = - -; enable automatic encoding translation according to -; mbstring.internal_encoding setting. Input chars are -; converted to internal encoding by setting this to On. -; Note: Do _not_ use automatic encoding translation for -; portable libs/applications. -; http://php.net/mbstring.encoding-translation -;mbstring.encoding_translation = Off - -; automatic encoding detection order. -; "auto" detect order is changed according to mbstring.language -; http://php.net/mbstring.detect-order -;mbstring.detect_order = auto - -; substitute_character used when character cannot be converted -; one from another -; http://php.net/mbstring.substitute-character -;mbstring.substitute_character = none - -; overload(replace) single byte functions by mbstring functions. -; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), -; etc. Possible values are 0,1,2,4 or combination of them. -; For example, 7 for overload everything. -; 0: No overload -; 1: Overload mail() function -; 2: Overload str*() functions -; 4: Overload ereg*() functions -; http://php.net/mbstring.func-overload -;mbstring.func_overload = 0 - -; enable strict encoding detection. -; Default: Off -;mbstring.strict_detection = On - -; This directive specifies the regex pattern of content types for which mb_output_handler() -; is activated. -; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) -;mbstring.http_output_conv_mimetype= - -; This directive specifies maximum stack depth for mbstring regular expressions. It is similar -; to the pcre.recursion_limit for PCRE. -; Default: 100000 -;mbstring.regex_stack_limit=100000 - -; This directive specifies maximum retry count for mbstring regular expressions. It is similar -; to the pcre.backtrack_limit for PCRE. -; Default: 1000000 -;mbstring.regex_retry_limit=1000000 - -[gd] -; Tell the jpeg decode to ignore warnings and try to create -; a gd image. The warning will then be displayed as notices -; disabled by default -; http://php.net/gd.jpeg-ignore-warning -;gd.jpeg_ignore_warning = 1 - -[exif] -; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. -; With mbstring support this will automatically be converted into the encoding -; given by corresponding encode setting. When empty mbstring.internal_encoding -; is used. For the decode settings you can distinguish between motorola and -; intel byte order. A decode setting cannot be empty. -; http://php.net/exif.encode-unicode -;exif.encode_unicode = ISO-8859-15 - -; http://php.net/exif.decode-unicode-motorola -;exif.decode_unicode_motorola = UCS-2BE - -; http://php.net/exif.decode-unicode-intel -;exif.decode_unicode_intel = UCS-2LE - -; http://php.net/exif.encode-jis -;exif.encode_jis = - -; http://php.net/exif.decode-jis-motorola -;exif.decode_jis_motorola = JIS - -; http://php.net/exif.decode-jis-intel -;exif.decode_jis_intel = JIS - -[Tidy] -; The path to a default tidy configuration file to use when using tidy -; http://php.net/tidy.default-config -;tidy.default_config = /usr/local/lib/php/default.tcfg - -; Should tidy clean and repair output automatically? -; WARNING: Do not use this option if you are generating non-html content -; such as dynamic images -; http://php.net/tidy.clean-output -tidy.clean_output = Off - -[soap] -; Enables or disables WSDL caching feature. -; http://php.net/soap.wsdl-cache-enabled -soap.wsdl_cache_enabled=1 - -; Sets the directory name where SOAP extension will put cache files. -; http://php.net/soap.wsdl-cache-dir -soap.wsdl_cache_dir="/tmp" - -; (time to live) Sets the number of second while cached file will be used -; instead of original one. -; http://php.net/soap.wsdl-cache-ttl -soap.wsdl_cache_ttl=86400 - -; Sets the size of the cache limit. (Max. number of WSDL files to cache) -soap.wsdl_cache_limit = 5 - -[sysvshm] -; A default size of the shared memory segment -;sysvshm.init_mem = 10000 - -[ldap] -; Sets the maximum number of open links or -1 for unlimited. -ldap.max_links = -1 - -[dba] -;dba.default_handler= - -[opcache] -; Determines if Zend OPCache is enabled -;opcache.enable=1 - -; Determines if Zend OPCache is enabled for the CLI version of PHP -;opcache.enable_cli=0 - -; The OPcache shared memory storage size. -;opcache.memory_consumption=128 - -; The amount of memory for interned strings in Mbytes. -;opcache.interned_strings_buffer=8 - -; The maximum number of keys (scripts) in the OPcache hash table. -; Only numbers between 200 and 1000000 are allowed. -;opcache.max_accelerated_files=10000 - -; The maximum percentage of "wasted" memory until a restart is scheduled. -;opcache.max_wasted_percentage=5 - -; When this directive is enabled, the OPcache appends the current working -; directory to the script key, thus eliminating possible collisions between -; files with the same name (basename). Disabling the directive improves -; performance, but may break existing applications. -;opcache.use_cwd=1 - -; When disabled, you must reset the OPcache manually or restart the -; webserver for changes to the filesystem to take effect. -;opcache.validate_timestamps=1 - -; How often (in seconds) to check file timestamps for changes to the shared -; memory storage allocation. ("1" means validate once per second, but only -; once per request. "0" means always validate) -;opcache.revalidate_freq=2 - -; Enables or disables file search in include_path optimization -;opcache.revalidate_path=0 - -; If disabled, all PHPDoc comments are dropped from the code to reduce the -; size of the optimized code. -;opcache.save_comments=1 - -; Allow file existence override (file_exists, etc.) performance feature. -;opcache.enable_file_override=0 - -; A bitmask, where each bit enables or disables the appropriate OPcache -; passes -;opcache.optimization_level=0x7FFFBFFF - -;opcache.dups_fix=0 - -; The location of the OPcache blacklist file (wildcards allowed). -; Each OPcache blacklist file is a text file that holds the names of files -; that should not be accelerated. The file format is to add each filename -; to a new line. The filename may be a full path or just a file prefix -; (i.e., /var/www/x blacklists all the files and directories in /var/www -; that start with 'x'). Line starting with a ; are ignored (comments). -;opcache.blacklist_filename= - -; Allows exclusion of large files from being cached. By default all files -; are cached. -;opcache.max_file_size=0 - -; Check the cache checksum each N requests. -; The default value of "0" means that the checks are disabled. -;opcache.consistency_checks=0 - -; How long to wait (in seconds) for a scheduled restart to begin if the cache -; is not being accessed. -;opcache.force_restart_timeout=180 - -; OPcache error_log file name. Empty string assumes "stderr". -;opcache.error_log= - -; All OPcache errors go to the Web server log. -; By default, only fatal errors (level 0) or errors (level 1) are logged. -; You can also enable warnings (level 2), info messages (level 3) or -; debug messages (level 4). -;opcache.log_verbosity_level=1 - -; Preferred Shared Memory back-end. Leave empty and let the system decide. -;opcache.preferred_memory_model= - -; Protect the shared memory from unexpected writing during script execution. -; Useful for internal debugging only. -;opcache.protect_memory=0 - -; Allows calling OPcache API functions only from PHP scripts which path is -; started from specified string. The default "" means no restriction -;opcache.restrict_api= - -; Mapping base of shared memory segments (for Windows only). All the PHP -; processes have to map shared memory into the same address space. This -; directive allows to manually fix the "Unable to reattach to base address" -; errors. -;opcache.mmap_base= - -; Facilitates multiple OPcache instances per user (for Windows only). All PHP -; processes with the same cache ID and user share an OPcache instance. -;opcache.cache_id= - -; Enables and sets the second level cache directory. -; It should improve performance when SHM memory is full, at server restart or -; SHM reset. The default "" disables file based caching. -;opcache.file_cache= - -; Enables or disables opcode caching in shared memory. -;opcache.file_cache_only=0 - -; Enables or disables checksum validation when script loaded from file cache. -;opcache.file_cache_consistency_checks=1 - -; Implies opcache.file_cache_only=1 for a certain process that failed to -; reattach to the shared memory (for Windows only). Explicitly enabled file -; cache is required. -;opcache.file_cache_fallback=1 - -; Enables or disables copying of PHP code (text segment) into HUGE PAGES. -; This should improve performance, but requires appropriate OS configuration. -;opcache.huge_code_pages=1 - -; Validate cached file permissions. -;opcache.validate_permission=0 - -; Prevent name collisions in chroot'ed environment. -;opcache.validate_root=0 - -; If specified, it produces opcode dumps for debugging different stages of -; optimizations. -;opcache.opt_debug_level=0 - -; Specifies a PHP script that is going to be compiled and executed at server -; start-up. -; http://php.net/opcache.preload -;opcache.preload= - -; Preloading code as root is not allowed for security reasons. This directive -; facilitates to let the preloading to be run as another user. -; http://php.net/opcache.preload_user -;opcache.preload_user= - -; Prevents caching files that are less than this number of seconds old. It -; protects from caching of incompletely updated files. In case all file updates -; on your site are atomic, you may increase performance by setting it to "0". -;opcache.file_update_protection=2 - -; Absolute path used to store shared lockfiles (for *nix only). -;opcache.lockfile_path=/tmp - -[curl] -; A default value for the CURLOPT_CAINFO option. This is required to be an -; absolute path. -;curl.cainfo = - -[openssl] -; The location of a Certificate Authority (CA) file on the local filesystem -; to use when verifying the identity of SSL/TLS peers. Most users should -; not specify a value for this directive as PHP will attempt to use the -; OS-managed cert stores in its absence. If specified, this value may still -; be overridden on a per-stream basis via the "cafile" SSL stream context -; option. -;openssl.cafile= - -; If openssl.cafile is not specified or if the CA file is not found, the -; directory pointed to by openssl.capath is searched for a suitable -; certificate. This value must be a correctly hashed certificate directory. -; Most users should not specify a value for this directive as PHP will -; attempt to use the OS-managed cert stores in its absence. If specified, -; this value may still be overridden on a per-stream basis via the "capath" -; SSL stream context option. -;openssl.capath= - -[ffi] -; FFI API restriction. Possible values: -; "preload" - enabled in CLI scripts and preloaded files (default) -; "false" - always disabled -; "true" - always enabled -;ffi.enable=preload - -; List of headers files to preload, wildcard patterns allowed. -;ffi.preload= diff --git a/backups/redinessprobe-wp.sh b/backups/redinessprobe-wp.sh deleted file mode 100644 index 4818535a..00000000 --- a/backups/redinessprobe-wp.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -# ----------------------------------------------------------------------------------------------------- -export WP_FILE="/usr/share/nginx/subdomain/www/wp-config.php" - -sed -i '/^define.*NONCE_SALT.*/a define(\'\'WP_SITEURL\'', '\'http://localhost/\'');' $WP_FILE || exit 9 -sed -i '/^define.*NONCE_SALT.*/a define(\'\'WP_HOME\'', '\'http://localhost/\'');' $WP_FILE || exit 9 - -wget -q --spider localhost && echo pass-localhost || exit 9 -sleep 1 -wget -q --spider localhost/wp-login.php && echo pass-wp-login.php|| exit 9 - -sed -i '/http\:\/\/localhost/d' $WP_FILE || exit 9 -# --------------------------------------------------- diff --git a/backups/validation.sh b/backups/validation.sh deleted file mode 100644 index 96663d14..00000000 --- a/backups/validation.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - -export DIR=`pwd` -exec > >(tee -a $DIR/script.log) 2>&1 - -function install { - -# kubectl -# ---------------- -curl -fsSLO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl -chmod +x ./kubectl -mv ./kubectl /usr/local/bin/kubectl -# setenv -# ----------- -. ./setenv.sh - -# krew -# --------- -set -x; cd "$(mktemp -d)" && -OS="$(uname | tr '[:upper:]' '[:lower:]')" && -ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && -KREW="krew-${OS}_${ARCH}" && -curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && -tar zxvf "${KREW}.tar.gz" && -./"${KREW}" install krew && -export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" >> ~/.bashrc && . ~/.bashrc - -# kubeval -# ------------------- -curl -fsSLO https://github.com/instrumenta/kubeval/releases/latest/download/kubeval-linux-amd64.tar.gz -tar xf kubeval-linux-amd64.tar.gz && -cp kubeval /usr/local/bin - -# kube-score -# --------------- -kubectl krew install score - -} - -install - -default () { - -cd $DIR/build -find . -type f -exec kubeval --ignore-missing-schemas '{}' \; | tee -a $DIR/script.log - -find . -type f -exec kubectl score --output-format ci '{}' \; | tee -a $DIR/script.log - -cat $DIR/script.log | egrep -v -i "script.log|warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file|ERR" && exit 9 || echo VALIDATION_PASS_$opt - -} - - -opt=$1 - -case $opt in - -default) - -default -;; - -env) - -env -;; - - *) - echo "validation job shell script utility taking variables from env" - echo "Usage: $0 {default|env}" - -esac - - - - - - - -# ------------------------------------------------------------------------------------------------------------------------------------------- -#cat $DIR/script.log | egrep -v -i "script.log|warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file|ERR" && exit 9 || echo VALIDATION_PASS_$opt -# -------------------------------------------------------------------------------------------- - diff --git a/multidev-sync.sh b/multidev-sync.sh deleted file mode 100644 index 67385c44..00000000 --- a/multidev-sync.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -NAMESPACE=medicalalert-web - -if [ "$ENV" = "dev" ]; then - pods=`kubectl get pods --no-headers -o custom-columns=":metadata.name" -n $NAMESPACE` - for i in $pods; do - kubectl exec $i -n $NAMESPACE -- apt-key adv --fetch-keys 'https://packages.sury.org/php/apt.gpg' > /dev/null 2>&1 - kubectl exec $i -n $NAMESPACE -- apt-get update - kubectl exec $i -n $NAMESPACE -- apt-get install rclone rsync -y - kubectl exec $i -n $NAMESPACE -- sh -c 'for j in dev02 dev03 dev04 dev05; do cd /usr/share/nginx/subdomain && rclone sync --exclude wp-content/uploads/** $j/ /usr/share/nginx/subdomain/$j-web -q && echo ---sync-done from efs to local for $j-web --- && cd $j-web/wp-content && [ -L uploads ] && [ -e uploads ]] && echo ----symlink-exist--- || ln -s /usr/share/nginx/subdomain/$j/wp-content/uploads uploads && chown -R nginx:nginx /usr/share/nginx/subdomain/$j-web;done' - - done -else - - echo ----The env is $ENV and thus no multidev applicable---- - -fi diff --git a/schedule-pipeline.sh b/schedule-pipeline.sh deleted file mode 100644 index b8ef6e64..00000000 --- a/schedule-pipeline.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - -exec > >(tee -a script.log) 2>&1 - -# Install the required packages # -# -------------------------------------------------------------- -apk upgrade && apk add --update curl wget zip unzip coreutils - -cat schedule-setenv.sh && . ./schedule-setenv.sh - -opt=$1 - -case $opt in - -create-schedule-pipelines) - - -# ----------------------------------------------------------------------------------------------------------------------------------------------------- -#curl --request POST --url "https://api.bitbucket.org/2.0/repositories/$BITBUCKET_WORKSPACE/$BITBUCKET_REPO_SLUG/pipelines_config/schedules" --header "Authorization: Bearer $TOKEN" --header 'Accept: application/json' --header "Content-Type: application/json" --data { \"type\": \"pipeline_schedule\", \"enabled\": true, \"target\": { \"ref_type\": \"branch\", \"type\": \"pipeline_ref_target\", \"ref_name\": \"$BRANCH_NAME\", \"selector\": { \"type\": \"custom\", \"pattern\": \"$PIPELINE_NAME\" } }, \"cron_pattern\": \"$CRONTIME\" } -# ----------------------------------------------------------------------------------- - - -curl -X POST https://api.bitbucket.org/2.0/repositories/connectamerica/100plus-web/pipelines_config/schedules -H 'Content-Type: application/json' -H 'Accept: application/json' -H "Authorization: Bearer $TOKEN" -d "{ - \"type\": \"pipeline_schedule\", - \"enabled\": true, - \"target\": { - \"ref_type\": \"branch\", - \"type\": \"pipeline_ref_target\", - \"ref_name\": \"$BRANCH_NAME\", - \"selector\": { - \"type\": \"custom\", - \"pattern\": \"$PIPELINE_NAME\" - } - }, - \"cron_pattern\": \"$CRONTIME\" - }" - - - -echo "" && echo ----------------------------------- - -cat script.log | egrep -v "Errors:|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|Permission denied|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt - -;; - -delete-schedule-pipelines) - -for i in `curl -s --request GET --url "https://api.bitbucket.org/2.0/repositories/$BITBUCKET_WORKSPACE/$BITBUCKET_REPO_SLUG/pipelines_config/schedules" --header "Authorization: Bearer $TOKEN" --header 'Accept: application/json'| jq ".values[].target.selector.pattern+.values[].uuid" |awk -F'["{}]' '{print $3}'| uniq` - -do - -echo curl --location -g --request DELETE --url \'https://api.bitbucket.org/2.0/repositories/$BITBUCKET_WORKSPACE/$BITBUCKET_REPO_SLUG/pipelines_config/schedules/{$i}\' --header \'Authorization: Bearer $TOKEN\' > delete.sh - -chmod 755 delete.sh && ./delete.sh - -done - -cat script.log | egrep -v "Errors:|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|Permission denied|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt - -;; - - -list-schedule-pipelines) - -echo "" && echo ---------------------------------------------- - -curl -s --request GET --url "https://api.bitbucket.org/2.0/repositories/$BITBUCKET_WORKSPACE/$BITBUCKET_REPO_SLUG/pipelines_config/schedules" --header "Authorization: Bearer $TOKEN" --header 'Accept: application/json' | jq . - -echo "" - -cat script.log | egrep -v "Errors:|SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|Permission denied|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt - -;; - - *) - echo "script for schedule-pipelines" - echo "Usage: schedule-pipeline.sh {create-schedule-pipelines|delete-schedule-pipelines}" - echo "create-schedule-pipelines : create-schedule-pipelines" - echo "delete-schedule-pipelines : delete-schedule-pipelines" - echo "list-schedule-pipelines : list-schedule-pipelines" - - ;; -esac