36 lines
1.4 KiB
Bash
Executable File
36 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Disposable network-isolated container only. All PKI is owned by this fresh task root.
|
|
set -euo pipefail
|
|
mkdir -p /task/data /task/server
|
|
export XDG_DATA_HOME=/task/data
|
|
export OPCUA_LIFECYCLE_SERVER_SECONDS=$((LIFECYCLE_SECONDS + 300))
|
|
dotnet /app/Lifecycle.dll prepare /task > /task/prepare.log 2>&1
|
|
mkdir -p /task/server/server-pki/trusted/certs
|
|
for pki in /task/data/shared-pki /task/data/OtOpcUa/pki /task/data/OtOpcUa/adminui-browse-pki; do
|
|
cp "$pki"/own/certs/* /task/server/server-pki/trusted/certs/
|
|
done
|
|
dotnet /app/Lifecycle.dll server /task/server > /task/server.log 2>&1 &
|
|
server_pid=$!
|
|
cleanup() {
|
|
touch /task/server/stop
|
|
for attempt in $(seq 1 150); do
|
|
kill -0 "$server_pid" 2>/dev/null || break
|
|
sleep 0.1
|
|
done
|
|
kill "$server_pid" 2>/dev/null || true
|
|
wait "$server_pid" || true
|
|
}
|
|
trap cleanup EXIT
|
|
for attempt in $(seq 1 600); do
|
|
test ! -f /task/server/ready.json || break
|
|
kill -0 "$server_pid" || exit 1
|
|
sleep 0.1
|
|
done
|
|
test -f /task/server/ready.json
|
|
for pki in /task/data/shared-pki /task/data/OtOpcUa/pki /task/data/OtOpcUa/adminui-browse-pki; do
|
|
mkdir -p "$pki/trusted/certs"
|
|
cp /task/server/server-pki/own/certs/* "$pki/trusted/certs/"
|
|
done
|
|
endpoint=$(cat /task/server/endpoint.txt)
|
|
dotnet /app/Lifecycle.dll run /task "$endpoint" "$LIFECYCLE_SECONDS" "$LIFECYCLE_MODE" > /task/client.log 2>&1
|