fix(sync): persist server bind address
This commit is contained in:
parent
b69513f088
commit
e62142b95d
6
Cargo.lock
generated
6
Cargo.lock
generated
@ -1642,7 +1642,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_client"
|
name = "lesavka_client"
|
||||||
version = "0.14.37"
|
version = "0.14.38"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-stream",
|
"async-stream",
|
||||||
@ -1676,7 +1676,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_common"
|
name = "lesavka_common"
|
||||||
version = "0.14.37"
|
version = "0.14.38"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
@ -1688,7 +1688,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_server"
|
name = "lesavka_server"
|
||||||
version = "0.14.37"
|
version = "0.14.38"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
|
|||||||
@ -4,7 +4,7 @@ path = "src/main.rs"
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "lesavka_client"
|
name = "lesavka_client"
|
||||||
version = "0.14.37"
|
version = "0.14.38"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "lesavka_common"
|
name = "lesavka_common"
|
||||||
version = "0.14.37"
|
version = "0.14.38"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
|
|||||||
@ -173,6 +173,7 @@ Hardware-facing assumptions belong near the code that uses them; this file is th
|
|||||||
| `LESAVKA_RGBA` | document near use before promoting to operator config |
|
| `LESAVKA_RGBA` | document near use before promoting to operator config |
|
||||||
| `LESAVKA_SERVER_ADDR` | runtime/install/session override |
|
| `LESAVKA_SERVER_ADDR` | runtime/install/session override |
|
||||||
| `LESAVKA_SERVER_BIND_ADDR` | server bind address override; defaults to `0.0.0.0:50051` |
|
| `LESAVKA_SERVER_BIND_ADDR` | server bind address override; defaults to `0.0.0.0:50051` |
|
||||||
|
| `LESAVKA_INSTALL_SERVER_BIND_ADDR` | installer override; sets the persisted default server bind address in `/etc/lesavka/server.env` |
|
||||||
| `LESAVKA_SERVER_GADGET_SRC` | test/build contract variable; not runtime operator config |
|
| `LESAVKA_SERVER_GADGET_SRC` | test/build contract variable; not runtime operator config |
|
||||||
| `LESAVKA_SERVER_HOST` | manual probe override |
|
| `LESAVKA_SERVER_HOST` | manual probe override |
|
||||||
| `LESAVKA_SERVER_MAIN_SRC` | test/build contract variable; not runtime operator config |
|
| `LESAVKA_SERVER_MAIN_SRC` | test/build contract variable; not runtime operator config |
|
||||||
|
|||||||
@ -11,6 +11,7 @@ REF=${LESAVKA_REF:-master} # fallback
|
|||||||
REPO_URL=${LESAVKA_REPO_URL:-}
|
REPO_URL=${LESAVKA_REPO_URL:-}
|
||||||
USER_HOME=$(getent passwd "$ORIG_USER" | cut -d: -f6)
|
USER_HOME=$(getent passwd "$ORIG_USER" | cut -d: -f6)
|
||||||
INSTALL_UVC_CODEC=${LESAVKA_INSTALL_UVC_CODEC:-mjpeg}
|
INSTALL_UVC_CODEC=${LESAVKA_INSTALL_UVC_CODEC:-mjpeg}
|
||||||
|
INSTALL_SERVER_BIND_ADDR=${LESAVKA_INSTALL_SERVER_BIND_ADDR:-0.0.0.0:50051}
|
||||||
|
|
||||||
manifest_package_version() {
|
manifest_package_version() {
|
||||||
local manifest=$1
|
local manifest=$1
|
||||||
@ -114,7 +115,7 @@ is_attached_state() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
server_bind_addr() {
|
server_bind_addr() {
|
||||||
printf '%s\n' "${LESAVKA_SERVER_BIND_ADDR:-0.0.0.0:50051}"
|
printf '%s\n' "${INSTALL_SERVER_BIND_ADDR}"
|
||||||
}
|
}
|
||||||
|
|
||||||
server_bind_port() {
|
server_bind_port() {
|
||||||
@ -790,6 +791,7 @@ fi
|
|||||||
printf 'LESAVKA_UPSTREAM_VIDEO_PLAYOUT_OFFSET_US=%s\n' "${LESAVKA_UPSTREAM_VIDEO_PLAYOUT_OFFSET_US:-0}"
|
printf 'LESAVKA_UPSTREAM_VIDEO_PLAYOUT_OFFSET_US=%s\n' "${LESAVKA_UPSTREAM_VIDEO_PLAYOUT_OFFSET_US:-0}"
|
||||||
printf 'LESAVKA_UPSTREAM_PAIR_SLACK_US=%s\n' "${LESAVKA_UPSTREAM_PAIR_SLACK_US:-20000}"
|
printf 'LESAVKA_UPSTREAM_PAIR_SLACK_US=%s\n' "${LESAVKA_UPSTREAM_PAIR_SLACK_US:-20000}"
|
||||||
printf 'LESAVKA_UPSTREAM_STALE_DROP_MS=%s\n' "${LESAVKA_UPSTREAM_STALE_DROP_MS:-80}"
|
printf 'LESAVKA_UPSTREAM_STALE_DROP_MS=%s\n' "${LESAVKA_UPSTREAM_STALE_DROP_MS:-80}"
|
||||||
|
printf 'LESAVKA_SERVER_BIND_ADDR=%s\n' "${INSTALL_SERVER_BIND_ADDR}"
|
||||||
printf 'LESAVKA_UVC_CODEC=%s\n' "${INSTALL_UVC_CODEC}"
|
printf 'LESAVKA_UVC_CODEC=%s\n' "${INSTALL_UVC_CODEC}"
|
||||||
} | sudo tee /etc/lesavka/server.env >/dev/null
|
} | sudo tee /etc/lesavka/server.env >/dev/null
|
||||||
|
|
||||||
@ -946,11 +948,15 @@ validate_server_ready
|
|||||||
INSTALLED_VERSION=$(manifest_package_version "$SRC_DIR/server/Cargo.toml" 2>/dev/null || true)
|
INSTALLED_VERSION=$(manifest_package_version "$SRC_DIR/server/Cargo.toml" 2>/dev/null || true)
|
||||||
INSTALLED_SHA=$(git -C "$SCRIPT_REPO_ROOT" rev-parse --short HEAD 2>/dev/null || true)
|
INSTALLED_SHA=$(git -C "$SCRIPT_REPO_ROOT" rev-parse --short HEAD 2>/dev/null || true)
|
||||||
PERSISTED_CAM_OUTPUT=$(grep '^LESAVKA_CAM_OUTPUT=' /etc/lesavka/server.env 2>/dev/null | tail -n1 | cut -d= -f2- || true)
|
PERSISTED_CAM_OUTPUT=$(grep '^LESAVKA_CAM_OUTPUT=' /etc/lesavka/server.env 2>/dev/null | tail -n1 | cut -d= -f2- || true)
|
||||||
|
PERSISTED_SERVER_BIND_ADDR=$(grep '^LESAVKA_SERVER_BIND_ADDR=' /etc/lesavka/server.env 2>/dev/null | tail -n1 | cut -d= -f2- || true)
|
||||||
PERSISTED_UVC_CODEC=$(grep '^LESAVKA_UVC_CODEC=' /etc/lesavka/uvc.env 2>/dev/null | tail -n1 | cut -d= -f2- || true)
|
PERSISTED_UVC_CODEC=$(grep '^LESAVKA_UVC_CODEC=' /etc/lesavka/uvc.env 2>/dev/null | tail -n1 | cut -d= -f2- || true)
|
||||||
echo "✅ lesavka-server installed and restarted..."
|
echo "✅ lesavka-server installed and restarted..."
|
||||||
if [[ -n $INSTALLED_VERSION || -n $INSTALLED_SHA ]]; then
|
if [[ -n $INSTALLED_VERSION || -n $INSTALLED_SHA ]]; then
|
||||||
echo "➡️ Installed: lesavka-server ${INSTALLED_VERSION:-unknown}${INSTALLED_SHA:+ ($INSTALLED_SHA)}"
|
echo "➡️ Installed: lesavka-server ${INSTALLED_VERSION:-unknown}${INSTALLED_SHA:+ ($INSTALLED_SHA)}"
|
||||||
fi
|
fi
|
||||||
|
if [[ -n $PERSISTED_SERVER_BIND_ADDR ]]; then
|
||||||
|
echo "➡️ Server bind: ${PERSISTED_SERVER_BIND_ADDR}"
|
||||||
|
fi
|
||||||
if [[ -n $PERSISTED_CAM_OUTPUT ]]; then
|
if [[ -n $PERSISTED_CAM_OUTPUT ]]; then
|
||||||
echo "➡️ Camera output: ${PERSISTED_CAM_OUTPUT}"
|
echo "➡️ Camera output: ${PERSISTED_CAM_OUTPUT}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -10,7 +10,7 @@ bench = false
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "lesavka_server"
|
name = "lesavka_server"
|
||||||
version = "0.14.37"
|
version = "0.14.38"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
autobins = false
|
autobins = false
|
||||||
|
|
||||||
|
|||||||
@ -23,6 +23,7 @@ fn server_install_pins_hdmi_camera_and_display_defaults() {
|
|||||||
"LESAVKA_UPSTREAM_VIDEO_PLAYOUT_OFFSET_US=%s",
|
"LESAVKA_UPSTREAM_VIDEO_PLAYOUT_OFFSET_US=%s",
|
||||||
"LESAVKA_UPSTREAM_PAIR_SLACK_US=%s",
|
"LESAVKA_UPSTREAM_PAIR_SLACK_US=%s",
|
||||||
"LESAVKA_UPSTREAM_STALE_DROP_MS=%s",
|
"LESAVKA_UPSTREAM_STALE_DROP_MS=%s",
|
||||||
|
"LESAVKA_SERVER_BIND_ADDR=%s",
|
||||||
"/etc/lesavka/uvc.env",
|
"/etc/lesavka/uvc.env",
|
||||||
"LESAVKA_UVC_MAXPACKET=",
|
"LESAVKA_UVC_MAXPACKET=",
|
||||||
"LESAVKA_UVC_INTERVAL=",
|
"LESAVKA_UVC_INTERVAL=",
|
||||||
@ -46,6 +47,7 @@ fn server_install_pins_hdmi_camera_and_display_defaults() {
|
|||||||
assert!(SERVER_INSTALL.contains("${LESAVKA_UPSTREAM_PLAYOUT_DELAY_MS:-1000}"));
|
assert!(SERVER_INSTALL.contains("${LESAVKA_UPSTREAM_PLAYOUT_DELAY_MS:-1000}"));
|
||||||
assert!(SERVER_INSTALL.contains("${LESAVKA_UPSTREAM_PAIR_SLACK_US:-20000}"));
|
assert!(SERVER_INSTALL.contains("${LESAVKA_UPSTREAM_PAIR_SLACK_US:-20000}"));
|
||||||
assert!(SERVER_INSTALL.contains("${LESAVKA_UPSTREAM_STALE_DROP_MS:-80}"));
|
assert!(SERVER_INSTALL.contains("${LESAVKA_UPSTREAM_STALE_DROP_MS:-80}"));
|
||||||
|
assert!(SERVER_INSTALL.contains("${LESAVKA_INSTALL_SERVER_BIND_ADDR:-0.0.0.0:50051}"));
|
||||||
assert!(SERVER_INSTALL.contains("${LESAVKA_UVC_MAXPACKET:-1024}"));
|
assert!(SERVER_INSTALL.contains("${LESAVKA_UVC_MAXPACKET:-1024}"));
|
||||||
assert!(SERVER_INSTALL.contains("${LESAVKA_UVC_INTERVAL:-500000}"));
|
assert!(SERVER_INSTALL.contains("${LESAVKA_UVC_INTERVAL:-500000}"));
|
||||||
assert!(SERVER_INSTALL.contains("${LESAVKA_UVC_WIDTH:-640}"));
|
assert!(SERVER_INSTALL.contains("${LESAVKA_UVC_WIDTH:-640}"));
|
||||||
@ -54,6 +56,10 @@ fn server_install_pins_hdmi_camera_and_display_defaults() {
|
|||||||
!SERVER_INSTALL.contains("LESAVKA_UVC_CODEC=${LESAVKA_UVC_CODEC:-mjpeg}"),
|
!SERVER_INSTALL.contains("LESAVKA_UVC_CODEC=${LESAVKA_UVC_CODEC:-mjpeg}"),
|
||||||
"install script should not let ambient LESAVKA_UVC_CODEC leak into persisted defaults"
|
"install script should not let ambient LESAVKA_UVC_CODEC leak into persisted defaults"
|
||||||
);
|
);
|
||||||
|
assert!(
|
||||||
|
!SERVER_INSTALL.contains("LESAVKA_SERVER_BIND_ADDR=${LESAVKA_SERVER_BIND_ADDR:-0.0.0.0:50051}"),
|
||||||
|
"install script should not let ambient LESAVKA_SERVER_BIND_ADDR leak into persisted defaults"
|
||||||
|
);
|
||||||
assert!(
|
assert!(
|
||||||
SERVER_INSTALL.contains("EnvironmentFile=-/etc/lesavka/uvc.env"),
|
SERVER_INSTALL.contains("EnvironmentFile=-/etc/lesavka/uvc.env"),
|
||||||
"install script should feed live UVC runtime settings into services"
|
"install script should feed live UVC runtime settings into services"
|
||||||
@ -182,6 +188,10 @@ fn server_install_reports_installed_version_and_revision() {
|
|||||||
SERVER_INSTALL.contains("Camera output:"),
|
SERVER_INSTALL.contains("Camera output:"),
|
||||||
"install script should print the persisted camera output in the footer"
|
"install script should print the persisted camera output in the footer"
|
||||||
);
|
);
|
||||||
|
assert!(
|
||||||
|
SERVER_INSTALL.contains("Server bind:"),
|
||||||
|
"install script should print the persisted server bind address in the footer"
|
||||||
|
);
|
||||||
assert!(
|
assert!(
|
||||||
SERVER_INSTALL.contains("UVC codec:"),
|
SERVER_INSTALL.contains("UVC codec:"),
|
||||||
"install script should print the persisted UVC codec in the footer"
|
"install script should print the persisted UVC codec in the footer"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user