Merge remote-tracking branch 'origin/main' into security-fixes
Some checks failed
Build (and tag) Images / build (push) Has been cancelled

This commit is contained in:
Stefan Bethke 2026-11-15 11:45:52 +01:00
commit 3211e0f355
36 changed files with 779 additions and 96 deletions

View file

@ -16,13 +16,13 @@ env:
jobs:
build:
runs-on: docker
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
- name: Set image tags
id: vars
@ -42,14 +42,14 @@ jobs:
env:
TAG: ${{ steps.vars.outputs.tag }}
run: |
docker build -f ./Containerfile -t "$IMAGE_PREFIX/web:$TAG" .
docker buildx build -f ./Containerfile -t "$IMAGE_PREFIX/web:$TAG" --load .
working-directory: ./web
- name: Build data_handler image
env:
TAG: ${{ steps.vars.outputs.tag }}
run: |
docker build -f ./Containerfile -t "$IMAGE_PREFIX/data_handler:$TAG" .
docker buildx build -f ./Containerfile -t "$IMAGE_PREFIX/data_handler:$TAG" --load .
working-directory: ./data_handler
- name: Update docker-compose.yml image tags
@ -65,7 +65,7 @@ jobs:
- name: Login to Container Registry
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: git.hamburg.ccc.de
username: ${{ secrets.REGISTRY_USERNAME }}

View file

@ -9,7 +9,8 @@ Icon | Description
![Cameras][img_camall] | Camera — no further information
![Fixed cameras][img_fixedall] | Fixed camera — usually observing a limited area
![Panning cameras][img_panningall] | Panning camera — usually able to observe various areas
![Dome cameras][img_domeall] | Dome camera — usually observing a 360° area
![Dome cameras][img_domeall] | Dome camera — usually observing a 360° area by panning, tilting and zooming
![Panorama cameras][img_panoramaall] | Panorama camera — usually observing an entire 360° area all at once
![Guards][img_guardall] | Guard — e.g. an employee of a security service
![Automatic Licence Plate Recognition][img_traffic] | ALPR — Automatic Licence Plate Recognition
@ -18,7 +19,7 @@ Color | Description
![Public surveillance][img_redall] | Red background — observing a public outdoor area, accessable by everyone
![Outdoor surveillance][img_blueall] | Blue background — observing a private outdoor area, accessable only by authorized persons
![Indoor surveillance][img_greenall] | Green background — observing an indoor area
![Cameras, fixme][img_todo_camall]<br>![Dome cameras, fixme][img_todo_domeall]<br>![Guards, fixme][img_todo_guardall]<br>![Automatic Licence Plate Recognition, fixme][img_todo_traffic] | Yellow icon — camera or guard marked with a fixme key because it needs further attention
![Cameras, fixme][img_todo_camall]<br>![Dome cameras, fixme][img_todo_domeall]<br>![Panorama cameras, fixme][img_todo_panoramaall]<br>![Guards, fixme][img_todo_guardall]<br>![Automatic Licence Plate Recognition, fixme][img_todo_traffic] | Yellow icon — camera or guard marked with a fixme key because it needs further attention
A running instance of this project can be visited at [https://sunders.uber.space/](https://sunders.uber.space/).
@ -36,7 +37,7 @@ To run Surveillance using docker, decide between development/testing or producti
2. Run `docker compose up` and wait for services to start up
3. Visit `http://localhost:8080/` in a browser; you should see an interactive OpenStreetMap
3. Visit `http://localhost:8081/` in a browser; you should see an interactive OpenStreetMap
_tbd.: Populate camera data_
@ -48,7 +49,7 @@ _tbd.: Populate camera data_
3. Run `docker compose up` and wait for services to start up
3. Visit `http://localhost:8080/` in a browser to open the web interface
3. Visit `http://localhost:8081/` in a browser to open the web interface
_tbd.: Populate camera data_
@ -70,6 +71,7 @@ Icon | Key | Value
![Fixed camera][img_fixed] | [`surveillance:type`](https://wiki.openstreetmap.org/wiki/Key:surveillance:type)<br>[`camera:type`](https://wiki.openstreetmap.org/wiki/Proposed_features/Extended_tags_for_Key:Surveillance#Camera) | `camera`<br>`fixed`
![Panning camera][img_panning] | [`surveillance:type`](https://wiki.openstreetmap.org/wiki/Key:surveillance:type)<br>[`camera:type`](https://wiki.openstreetmap.org/wiki/Proposed_features/Extended_tags_for_Key:Surveillance#Camera) | `camera`<br>`panning`
![Dome camera][img_dome] | [`surveillance:type`](https://wiki.openstreetmap.org/wiki/Key:surveillance:type)<br>[`camera:type`](https://wiki.openstreetmap.org/wiki/Proposed_features/Extended_tags_for_Key:Surveillance#Camera) | `camera`<br>`dome`
![Panorama camera][img_panorama] | [`surveillance:type`](https://wiki.openstreetmap.org/wiki/Key:surveillance:type)<br>[`camera:type`](https://wiki.openstreetmap.org/wiki/Proposed_features/Extended_tags_for_Key:Surveillance#Camera) | `camera`<br>`panorama`
![Guard][img_guard] | [`surveillance:type`](https://wiki.openstreetmap.org/wiki/Key:surveillance:type) | `guard`
![Automatic Licence Plate Recognition][img_traffic] | [`surveillance:type`](https://wiki.openstreetmap.org/wiki/Key:surveillance:type) | `ALPR`
@ -134,6 +136,10 @@ Key | Value
[img_domeall]: ./web/www/sunders/images/domeAll.png "Dome cameras"
[img_todo_domeall]: ./web/www/sunders/images/todo_domeAll.png "Dome cameras, fixme"
[img_panorama]: ./web/www/sunders/images/panorama.png "Panorama camera"
[img_panoramaall]: ./web/www/sunders/images/panoramaAll.png "Panorama cameras"
[img_todo_panoramaall]: ./web/www/sunders/images/todo_panoramaAll.png "Panorama cameras, fixme"
[img_guard]: ./web/www/sunders/images/guard.png "Guard"
[img_guardall]: ./web/www/sunders/images/guardAll.png "Guards"
[img_todo_guardall]: ./web/www/sunders/images/todo_guardAll.png "Guards, fixme"

View file

@ -1,4 +1,4 @@
FROM quay.io/fedora/fedora-minimal:43
FROM quay.io/fedora/fedora-minimal:46
RUN microdnf install -y php-cli php-mysqli php-bcmath php-xml python-lxml gunzip https://raw.githubusercontent.com/rpmsphere/x86_64/master/d/dcron-4.5-7.1.x86_64.rpm && microdnf clean all
COPY ./utils/* /opt/
COPY ./data_init/*.sql /opt/init/init.sql

View file

@ -1,4 +1,4 @@
FROM quay.io/fedora/fedora-minimal:43
FROM quay.io/fedora/fedora-minimal:46
RUN microdnf install -y python-pip && microdnf clean all && pip install OSMPythonTools
COPY ./lookup_country.py /opt/

View file

@ -1,6 +1,6 @@
services:
db:
image: mariadb:12.0.2
image: mariadb:13.0.2
command: --max_allowed_packet=3250585600
environment:
MYSQL_ROOT_PASSWORD: rootpassword # ${{secrets.MYSQL_ROOT_PASSWORD}}
@ -29,7 +29,7 @@ services:
DEFAULT_LANGUAGE: en
IMPRESSUM_URL: https://hamburg.ccc.de/imprint/
ports:
- "8080:80"
- "8081:80"
depends_on:
data_handler:
condition: service_started

View file

@ -76,10 +76,11 @@ if (USE_STATISTICS) {
t.v = 'level_crossing' OR
t.v = 'red_light' OR
t.v = 'speed_camera')) THEN 5
WHEN t.k = 'camera:type' AND t.v = 'panorama' THEN 6
ELSE 0
END
WHERE s.id = ? AND (
(t.k = 'camera:type' AND (t.v = 'fixed' OR t.v = 'panning' OR t.v = 'dome')) OR
(t.k = 'camera:type' AND (t.v = 'fixed' OR t.v = 'panning' OR t.v = 'dome' OR t.v = 'panorama')) OR
(t.k = 'surveillance:type' AND (t.v = 'guard' OR t.v = 'ALPR')) OR
(t.k = 'surveillance' AND (
t.v = 'level_crossing' OR

View file

@ -13,6 +13,7 @@
"v-fixed": "fixed (feststehend)",
"v-panning": "panning (schwenkbar)",
"v-dome": "dome (Kuppel)",
"v-panorama": "panorama (Panorama)",
"v-guard": "guard (Wachpersonal)",
"v-alpr": "ALPR (AKLS)",
"icon-public-alt": "Überwachung öffentlicher Bereiche",
@ -22,10 +23,12 @@
"icon-fixed-alt": "Feststehende Kamera",
"icon-panning-alt": "Schwenkbare Kamera",
"icon-dome-alt": "Kuppelkamera",
"icon-panorama-alt": "Panoramakamera",
"icon-guard-alt": "Wachpersonal",
"icon-alpr-alt": "Automatische Kennzeichenlesesysteme",
"title-view-fixed": "Notwendig, zum Anzeigen des feststehenden Kamerablickfelds",
"title-view-dome": "Notwendig, zum Anzeigen des Kuppelkamerablickfelds",
"title-view-panorama": "Notwendig, zum Anzeigen des Panoramakamerablickfelds",
"k-cam-direction": "@@LT00",
"k-cam-angle": "@@LT00",
"k-height": "@@LT00",
@ -44,6 +47,9 @@
"example-img-3-alt": "Rundumblickfeld (Höhe: 3m)",
"example-img-4-alt": "Rundumblickfeld (Höhe: 5m)",
"example-img-5-alt": "Rundumblickfeld (Höhe: 5m, Richtung: 45°)",
"example-img-6-alt": "Panoramablickfeld (Höhe: 3m)",
"example-img-7-alt": "Panoramablickfeld (Höhe: 5m)",
"example-img-8-alt": "Panoramablickfeld (Höhe: 5m, Richtung: 45°)",
"example-direction-45": "Richtung = 45°",
"example-direction-90": "Richtung = 90°",
"example-angle-15": "Winkel = 15°",

View file

@ -13,6 +13,7 @@
"v-fixed": "fixed",
"v-panning": "panning",
"v-dome": "dome",
"v-panorama": "panorama",
"v-guard": "guard",
"v-alpr": "ALPR",
"icon-public-alt": "Public surveillance",
@ -22,10 +23,12 @@
"icon-fixed-alt": "Fixed camera",
"icon-panning-alt": "Panning camera",
"icon-dome-alt": "Dome camera",
"icon-panorama-alt": "Panorama camera",
"icon-guard-alt": "Guard",
"icon-alpr-alt": "Automatic Licence Plate Recognition",
"title-view-fixed": "Mandatory to draw a fixed camera's field of view",
"title-view-dome": "Mandatory to draw a dome camera's field of view",
"title-view-panorama": "Mandatory to draw a panorama camera's field of view",
"k-cam-direction": "@@LT00",
"k-cam-angle": "@@LT00",
"k-height": "@@LT00",
@ -44,6 +47,9 @@
"example-img-3-alt": "Dome field of view (height: 3m)",
"example-img-4-alt": "Dome field of view (height: 5m)",
"example-img-5-alt": "Dome field of view (height: 5m, direction: 45°)",
"example-img-6-alt": "Panorama field of view (height: 3m)",
"example-img-7-alt": "Panorama field of view (height: 5m)",
"example-img-8-alt": "Panorama field of view (height: 5m, direction: 45°)",
"example-direction-45": "direction = 45°",
"example-direction-90": "direction = 90°",
"example-angle-15": "angle = 15°",

View file

@ -59,6 +59,9 @@
"type5-0": "ANSE",
"type5-1": "Automatische Nummernschilderkennung",
"type5-2": "ANSE",
"type6-0": "Panoramakamera",
"type6-1": "überwacht meist einen 180°- oder 360°-Bereich",
"type6-2": "Panorama",
"all": "alle",
"Jan": "Jan",

View file

@ -59,6 +59,9 @@
"type5-0": "ALPR",
"type5-1": "Automatic Licence Plate Recognition",
"type5-2": "ALPR",
"type6-0": "Panorama camera",
"type6-1": "usually observing a 180° or 360° area",
"type6-2": "Panorama",
"all": "all",
"Jan": "Jan",

View file

@ -59,6 +59,9 @@
"type5-0": "ICAP",
"type5-1": "identificador automático de patentes",
"type5-2": "ICAP",
"type6-0": "Cámara panorámica",
"type6-1": "suele observar un área de 180° o 360°",
"type6-2": "Panorámica",
"all": "todo",
"Jan": "Ene",

View file

@ -59,6 +59,9 @@
"type5-0": "LAPI",
"type5-1": "Lecture Automatisée de Plaques d’Immatriculation",
"type5-2": "LAPI",
"type6-0": "Caméra panoramique",
"type6-1": "observe généralement une zone de 180° ou 360°",
"type6-2": "Panoramique",
"all": "tout",
"Jan": "Jan",

View file

@ -59,6 +59,9 @@
"type5-0": "ALPR",
"type5-1": "Riconoscimento automatico delle targhe",
"type5-2": "ALPR",
"type6-0": "Telecamera panoramica",
"type6-1": "di solito osserva un'area di 180° o 360°",
"type6-2": "Panoramica",
"all": "tutti",
"Jan": "Gen",

View file

@ -59,6 +59,9 @@
"type5-0": "АРНЗ",
"type5-1": "Автоматическое Распознавание Номерных Знаков",
"type5-2": "АРНЗ",
"type6-0": "Панорамная камера",
"type6-1": "обычно наблюдает зону обзора 180° или 360°",
"type6-2": "Панорамная",
"all": "все",
"Jan": "Янв",

View file

@ -9,6 +9,8 @@
"desc-panning": "Schwenkbare Kamera — überwacht meist verschiedene Bereiche",
"icon-dome-alt": "Kuppelkameras",
"desc-dome": "Kuppelkamera — überwacht meist einen 360°-Bereich",
"icon-panorama-alt": "Panoramakameras",
"desc-panorama": "Panoramakamera — überwacht meist einen 180°- oder 360°-Bereich",
"icon-guard-alt": "Wachpersonal",
"desc-guard": "Wachpersonal — z.B. Beschäftigte eines Sicherheitsunternehmens",
"icon-alpr-alt": "Automatische Kennzeichenlesesysteme",
@ -22,6 +24,7 @@
"desc-green": "Grüner Hintergrund — Überwachung eines Bereichs innerhalb eines Gebäudes",
"icon-yellow-fixed-alt": "Feststehend Kamera, zu kontrollieren",
"icon-yellow-dome-alt": "Kuppelkamera, zu kontrollieren",
"icon-yellow-panorama-alt": "Panoramakamera, zu kontrollieren",
"icon-yellow-guard-alt": "Wachpersonal, zu kontrollieren",
"icon-yellow-alpr-alt": "Automatische Nummernschilderkennung, zu kontrollieren",
"desc-yellow": "Gelbes Symbol — Mit einem Kontrollkennzeichen markiere Kamera oder Wachpersonaleintrag, die/der noch korrigiert oder vervollständigt werden muss."

View file

@ -9,6 +9,8 @@
"desc-panning": "Panning camera — usually able to observe various areas",
"icon-dome-alt": "Dome cameras",
"desc-dome": "Dome camera — usually observing a 360° area",
"icon-panorama-alt": "Panorama cameras",
"desc-panorama": "Panorama camera — usually observing a 180° or 360° area",
"icon-guard-alt": "Guards",
"desc-guard": "Guard — e.g. an employee of a security service",
"icon-alpr-alt": "Automatic Licence Plate Recognition",
@ -22,6 +24,7 @@
"desc-green": "Green background — observing an indoor area",
"icon-yellow-fixed-alt": "Fixed cameras, fixme",
"icon-yellow-dome-alt": "Dome cameras, fixme",
"icon-yellow-panorama-alt": "Panorama cameras, fixme",
"icon-yellow-guard-alt": "Guards, fixme",
"icon-yellow-alpr-alt": "Automatic Licence Plate Recognition, fixme",
"desc-yellow": "Yellow icon — camera or guard marked with a fixme key because it needs further attention"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 897 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 895 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 897 B

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Some files were not shown because too many files have changed in this diff Show more