Compare commits

...
2 Commits
Author SHA1 Message Date
rothmanandClaude Opus 5.5 33ef898fcc Rename the repository to daynivo-kiosk-os in docs and image name
CI / test-latest (push) Successful in 32s
CI / test-bookworm (push) Failing after 4s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 19:04:49 +01:00
rothmanandClaude Opus 5.5 4e20e358aa Rename the visible VoxIP texts to Daynivo
Product name (Daynivo Kiosk OS), default device name, kiosk screens,
service descriptions, installer output and docs. Internal names
(voxip-kiosk-*, /etc/voxip-kiosk, user voxip, VOXIP_* variables) stay.
An update renames a device still called "VoxIP Kiosk" to the new default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 18:59:16 +01:00
40 changed files with 69 additions and 66 deletions

No files matched your search

+8 -8
View File
@@ -1,4 +1,4 @@
# VoxIP Kiosk OS # Daynivo Kiosk OS
Lichte, onderhoudbare kioskdistributie voor de Raspberry Pi 3 (Model B/B+) Lichte, onderhoudbare kioskdistributie voor de Raspberry Pi 3 (Model B/B+)
op basis van Raspberry Pi OS Lite 32-bit (Bookworm of Trixie). Na het op basis van Raspberry Pi OS Lite 32-bit (Bookworm of Trixie). Na het
@@ -24,7 +24,7 @@ hardware staat in [`docs/HARDWARE-TEST.md`](docs/HARDWARE-TEST.md).
### Optie A — kant-en-klare image ### Optie A — kant-en-klare image
1. Bouw de image (zie hieronder) of gebruik een uitgebrachte 1. Bouw de image (zie hieronder) of gebruik een uitgebrachte
`*-voxip-kiosk-os-*.img.xz`. `*-daynivo-kiosk-os-*.img.xz`.
2. Schrijf hem met **Raspberry Pi Imager** (*Eigen image gebruiken*) of 2. Schrijf hem met **Raspberry Pi Imager** (*Eigen image gebruiken*) of
**balenaEtcher** naar een microSD-kaart van 16 GB of groter. **balenaEtcher** naar een microSD-kaart van 16 GB of groter.
3. Optioneel, in Raspberry Pi Imager → *OS-aanpassingen*: wifi, gebruiker 3. Optioneel, in Raspberry Pi Imager → *OS-aanpassingen*: wifi, gebruiker
@@ -45,8 +45,8 @@ standaard sinds Bookworm).
```bash ```bash
sudo apt-get install -y git sudo apt-get install -y git
git clone <url-van-deze-repository> voxip-kiosk-os git clone <url-van-deze-repository> daynivo-kiosk-os
cd voxip-kiosk-os cd daynivo-kiosk-os
sudo ./install.sh --url "https://schermen-ijsselflat.voxip.nl" --name "IJsselflat" --hostname ijsselflat sudo ./install.sh --url "https://schermen-ijsselflat.voxip.nl" --name "IJsselflat" --hostname ijsselflat
``` ```
@@ -61,7 +61,7 @@ de Daynivo-repository)? Dan neemt `install.sh` de display-URL (inclusief
### Updaten ### Updaten
```bash ```bash
cd voxip-kiosk-os cd daynivo-kiosk-os
sudo ./update.sh # git pull --ff-only + back-up van /etc/voxip-kiosk + install.sh --upgrade sudo ./update.sh # git pull --ff-only + back-up van /etc/voxip-kiosk + install.sh --upgrade
``` ```
@@ -95,7 +95,7 @@ sudo apt-get install -y qemu-user-static binfmt-support # alleen op x86_64
sudo ./image/build.sh --native sudo ./image/build.sh --native
``` ```
Resultaat: `image/deploy/<datum>-voxip-kiosk-os-<versie>.img.xz` plus een Resultaat: `image/deploy/<datum>-daynivo-kiosk-os-<versie>.img.xz` plus een
`.sha256` en `BUILD-INFO-<versie>.txt`. `.sha256` en `BUILD-INFO-<versie>.txt`.
Instelbaar via omgevingsvariabelen: Instelbaar via omgevingsvariabelen:
@@ -105,7 +105,7 @@ Instelbaar via omgevingsvariabelen:
| `PI_GEN_REF` | `2024-11-19-raspios-bookworm-armhf` | pi-gen-tag (32-bit) | | `PI_GEN_REF` | `2024-11-19-raspios-bookworm-armhf` | pi-gen-tag (32-bit) |
| `RELEASE` | `bookworm` | `bookworm` of `trixie` (moet bij `PI_GEN_REF` passen) | | `RELEASE` | `bookworm` | `bookworm` of `trixie` (moet bij `PI_GEN_REF` passen) |
| `VOXIP_DEFAULT_URL` | `https://schermen-ijsselflat.voxip.nl` | standaard kiosk-URL | | `VOXIP_DEFAULT_URL` | `https://schermen-ijsselflat.voxip.nl` | standaard kiosk-URL |
| `VOXIP_DEVICE_NAME` | `VoxIP Kiosk` | standaard apparaatnaam | | `VOXIP_DEVICE_NAME` | `Daynivo Kiosk` | standaard apparaatnaam |
| `TARGET_HOSTNAME` | `kiosk` | hostname (`http://<hostname>.local:8080`) | | `TARGET_HOSTNAME` | `kiosk` | hostname (`http://<hostname>.local:8080`) |
| `ALLOW_DIRTY` | `0` | `1` = bouw de werkmap in plaats van de laatste commit | | `ALLOW_DIRTY` | `0` | `1` = bouw de werkmap in plaats van de laatste commit |
@@ -151,7 +151,7 @@ journalctl -u voxip-kiosk-browser -u voxip-kiosk-agent -f
| Sleutel | Standaard | Betekenis | | Sleutel | Standaard | Betekenis |
|---|---|---| |---|---|---|
| `device_name` | `VoxIP Kiosk` | naam in beheer en op de offlinepagina | | `device_name` | `Daynivo Kiosk` | naam in beheer en op de offlinepagina |
| `url` | `https://schermen-ijsselflat.voxip.nl` | kiosk-URL, alleen HTTPS | | `url` | `https://schermen-ijsselflat.voxip.nl` | kiosk-URL, alleen HTTPS |
| `refresh_interval` | `0` | 0 = uit, anders 30–86400 seconden | | `refresh_interval` | `0` | 0 = uit, anders 30–86400 seconden |
| `screen_always_on` | `true` | geen screensaver/DPMS | | `screen_always_on` | `true` | geen screensaver/DPMS |
+1 -1
View File
@@ -1,3 +1,3 @@
# VoxIP Kiosk OS: allow the kiosk X server to be started by a system service. # Daynivo Kiosk OS: allow the kiosk X server to be started by a system service.
allowed_users=anybody allowed_users=anybody
needs_root_rights=yes needs_root_rights=yes
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"device_name": "VoxIP Kiosk", "device_name": "Daynivo Kiosk",
"url": "https://schermen-ijsselflat.voxip.nl", "url": "https://schermen-ijsselflat.voxip.nl",
"refresh_interval": 0, "refresh_interval": 0,
"screen_always_on": true, "screen_always_on": true,
+1 -1
View File
@@ -1,4 +1,4 @@
# VoxIP Kiosk OS: bounded journal, few SD-card writes. # Daynivo Kiosk OS: bounded journal, few SD-card writes.
[Journal] [Journal]
Storage=persistent Storage=persistent
SystemMaxUse=32M SystemMaxUse=32M
@@ -1,6 +1,6 @@
[Plymouth Theme] [Plymouth Theme]
Name=voxip-kiosk Name=voxip-kiosk
Description=VoxIP Kiosk boot splash (logo on white) Description=Daynivo Kiosk boot splash (logo on white)
ModuleName=script ModuleName=script
[script] [script]
@@ -1,4 +1,4 @@
# VoxIP Kiosk boot splash: logo.png centred on white, at most half the screen. # Daynivo Kiosk boot splash: logo.png centred on white, at most half the screen.
# Replace logo.png (any size, PNG with transparency) for a different logo. # Replace logo.png (any size, PNG with transparency) for a different logo.
Window.SetBackgroundTopColor(1, 1, 1); Window.SetBackgroundTopColor(1, 1, 1);
Window.SetBackgroundBottomColor(1, 1, 1); Window.SetBackgroundBottomColor(1, 1, 1);
+1 -1
View File
@@ -1,4 +1,4 @@
# VoxIP Kiosk OS: the web interface (user voxip) may run exactly one program # Daynivo Kiosk OS: the web interface (user voxip) may run exactly one program
# as root: the restricted helper, which validates all of its input itself. # as root: the restricted helper, which validates all of its input itself.
Defaults:voxip !requiretty Defaults:voxip !requiretty
voxip ALL=(root) NOPASSWD: /usr/lib/voxip-kiosk/voxip-kiosk-helper voxip ALL=(root) NOPASSWD: /usr/lib/voxip-kiosk/voxip-kiosk-helper
+1 -1
View File
@@ -1,4 +1,4 @@
# VoxIP Kiosk OS: hardware watchdog. A hung kernel or PID 1 reboots the Pi. # Daynivo Kiosk OS: hardware watchdog. A hung kernel or PID 1 reboots the Pi.
[Manager] [Manager]
RuntimeWatchdogSec=15s RuntimeWatchdogSec=15s
RebootWatchdogSec=2min RebootWatchdogSec=2min
+1 -1
View File
@@ -1,4 +1,4 @@
# VoxIP Kiosk OS: compressed swap in RAM instead of a swap file on the SD card. # Daynivo Kiosk OS: compressed swap in RAM instead of a swap file on the SD card.
[zram0] [zram0]
zram-size = ram / 2 zram-size = ram / 2
compression-algorithm = zstd compression-algorithm = zstd
+3 -3
View File
@@ -1,4 +1,4 @@
# Architectuur — VoxIP Kiosk OS # Architectuur — Daynivo Kiosk OS
Dit document is het architectuurvoorstel waarop de implementatie in deze Dit document is het architectuurvoorstel waarop de implementatie in deze
repository gebaseerd is. Het beschrijft de onderdelen, hun rechten, hoe ze repository gebaseerd is. Het beschrijft de onderdelen, hun rechten, hoe ze
@@ -119,7 +119,7 @@ draait) kan het apparaat dus claimen, iemand anders op het netwerk niet.
`voxip-network-guard.service` de snapshot terug bij het opstarten, nog `voxip-network-guard.service` de snapshot terug bij het opstarten, nog
vóór NetworkManager start. vóór NetworkManager start.
6. Noodherstel: een leeg bestand `voxip-network-reset` op de bootpartitie 6. Noodherstel: een leeg bestand `voxip-network-reset` op de bootpartitie
verwijdert bij de volgende boot alle VoxIP-netwerkprofielen (terug naar verwijdert bij de volgende boot alle Daynivo-netwerkprofielen (terug naar
DHCP). DHCP).
### Configuratie ### Configuratie
@@ -168,7 +168,7 @@ draait) kan het apparaat dus claimen, iemand anders op het netwerk niet.
## Directorystructuur ## Directorystructuur
``` ```
voxip-kiosk-os/ daynivo-kiosk-os/
├── README.md bouw-, flash-, installatie-instructies ├── README.md bouw-, flash-, installatie-instructies
├── VERSION ├── VERSION
├── Makefile test / lint / image ├── Makefile test / lint / image
+1 -1
View File
@@ -119,7 +119,7 @@ Noteer per stap: ✅ / ❌ + opmerking, de imageversie en het schermtype.
`voxip-config.error.txt` met de reden. De kiosk start met de standaardconfiguratie. `voxip-config.error.txt` met de reden. De kiosk start met de standaardconfiguratie.
- [ ] `sudo ./update.sh` vanuit een nieuwere checkout: versie in het dashboard - [ ] `sudo ./update.sh` vanuit een nieuwere checkout: versie in het dashboard
verhoogd, configuratie en wachtwoord ongewijzigd, back-up in `/var/backups`. verhoogd, configuratie en wachtwoord ongewijzigd, back-up in `/var/backups`.
- [ ] `sudo ./uninstall.sh --purge` op een testkaart: geen VoxIP-services of - [ ] `sudo ./uninstall.sh --purge` op een testkaart: geen Daynivo-services of
-bestanden meer (`systemctl list-unit-files | grep voxip` is leeg). -bestanden meer (`systemctl list-unit-files | grep voxip` is leeg).
- [ ] Installatie op een bestaande Raspberry Pi OS Lite (Bookworm) met de - [ ] Installatie op een bestaande Raspberry Pi OS Lite (Bookworm) met de
Daynivo-kiosk erop: URL overgenomen, `display-kiosk.service` uitgeschakeld. Daynivo-kiosk erop: URL overgenomen, `display-kiosk.service` uitgeschakeld.
+1 -1
View File
@@ -1,4 +1,4 @@
VoxIP Kiosk OS — bestanden op deze bootpartitie Daynivo Kiosk OS — bestanden op deze bootpartitie
================================================ ================================================
Je kunt een kiosk vooraf instellen door vóór de eerste start bestanden op Je kunt een kiosk vooraf instellen door vóór de eerste start bestanden op
+5 -5
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# Build a flashable VoxIP Kiosk OS image (.img.xz) with pi-gen. # Build a flashable Daynivo Kiosk OS image (.img.xz) with pi-gen.
# #
# ./image/build.sh # build in Docker (recommended) # ./image/build.sh # build in Docker (recommended)
# sudo ./image/build.sh --native # build directly on a Debian/Ubuntu host # sudo ./image/build.sh --native # build directly on a Debian/Ubuntu host
@@ -13,7 +13,7 @@
# TARGET_HOSTNAME default hostname (the admin UI is at http://<hostname>.local:8080). # TARGET_HOSTNAME default hostname (the admin UI is at http://<hostname>.local:8080).
# ALLOW_DIRTY=1 build from the working tree instead of the committed HEAD. # ALLOW_DIRTY=1 build from the working tree instead of the committed HEAD.
# #
# Output: image/deploy/<date>-voxip-kiosk-os-<version>.img.xz (+ .sha256) # Output: image/deploy/<date>-daynivo-kiosk-os-<version>.img.xz (+ .sha256)
set -euo pipefail set -euo pipefail
@@ -24,7 +24,7 @@ PI_GEN_REPO="${PI_GEN_REPO:-https://github.com/RPi-Distro/pi-gen.git}"
PI_GEN_REF="${PI_GEN_REF:-2024-11-19-raspios-bookworm-armhf}" PI_GEN_REF="${PI_GEN_REF:-2024-11-19-raspios-bookworm-armhf}"
RELEASE="${RELEASE:-bookworm}" RELEASE="${RELEASE:-bookworm}"
VOXIP_DEFAULT_URL="${VOXIP_DEFAULT_URL:-https://schermen-ijsselflat.voxip.nl}" VOXIP_DEFAULT_URL="${VOXIP_DEFAULT_URL:-https://schermen-ijsselflat.voxip.nl}"
VOXIP_DEVICE_NAME="${VOXIP_DEVICE_NAME:-VoxIP Kiosk}" VOXIP_DEVICE_NAME="${VOXIP_DEVICE_NAME:-Daynivo Kiosk}"
TARGET_HOSTNAME="${TARGET_HOSTNAME:-kiosk}" TARGET_HOSTNAME="${TARGET_HOSTNAME:-kiosk}"
NATIVE=0 NATIVE=0
[[ ${1:-} == "--native" ]] && NATIVE=1 [[ ${1:-} == "--native" ]] && NATIVE=1
@@ -49,7 +49,7 @@ PIGEN="$WORK/pi-gen"
touch "$PIGEN/stage2/SKIP_IMAGES" touch "$PIGEN/stage2/SKIP_IMAGES"
rm -f "$PIGEN/stage2/EXPORT_NOOBS" rm -f "$PIGEN/stage2/EXPORT_NOOBS"
echo "==> VoxIP-stage voorbereiden" echo "==> Daynivo-stage voorbereiden"
cp -a "$ROOT/image/stage-voxip" "$PIGEN/stage-voxip" cp -a "$ROOT/image/stage-voxip" "$PIGEN/stage-voxip"
PAYLOAD="$PIGEN/stage-voxip/00-voxip/files/voxip-kiosk" PAYLOAD="$PIGEN/stage-voxip/00-voxip/files/voxip-kiosk"
mkdir -p "$PAYLOAD" mkdir -p "$PAYLOAD"
@@ -86,7 +86,7 @@ EOF
FIRST_USER_PASS="$(openssl rand -base64 33 | tr -d '\n/+=')" FIRST_USER_PASS="$(openssl rand -base64 33 | tr -d '\n/+=')"
cat > "$PIGEN/config" <<EOF cat > "$PIGEN/config" <<EOF
IMG_NAME=voxip-kiosk-os-$VERSION IMG_NAME=daynivo-kiosk-os-$VERSION
IMG_DATE=$BUILD_DATE IMG_DATE=$BUILD_DATE
RELEASE=$RELEASE RELEASE=$RELEASE
DEPLOY_COMPRESSION=xz DEPLOY_COMPRESSION=xz
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash -e #!/bin/bash -e
# Install VoxIP Kiosk OS into the image with the same install.sh that is # Install Daynivo Kiosk OS into the image with the same install.sh that is
# used on existing Raspberry Pi OS installations. # used on existing Raspberry Pi OS installations.
# shellcheck disable=SC1091 # shellcheck disable=SC1091
+10 -7
View File
@@ -1,8 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# VoxIP Kiosk OS installer. # Daynivo Kiosk OS installer.
# #
# Turns Raspberry Pi OS Lite (Bookworm/Trixie, NetworkManager) into a VoxIP # Turns Raspberry Pi OS Lite (Bookworm/Trixie, NetworkManager) into a Daynivo
# kiosk. Also used by the image builder (inside the pi-gen chroot), so a # kiosk. Also used by the image builder (inside the pi-gen chroot), so a
# flashed image and a manual install are identical. # flashed image and a manual install are identical.
# #
@@ -53,7 +53,7 @@ while [[ $# -gt 0 ]]; do
done done
[[ $EUID -eq 0 ]] || die "Voer dit script uit met sudo." [[ $EUID -eq 0 ]] || die "Voer dit script uit met sudo."
[[ -f "$SRC/src/voxip_kiosk/config.py" ]] || die "Start install.sh vanuit de VoxIP Kiosk OS-repository." [[ -f "$SRC/src/voxip_kiosk/config.py" ]] || die "Start install.sh vanuit de Daynivo Kiosk OS-repository."
in_chroot() { in_chroot() {
if command -v systemd-detect-virt >/dev/null 2>&1 && systemd-detect-virt --chroot --quiet; then if command -v systemd-detect-virt >/dev/null 2>&1 && systemd-detect-virt --chroot --quiet; then
@@ -75,12 +75,12 @@ esac
if [[ $LIVE -eq 1 && $MODE == install ]]; then if [[ $LIVE -eq 1 && $MODE == install ]]; then
if ! systemctl is-enabled --quiet NetworkManager.service 2>/dev/null && systemctl is-enabled --quiet dhcpcd.service 2>/dev/null; then if ! systemctl is-enabled --quiet NetworkManager.service 2>/dev/null && systemctl is-enabled --quiet dhcpcd.service 2>/dev/null; then
die "Dit systeem gebruikt dhcpcd. VoxIP Kiosk OS vereist NetworkManager (standaard sinds Bookworm). Schakel om via 'sudo raspi-config' → Advanced Options → Network Config, of gebruik de kant-en-klare image." die "Dit systeem gebruikt dhcpcd. Daynivo Kiosk OS vereist NetworkManager (standaard sinds Bookworm). Schakel om via 'sudo raspi-config' → Advanced Options → Network Config, of gebruik de kant-en-klare image."
fi fi
fi fi
VERSION="$(tr -d '[:space:]' < "$SRC/VERSION")" VERSION="$(tr -d '[:space:]' < "$SRC/VERSION")"
say "VoxIP Kiosk OS $VERSION installeren (modus: $MODE)" say "Daynivo Kiosk OS $VERSION installeren (modus: $MODE)"
# --- packages ----------------------------------------------------------------- # --- packages -----------------------------------------------------------------
pkg_available() { apt-cache policy "$1" 2>/dev/null | grep -q 'Candidate: [0-9]'; } pkg_available() { apt-cache policy "$1" 2>/dev/null | grep -q 'Candidate: [0-9]'; }
@@ -109,7 +109,7 @@ pkg_available() { apt-cache policy "$1" 2>/dev/null | grep -q 'Candidate: [0-9]'
say "Gebruikers aanmaken" say "Gebruikers aanmaken"
getent group kiosk >/dev/null || groupadd --system kiosk getent group kiosk >/dev/null || groupadd --system kiosk
id kiosk >/dev/null 2>&1 || useradd --system --gid kiosk --home-dir /home/kiosk --create-home \ id kiosk >/dev/null 2>&1 || useradd --system --gid kiosk --home-dir /home/kiosk --create-home \
--shell /usr/sbin/nologin --comment "VoxIP kiosk display" kiosk --shell /usr/sbin/nologin --comment "Daynivo kiosk display" kiosk
for g in video render input audio; do for g in video render input audio; do
getent group "$g" >/dev/null && usermod -aG "$g" kiosk getent group "$g" >/dev/null && usermod -aG "$g" kiosk
done done
@@ -175,6 +175,9 @@ updates = {}
if url: updates["url"] = url if url: updates["url"] = url
if name: updates["device_name"] = name if name: updates["device_name"] = name
if os.path.exists(path): if os.path.exists(path):
# The old default device name went along with the rename to Daynivo; a chosen name stays.
if "device_name" not in updates and c.load_config(c.Path(path)).get("device_name") == "VoxIP Kiosk":
updates["device_name"] = "Daynivo Kiosk"
if updates: if updates:
c.save_config(c.Path(path), updates) c.save_config(c.Path(path), updates)
print("Bestaande configuratie bijgewerkt:", ", ".join(updates)) print("Bestaande configuratie bijgewerkt:", ", ".join(updates))
@@ -325,7 +328,7 @@ HOST="$(hostname)"
SCHEME=http SCHEME=http
grep -q '"admin_https": true' "$ETC/config.json" && SCHEME=https grep -q '"admin_https": true' "$ETC/config.json" && SCHEME=https
echo echo
say "VoxIP Kiosk OS $VERSION is geïnstalleerd." say "Daynivo Kiosk OS $VERSION is geïnstalleerd."
echo " Beheerinterface: ${SCHEME}://${HOST}.local:${ADMIN_PORT}" echo " Beheerinterface: ${SCHEME}://${HOST}.local:${ADMIN_PORT}"
for ip in $(hostname -I 2>/dev/null); do for ip in $(hostname -I 2>/dev/null); do
[[ $ip == *:* ]] || echo " ${SCHEME}://${ip}:${ADMIN_PORT}" [[ $ip == *:* ]] || echo " ${SCHEME}://${ip}:${ADMIN_PORT}"
+1 -1
View File
@@ -1,7 +1,7 @@
[project] [project]
name = "voxip-kiosk" name = "voxip-kiosk"
dynamic = ["version"] dynamic = ["version"]
description = "VoxIP Kiosk OS — kiosk runtime and Daynivo Kiosk Manager" description = "Daynivo Kiosk OS — kiosk runtime and Daynivo Kiosk Manager"
requires-python = ">=3.11" requires-python = ">=3.11"
[tool.pytest.ini_options] [tool.pytest.ini_options]
+1 -1
View File
@@ -1 +1 @@
"""VoxIP Kiosk OS — kiosk runtime and Daynivo Kiosk Manager.""" """Daynivo Kiosk OS — kiosk runtime and Daynivo Kiosk Manager."""
+1 -1
View File
@@ -46,7 +46,7 @@ BLANK_URLS = {"", "about:blank", "chrome://newtab/", "chrome://new-tab-page/"}
def probe(url: str, timeout: float = 8.0) -> tuple[bool, str]: def probe(url: str, timeout: float = 8.0) -> tuple[bool, str]:
"""Is ``url`` reachable over HTTPS with a valid certificate? → (ok, reason).""" """Is ``url`` reachable over HTTPS with a valid certificate? → (ok, reason)."""
req = urllib.request.Request(url, method="HEAD", headers={"User-Agent": "VoxIP-Kiosk-OS/agent"}) req = urllib.request.Request(url, method="HEAD", headers={"User-Agent": "Daynivo-Kiosk-OS/agent"})
try: try:
with urllib.request.urlopen(req, timeout=timeout, context=ssl.create_default_context()): with urllib.request.urlopen(req, timeout=timeout, context=ssl.create_default_context()):
return True, "" return True, ""
+1 -1
View File
@@ -23,7 +23,7 @@ from . import validation as v
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
DEFAULTS: dict[str, Any] = { DEFAULTS: dict[str, Any] = {
"device_name": "VoxIP Kiosk", "device_name": "Daynivo Kiosk",
"url": "https://schermen-ijsselflat.voxip.nl", "url": "https://schermen-ijsselflat.voxip.nl",
"refresh_interval": 0, "refresh_interval": 0,
"screen_always_on": True, "screen_always_on": True,
+2 -2
View File
@@ -29,7 +29,7 @@ def cmd_status(args) -> int:
paths = default_paths() paths = default_paths()
config = load_config(paths.config_file) config = load_config(paths.config_file)
agent = read_state(paths.agent_state_file) agent = read_state(paths.agent_state_file)
print(f"VoxIP Kiosk OS {read_version(paths)}") print(f"Daynivo Kiosk OS {read_version(paths)}")
print(f"Apparaat: {config['device_name']}") print(f"Apparaat: {config['device_name']}")
print(f"URL: {config['url'] if args.show_secrets else mask_url(config['url'])}") print(f"URL: {config['url'] if args.show_secrets else mask_url(config['url'])}")
print(f"Beheer: {'https' if config['admin_https'] else 'http'}://{os.uname().nodename}.local:{config['admin_port']}") print(f"Beheer: {'https' if config['admin_https'] else 'http'}://{os.uname().nodename}.local:{config['admin_port']}")
@@ -138,7 +138,7 @@ def cmd_version(_args) -> int:
def main(argv: list[str] | None = None) -> int: def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser(prog="voxip-kiosk-ctl", description="Beheer van VoxIP Kiosk OS vanaf de commandoregel.") parser = argparse.ArgumentParser(prog="voxip-kiosk-ctl", description="Beheer van Daynivo Kiosk OS vanaf de commandoregel.")
sub = parser.add_subparsers(dest="command", required=True) sub = parser.add_subparsers(dest="command", required=True)
p = sub.add_parser("status", help="toon de status") p = sub.add_parser("status", help="toon de status")
p.add_argument("--show-secrets", action="store_true", help="toon de volledige URL inclusief token") p.add_argument("--show-secrets", action="store_true", help="toon de volledige URL inclusief token")
+3 -3
View File
@@ -1,4 +1,4 @@
"""voxip-kiosk-helper — the only privileged entry point of VoxIP Kiosk OS. """voxip-kiosk-helper — the only privileged entry point of Daynivo Kiosk OS.
Runs as root, either through ``sudo -n`` from the web interface (user Runs as root, either through ``sudo -n`` from the web interface (user
``voxip``) or from systemd units. It accepts a fixed set of verbs, validates ``voxip``) or from systemd units. It accepts a fixed set of verbs, validates
@@ -296,7 +296,7 @@ class Helper:
if src.exists(): if src.exists():
shutil.move(str(src), str(stash / src.name)) shutil.move(str(src), str(stash / src.name))
trigger.unlink() trigger.unlink()
log(syslog.LOG_WARNING, f"Netwerk-reset uitgevoerd; VoxIP-profielen verplaatst naar {stash}") log(syslog.LOG_WARNING, f"Netwerk-reset uitgevoerd; Daynivo-profielen verplaatst naar {stash}")
result["reset"] = True result["reset"] = True
return result return result
@@ -367,7 +367,7 @@ class Helper:
sshd_dir = self.etc / "ssh" / "sshd_config.d" sshd_dir = self.etc / "ssh" / "sshd_config.d"
sshd_dir.mkdir(parents=True, exist_ok=True) sshd_dir.mkdir(parents=True, exist_ok=True)
(sshd_dir / "voxip-kiosk.conf").write_text( (sshd_dir / "voxip-kiosk.conf").write_text(
"# Beheerd door VoxIP Kiosk OS: alleen inloggen met SSH-sleutels.\n" "# Beheerd door Daynivo Kiosk OS: alleen inloggen met SSH-sleutels.\n"
"PasswordAuthentication no\nKbdInteractiveAuthentication no\nPermitRootLogin no\n", "PasswordAuthentication no\nKbdInteractiveAuthentication no\nPermitRootLogin no\n",
encoding="utf-8", encoding="utf-8",
) )
+1 -1
View File
@@ -32,7 +32,7 @@ def ensure_certificate(paths: Paths) -> tuple[Path, Path]:
log.info("Zelfondertekend certificaat aanmaken voor %s.local", host) log.info("Zelfondertekend certificaat aanmaken voor %s.local", host)
subprocess.run([ subprocess.run([
"openssl", "req", "-x509", "-newkey", "rsa:2048", "-nodes", "-days", "3650", "openssl", "req", "-x509", "-newkey", "rsa:2048", "-nodes", "-days", "3650",
"-subj", f"/CN={host}.local/O=VoxIP Kiosk OS", "-subj", f"/CN={host}.local/O=Daynivo Kiosk OS",
"-addext", f"subjectAltName=DNS:{host}.local,DNS:{host},IP:127.0.0.1", "-addext", f"subjectAltName=DNS:{host}.local,DNS:{host},IP:127.0.0.1",
"-keyout", str(key), "-out", str(cert), "-keyout", str(key), "-out", str(cert),
], check=True, capture_output=True, timeout=120) ], check=True, capture_output=True, timeout=120)
+1 -1
View File
@@ -1,4 +1,4 @@
"""Filesystem locations used by every VoxIP Kiosk component. """Filesystem locations used by every Daynivo Kiosk component.
The defaults match the installed layout. Unprivileged components may The defaults match the installed layout. Unprivileged components may
override them through ``VOXIP_*`` environment variables (used by the test override them through ``VOXIP_*`` environment variables (used by the test
+1 -1
View File
@@ -58,7 +58,7 @@
<footer class="footer"> <footer class="footer">
<span>{{ device_name }} · {{ hostname }}</span> <span>{{ device_name }} · {{ hostname }}</span>
<span>VoxIP Kiosk OS {{ version }}</span> <span>Daynivo Kiosk OS {{ version }}</span>
</footer> </footer>
<dialog id="confirm-dialog" class="dialog"> <dialog id="confirm-dialog" class="dialog">
+1 -1
View File
@@ -53,7 +53,7 @@
<h2>Over dit apparaat</h2> <h2>Over dit apparaat</h2>
<dl class="kv"> <dl class="kv">
<dt>Naam</dt><dd>{{ device_name }}</dd> <dt>Naam</dt><dd>{{ device_name }}</dd>
<dt>Versie</dt><dd>VoxIP Kiosk OS {{ s.version }}</dd> <dt>Versie</dt><dd>Daynivo Kiosk OS {{ s.version }}</dd>
<dt>Besturingssysteem</dt><dd>{{ s.os }}</dd> <dt>Besturingssysteem</dt><dd>{{ s.os }}</dd>
<dt>Hardware</dt><dd>{{ s.model }}</dd> <dt>Hardware</dt><dd>{{ s.model }}</dd>
</dl> </dl>
+1 -1
View File
@@ -94,7 +94,7 @@
<h2>Herstel bij een onbereikbare kiosk</h2> <h2>Herstel bij een onbereikbare kiosk</h2>
<ul class="plain"> <ul class="plain">
<li>Iedere wijziging wordt na {{ rollback_seconds // 60 }} minuten automatisch teruggedraaid als je hem niet bevestigt, ook als de stroom tussendoor uitvalt.</li> <li>Iedere wijziging wordt na {{ rollback_seconds // 60 }} minuten automatisch teruggedraaid als je hem niet bevestigt, ook als de stroom tussendoor uitvalt.</li>
<li>Noodherstel: zet een leeg bestand <code>voxip-network-reset</code> op de bootpartitie van de SD-kaart en start de Pi. Alle VoxIP-netwerkprofielen worden dan verwijderd (terug naar DHCP).</li> <li>Noodherstel: zet een leeg bestand <code>voxip-network-reset</code> op de bootpartitie van de SD-kaart en start de Pi. Alle Daynivo-netwerkprofielen worden dan verwijderd (terug naar DHCP).</li>
</ul> </ul>
</section> </section>
{% endblock %} {% endblock %}
+1 -1
View File
@@ -65,7 +65,7 @@
<section class="card"> <section class="card">
<h2>Systeeminformatie</h2> <h2>Systeeminformatie</h2>
<dl class="kv"> <dl class="kv">
<dt>Versie</dt><dd>VoxIP Kiosk OS {{ s.version }}</dd> <dt>Versie</dt><dd>Daynivo Kiosk OS {{ s.version }}</dd>
<dt>Besturingssysteem</dt><dd>{{ s.os }}</dd> <dt>Besturingssysteem</dt><dd>{{ s.os }}</dd>
<dt>Hardware</dt><dd>{{ s.model }}</dd> <dt>Hardware</dt><dd>{{ s.model }}</dd>
<dt>Uptime</dt><dd>{{ s.uptime }}</dd> <dt>Uptime</dt><dd>{{ s.uptime }}</dd>
+1 -1
View File
@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=VoxIP configuratie en SSH-sleutels importeren vanaf de bootpartitie Description=Daynivo configuratie en SSH-sleutels importeren vanaf de bootpartitie
Documentation=file:///usr/share/doc/voxip-kiosk/README.md Documentation=file:///usr/share/doc/voxip-kiosk/README.md
After=local-fs.target After=local-fs.target
Before=voxip-kiosk-manager.service voxip-kiosk-browser.service ssh.service Before=voxip-kiosk-manager.service voxip-kiosk-browser.service ssh.service
+1 -1
View File
@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=VoxIP Kiosk agent (navigatie, offlinepagina, verversen) Description=Daynivo Kiosk agent (navigatie, offlinepagina, verversen)
Documentation=file:///usr/share/doc/voxip-kiosk/README.md Documentation=file:///usr/share/doc/voxip-kiosk/README.md
After=voxip-kiosk-browser.service After=voxip-kiosk-browser.service
+1 -1
View File
@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=VoxIP Kiosk Chromium Description=Daynivo Kiosk Chromium
Documentation=file:///usr/share/doc/voxip-kiosk/README.md Documentation=file:///usr/share/doc/voxip-kiosk/README.md
Requires=voxip-kiosk-x.service Requires=voxip-kiosk-x.service
After=voxip-kiosk-x.service voxip-boot-import.service After=voxip-kiosk-x.service voxip-boot-import.service
+1 -1
View File
@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=VoxIP Kiosk healthcheck Description=Daynivo Kiosk healthcheck
Documentation=file:///usr/share/doc/voxip-kiosk/README.md Documentation=file:///usr/share/doc/voxip-kiosk/README.md
[Service] [Service]
+1 -1
View File
@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=VoxIP Kiosk healthcheck (elke minuut) Description=Daynivo Kiosk healthcheck (elke minuut)
[Timer] [Timer]
OnBootSec=2min OnBootSec=2min
+1 -1
View File
@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=VoxIP Kiosk X-server (vt7) Description=Daynivo Kiosk X-server (vt7)
Documentation=file:///usr/share/doc/voxip-kiosk/README.md Documentation=file:///usr/share/doc/voxip-kiosk/README.md
After=systemd-user-sessions.service systemd-logind.service After=systemd-user-sessions.service systemd-logind.service
Conflicts=getty@tty7.service Conflicts=getty@tty7.service
+1 -1
View File
@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=VoxIP netwerkherstel bij opstarten (rollback en noodreset) Description=Daynivo netwerkherstel bij opstarten (rollback en noodreset)
Documentation=file:///usr/share/doc/voxip-kiosk/README.md Documentation=file:///usr/share/doc/voxip-kiosk/README.md
DefaultDependencies=no DefaultDependencies=no
After=local-fs.target After=local-fs.target
+3 -3
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# Remove VoxIP Kiosk OS. # Remove Daynivo Kiosk OS.
# #
# sudo ./uninstall.sh # remove programs and services, keep configuration # sudo ./uninstall.sh # remove programs and services, keep configuration
# sudo ./uninstall.sh --purge # also remove configuration, state, logs and users # sudo ./uninstall.sh --purge # also remove configuration, state, logs and users
@@ -65,9 +65,9 @@ if [[ $PURGE -eq 1 ]]; then
groupdel voxip 2>/dev/null || true groupdel voxip 2>/dev/null || true
else else
echo " Configuratie bewaard in /etc/voxip-kiosk (verwijderen met --purge)." echo " Configuratie bewaard in /etc/voxip-kiosk (verwijderen met --purge)."
echo " VoxIP-netwerkprofielen (voxip-eth0/voxip-wlan0) blijven actief." echo " Daynivo-netwerkprofielen (voxip-eth0/voxip-wlan0) blijven actief."
fi fi
if [[ -n $PREVIOUS_TARGET ]]; then systemctl set-default "$PREVIOUS_TARGET" >/dev/null 2>&1 || true; fi if [[ -n $PREVIOUS_TARGET ]]; then systemctl set-default "$PREVIOUS_TARGET" >/dev/null 2>&1 || true; fi
for dm in "${DISABLED_DMS[@]}"; do systemctl enable "$dm" >/dev/null 2>&1 || true; done for dm in "${DISABLED_DMS[@]}"; do systemctl enable "$dm" >/dev/null 2>&1 || true; done
echo "==> VoxIP Kiosk OS is verwijderd. Herstart de Raspberry Pi om de kiosk te stoppen." echo "==> Daynivo Kiosk OS is verwijderd. Herstart de Raspberry Pi om de kiosk te stoppen."
+1 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# Update VoxIP Kiosk OS from this checkout (or an extracted release). # Update Daynivo Kiosk OS from this checkout (or an extracted release).
# #
# sudo ./update.sh # git pull --ff-only, back up config, install --upgrade # sudo ./update.sh # git pull --ff-only, back up config, install --upgrade
# sudo ./update.sh --no-pull # install the code as it is in this directory # sudo ./update.sh --no-pull # install the code as it is in this directory
+1 -1
View File
@@ -8,7 +8,7 @@ function setText(id, text) {
if (el) el.textContent = text; if (el) el.textContent = text;
} }
setText("name", params.get("name") || "VoxIP Kiosk"); setText("name", params.get("name") || "Daynivo Kiosk");
// The link arrives with its token already masked (…abcd). // The link arrives with its token already masked (…abcd).
const link = (params.get("url") || "").replace(/^https:\/\//, ""); const link = (params.get("url") || "").replace(/^https:\/\//, "");
if (link) setText("link-url", link); if (link) setText("link-url", link);
+1 -1
View File
@@ -24,7 +24,7 @@
</main> </main>
<footer class="bottom"> <footer class="bottom">
<span id="admin"></span> <span id="admin"></span>
<span>VoxIP Kiosk</span> <span>Daynivo Kiosk</span>
</footer> </footer>
</div> </div>
<script src="kiosk.js"></script> <script src="kiosk.js"></script>
+2 -2
View File
@@ -2,7 +2,7 @@
<html lang="nl"> <html lang="nl">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>VoxIP Kiosk — eerste configuratie</title> <title>Daynivo Kiosk — eerste configuratie</title>
<link rel="stylesheet" href="kiosk.css"> <link rel="stylesheet" href="kiosk.css">
</head> </head>
<body> <body>
@@ -26,7 +26,7 @@
</main> </main>
<footer class="bottom"> <footer class="bottom">
<span></span> <span></span>
<span>VoxIP Kiosk</span> <span>Daynivo Kiosk</span>
</footer> </footer>
</div> </div>
<script src="kiosk.js"></script> <script src="kiosk.js"></script>
+2 -2
View File
@@ -2,7 +2,7 @@
<html lang="nl"> <html lang="nl">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>VoxIP Kiosk</title> <title>Daynivo Kiosk</title>
<link rel="stylesheet" href="kiosk.css"> <link rel="stylesheet" href="kiosk.css">
</head> </head>
<body> <body>
@@ -24,7 +24,7 @@
</main> </main>
<footer class="bottom"> <footer class="bottom">
<span id="admin"></span> <span id="admin"></span>
<span>VoxIP Kiosk</span> <span>Daynivo Kiosk</span>
</footer> </footer>
</div> </div>
<script src="kiosk.js"></script> <script src="kiosk.js"></script>