Compare commits

...

8 Commits

Author SHA1 Message Date
felegy
e10fa1f2e0 ~ FIX composer outdated
All checks were successful
/ build-and-deploy (push) Successful in 2m48s
2025-09-03 12:30:59 +00:00
felegy
bfaba89985 + ADD Build environment 2025-09-03 12:27:41 +00:00
felegy
83aa042834 + ADD Build variables 2025-08-29 11:51:19 +00:00
felegy
cc84f76490 + ADD CI/CD 2025-08-29 11:44:13 +00:00
felegy
696fb9b22c + ADD keycloack.hvg.hu auth via SAML 2025-08-28 13:40:08 +00:00
felegy
1d2ee9e663 ~ UPD composer dependencies 2025-08-26 12:09:40 +00:00
felegy
dbb6916455 + ADD hvg theme images 2025-08-06 09:42:26 +00:00
felegy
7c8d2d60a7 + ADD robots.txt and ads.txt files 2025-08-04 14:10:44 +00:00
25 changed files with 687 additions and 561 deletions

View File

@@ -0,0 +1,11 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: runner-role
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'

View File

@@ -0,0 +1,11 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: runner-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: runner-role
subjects:
- kind: ServiceAccount
name: default

View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: act-runner-vol
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,75 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: act-runner
labels:
app: act-runner
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: act-runner
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: act-runner
spec:
containers:
- command:
- sh
- -c
- while ! nc -z localhost 2376 </dev/null; do echo 'waiting for docker daemon...';
sleep 5; done; /sbin/tini -- run.sh
env:
- name: DOCKER_HOST
value: tcp://localhost:2376
- name: DOCKER_CERT_PATH
value: /certs/client
- name: DOCKER_TLS_VERIFY
value: "1"
- name: GITEA_INSTANCE_URL
value: http://gitea-http.gitea.svc.cluster.local:3000
- name: GITEA_RUNNER_REGISTRATION_TOKEN
valueFrom:
secretKeyRef:
key: token
name: runner-secret
image: gitea/act_runner:nightly
imagePullPolicy: IfNotPresent
name: runner
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /certs
name: docker-certs
- mountPath: /data
name: runner-data
- env:
- name: DOCKER_TLS_CERTDIR
value: /certs
image: docker:23.0.6-dind
imagePullPolicy: IfNotPresent
name: daemon
securityContext:
privileged: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /certs
name: docker-certs
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
volumes:
- name: docker-certs
- name: runner-data
persistentVolumeClaim:
claimName: act-runner-vol

Binary file not shown.

17
.devops/gitea-values.yaml Normal file
View File

@@ -0,0 +1,17 @@
fullnameOverride: gitea
ingress:
enabled: 'false'
className: nginx
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: cloudflare-cluster-issuer
external-dns.alpha.kubernetes.io/hostname: git.hvgrt.hu
hosts:
- host: git.hvgrt.hu
paths:
- path: /
pathType: Prefix
tls:
- secretName: gitea-tls
hosts:
- git.hvgrt.hu

Binary file not shown.

15
.editorconfig Normal file
View File

@@ -0,0 +1,15 @@
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.php]
indent_size = 4
[*.md]
trim_trailing_whitespace = false

View File

@@ -0,0 +1,26 @@
{
"Verbose": false,
"Debug": false,
"IgnoreDefaults": false,
"SpacesAfterTabs": false,
"NoColor": false,
"Exclude": [
".git/",
"vendor/",
"web/wp/",
"web/app/",
"web/app/themes/",
"web/app/plugins/",
"web/app/languages"
],
"AllowedContentTypes": [],
"PassedFiles": [],
"Disable": {
"EndOfLine": false,
"Indentation": false,
"IndentSize": false,
"InsertFinalNewline": false,
"TrimTrailingWhitespace": false,
"MaxLineLength": false
}
}

1
.envrc Normal file
View File

@@ -0,0 +1 @@
export WP_PW=$(gopass show hvg/BLOG_ROOT_PWD)

54
.gitea/workflows/cd.yaml Normal file
View File

@@ -0,0 +1,54 @@
on:
push:
branches:
- main
- dev
env:
NAMESPACE: ${{ github.repository_owner }}
DOCKER_REGISTRY: ghcr.io
DOCKER_REPOSITORY: ${{ github.repository }}
jobs:
build-and-deploy:
env:
IMAGE: ${{ env.DOCKER_REGISTRY }}/${{ env.DOCKER_REPOSITORY }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install kpack-cli
env:
KPACK_CLI_VERSION: 0.13.0
KPACK_CLI_SHA256: 52f0c927a1350f4f1bb281575ec246f406fb96aa69dc974ed10a2fe52c538158
working-directory: /tmp
run: |
set -ex
curl -sLO "https://github.com/buildpacks-community/kpack-cli/releases/download/v${KPACK_CLI_VERSION}/kp-linux-amd64-${KPACK_CLI_VERSION}"
echo "${KPACK_CLI_SHA256} kp-linux-amd64-${KPACK_CLI_VERSION}" | sha256sum --check || exit 1
sudo mv kp-linux-amd64-${KPACK_CLI_VERSION} /usr/local/bin/kp
sudo chmod +x /usr/local/bin/kp
kp version
- name: Install kubectl
uses: azure/setup-kubectl@v4
- name: Configure kubectl
uses: azure/k8s-set-context@v1
with:
kubeconfig: ${{ secrets.KUBE_CONFIG }}
- name: Update kpack image
env:
SHA: ${{ github.sha }}
run: |
SHORT_SHA=$(git rev-parse --short HEAD)
echo "SHORT_SHA=${SHORT_SHA}" >> $GITHUB_ENV
IMAGE_NAME="${GITHUB_REPOSITORY#$GITHUB_REPOSITORY_OWNER/}-${GITHUB_REF##*/}"
echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
kp image patch $IMAGE_NAME --replace-additional-tag "${IMAGE}:sha-${SHORT_SHA}" --git-revision "${SHA}" -n $NAMESPACE
kp image status $IMAGE_NAME -n $NAMESPACE
- name: Wait for build to complete
run: |
BUILD=$(kubectl -n $NAMESPACE get image $IMAGE_NAME -o jsonpath='{.status.buildCounter}')
BUILD_REF=$(kubectl -n $NAMESPACE get image $IMAGE_NAME -o jsonpath='{.status.latestBuildRef}')
kp build logs $IMAGE_NAME -n $NAMESPACE --build ${BUILD}
kp build status $IMAGE_NAME -n $NAMESPACE -b $BUILD
if [ "$(kubectl -n $NAMESPACE get build $BUILD_REF -o jsonpath='{.status.conditions[0].status}')" != "True" ]; then exit 1; fi
# - name: Update Kubernetes deployment
# run: |
# kubectl set image deployment/my-app my-app=<registry>/<repository>:${{ github.sha }}

70
.github/workflows/cicd.yaml vendored Normal file
View File

@@ -0,0 +1,70 @@
name: CI
on:
push:
branches:
- main
- dev
env:
DESCRIPTION: "Wordpress Heroku App Image https://hvgblog.hu"
PHP_VERSION: ${{ vars.PHP_VERSION }}
DEPLOY_REPO: ${{ vars.DEPLOY_REPO }}
jobs:
check:
name: Check
runs-on: [ubuntu-latest]
steps:
- uses: actions/checkout@master
- uses: editorconfig-checker/action-editorconfig-checker@main
- name: EditorConfig Check
run: editorconfig-checker
- name: ShellCheck
uses: ludeeus/action-shellcheck@master
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: PHP security check
uses: symfonycorp/security-checker-action@v5
test:
name: Test
needs: [check]
runs-on: [ubuntu-latest]
steps:
- uses: actions/checkout@master
- uses: php-actions/composer@v6
with:
dev: yes
args: --ignore-platform-reqs
php_version: "${{ env.PHP_VERSION }}"
- uses: php-actions/composer@v6
with:
command: outdate
args: --strict --direct --ignore-platform-reqs
php_version: "${{ env.PHP_VERSION }}"
- uses: php-actions/composer@v6
with:
command: test
php_version: "${{ env.PHP_VERSION }}"
image_build:
name: Image Build
needs: [check,test]
runs-on: [ubuntu-latest]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: felegy/mirror-action@master
with:
REMOTE: git@${{ env.DEPLOY_REPO }}:${{ github.repository }}.git
SSH_CONFIG: |
Host ${{ env.DEPLOY_REPO }}
ProxyCommand cloudflared access ssh --hostname %h
GIT_SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
GIT_SSH_NO_VERIFY_HOST: "true"

4
.gitignore vendored
View File

@@ -25,7 +25,9 @@ web/.htaccess
.env
.env.*
*.env
.env.*
!.env.example
!.envrc
# Heroku bin
.heroku/*
@@ -44,6 +46,6 @@ wp-cli.local.yml
# Local gpg
/.gpg
# Local db backips
# Local db backups
*.sql
*.sql.gz

View File

@@ -9,7 +9,7 @@ config:
via: nginx
database: mariadb:11.4.5
webroot: web
xdebug: true
xdebug: false
config:
php: config/php.ini
vhosts: config/lando.conf.tpl
@@ -17,3 +17,9 @@ config:
services:
mailhog:
type: mailhog
tooling:
tar:
service: appserver
cmd:
- tar

16
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,16 @@
{
"[php]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "obliviousharmony.vscode-php-codesniffer"
},
"phpCodeSniffer.exclude": [
"**/vendor/**",
"web/wp",
"web/app/languages/",
"web/app/themes/hvg-blog-general/",
"web/app/themes/twentytwentyfive/",
"web/app/plugins/"
],
"phpCodeSniffer.autoloadPHPCSIntegration": true,
"phpCodeSniffer.autoExecutable": true
}

View File

@@ -22,7 +22,12 @@
}
],
"keywords": [
"bedrock", "composer", "roots", "wordpress", "wp", "wp-config"
"bedrock",
"composer",
"roots",
"wordpress",
"wp",
"wp-config"
],
"support": {
"issues": "https://github.com/roots/bedrock/issues",
@@ -32,11 +37,14 @@
{
"type": "composer",
"url": "https://wpackagist.org",
"only": ["wpackagist-plugin/*", "wpackagist-theme/*"]
"only": [
"wpackagist-plugin/*",
"wpackagist-theme/*"
]
},
{
"type": "vcs",
"url": "https://github.com/hvg-dev/hvg-blog-general"
"type": "vcs",
"url": "https://github.com/hvg-dev/hvg-blog-general"
}
],
"require": {
@@ -69,13 +77,13 @@
"wpackagist-plugin/wp-api-swaggerui": "^1.2",
"wpackagist-plugin/cloudflare": "^4.12",
"wpackagist-plugin/menu-image": "^3.13",
"wpackagist-plugin/code-snippets": "^3.6"
"wpackagist-plugin/code-snippets": "^3.6",
"wpackagist-plugin/saml-sso-wp-single-sign-on": "^1.4"
},
"require-dev": {
"heroku/heroku-buildpack-php": "*",
"roave/security-advisories": "dev-latest",
"laravel/pint": "^1.18"
"squizlabs/php_codesniffer": "^3.7.1",
"roave/security-advisories": "dev-latest"
},
"config": {
"optimize-autoloader": true,
@@ -89,15 +97,20 @@
"prefer-stable": true,
"extra": {
"installer-paths": {
"web/app/mu-plugins/{$name}/": ["type:wordpress-muplugin"],
"web/app/plugins/{$name}/": ["type:wordpress-plugin"],
"web/app/themes/{$name}/": ["type:wordpress-theme"]
"web/app/mu-plugins/{$name}/": [
"type:wordpress-muplugin"
],
"web/app/plugins/{$name}/": [
"type:wordpress-plugin"
],
"web/app/themes/{$name}/": [
"type:wordpress-theme"
]
},
"wordpress-install-dir": "web/wp"
},
"scripts": {
"project-init": "php -v",
"lint": "pint --test",
"lint:fix": "pint"
"test": "phpcs",
"project-init": "php -v"
}
}

364
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "1ff66c5f617ebae9a7e51e2035af2260",
"content-hash": "1a96336bfff331f530d08dd3602518a1",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -62,16 +62,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.351.10",
"version": "3.356.9",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "e179e6351fca44ca7fae58dad4c76ccb00a179ce"
"reference": "42e1ac9cbb06b98ead34e32bd565f262161b77ab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/e179e6351fca44ca7fae58dad4c76ccb00a179ce",
"reference": "e179e6351fca44ca7fae58dad4c76ccb00a179ce",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/42e1ac9cbb06b98ead34e32bd565f262161b77ab",
"reference": "42e1ac9cbb06b98ead34e32bd565f262161b77ab",
"shasum": ""
},
"require": {
@@ -153,9 +153,9 @@
"support": {
"forum": "https://github.com/aws/aws-sdk-php/discussions",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.351.10"
"source": "https://github.com/aws/aws-sdk-php/tree/3.356.9"
},
"time": "2025-07-30T18:09:54+00:00"
"time": "2025-09-02T18:03:41+00:00"
},
{
"name": "composer/installers",
@@ -367,22 +367,22 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.9.3",
"version": "7.10.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77"
"reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
"reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.5.3 || ^2.0.3",
"guzzlehttp/psr7": "^2.7.0",
"guzzlehttp/promises": "^2.3",
"guzzlehttp/psr7": "^2.8",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -473,7 +473,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.9.3"
"source": "https://github.com/guzzle/guzzle/tree/7.10.0"
},
"funding": [
{
@@ -489,20 +489,20 @@
"type": "tidelift"
}
],
"time": "2025-03-27T13:37:11+00:00"
"time": "2025-08-23T22:36:01+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.2.0",
"version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c"
"reference": "481557b130ef3790cf82b713667b43030dc9c957"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c",
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c",
"url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957",
"reference": "481557b130ef3790cf82b713667b43030dc9c957",
"shasum": ""
},
"require": {
@@ -510,7 +510,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
"type": "library",
"extra": {
@@ -556,7 +556,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.2.0"
"source": "https://github.com/guzzle/promises/tree/2.3.0"
},
"funding": [
{
@@ -572,20 +572,20 @@
"type": "tidelift"
}
],
"time": "2025-03-27T13:27:01+00:00"
"time": "2025-08-22T14:34:08+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.7.1",
"version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
"reference": "21dc724a0583619cd1652f673303492272778051"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051",
"reference": "21dc724a0583619cd1652f673303492272778051",
"shasum": ""
},
"require": {
@@ -601,7 +601,7 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "0.9.0",
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -672,7 +672,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.7.1"
"source": "https://github.com/guzzle/psr7/tree/2.8.0"
},
"funding": [
{
@@ -688,20 +688,20 @@
"type": "tidelift"
}
],
"time": "2025-03-27T12:30:47+00:00"
"time": "2025-08-23T21:21:41+00:00"
},
{
"name": "humanmade/s3-uploads",
"version": "3.0.9",
"version": "3.0.10",
"source": {
"type": "git",
"url": "https://github.com/humanmade/S3-Uploads.git",
"reference": "f5e9a7773afd8c78030e1b6a13580e83e521ba63"
"reference": "e84c535c3eeba3a28c8e37bc804abdaf4c9b0985"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/humanmade/S3-Uploads/zipball/f5e9a7773afd8c78030e1b6a13580e83e521ba63",
"reference": "f5e9a7773afd8c78030e1b6a13580e83e521ba63",
"url": "https://api.github.com/repos/humanmade/S3-Uploads/zipball/e84c535c3eeba3a28c8e37bc804abdaf4c9b0985",
"reference": "e84c535c3eeba3a28c8e37bc804abdaf4c9b0985",
"shasum": ""
},
"require": {
@@ -711,7 +711,8 @@
"require-dev": {
"humanmade/psalm-plugin-wordpress": "^1.0",
"pcov/clobber": "^2.0",
"phpunit/phpunit": "7.5"
"phpunit/phpunit": "7.5",
"yoast/phpunit-polyfills": "^4.0"
},
"type": "wordpress-plugin",
"autoload": {
@@ -739,7 +740,7 @@
"issues": "https://github.com/humanmade/s3-uploads/issues",
"source": "https://github.com/humanmade/s3-uploads"
},
"time": "2025-06-06T14:06:49+00:00"
"time": "2025-08-07T19:49:16+00:00"
},
{
"name": "hvg-dev/hvg-blog-general",
@@ -904,16 +905,16 @@
},
{
"name": "phpoption/phpoption",
"version": "1.9.3",
"version": "1.9.4",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
"reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54"
"reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54",
"reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d",
"reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d",
"shasum": ""
},
"require": {
@@ -921,7 +922,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
"phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34"
},
"type": "library",
"extra": {
@@ -963,7 +964,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
"source": "https://github.com/schmittjoh/php-option/tree/1.9.3"
"source": "https://github.com/schmittjoh/php-option/tree/1.9.4"
},
"funding": [
{
@@ -975,7 +976,7 @@
"type": "tidelift"
}
],
"time": "2024-07-20T21:41:07+00:00"
"time": "2025-08-21T11:53:16+00:00"
},
{
"name": "psr/http-client",
@@ -1611,7 +1612,7 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.32.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@@ -1670,7 +1671,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
},
"funding": [
{
@@ -1681,6 +1682,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -1690,7 +1695,7 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.32.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -1751,7 +1756,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
@@ -1762,6 +1767,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -1771,7 +1780,7 @@
},
{
"name": "symfony/polyfill-php80",
"version": "v1.32.0",
"version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
@@ -1831,7 +1840,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
},
"funding": [
{
@@ -1842,6 +1851,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -1953,15 +1966,15 @@
},
{
"name": "wpackagist-plugin/ad-inserter",
"version": "2.8.5",
"version": "2.8.6",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/ad-inserter/",
"reference": "tags/2.8.5"
"reference": "tags/2.8.6"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/ad-inserter.2.8.5.zip"
"url": "https://downloads.wordpress.org/plugin/ad-inserter.2.8.6.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
@@ -1989,15 +2002,15 @@
},
{
"name": "wpackagist-plugin/code-snippets",
"version": "3.6.8",
"version": "3.7.0",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/code-snippets/",
"reference": "tags/3.6.8"
"reference": "tags/3.7.0"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/code-snippets.3.6.8.zip"
"url": "https://downloads.wordpress.org/plugin/code-snippets.3.7.0.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
@@ -2077,6 +2090,24 @@
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/menu-image/"
},
{
"name": "wpackagist-plugin/saml-sso-wp-single-sign-on",
"version": "1.4.8",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/saml-sso-wp-single-sign-on/",
"reference": "tags/1.4.8"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/saml-sso-wp-single-sign-on.1.4.8.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/saml-sso-wp-single-sign-on/"
},
{
"name": "wpackagist-plugin/two-factor",
"version": "0.14.0",
@@ -2133,15 +2164,15 @@
},
{
"name": "wpackagist-plugin/wp-webhooks",
"version": "3.3.5",
"version": "3.3.7",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/wp-webhooks/",
"reference": "tags/3.3.5"
"reference": "tags/3.3.7"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/wp-webhooks.3.3.5.zip"
"url": "https://downloads.wordpress.org/plugin/wp-webhooks.3.3.7.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
@@ -2151,15 +2182,15 @@
},
{
"name": "wpackagist-theme/twentytwentyfive",
"version": "1.2",
"version": "1.3",
"source": {
"type": "svn",
"url": "https://themes.svn.wordpress.org/twentytwentyfive/",
"reference": "1.2"
"reference": "1.3"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/theme/twentytwentyfive.1.2.zip"
"url": "https://downloads.wordpress.org/theme/twentytwentyfive.1.3.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
@@ -2171,16 +2202,16 @@
"packages-dev": [
{
"name": "heroku/heroku-buildpack-php",
"version": "v270",
"version": "v272",
"source": {
"type": "git",
"url": "https://github.com/heroku/heroku-buildpack-php.git",
"reference": "24edfcc0c6961cab7851a9c483a6a690531ad029"
"reference": "ade15b1fd136231cfb6340f4421f230b5dc3a547"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/24edfcc0c6961cab7851a9c483a6a690531ad029",
"reference": "24edfcc0c6961cab7851a9c483a6a690531ad029",
"url": "https://api.github.com/repos/heroku/heroku-buildpack-php/zipball/ade15b1fd136231cfb6340f4421f230b5dc3a547",
"reference": "ade15b1fd136231cfb6340f4421f230b5dc3a547",
"shasum": ""
},
"bin": [
@@ -2210,78 +2241,9 @@
],
"support": {
"issues": "https://github.com/heroku/heroku-buildpack-php/issues",
"source": "https://github.com/heroku/heroku-buildpack-php/tree/v270"
"source": "https://github.com/heroku/heroku-buildpack-php/tree/v272"
},
"time": "2025-07-30T13:37:54+00:00"
},
{
"name": "laravel/pint",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
"reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/0345f3b05f136801af8c339f9d16ef29e6b4df8a",
"reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"ext-xml": "*",
"php": "^8.2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.82.2",
"illuminate/view": "^11.45.1",
"larastan/larastan": "^3.5.0",
"laravel-zero/framework": "^11.45.0",
"mockery/mockery": "^1.6.12",
"nunomaduro/termwind": "^2.3.1",
"pestphp/pest": "^2.36.0"
},
"bin": [
"builds/pint"
],
"type": "project",
"autoload": {
"files": [
"overrides/Runner/Parallel/ProcessFactory.php"
],
"psr-4": {
"App\\": "app/",
"Database\\Seeders\\": "database/seeders/",
"Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
}
],
"description": "An opinionated code formatter for PHP.",
"homepage": "https://laravel.com",
"keywords": [
"format",
"formatter",
"lint",
"linter",
"php"
],
"support": {
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"time": "2025-07-10T18:09:32+00:00"
"time": "2025-09-02T12:58:15+00:00"
},
{
"name": "roave/security-advisories",
@@ -2289,19 +2251,19 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "3aaa2be71bcc17b49137b9e8ecd6619a5997b358"
"reference": "4fbe7e09e34b1554269750e19674f1f6fd84a4ae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3aaa2be71bcc17b49137b9e8ecd6619a5997b358",
"reference": "3aaa2be71bcc17b49137b9e8ecd6619a5997b358",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/4fbe7e09e34b1554269750e19674f1f6fd84a4ae",
"reference": "4fbe7e09e34b1554269750e19674f1f6fd84a4ae",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
"adaptcms/adaptcms": "<=1.3",
"admidio/admidio": "<4.3.12",
"adodb/adodb-php": "<=5.22.8",
"adodb/adodb-php": "<=5.22.9",
"aheinze/cockpit": "<2.2",
"aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2",
"aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1",
@@ -2312,7 +2274,7 @@
"airesvsg/acf-to-rest-api": "<=3.1",
"akaunting/akaunting": "<2.1.13",
"akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53",
"alextselegidis/easyappointments": "<=1.5.1",
"alextselegidis/easyappointments": "<1.5.2.0-beta1",
"alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
"amazing/media2click": ">=1,<1.3.3",
"ameos/ameos_tarteaucitron": "<1.2.23",
@@ -2325,8 +2287,8 @@
"aoe/restler": "<1.7.1",
"apache-solr-for-typo3/solr": "<2.8.3",
"apereo/phpcas": "<1.6",
"api-platform/core": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22",
"api-platform/graphql": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22",
"api-platform/core": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5",
"api-platform/graphql": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5",
"appwrite/server-ce": "<=1.2.1",
"arc/web": "<3",
"area17/twill": "<1.2.5|>=2,<2.5.3",
@@ -2350,7 +2312,7 @@
"backpack/crud": "<3.4.9",
"backpack/filemanager": "<2.0.2|>=3,<3.0.9",
"bacula-web/bacula-web": "<9.7.1",
"badaso/core": "<2.7",
"badaso/core": "<=2.9.11",
"bagisto/bagisto": "<2.1",
"barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9",
@@ -2411,19 +2373,19 @@
"commerceteam/commerce": ">=0.9.6,<0.9.9",
"components/jquery": ">=1.0.3,<3.5",
"composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7",
"concrete5/concrete5": "<9.4.0.0-RC2-dev",
"concrete5/concrete5": "<9.4.3",
"concrete5/core": "<8.5.8|>=9,<9.1",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4",
"contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
"contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.13.56|>=5,<5.3.38|>=5.4.0.0-RC1-dev,<5.6.1",
"contao/core": "<3.5.39",
"contao/core-bundle": "<4.13.54|>=5,<5.3.30|>=5.4,<5.5.6",
"contao/core-bundle": "<4.13.56|>=5,<5.3.38|>=5.4,<5.6.1",
"contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8",
"contao/managed-edition": "<=1.5",
"corveda/phpsandbox": "<1.3.5",
"cosenary/instagram": "<=2.3",
"couleurcitron/tarteaucitron-wp": "<0.3",
"craftcms/cms": "<4.15.3|>=5,<5.7.5",
"craftcms/cms": "<=4.16.5|>=5,<=5.8.6",
"croogo/croogo": "<4",
"cuyz/valinor": "<0.12",
"czim/file-handling": "<1.5|>=2,<2.3",
@@ -2495,7 +2457,7 @@
"encore/laravel-admin": "<=1.8.19",
"endroid/qr-code-bundle": "<3.4.2",
"enhavo/enhavo-app": "<=0.13.1",
"enshrined/svg-sanitize": "<0.15",
"enshrined/svg-sanitize": "<0.22",
"erusev/parsedown": "<1.7.2",
"ether/logs": "<3.0.4",
"evolutioncms/evolution": "<=3.2.3",
@@ -2579,7 +2541,7 @@
"globalpayments/php-sdk": "<2",
"goalgorilla/open_social": "<12.3.11|>=12.4,<12.4.10|>=13.0.0.0-alpha1,<13.0.0.0-alpha11",
"gogentooss/samlbase": "<1.2.7",
"google/protobuf": "<3.15",
"google/protobuf": "<3.4",
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
"gree/jose": "<2.2.1",
"gregwar/rst": "<1.0.3",
@@ -2638,7 +2600,7 @@
"jbartels/wec-map": "<3.0.3",
"jcbrand/converse.js": "<3.3.3",
"joelbutcher/socialstream": "<5.6|>=6,<6.2",
"johnbillion/wp-crontrol": "<1.16.2",
"johnbillion/wp-crontrol": "<1.16.2|>=1.17,<1.19.2",
"joomla/application": "<1.0.13",
"joomla/archive": "<1.1.12|>=2,<2.0.1",
"joomla/database": ">=1,<2.2|>=3,<3.4",
@@ -2703,7 +2665,7 @@
"luyadev/yii-helpers": "<1.2.1",
"macropay-solutions/laravel-crud-wizard-free": "<3.4.17",
"maestroerror/php-heic-to-jpg": "<1.0.5",
"magento/community-edition": "<2.4.5.0-patch13|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch11|>=2.4.7.0-beta1,<2.4.7.0-patch6|>=2.4.8.0-beta1,<2.4.8.0-patch1",
"magento/community-edition": "<2.4.5.0-patch14|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch12|>=2.4.7.0-beta1,<2.4.7.0-patch7|>=2.4.8.0-beta1,<2.4.8.0-patch1",
"magento/core": "<=1.9.4.5",
"magento/magento1ce": "<1.9.4.3-dev",
"magento/magento1ee": ">=1,<1.14.4.3-dev",
@@ -2747,6 +2709,7 @@
"mongodb/mongodb": ">=1,<1.9.2",
"monolog/monolog": ">=1.8,<1.12",
"moodle/moodle": "<4.3.12|>=4.4,<4.4.8|>=4.5.0.0-beta,<4.5.4",
"moonshine/moonshine": "<=3.12.5",
"mos/cimage": "<0.7.19",
"movim/moxl": ">=0.8,<=0.10",
"movingbytes/social-network": "<=1.2.1",
@@ -2842,7 +2805,7 @@
"phpoffice/common": "<0.2.9",
"phpoffice/math": "<=0.2",
"phpoffice/phpexcel": "<=1.8.2",
"phpoffice/phpspreadsheet": "<1.29.9|>=2,<2.1.8|>=2.2,<2.3.7|>=3,<3.9",
"phpoffice/phpspreadsheet": "<1.30|>=2,<2.1.12|>=2.2,<2.4|>=3,<3.10|>=4,<5",
"phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
"phpservermon/phpservermon": "<3.6",
"phpsysinfo/phpsysinfo": "<3.4.3",
@@ -2863,7 +2826,7 @@
"pixelfed/pixelfed": "<0.12.5",
"plotly/plotly.js": "<2.25.2",
"pocketmine/bedrock-protocol": "<8.0.2",
"pocketmine/pocketmine-mp": "<5.25.2",
"pocketmine/pocketmine-mp": "<5.32.1",
"pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
@@ -2918,10 +2881,11 @@
"scheb/two-factor-bundle": "<3.26|>=4,<4.11",
"sensiolabs/connect": "<4.2.3",
"serluck/phpwhois": "<=4.2.6",
"setasign/fpdi": "<2.6.4",
"sfroemken/url_redirect": "<=1.2.1",
"sheng/yiicms": "<1.2.1",
"shopware/core": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev",
"shopware/platform": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev",
"shopware/platform": "<=6.6.10.4|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev",
"shopware/production": "<=6.3.5.2",
"shopware/shopware": "<=5.7.17",
"shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev",
@@ -2968,6 +2932,8 @@
"snipe/snipe-it": "<8.1",
"socalnick/scn-social-auth": "<1.15.2",
"socialiteproviders/steam": "<1.1",
"solspace/craft-freeform": ">=5,<5.10.16",
"soosyze/soosyze": "<=2",
"spatie/browsershot": "<5.0.5",
"spatie/image-optimizer": "<1.7.3",
"spencer14420/sp-php-email-handler": "<1",
@@ -3100,7 +3066,7 @@
"uasoft-indonesia/badaso": "<=2.9.7",
"unisharp/laravel-filemanager": "<2.9.1",
"universal-omega/dynamic-page-list3": "<3.6.4",
"unopim/unopim": "<0.1.5",
"unopim/unopim": "<=0.3",
"userfrosting/userfrosting": ">=0.3.1,<4.6.3",
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
"uvdesk/community-skeleton": "<=1.1.1",
@@ -3114,7 +3080,7 @@
"vertexvaar/falsftp": "<0.2.6",
"villagedefrance/opencart-overclocked": "<=1.11.1",
"vova07/yii2-fileapi-widget": "<0.1.9",
"vrana/adminer": "<4.8.1",
"vrana/adminer": "<=4.8.1",
"vufind/vufind": ">=2,<9.1.1",
"waldhacker/hcaptcha": "<2.1.2",
"wallabag/tcpdf": "<6.2.22",
@@ -3242,7 +3208,91 @@
"type": "tidelift"
}
],
"time": "2025-07-30T14:07:45+00:00"
"time": "2025-09-02T17:05:04+00:00"
},
{
"name": "squizlabs/php_codesniffer",
"version": "3.13.2",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
"reference": "5b5e3821314f947dd040c70f7992a64eac89025c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5b5e3821314f947dd040c70f7992a64eac89025c",
"reference": "5b5e3821314f947dd040c70f7992a64eac89025c",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
},
"bin": [
"bin/phpcbf",
"bin/phpcs"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Greg Sherwood",
"role": "Former lead"
},
{
"name": "Juliette Reinders Folmer",
"role": "Current lead"
},
{
"name": "Contributors",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
"phpcs",
"standards",
"static analysis"
],
"support": {
"issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
"security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
"source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
},
"funding": [
{
"url": "https://github.com/PHPCSStandards",
"type": "github"
},
{
"url": "https://github.com/jrfnl",
"type": "github"
},
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
},
{
"url": "https://thanks.dev/u/gh/phpcsstandards",
"type": "thanks_dev"
}
],
"time": "2025-06-17T22:17:01+00:00"
}
],
"aliases": [],

View File

@@ -7,7 +7,6 @@ $env_keys = array();
# App Base environment keys
array_push($env_keys, 'BLOG_SLUG');
array_push($env_keys, 'USE_CDN');
array_push($env_keys, 'GA_CODE');
array_push($env_keys, 'GTM_CODE');
array_push($env_keys, 'FORCE_SSL_ADMIN');
@@ -30,6 +29,7 @@ array_push($env_keys, 'CLOUDFLARE_EMAIL');
array_push($env_keys, 'WP_CF_ACCESS_AUTH_DOMAIN');
array_push($env_keys, 'WP_CF_ACCESS_JWT_AUD');
array_push($env_keys, 'WP_CF_ACCESS_REDIRECT_LOGIN');
array_push($env_keys, 'LOGOUT_REDIRECT_URL');
###
# App Secret environment keys

View File

@@ -30,4 +30,4 @@ server {
fastcgi_read_timeout 300s;
include fastcgi_params;
}
}
}

View File

@@ -0,0 +1,4 @@
upload_max_filesize=1024M
post_max_size=1024M
max_execution_time=300
max_input_time=300

View File

@@ -1,333 +0,0 @@
# configuration file /opt/bitnami/nginx/conf/nginx.conf:
# Based on https://www.nginx.com/resources/wiki/start/topics/examples/full/#nginx-conf
user daemon daemon; ## Default: nobody
worker_processes auto;
error_log "/opt/bitnami/nginx/logs/error.log";
pid "/opt/bitnami/nginx/tmp/nginx.pid";
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
client_body_temp_path "/opt/bitnami/nginx/tmp/client_body" 1 2;
proxy_temp_path "/opt/bitnami/nginx/tmp/proxy" 1 2;
fastcgi_temp_path "/opt/bitnami/nginx/tmp/fastcgi" 1 2;
scgi_temp_path "/opt/bitnami/nginx/tmp/scgi" 1 2;
uwsgi_temp_path "/opt/bitnami/nginx/tmp/uwsgi" 1 2;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log "/opt/bitnami/nginx/logs/access.log";
sendfile on;
tcp_nopush on;
tcp_nodelay off;
keepalive_timeout 65;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
map $http_x_forwarded_proto $lando_https {
default '';
https on;
}
map $http_x_forwarded_proto $http_user_agent_https {
default '';
https ON;
}
client_max_body_size 80M;
server_tokens off;
include "/opt/bitnami/nginx/conf/vhosts/*.conf";
# HTTP Server
server {
# port to listen on. Can also be set to an IP:PORT
listen 80;
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
}
# configuration file /opt/bitnami/nginx/conf/mime.types:
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/avif avif;
image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
font/woff woff;
font/woff2 woff2;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
application/vnd.oasis.opendocument.text odt;
application/vnd.openxmlformats-officedocument.presentationml.presentation
pptx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
application/vnd.openxmlformats-officedocument.wordprocessingml.document
docx;
application/vnd.wap.wmlc wmlc;
application/wasm wasm;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;
audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}
# configuration file /opt/bitnami/nginx/conf/vhosts/lando.conf:
server {
listen 443 ssl;
listen 80;
listen [::]:80 default ipv6only=on;
server_name localhost;
ssl_certificate /certs/cert.crt;
ssl_certificate_key /certs/cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root "/app/web";
include /app/config/nginx.conf;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffers 256 128k;
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
include fastcgi_params;
}
}
# configuration file /app/config/nginx.conf:
server_tokens off;
index index.php index.html;
charset UTF-8;
default_type text/html;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_min_length 10;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/png image/gif image/jpeg;
client_max_body_size 1024M;
include /app/config/nginx/*.conf;
# Force installation to /wp-admin/install.php so siteurl is always correct
rewrite ^/wp/wp-admin/install.php(.*) $scheme://$http_host/wp-admin/install.php permanent;
# Rewrite rules to allow for an application-like wordpress directory structure
if (!-e $request_filename) {
rewrite ^/wp-admin$ $scheme://$http_host/wp-admin/ permanent;
rewrite ^/(wp-.*.php)$ /wp/$1 last;
rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;
}
# Enable XML-RPC for WordPress
rewrite ^/(xmlrpc\.php)$ /wp/$1 last;
# Hide often probed WordPress file so that finding out the WordPress install
# and version would not be too easy
location /wp/readme.html {
return 404;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location = /ads.txt {
allow all;
log_not_found off;
access_log off;
}
# Block direct access to WooCommerce digital downloads. They can be accessed
# via the X-Accel-Redirect mechanism for fast and protected downloads.
location /wp/wp-content/uploads/woocommerce_uploads/ {
internal;
}
# Deny access to any other dot file
# ~ matches using regular expression all requests that contain '/.'
# anywhere in the URL, eg '/.htaccess' and '/wp-content/.htpasswd'.
# This regex will override all non-regex rules, except ^~ rules due
# how to Nginx location parsing and priorities works.
location ~ \/\. {
deny all;
}
location ~* ^.+\.(css|js|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|jpg|jpeg|gif|png|webp|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
try_files $uri =404;
expires max;
add_header Pragma "public";
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
}
# Use actual file if exists, otherwise pass request to WordPress
# Last rule: match all requests (= URLs that start with /)
location / {
try_files $uri $uri/ /index.php?$args;
}
# If front page is requested, skip all other regex and rewrite rules and
# pass request directly to WordPress (= URLS that are exactly /)
# Tip from https://www.scalescale.com/tips/nginx/nginx-location-directive/
location = / {
try_files $uri $uri/ /index.php?$args;
}
# configuration file /opt/bitnami/nginx/conf/fastcgi_params:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $lando_https if_not_empty;
fastcgi_param HTTP_USER_AGENT_HTTPS $http_user_agent_https if_not_empty;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

26
phpcs.xml Normal file
View File

@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<ruleset name="hvgblog">
<!-- Scan all files in directory -->
<file>.</file>
<!-- Scan only PHP files -->
<arg name="extensions" value="php"/>
<!-- Ignore WordPress and Composer dependencies -->
<exclude-pattern>web/wp</exclude-pattern>
<exclude-pattern>web/app/languages/</exclude-pattern>
<exclude-pattern>web/app/themes/hvg-blog-general/</exclude-pattern>
<exclude-pattern>web/app/themes/twentytwentyfive/</exclude-pattern>
<exclude-pattern>web/app/plugins/</exclude-pattern>
<exclude-pattern>vendor/</exclude-pattern>
<!-- Show colors in console -->
<arg value="-colors"/>
<!-- Show sniff codes in all reports -->
<arg value="ns"/>
<!-- Use PSR-2 as a base -->
<rule ref="PSR2"/>
</ruleset>

6
web/ads.txt Normal file
View File

@@ -0,0 +1,6 @@
rubiconproject.com, 15714, DIRECT, 0bfd66d529a55807
rubiconproject.com, 13808, DIRECT, 0bfd66d529a55807
google.com, pub-9423445092945252, DIRECT
google.com, pub-1094437899690041, DIRECT
rubiconproject.com, 209908, DIRECT, 0bfd66d529a55807
adform.com, 2587, DIRECT

View File

@@ -15,68 +15,72 @@
* Author URI: https://github.com/felegy
*/
defined( 'ABSPATH' ) || die('Restricted Area');
namespace App;
defined('ABSPATH') || die('Restricted Area');
class AppMuPlugin
{
public function __construct()
{
// Define constants
$this->define_constants();
$this->defineConstants();
if (defined('ERROR_LOG_TO_STDOUT')) {
if (ERROR_LOG_TO_STDOUT) {
// WP error log to stdout
$this->error_log_to_stdout();
$this->errorLogToStdout();
}
}
if (defined('S3_UPLOADS_ENDPOINT')) {
// Filter S3 Uploads params.
$this->s3_uploads_endpoint();
$this->s3UploadsEndpoint();
}
if (defined('SMTP_ENABLED') && SMTP_ENABLED) {
// If SMTP is enabled, setup PHPMailer
if (defined('SMTP_SERVER') && defined('SMTP_PORT')) {
$this->setup_phpmailer();
$this->setupPhpMailer();
}
}
$this->header_security();
$this->no_wordpress_errors();
$this->sanitize_file_name();
$this->remove_wp_version();
$this->cc_mime_types();
$this->two_factor_default();
$this->headerSecurity();
$this->noWordpressErrors();
$this->sanitizeFileName();
$this->removeWpVersion();
$this->ccMimeTypes();
$this->twoFactorDefault();
$this->onLogoutRedirect();
}
private function define_constants() {
private function defineConstants()
{
if ( ! defined( 'SMTP_SERVER') ) {
define( 'SMTP_SERVER', '127.0.0.1' );
if (!defined('SMTP_SERVER')) {
define('SMTP_SERVER', '127.0.0.1');
}
if ( ! defined( 'SMTP_PORT') ) {
define( 'SMTP_PORT', 1025 );
if (!defined('SMTP_PORT')) {
define('SMTP_PORT', 1025);
}
if ( ! defined( 'BLOG_SLUG') ) {
define( 'BLOG_SLUG', 'wp' );
if (!defined('BLOG_SLUG')) {
define('BLOG_SLUG', 'wp');
}
}
private function error_log_to_stdout() {
private function errorLogToStdout()
{
// Add your initialization code here.
// WP error log to stdout
add_action('init', function () {
ini_set ('error_log', '/dev/stdout'); // phpcs:ignore
}, 10);
}
private function s3_uploads_endpoint() {
private function s3UploadsEndpoint()
{
// Filter S3 Uploads params.
add_filter('s3_uploads_s3_client_params', function ($params) {
$params['endpoint'] = defined('S3_UPLOADS_ENDPOINT') ? S3_UPLOADS_ENDPOINT : "";
@@ -86,33 +90,36 @@ class AppMuPlugin
});
}
private function header_security() {
private function headerSecurity()
{
// Add Security headers.
add_filter('wp_headers',
function ($headers) {
$headers['X-Frame-Options'] = 'SAMEORIGIN';
$headers['X-Content-Type-Options'] = 'nosniff';
$headers['X-XSS-Protection'] = '1; mode=block';
$headers['Strict-Transport-Security'] = 'max-age=31536000; includeSubDomains';
$headers['Referrer-Policy'] = 'same-origin';
$headers['Permissions-Policy'] = 'geolocation=()';
$headers['Content-Security-Policy'] = 'upgrade-insecure-requests';
add_filter(
'wp_headers',
function ($headers) {
$headers['X-Frame-Options'] = 'SAMEORIGIN';
$headers['X-Content-Type-Options'] = 'nosniff';
$headers['X-XSS-Protection'] = '1; mode=block';
$headers['Strict-Transport-Security'] = 'max-age=31536000; includeSubDomains';
$headers['Referrer-Policy'] = 'same-origin';
$headers['Permissions-Policy'] = 'geolocation=()';
$headers['Content-Security-Policy'] = 'upgrade-insecure-requests';
return $headers;
});
return $headers;
}
);
}
private function no_wordpress_errors()
private function noWordpressErrors()
{
add_filter('login_errors', function () {
return 'Hiba történt a belépés során!';
});
}
private function sanitize_file_name()
private function sanitizeFileName()
{
// Clean file name when uploading files in WordPress.
add_filter('sanitize_file_name', function ($filename){
add_filter('sanitize_file_name', function ($filename) {
$extension = substr($filename, strrpos($filename, '.') + 1);
$filename = substr($filename, 0, strrpos($filename, '.'));
@@ -120,25 +127,27 @@ class AppMuPlugin
});
}
private function remove_wp_version() {
private function removeWpVersion()
{
// Remove WordPress version from HTML source.
add_filter('the_generator', '__return_empty_string');
}
private function cc_mime_types() {
private function ccMimeTypes()
{
// Add SVG to mime_types.
add_filter('upload_mimes', function ($mimes)
{
add_filter('upload_mimes', function ($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
});
}
private function setup_phpmailer() {
private function setupPhpMailer()
{
add_action('phpmailer_init', function ($phpmailer) {
$phpmailer->Host = SMTP_SERVER;
$phpmailer->Port = SMTP_PORT;
// If SMTP_LOGIN is defined, use it for authentication
if (defined('SMTP_LOGIN')) {
$phpmailer->SMTPAuth = true; // Enable SMTP authentication
@@ -160,10 +169,9 @@ class AppMuPlugin
$phpmailer->SMTPSecure = false; // Disable encryption
}
if(defined('SMTP_DOMAIN')) {
if (defined('SMTP_DOMAIN')) {
$phpmailer->From = BLOG_SLUG . '@' . SMTP_DOMAIN;
}
else {
} else {
$dsn = (object) parse_url(get_bloginfo('url'));
$phpmailer->From = BLOG_SLUG . '@' . $dsn->host;
}
@@ -174,16 +182,36 @@ class AppMuPlugin
});
}
private function two_factor_default() {
add_filter('two_factor_enabled_providers_for_user', function ($providers)
{
if (! in_array('Two_Factor_Email', $providers))
{
private function twoFactorDefault()
{
add_filter('two_factor_providers', function ($providers) {
// Disable FIDO U2F by default
// ISSUE https://wordpress.org/support/topic/i-cant-add-my-yubikey/
$providers['Two_Factor_FIDO_U2F'] = '';
// Disable Dummy provider by default
$providers['Two_Factor_Dummy'] = '';
return $providers;
});
// Enable Two Factor Email by default
// force email two factor authentication
add_filter('two_factor_enabled_providers_for_user', function ($providers) {
if (! in_array('Two_Factor_Email', $providers)) {
array_push($providers, 'Two_Factor_Email');
}
return $providers;
});
}
private function onLogoutRedirect()
{
add_action('wp_logout', function () {
if (defined('LOGOUT_REDIRECT_URL')) {
wp_redirect(LOGOUT_REDIRECT_URL);
exit;
}
});
}
}
new AppMuPlugin();

18
web/robots.txt Normal file
View File

@@ -0,0 +1,18 @@
User-agent: Googlebot
Allow: /
User-agent: Bingbot
Allow: /
User-agent: BingPreview
Allow: /
User-agent: Pinterestbot
Allow: /
User-agent: facebookexternalhit
Allow: /
User-agent: Applebot
Allow: /
User-agent: OSZKbot
Allow: /
User-agent: upday
Allow: /
User-agent: Mediapartners-Google
Allow: /