From ea2d8ebe37452441200545c00c67cd1a61ac012f Mon Sep 17 00:00:00 2001 From: aso Date: Sat, 1 Nov 2025 12:20:36 +0100 Subject: [PATCH] first changes for sync of instances --- docker-compose-dev.yml | 72 ++++++++++++++++++++++++++++++++++ web/www/sunders/sync-state.php | 27 +++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 docker-compose-dev.yml create mode 100644 web/www/sunders/sync-state.php diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml new file mode 100644 index 0000000..58c2af2 --- /dev/null +++ b/docker-compose-dev.yml @@ -0,0 +1,72 @@ +services: + db: + image: mariadb:12.0.2 + restart: unless-stopped + command: --max_allowed_packet=3250585600 + environment: + MYSQL_ROOT_PASSWORD: rootpassword # ${{secrets.MYSQL_ROOT_PASSWORD}} + MYSQL_DATABASE: camera # ${{secrets.MYSQL_DATABASE}} + MYSQL_USER: camera # ${{secrets.MYSQL_USER}} + MYSQL_PASSWORD: camerapassword # ${{secrets.MYSQL_PASSWORD}} + volumes: + - ./mariadb:/var/lib/mysql:Z + healthcheck: + test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-uroot", "-prootpassword"] + interval: 10s + timeout: 5s + start_period: 30s + retries: 5 + + web: + image: git.hamburg.ccc.de/ccchh/sunders/web:latest + restart: unless-stopped + environment: + MYSQL_HOST: db + MYSQL_DB: camera # ${{secrets.MYSQL_DATABASE}} + CAMERA_SELECT_USER: camera_select # ${{secrets.CAMERA_SELECT_USER}} + CAMERA_SELECT_USER_PASSWORD: camera_selectpassword # ${{secrets.CAMERA_SELECT_USER_PASSWORD}} + DEFAULT_ZOOM: 12 + DEFAULT_LAT: 0 + DEFAULT_LON: 0 + DEFAULT_LANGUAGE: en + IMPRESSUM_URL: https://hamburg.ccc.de/imprint/ + ports: + - "8081:80" + volumes: + - ./web/www/sunders:/var/www/html:Z + depends_on: + db: + condition: service_started + # all the way zoomed out, with hamburg at the center, at least one camera should be returned + healthcheck: + test: > + ["CMD", "curl -s 'http://localhost/camera.php?bbox=-92.52991540527346,30.683278176916133,131.7689595947266,72.87186315234298&zoom=4&width=2552&height=867' | grep '^\[.+\]$'"] + interval: 10s + timeout: 5s + retries: 5 + + data_handler: + image: git.hamburg.ccc.de/ccchh/sunders/data_handler:latest + restart: unless-stopped + environment: + MYSQL_HOST: db + MYSQL_DB: camera # ${{secrets.MYSQL_DATABASE}} + MYSQL_USER: root # ${{secrets.MYSQL_USER}} + MYSQL_PASSWORD: rootpassword # ${{secrets.MYSQL_ROOT_PASSWORD}} + CAMERA_USER: camera # ${{secrets.CAMERA_USER}} + CAMERA_USER_PASSWORD: camerapassword # ${{secrets.CAMERA_USER_PASSWORD}} + CAMERA_SELECT_USER: camera_select # ${{secrets.CAMERA_SELECT_USER}} + CAMERA_SELECT_USER_PASSWORD: camera_selectpassword # ${{secrets.CAMERA_SELECT_USER_PASSWORD}} + depends_on: + db: + condition: service_healthy + restart: true + # if the latest `update_camera_*.log` contains "error", fail the healthcheck + healthcheck: + test: ["CMD", "sh", "-c", "ls /var/log | grep '^update_camera_' | xargs -I {} sh -c 'grep -q error /var/log/{} || exit 0; exit 1'"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + mariadb: \ No newline at end of file diff --git a/web/www/sunders/sync-state.php b/web/www/sunders/sync-state.php new file mode 100644 index 0000000..095e92c --- /dev/null +++ b/web/www/sunders/sync-state.php @@ -0,0 +1,27 @@ +connect_errno) { + header('Content-type: application/json'); + $result = '{"error":"error while connecting to db : ' . $mysqli->error . '"}'; + echo $result; + exit; + } + + $syncstate_querry = $mysqli->query("SELECT * FROM sync_state WHERE k = 'sequenceNumber'"); + + while($row = $syncstate_querry->fetch_assoc()) { + $syncstate = array('sequenceNumber' => $row["v"]); + } + + $result = json_encode($syncstate); + + $mysqli->close(); + + header('Content-type: application/json; Charset : utf-8'); + echo $result; +?>