From 9ac28685d18312cc7a6714665666953d728437a9 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Tue, 14 Jan 2025 07:41:52 +0100 Subject: [PATCH 01/24] Update trackdirect-db.dockerfile --- trackdirect-db.dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trackdirect-db.dockerfile b/trackdirect-db.dockerfile index a9c9237..ad10023 100644 --- a/trackdirect-db.dockerfile +++ b/trackdirect-db.dockerfile @@ -1,7 +1,7 @@ -FROM postgres +FROM postgres:16 COPY misc/database/tables/* /docker-entrypoint-initdb.d/ COPY config/postgresql.conf /etc/postgresql.conf RUN chown :999 /etc/postgresql.conf RUN chmod 770 /etc/postgresql.conf RUN chmod g+s /etc/postgresql.conf -VOLUME /var/lib/postgresql/data \ No newline at end of file +VOLUME /var/lib/postgresql/data From 9b880dd479a6781514cdfc7da721b2de5cf27e4c Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Tue, 14 Jan 2025 07:47:46 +0100 Subject: [PATCH 02/24] Create docker-image.yml --- .github/workflows/docker-image.yml | 75 ++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..b4ece6d --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,75 @@ +name: Docker Image CI + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + + build-db: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build the Docker image + run: docker build . --file trackdirect-db.dockerfile --tag ghcr.io/mrtalon63/trackdirect-db:latest + - name: Create image with Action ID + run: docker tag ghcr.io/mrtalon63/trackdirect-db:latest ghcr.io/mrtalon63/trackdirect-db:${{ github.RUN_ID }} + - name: Push both images to ghcr.io + run: docker push ghcr.io/mrtalon63/trackdirect-db:latest && ghcr.io/mrtalon63/trackdirect-db:${{ github.RUN_ID }} + + build-apache: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build the Docker image + run: docker build . --file trackdirect-apache.dockerfile --tag ghcr.io/mrtalon63/trackdirect-apache:latest + - name: Create image with Action ID + run: docker tag ghcr.io/mrtalon63/trackdirect-apache:latest ghcr.io/mrtalon63/trackdirect-apache:${{ github.RUN_ID }} + - name: Push both images to ghcr.io + run: docker push ghcr.io/mrtalon63/trackdirect-apache:latest && ghcr.io/mrtalon63/trackdirect-apache:${{ github.RUN_ID }} + + build-python: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build the Docker image + run: docker build . --file trackdirect-python.dockerfile --tag ghcr.io/mrtalon63/trackdirect-python:latest + - name: Create image with Action ID + run: docker tag ghcr.io/mrtalon63/trackdirect-python:latest ghcr.io/mrtalon63/trackdirect-python:${{ github.RUN_ID }} + - name: Push both images to ghcr.io + run: docker push ghcr.io/mrtalon63/trackdirect-python:latest && ghcr.io/mrtalon63/trackdirect-python:${{ github.RUN_ID }} + + build-aprsc: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build the Docker image + run: docker build . --file trackdirect-aprsc.dockerfile --tag ghcr.io/mrtalon63/trackdirect-aprsc:latest + - name: Create image with Action ID + run: docker tag ghcr.io/mrtalon63/trackdirect-aprsc:latest ghcr.io/mrtalon63/trackdirect-aprsc:${{ github.RUN_ID }} + - name: Push both images to ghcr.io + run: docker push ghcr.io/mrtalon63/trackdirect-aprsc:latest && ghcr.io/mrtalon63/trackdirect-aprsc:${{ github.RUN_ID }} + + + build-cron: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Build the Docker image + run: docker build . --file trackdirect-cron.dockerfile --tag ghcr.io/mrtalon63/trackdirect-cron:latest + - name: Create image with Action ID + run: docker tag ghcr.io/mrtalon63/trackdirect-cron:latest ghcr.io/mrtalon63/trackdirect-cron:${{ github.RUN_ID }} + - name: Push both images to ghcr.io + run: docker push ghcr.io/mrtalon63/trackdirect-cron:latest && ghcr.io/mrtalon63/trackdirect-cron:${{ github.RUN_ID }} From 1e62790c6168020e2a928fbdeb0059336da0bb8d Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Tue, 14 Jan 2025 07:51:14 +0100 Subject: [PATCH 03/24] Update docker-image.yml --- .github/workflows/docker-image.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index b4ece6d..5d34bec 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -14,6 +14,8 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker + run: docker login ghcr.io - name: Build the Docker image run: docker build . --file trackdirect-db.dockerfile --tag ghcr.io/mrtalon63/trackdirect-db:latest - name: Create image with Action ID @@ -27,6 +29,8 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker + run: docker login ghcr.io - name: Build the Docker image run: docker build . --file trackdirect-apache.dockerfile --tag ghcr.io/mrtalon63/trackdirect-apache:latest - name: Create image with Action ID @@ -40,6 +44,8 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker + run: docker login ghcr.io - name: Build the Docker image run: docker build . --file trackdirect-python.dockerfile --tag ghcr.io/mrtalon63/trackdirect-python:latest - name: Create image with Action ID @@ -53,6 +59,8 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker + run: docker login ghcr.io - name: Build the Docker image run: docker build . --file trackdirect-aprsc.dockerfile --tag ghcr.io/mrtalon63/trackdirect-aprsc:latest - name: Create image with Action ID @@ -67,6 +75,8 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Login to Docker + run: docker login ghcr.io - name: Build the Docker image run: docker build . --file trackdirect-cron.dockerfile --tag ghcr.io/mrtalon63/trackdirect-cron:latest - name: Create image with Action ID From 559d4265d5ae4b748518621a189bda5e530bf1d9 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Tue, 14 Jan 2025 07:58:11 +0100 Subject: [PATCH 04/24] Update docker-image.yml --- .github/workflows/docker-image.yml | 32 +++++++++++++++++++----------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 5d34bec..f1e6505 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -8,20 +8,28 @@ on: jobs: - build-db: - + docker-build-db: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Login to Docker - run: docker login ghcr.io - - name: Build the Docker image - run: docker build . --file trackdirect-db.dockerfile --tag ghcr.io/mrtalon63/trackdirect-db:latest - - name: Create image with Action ID - run: docker tag ghcr.io/mrtalon63/trackdirect-db:latest ghcr.io/mrtalon63/trackdirect-db:${{ github.RUN_ID }} - - name: Push both images to ghcr.io - run: docker push ghcr.io/mrtalon63/trackdirect-db:latest && ghcr.io/mrtalon63/trackdirect-db:${{ github.RUN_ID }} + - name: Login to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: mrtalon63 + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: trackdirect-db.dockerfile + push: true + tags: | + ghcr.io/mrtalon63/trackdirect-db:latest + ghcr.io/mrtalon63/trackdirect-db:${{ github.RUN_ID }} build-apache: From ea3a53e4e112dc44a0eca3953c9e81bb7f30575b Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Tue, 14 Jan 2025 07:59:08 +0100 Subject: [PATCH 05/24] Update docker-image.yml --- .github/workflows/docker-image.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index f1e6505..d55a61b 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -24,7 +24,6 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: - context: . file: trackdirect-db.dockerfile push: true tags: | From 390e86ae76a59fb3c09378f40dc64c2453e99d4f Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Tue, 14 Jan 2025 08:05:08 +0100 Subject: [PATCH 06/24] Update docker-image.yml --- .github/workflows/docker-image.yml | 125 ++++++++++++++++++----------- 1 file changed, 76 insertions(+), 49 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index d55a61b..1c1cc8d 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -30,63 +30,90 @@ jobs: ghcr.io/mrtalon63/trackdirect-db:latest ghcr.io/mrtalon63/trackdirect-db:${{ github.RUN_ID }} - build-apache: - + docker-build-apache: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Login to Docker - run: docker login ghcr.io - - name: Build the Docker image - run: docker build . --file trackdirect-apache.dockerfile --tag ghcr.io/mrtalon63/trackdirect-apache:latest - - name: Create image with Action ID - run: docker tag ghcr.io/mrtalon63/trackdirect-apache:latest ghcr.io/mrtalon63/trackdirect-apache:${{ github.RUN_ID }} - - name: Push both images to ghcr.io - run: docker push ghcr.io/mrtalon63/trackdirect-apache:latest && ghcr.io/mrtalon63/trackdirect-apache:${{ github.RUN_ID }} - - build-python: + - name: Login to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: mrtalon63 + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v6 + with: + file: trackdirect-apache.dockerfile + push: true + tags: | + ghcr.io/mrtalon63/trackdirect-apache:latest + ghcr.io/mrtalon63/trackdirect-apache:${{ github.RUN_ID }} + docker-build-python: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Login to Docker - run: docker login ghcr.io - - name: Build the Docker image - run: docker build . --file trackdirect-python.dockerfile --tag ghcr.io/mrtalon63/trackdirect-python:latest - - name: Create image with Action ID - run: docker tag ghcr.io/mrtalon63/trackdirect-python:latest ghcr.io/mrtalon63/trackdirect-python:${{ github.RUN_ID }} - - name: Push both images to ghcr.io - run: docker push ghcr.io/mrtalon63/trackdirect-python:latest && ghcr.io/mrtalon63/trackdirect-python:${{ github.RUN_ID }} - - build-aprsc: + - name: Login to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: mrtalon63 + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v6 + with: + file: trackdirect-python.dockerfile + push: true + tags: | + ghcr.io/mrtalon63/trackdirect-python:latest + ghcr.io/mrtalon63/trackdirect-python:${{ github.RUN_ID }} + docker-build-aprsc: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Login to Docker - run: docker login ghcr.io - - name: Build the Docker image - run: docker build . --file trackdirect-aprsc.dockerfile --tag ghcr.io/mrtalon63/trackdirect-aprsc:latest - - name: Create image with Action ID - run: docker tag ghcr.io/mrtalon63/trackdirect-aprsc:latest ghcr.io/mrtalon63/trackdirect-aprsc:${{ github.RUN_ID }} - - name: Push both images to ghcr.io - run: docker push ghcr.io/mrtalon63/trackdirect-aprsc:latest && ghcr.io/mrtalon63/trackdirect-aprsc:${{ github.RUN_ID }} - - - build-cron: + - name: Login to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: mrtalon63 + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v6 + with: + file: trackdirect-aprsc.dockerfile + push: true + tags: | + ghcr.io/mrtalon63/trackdirect-aprsc:latest + ghcr.io/mrtalon63/trackdirect-aprsc:${{ github.RUN_ID }} + docker-build-cron: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Login to Docker - run: docker login ghcr.io - - name: Build the Docker image - run: docker build . --file trackdirect-cron.dockerfile --tag ghcr.io/mrtalon63/trackdirect-cron:latest - - name: Create image with Action ID - run: docker tag ghcr.io/mrtalon63/trackdirect-cron:latest ghcr.io/mrtalon63/trackdirect-cron:${{ github.RUN_ID }} - - name: Push both images to ghcr.io - run: docker push ghcr.io/mrtalon63/trackdirect-cron:latest && ghcr.io/mrtalon63/trackdirect-cron:${{ github.RUN_ID }} + - name: Login to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: mrtalon63 + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v6 + with: + file: trackdirect-cron.dockerfile + push: true + tags: | + ghcr.io/mrtalon63/trackdirect-cron:latest + ghcr.io/mrtalon63/trackdirect-cron:${{ github.RUN_ID }} From 3206d5de57d0f1d4fea1f7d7f557171b92bec8f2 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Fri, 17 Jan 2025 22:03:59 +0100 Subject: [PATCH 07/24] Update trackdirect-db.dockerfile --- trackdirect-db.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trackdirect-db.dockerfile b/trackdirect-db.dockerfile index ad10023..e0576f8 100644 --- a/trackdirect-db.dockerfile +++ b/trackdirect-db.dockerfile @@ -1,4 +1,4 @@ -FROM postgres:16 +FROM postgres:17 COPY misc/database/tables/* /docker-entrypoint-initdb.d/ COPY config/postgresql.conf /etc/postgresql.conf RUN chown :999 /etc/postgresql.conf From 119dece79b8b015f97d994fd86aceded4cacd861 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Wed, 29 Jan 2025 16:26:42 +0100 Subject: [PATCH 08/24] Update docker-image.yml --- .github/workflows/docker-image.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 1c1cc8d..fce2d11 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -15,7 +15,7 @@ jobs: uses: docker/login-action@v3 with: registry: ghcr.io - username: mrtalon63 + username: ${{ github.repository_owner}} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -27,8 +27,8 @@ jobs: file: trackdirect-db.dockerfile push: true tags: | - ghcr.io/mrtalon63/trackdirect-db:latest - ghcr.io/mrtalon63/trackdirect-db:${{ github.RUN_ID }} + ghcr.io/${{ github.repository }}-db:latest + ghcr.io/${{ github.repository }}-db:${{ github.RUN_ID }} docker-build-apache: runs-on: ubuntu-latest @@ -37,7 +37,7 @@ jobs: uses: docker/login-action@v3 with: registry: ghcr.io - username: mrtalon63 + username: ${{ github.repository_owner}} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -49,8 +49,8 @@ jobs: file: trackdirect-apache.dockerfile push: true tags: | - ghcr.io/mrtalon63/trackdirect-apache:latest - ghcr.io/mrtalon63/trackdirect-apache:${{ github.RUN_ID }} + ghcr.io/${{ github.repository }}-apache:latest + ghcr.io/${{ github.repository }}-apache:${{ github.RUN_ID }} docker-build-python: runs-on: ubuntu-latest @@ -59,7 +59,7 @@ jobs: uses: docker/login-action@v3 with: registry: ghcr.io - username: mrtalon63 + username: ${{ github.repository_owner}} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -71,8 +71,8 @@ jobs: file: trackdirect-python.dockerfile push: true tags: | - ghcr.io/mrtalon63/trackdirect-python:latest - ghcr.io/mrtalon63/trackdirect-python:${{ github.RUN_ID }} + ghcr.io/${{ github.repository }}-python:latest + ghcr.io/${{ github.repository }}-python:${{ github.RUN_ID }} docker-build-aprsc: runs-on: ubuntu-latest @@ -81,7 +81,7 @@ jobs: uses: docker/login-action@v3 with: registry: ghcr.io - username: mrtalon63 + username: ${{ github.repository_owner}} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -93,8 +93,8 @@ jobs: file: trackdirect-aprsc.dockerfile push: true tags: | - ghcr.io/mrtalon63/trackdirect-aprsc:latest - ghcr.io/mrtalon63/trackdirect-aprsc:${{ github.RUN_ID }} + ghcr.io/${{ github.repository }}-aprsc:latest + ghcr.io/${{ github.repository }}-aprsc:${{ github.RUN_ID }} docker-build-cron: runs-on: ubuntu-latest @@ -103,7 +103,7 @@ jobs: uses: docker/login-action@v3 with: registry: ghcr.io - username: mrtalon63 + username: ${{ github.repository_owner}} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -115,5 +115,5 @@ jobs: file: trackdirect-cron.dockerfile push: true tags: | - ghcr.io/mrtalon63/trackdirect-cron:latest - ghcr.io/mrtalon63/trackdirect-cron:${{ github.RUN_ID }} + ghcr.io/${{ github.repository }}-cron:latest + ghcr.io/${{ github.repository }}-cron:${{ github.RUN_ID }} From 126ea8aa172f6a683e135d1f6fb935230b48d7ac Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Wed, 29 Jan 2025 16:33:12 +0100 Subject: [PATCH 09/24] Update docker-image.yml --- .github/workflows/docker-image.yml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index fce2d11..d8d01f2 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -8,6 +8,12 @@ on: jobs: + repo-name: + runs-on: ubuntu-latest + steps: + - name: lowercase github.repository + run: echo "IMAGE_NAME=${GITHUB_REPOSITORY@L}" >> ${GITHUB_ENV} + docker-build-db: runs-on: ubuntu-latest steps: @@ -27,8 +33,8 @@ jobs: file: trackdirect-db.dockerfile push: true tags: | - ghcr.io/${{ github.repository }}-db:latest - ghcr.io/${{ github.repository }}-db:${{ github.RUN_ID }} + ghcr.io/${{ env.IMAGE_NAME }}-db:latest + ghcr.io/${{ env.IMAGE_NAME }}-db:${{ github.RUN_ID }} docker-build-apache: runs-on: ubuntu-latest @@ -49,8 +55,8 @@ jobs: file: trackdirect-apache.dockerfile push: true tags: | - ghcr.io/${{ github.repository }}-apache:latest - ghcr.io/${{ github.repository }}-apache:${{ github.RUN_ID }} + ghcr.io/${{ env.IMAGE_NAME }}-apache:latest + ghcr.io/${{ env.IMAGE_NAME }}-apache:${{ github.RUN_ID }} docker-build-python: runs-on: ubuntu-latest @@ -71,8 +77,8 @@ jobs: file: trackdirect-python.dockerfile push: true tags: | - ghcr.io/${{ github.repository }}-python:latest - ghcr.io/${{ github.repository }}-python:${{ github.RUN_ID }} + ghcr.io/${{ env.IMAGE_NAME }}-python:latest + ghcr.io/${{ env.IMAGE_NAME }}-python:${{ github.RUN_ID }} docker-build-aprsc: runs-on: ubuntu-latest @@ -93,8 +99,8 @@ jobs: file: trackdirect-aprsc.dockerfile push: true tags: | - ghcr.io/${{ github.repository }}-aprsc:latest - ghcr.io/${{ github.repository }}-aprsc:${{ github.RUN_ID }} + ghcr.io/${{ env.IMAGE_NAME }}-aprsc:latest + ghcr.io/${{ env.IMAGE_NAME }}-aprsc:${{ github.RUN_ID }} docker-build-cron: runs-on: ubuntu-latest @@ -115,5 +121,5 @@ jobs: file: trackdirect-cron.dockerfile push: true tags: | - ghcr.io/${{ github.repository }}-cron:latest - ghcr.io/${{ github.repository }}-cron:${{ github.RUN_ID }} + ghcr.io/${{ env.IMAGE_NAME }}-cron:latest + ghcr.io/${{ env.IMAGE_NAME }}-cron:${{ github.RUN_ID }} From 7744afdf0674b2fca351fd65728be7d7be02f3b5 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Wed, 29 Jan 2025 16:34:48 +0100 Subject: [PATCH 10/24] Update docker-image.yml --- .github/workflows/docker-image.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index d8d01f2..8fe69c6 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -8,12 +8,6 @@ on: jobs: - repo-name: - runs-on: ubuntu-latest - steps: - - name: lowercase github.repository - run: echo "IMAGE_NAME=${GITHUB_REPOSITORY@L}" >> ${GITHUB_ENV} - docker-build-db: runs-on: ubuntu-latest steps: @@ -27,6 +21,8 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: lowercase github.repository + run: echo "IMAGE_NAME=${GITHUB_REPOSITORY@L}" >> ${GITHUB_ENV} - name: Build and push uses: docker/build-push-action@v6 with: @@ -49,6 +45,8 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: lowercase github.repository + run: echo "IMAGE_NAME=${GITHUB_REPOSITORY@L}" >> ${GITHUB_ENV} - name: Build and push uses: docker/build-push-action@v6 with: @@ -71,6 +69,8 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: lowercase github.repository + run: echo "IMAGE_NAME=${GITHUB_REPOSITORY@L}" >> ${GITHUB_ENV} - name: Build and push uses: docker/build-push-action@v6 with: @@ -93,6 +93,8 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: lowercase github.repository + run: echo "IMAGE_NAME=${GITHUB_REPOSITORY@L}" >> ${GITHUB_ENV} - name: Build and push uses: docker/build-push-action@v6 with: @@ -115,6 +117,8 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: lowercase github.repository + run: echo "IMAGE_NAME=${GITHUB_REPOSITORY@L}" >> ${GITHUB_ENV} - name: Build and push uses: docker/build-push-action@v6 with: From 753b5ace491c4a7e0558259bf14826c3f8cc837c Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Fri, 16 May 2025 12:19:09 +0200 Subject: [PATCH 11/24] Update remover.py --- server/bin/remover.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/server/bin/remover.py b/server/bin/remover.py index c7637d0..761d9cc 100644 --- a/server/bin/remover.py +++ b/server/bin/remover.py @@ -27,10 +27,14 @@ def validate_config_file(config_file): print("\nUsage: script.py [config.ini]") sys.exit() -def drop_table_if_exists(cursor, table_name, logger): - if DatabaseObjectFinder.check_table_exists(table_name): - cursor.execute(f"DROP TABLE {table_name}") - logger.info(f"Dropped table {table_name}") +def drop_table_if_exists(cursor, table_name, logger, db_finder): + try: + if db_finder.check_table_exists(table_name): + cursor.execute(f"DROP TABLE IF EXISTS {table_name}") + logger.info(f"Dropped table {table_name}") + except Exception as e: + logger.error(f"Error dropping table {table_name}: {str(e)}", exc_info=True) + def main(): if len(sys.argv) < 2: @@ -73,7 +77,7 @@ def main(): for x in range(2, 16): prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_timestamp = int(prev_day.strftime("%s")) - prev_day_format = datetime.datetime.utcfromtimestamp(prev_day_timestamp).strftime('%Y%m%d') + prev_day_format = prev_day.strftime('%Y%m%d') packet_table = f"packet{prev_day_format}" if track_direct_db_object_finder.check_table_exists(packet_table): @@ -99,14 +103,13 @@ def main(): prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_format = prev_day.strftime('%Y%m%d') packet_table = f"packet{prev_day_format}_weather" - drop_table_if_exists(cursor, packet_table, logger) - + drop_table_if_exists(cursor, packet_table, logger, track_direct_db_object_finder) # Drop packet_telemetry for x in range(max_days_to_save_telemetry_data, max_days_to_save_telemetry_data + 100): prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_format = prev_day.strftime('%Y%m%d') packet_table = f"packet{prev_day_format}_telemetry" - drop_table_if_exists(cursor, packet_table, logger) + drop_table_if_exists(cursor, packet_table, logger, track_direct_db_object_finder) # Drop packets for x in range(max_days_to_save_position_data, max_days_to_save_position_data + 100): @@ -114,9 +117,9 @@ def main(): prev_day_format = prev_day.strftime('%Y%m%d') packet_table = f"packet{prev_day_format}" - drop_table_if_exists(cursor, f"{packet_table}_ogn", logger) - drop_table_if_exists(cursor, f"{packet_table}_path", logger) - drop_table_if_exists(cursor, packet_table, logger) + drop_table_if_exists(cursor, f"{packet_table}_ogn", logger, track_direct_db_object_finder) + drop_table_if_exists(cursor, f"{packet_table}_path", logger, track_direct_db_object_finder) + drop_table_if_exists(cursor, packet_table, logger, track_direct_db_object_finder) # Delete old stations timestamp_limit = int(time.time()) - (60 * 60 * 24 * max_days_to_save_station_data) @@ -181,4 +184,4 @@ def main(): logger.error(e, exc_info=1) if __name__ == '__main__': - main() \ No newline at end of file + main() From 02ff8038b0b285f0b8e801047f806446514a3c95 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Fri, 23 May 2025 10:01:22 +0200 Subject: [PATCH 12/24] Update index.php --- htdocs/public/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/public/index.php b/htdocs/public/index.php index 1d2f4c0..fc3fc90 100755 --- a/htdocs/public/index.php +++ b/htdocs/public/index.php @@ -45,7 +45,7 @@ - + From 551a21cb96ca98e3a17fc367601203ab14110b27 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Fri, 23 May 2025 10:11:34 +0200 Subject: [PATCH 13/24] Update index.php --- htdocs/public/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/public/index.php b/htdocs/public/index.php index fc3fc90..da8d809 100755 --- a/htdocs/public/index.php +++ b/htdocs/public/index.php @@ -45,7 +45,7 @@ - + From 7c5373bcec1965ac3655741f4f69a4161cb7cb5a Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Sun, 29 Jun 2025 05:27:22 +0200 Subject: [PATCH 14/24] Update remover.py --- server/bin/remover.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/server/bin/remover.py b/server/bin/remover.py index 761d9cc..b0a711d 100644 --- a/server/bin/remover.py +++ b/server/bin/remover.py @@ -27,14 +27,10 @@ def validate_config_file(config_file): print("\nUsage: script.py [config.ini]") sys.exit() -def drop_table_if_exists(cursor, table_name, logger, db_finder): - try: - if db_finder.check_table_exists(table_name): - cursor.execute(f"DROP TABLE IF EXISTS {table_name}") - logger.info(f"Dropped table {table_name}") - except Exception as e: - logger.error(f"Error dropping table {table_name}: {str(e)}", exc_info=True) - +def drop_table_if_exists(cursor, dbobjfinder, table_name, logger): + if dbobjfinder.check_table_exists(table_name): + cursor.execute(f"DROP TABLE {table_name}") + logger.info(f"Dropped table {table_name}") def main(): if len(sys.argv) < 2: @@ -77,7 +73,7 @@ def main(): for x in range(2, 16): prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_timestamp = int(prev_day.strftime("%s")) - prev_day_format = prev_day.strftime('%Y%m%d') + prev_day_format = datetime.datetime.utcfromtimestamp(prev_day_timestamp).strftime('%Y%m%d') packet_table = f"packet{prev_day_format}" if track_direct_db_object_finder.check_table_exists(packet_table): @@ -103,13 +99,14 @@ def main(): prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_format = prev_day.strftime('%Y%m%d') packet_table = f"packet{prev_day_format}_weather" - drop_table_if_exists(cursor, packet_table, logger, track_direct_db_object_finder) + drop_table_if_exists(cursor,track_direct_db_object_finder, packet_table, logger) + # Drop packet_telemetry for x in range(max_days_to_save_telemetry_data, max_days_to_save_telemetry_data + 100): prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_format = prev_day.strftime('%Y%m%d') packet_table = f"packet{prev_day_format}_telemetry" - drop_table_if_exists(cursor, packet_table, logger, track_direct_db_object_finder) + drop_table_if_exists(cursor,track_direct_db_object_finder, packet_table, logger) # Drop packets for x in range(max_days_to_save_position_data, max_days_to_save_position_data + 100): @@ -117,9 +114,9 @@ def main(): prev_day_format = prev_day.strftime('%Y%m%d') packet_table = f"packet{prev_day_format}" - drop_table_if_exists(cursor, f"{packet_table}_ogn", logger, track_direct_db_object_finder) - drop_table_if_exists(cursor, f"{packet_table}_path", logger, track_direct_db_object_finder) - drop_table_if_exists(cursor, packet_table, logger, track_direct_db_object_finder) + drop_table_if_exists(cursor, track_direct_db_object_finder, f"{packet_table}_ogn", logger) + drop_table_if_exists(cursor, track_direct_db_object_finder, f"{packet_table}_path", logger) + drop_table_if_exists(cursor, track_direct_db_object_finder, packet_table, logger) # Delete old stations timestamp_limit = int(time.time()) - (60 * 60 * 24 * max_days_to_save_station_data) @@ -185,3 +182,4 @@ def main(): if __name__ == '__main__': main() + From bb3f755e53227e090f72bca56aaf15baf4ee579b Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Sun, 29 Jun 2025 05:47:53 +0200 Subject: [PATCH 15/24] Update trackdirect-apache.dockerfile --- trackdirect-apache.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trackdirect-apache.dockerfile b/trackdirect-apache.dockerfile index ee1a2d4..d86844a 100644 --- a/trackdirect-apache.dockerfile +++ b/trackdirect-apache.dockerfile @@ -1,4 +1,4 @@ -FROM php:8.2-apache +FROM php:8.4.8-apache RUN apt-get update && apt-get install -y \ git \ From 2ded97a8260d544da1b4fb16e14ed5c2153dedf7 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Sun, 29 Jun 2025 06:07:41 +0200 Subject: [PATCH 16/24] Update trackdirect-apache.dockerfile --- trackdirect-apache.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trackdirect-apache.dockerfile b/trackdirect-apache.dockerfile index d86844a..4c16e0e 100644 --- a/trackdirect-apache.dockerfile +++ b/trackdirect-apache.dockerfile @@ -1,4 +1,4 @@ -FROM php:8.4.8-apache +FROM php:8.0-apache RUN apt-get update && apt-get install -y \ git \ From 880504623c0404aedb90a6fffe8e77cda99e7195 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Sun, 29 Jun 2025 06:29:17 +0200 Subject: [PATCH 17/24] Update trackdirect-apache.dockerfile --- trackdirect-apache.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trackdirect-apache.dockerfile b/trackdirect-apache.dockerfile index 4c16e0e..d86844a 100644 --- a/trackdirect-apache.dockerfile +++ b/trackdirect-apache.dockerfile @@ -1,4 +1,4 @@ -FROM php:8.0-apache +FROM php:8.4.8-apache RUN apt-get update && apt-get install -y \ git \ From 500bd1cb765b223a5ec5af3499ab18e006fa09b1 Mon Sep 17 00:00:00 2001 From: Marcin Czop Date: Sun, 29 Jun 2025 06:31:55 +0200 Subject: [PATCH 18/24] Accept APRSC insecure key --- trackdirect-aprsc.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trackdirect-aprsc.dockerfile b/trackdirect-aprsc.dockerfile index 767b287..ed4580c 100644 --- a/trackdirect-aprsc.dockerfile +++ b/trackdirect-aprsc.dockerfile @@ -4,7 +4,7 @@ RUN apt-get update && apt-get install -y \ gnupg \ && rm -rf /var/lib/apt/lists/* -RUN printf "deb http://aprsc-dist.he.fi/aprsc/apt noble main" >> /etc/apt/sources.list +RUN printf "deb [trusted=yes] http://aprsc-dist.he.fi/aprsc/apt noble main" >> /etc/apt/sources.list RUN gpg --keyserver keyserver.ubuntu.com --recv C51AA22389B5B74C3896EF3CA72A581E657A2B8D RUN gpg --export C51AA22389B5B74C3896EF3CA72A581E657A2B8D | apt-key add - From c1806260acfaa2321289d48bcca0b90d343b7eef Mon Sep 17 00:00:00 2001 From: MrTalon63 Date: Sun, 12 Jul 2026 11:35:29 +0200 Subject: [PATCH 19/24] Update remover --- server/bin/remover.py | 76 ++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/server/bin/remover.py b/server/bin/remover.py index b0a711d..a174ef8 100644 --- a/server/bin/remover.py +++ b/server/bin/remover.py @@ -52,11 +52,21 @@ def main(): max_days_to_save_weather_data = config.days_to_save_weather_data max_days_to_save_telemetry_data = config.days_to_save_telemetry_data + # Use the highest retention across all data types so drop loops cover everything + max_retention = max( + max_days_to_save_position_data, + max_days_to_save_weather_data, + max_days_to_save_telemetry_data + ) + # Scan far enough ahead to handle long cron outages (up to ~1 year) + drop_lookahead = 365 + logger.info("Starting") logger.info(f"Saving position data for {max_days_to_save_position_data} days") logger.info(f"Saving station data for {max_days_to_save_station_data} days") logger.info(f"Saving weather data for {max_days_to_save_weather_data} days") logger.info(f"Saving telemetry data for {max_days_to_save_telemetry_data} days") + logger.info(f"Drop lookahead set to {drop_lookahead} days (max retention = {max_retention})") try: track_direct_db = DatabaseConnection() @@ -69,56 +79,50 @@ def main(): track_direct_db_object_finder = DatabaseObjectFinder(db) packet_repository = PacketRepository(db) - # Loop over the latest days and delete packets that are not needed anymore - for x in range(2, 16): + for x in range(2, max_days_to_save_position_data + 1): prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_timestamp = int(prev_day.strftime("%s")) - prev_day_format = datetime.datetime.utcfromtimestamp(prev_day_timestamp).strftime('%Y%m%d') + prev_day_format = datetime.datetime.fromtimestamp(prev_day_timestamp, datetime.timezone.utc).strftime('%Y%m%d') packet_table = f"packet{prev_day_format}" if track_direct_db_object_finder.check_table_exists(packet_table): - deleted_rows = None - do_full_vacuum = False - while deleted_rows is None or deleted_rows >= 5000: - sql = f"""DELETE FROM {packet_table} WHERE id IN ( - SELECT id FROM {packet_table} WHERE map_id NOT IN (1,12) LIMIT 5000)""" - cursor.execute(sql) - deleted_rows = cursor.rowcount - logger.info(f"Deleted {deleted_rows} from {packet_table}") - if deleted_rows > 0: - do_full_vacuum = True - time.sleep(0.5) - if do_full_vacuum: + # Count rows to delete first + cursor.execute(f"SELECT count(*) FROM {packet_table} WHERE map_id NOT IN (1,12)") + count = cursor.fetchone()[0] + if count == 0: + logger.info(f"No stale rows in {packet_table}, skipping") + continue + + logger.info(f"Deleting {count} stale rows from {packet_table}") + cursor.execute(f"DELETE FROM {packet_table} WHERE map_id NOT IN (1,12)") + deleted_rows = cursor.rowcount + logger.info(f"Deleted {deleted_rows} from {packet_table}") + + if deleted_rows > 0: cursor.execute(f"VACUUM FULL {packet_table}_path") cursor.execute(f"REINDEX TABLE {packet_table}_path") cursor.execute(f"VACUUM FULL {packet_table}") cursor.execute(f"REINDEX TABLE {packet_table}") - # Drop packet_weather - for x in range(max_days_to_save_weather_data, max_days_to_save_weather_data + 100): + for x in range(max_retention, max_retention + drop_lookahead + 1): prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_format = prev_day.strftime('%Y%m%d') - packet_table = f"packet{prev_day_format}_weather" - drop_table_if_exists(cursor,track_direct_db_object_finder, packet_table, logger) + base_table = f"packet{prev_day_format}" - # Drop packet_telemetry - for x in range(max_days_to_save_telemetry_data, max_days_to_save_telemetry_data + 100): - prev_day = datetime.date.today() - datetime.timedelta(x) - prev_day_format = prev_day.strftime('%Y%m%d') - packet_table = f"packet{prev_day_format}_telemetry" - drop_table_if_exists(cursor,track_direct_db_object_finder, packet_table, logger) + # Drop weather sub-table (only if past weather retention) + if x >= max_days_to_save_weather_data: + drop_table_if_exists(cursor, track_direct_db_object_finder, f"{base_table}_weather", logger) - # Drop packets - for x in range(max_days_to_save_position_data, max_days_to_save_position_data + 100): - prev_day = datetime.date.today() - datetime.timedelta(x) - prev_day_format = prev_day.strftime('%Y%m%d') - packet_table = f"packet{prev_day_format}" + # Drop telemetry sub-table (only if past telemetry retention) + if x >= max_days_to_save_telemetry_data: + drop_table_if_exists(cursor, track_direct_db_object_finder, f"{base_table}_telemetry", logger) - drop_table_if_exists(cursor, track_direct_db_object_finder, f"{packet_table}_ogn", logger) - drop_table_if_exists(cursor, track_direct_db_object_finder, f"{packet_table}_path", logger) - drop_table_if_exists(cursor, track_direct_db_object_finder, packet_table, logger) + # Drop position sub-tables and main table (only if past position retention) + if x >= max_days_to_save_position_data: + drop_table_if_exists(cursor, track_direct_db_object_finder, f"{base_table}_ogn", logger) + drop_table_if_exists(cursor, track_direct_db_object_finder, f"{base_table}_path", logger) + drop_table_if_exists(cursor, track_direct_db_object_finder, base_table, logger) - # Delete old stations timestamp_limit = int(time.time()) - (60 * 60 * 24 * max_days_to_save_station_data) deleted_rows = 0 sql = """SELECT station.id, station.latest_sender_id, station.name @@ -172,7 +176,6 @@ def main(): cursor.execute("VACUUM ANALYZE sender") cursor.execute("REINDEX TABLE sender") - # Close DB connection cursor.close() db.close() logger.info("Done!") @@ -181,5 +184,4 @@ def main(): logger.error(e, exc_info=1) if __name__ == '__main__': - main() - + main() \ No newline at end of file From c0f235708fcd2dfd28e77a46c73ee83d37c73b04 Mon Sep 17 00:00:00 2001 From: MrTalon63 Date: Sun, 12 Jul 2026 11:47:11 +0200 Subject: [PATCH 20/24] Defer vacuum --- server/bin/remover.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/server/bin/remover.py b/server/bin/remover.py index a174ef8..d6f4781 100644 --- a/server/bin/remover.py +++ b/server/bin/remover.py @@ -99,10 +99,7 @@ def main(): logger.info(f"Deleted {deleted_rows} from {packet_table}") if deleted_rows > 0: - cursor.execute(f"VACUUM FULL {packet_table}_path") - cursor.execute(f"REINDEX TABLE {packet_table}_path") - cursor.execute(f"VACUUM FULL {packet_table}") - cursor.execute(f"REINDEX TABLE {packet_table}") + logger.info(f"Cleanup deferred to autovacuum for {packet_table}") for x in range(max_retention, max_retention + drop_lookahead + 1): prev_day = datetime.date.today() - datetime.timedelta(x) From 85e0d24fd03198700f7e5c1e131006a8b308c7a6 Mon Sep 17 00:00:00 2001 From: MrTalon63 Date: Sun, 12 Jul 2026 13:04:27 +0200 Subject: [PATCH 21/24] whoops --- server/bin/remover.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/bin/remover.py b/server/bin/remover.py index d6f4781..8ba9f7c 100644 --- a/server/bin/remover.py +++ b/server/bin/remover.py @@ -149,7 +149,7 @@ def main(): logger.info(f"Trying to delete station {record['name']} ({record['id']})") delete_cursor = db_no_auto_commit.cursor() try: - for table in ['station_telemetry_bits', 'station_telemetry_eqns', 'station_telemetry_param', 'station_telemetry_unit', 'station_city']: + for table in ['station_telemetry_bits', 'station_telemetry_eqns', 'station_telemetry_param', 'station_telemetry_unit']: delete_cursor.execute(f"DELETE FROM {table} WHERE station_id = %s", (record["id"],)) delete_cursor.execute("DELETE FROM station WHERE id = %s", (record["id"],)) From ec8894b67df29538c87c90731bd28b038133b17f Mon Sep 17 00:00:00 2001 From: MrTalon63 Date: Sun, 12 Jul 2026 14:17:51 +0200 Subject: [PATCH 22/24] remove sleep --- server/bin/remover.py | 1 - 1 file changed, 1 deletion(-) diff --git a/server/bin/remover.py b/server/bin/remover.py index 8ba9f7c..25b1fa0 100644 --- a/server/bin/remover.py +++ b/server/bin/remover.py @@ -158,7 +158,6 @@ def main(): db_no_auto_commit.commit() delete_cursor.close() deleted_rows += 1 - time.sleep(0.5) except Exception as e: logger.error(e, exc_info=1) db_no_auto_commit.rollback() From 591553615b2cad58eba3f41444e16b2442e6241d Mon Sep 17 00:00:00 2001 From: MrTalon63 Date: Mon, 13 Jul 2026 07:37:18 +0200 Subject: [PATCH 23/24] More logging --- server/bin/remover.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/server/bin/remover.py b/server/bin/remover.py index 25b1fa0..bf73b0e 100644 --- a/server/bin/remover.py +++ b/server/bin/remover.py @@ -101,25 +101,40 @@ def main(): if deleted_rows > 0: logger.info(f"Cleanup deferred to autovacuum for {packet_table}") + scanned_days = 0 + dropped_tables = 0 for x in range(max_retention, max_retention + drop_lookahead + 1): + scanned_days += 1 prev_day = datetime.date.today() - datetime.timedelta(x) prev_day_format = prev_day.strftime('%Y%m%d') base_table = f"packet{prev_day_format}" # Drop weather sub-table (only if past weather retention) if x >= max_days_to_save_weather_data: + if track_direct_db_object_finder.check_table_exists(f"{base_table}_weather"): + dropped_tables += 1 drop_table_if_exists(cursor, track_direct_db_object_finder, f"{base_table}_weather", logger) # Drop telemetry sub-table (only if past telemetry retention) if x >= max_days_to_save_telemetry_data: + if track_direct_db_object_finder.check_table_exists(f"{base_table}_telemetry"): + dropped_tables += 1 drop_table_if_exists(cursor, track_direct_db_object_finder, f"{base_table}_telemetry", logger) # Drop position sub-tables and main table (only if past position retention) if x >= max_days_to_save_position_data: + if track_direct_db_object_finder.check_table_exists(f"{base_table}_ogn"): + dropped_tables += 1 drop_table_if_exists(cursor, track_direct_db_object_finder, f"{base_table}_ogn", logger) + if track_direct_db_object_finder.check_table_exists(f"{base_table}_path"): + dropped_tables += 1 drop_table_if_exists(cursor, track_direct_db_object_finder, f"{base_table}_path", logger) + if track_direct_db_object_finder.check_table_exists(base_table): + dropped_tables += 1 drop_table_if_exists(cursor, track_direct_db_object_finder, base_table, logger) + logger.info(f"Phase 2 complete: scanned {scanned_days} days, dropped {dropped_tables} tables") + timestamp_limit = int(time.time()) - (60 * 60 * 24 * max_days_to_save_station_data) deleted_rows = 0 sql = """SELECT station.id, station.latest_sender_id, station.name From 2ad7b804034b251c6d5670dc4c2d75c397162c0c Mon Sep 17 00:00:00 2001 From: MrTalon63 Date: Mon, 13 Jul 2026 07:42:05 +0200 Subject: [PATCH 24/24] make ogn also use ini file for psql creds --- crontab | 2 +- server/scripts/ogn_devices_install.sh | 41 ++++++++++++++++++--------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/crontab b/crontab index 3ee247f..db3694e 100644 --- a/crontab +++ b/crontab @@ -1,2 +1,2 @@ 40 * * * * ~/trackdirect/server/scripts/remover.sh trackdirect.ini -*/30 * * * * ~/trackdirect/server/scripts/ogn_devices_install.sh trackdirect db 5432 postgres +*/30 * * * * ~/trackdirect/server/scripts/ogn_devices_install.sh trackdirect.ini diff --git a/server/scripts/ogn_devices_install.sh b/server/scripts/ogn_devices_install.sh index 2175b76..8caab7e 100755 --- a/server/scripts/ogn_devices_install.sh +++ b/server/scripts/ogn_devices_install.sh @@ -2,14 +2,29 @@ if [ $# -eq 0 ] then echo "No arguments supplied" - echo "$0 [dbname] [dbport] [dbuser]" + echo "$0 [config file]" exit fi -DATABASE=$1 -HOST=$2 -PORT=$3 -USER=$4 +CONFIGFILE=$1 +if [[ "$CONFIGFILE" != /* ]]; then + CONFIGFILE="$HOME/trackdirect/config/$CONFIGFILE" +fi + +if [ ! -f "$CONFIGFILE" ]; then + echo "Config file $CONFIGFILE does not exist" + exit +fi + +# Parse database credentials from the .ini config file +DB_HOST=$(grep -oP '^host\s*=\s*\K.*' "$CONFIGFILE" | head -1) +DB_PORT=$(grep -oP '^port\s*=\s*\K.*' "$CONFIGFILE" | head -1) +DB_NAME=$(grep -oP '^database\s*=\s*\K.*' "$CONFIGFILE" | head -1) +DB_USER=$(grep -oP '^username\s*=\s*\K.*' "$CONFIGFILE" | head -1) +DB_PASS=$(grep -oP '^password\s*=\s*\K.*' "$CONFIGFILE" | head -1) + +# Export password so psql doesn't need .pgpass +export PGPASSWORD="$DB_PASS" pushd `dirname $0` > /dev/null SCRIPTPATH=`pwd -P` @@ -17,10 +32,10 @@ popd > /dev/null # Create dir and remove old stuff (keep zip-file since it may be equal to latest) mkdir -p $SCRIPTPATH/ogndevices -mkdir -p $SCRIPTPATH/ogndevices/${DATABASE} -rm $SCRIPTPATH/ogndevices/${DATABASE}/*.csv -rm $SCRIPTPATH/ogndevices/${DATABASE}/*.txt -cd $SCRIPTPATH/ogndevices/${DATABASE} +mkdir -p $SCRIPTPATH/ogndevices/${DB_NAME} +rm $SCRIPTPATH/ogndevices/${DB_NAME}/*.csv +rm $SCRIPTPATH/ogndevices/${DB_NAME}/*.txt +cd $SCRIPTPATH/ogndevices/${DB_NAME} # Download latest csv file (but only if newer) wget -N http://ddb.glidernet.org/download/?t=1 -O ogndevices.csv @@ -34,8 +49,8 @@ else # Remove comments in file sed '/^#/ d' < ogndevices.csv > ogndevices2.csv -# Load file into database (assumes .pgpass is correctly set) -psql -h $HOST -p $PORT $DATABASE -U $USER << EOF +# Load file into database (password comes from PGPASSWORD env var) +psql -h $DB_HOST -p $DB_PORT $DB_NAME -U $DB_USER << EOF create table if not exists ogn_device ( "device_type" text not null, @@ -52,7 +67,7 @@ begin transaction; drop index if exists ogn_device_device_id_idx; truncate ogn_device; -\copy ogn_device from '$SCRIPTPATH/ogndevices/$DATABASE/ogndevices2.csv' DELIMITERS ',' CSV QUOTE ''''; +\copy ogn_device from '$SCRIPTPATH/ogndevices/$DB_NAME/ogndevices2.csv' DELIMITERS ',' CSV QUOTE ''''; create index ogn_device_device_id_idx on ogn_device(device_id); insert into ogn_device(device_type, device_id, aircraft_model, registration, cn, tracked, identified, ddb_aircraft_type) values ('F', '3FEF6F', '', '', '', 'N', 'N', 1); @@ -62,4 +77,4 @@ EOF fi -exit 0 +exit 0 \ No newline at end of file