blob: c81b82b5897f964b321a5de0cfc6fc06284b028f [file] [log] [blame]
#!/bin/bash
# Copyright 2015 The Vanadium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
# Functions for starting the Sensor Log daemon and required services with
# appropriate blessings. Expected to be run with V23_CREDENTIALS or through
# an agent.
set -eu
function kill_child_processes() {
kill -TERM -- -"${BASHPID}" || true
sleep 1
kill -KILL -- -"${BASHPID}" || true
}
export -f kill_child_processes
function name_to_blessing() {
local -r CHAIN_SEPARATOR='/'
sed -e "s,/,${CHAIN_SEPARATOR},g" <<< "$@"
}
export -f name_to_blessing
function run_mounttabled() {
local -r BLESSNAME="$1"
local -r NAME="$2"
local -r IPADDR_PORT="$3"
"${JIRI_ROOT}"/release/go/bin/vbecome -name="$(name_to_blessing "${BLESSNAME}/sl/mounttabled/${NAME}")" \
"${JIRI_ROOT}"/release/go/bin/mounttabled -v23.tcp.address "${IPADDR_PORT}" \
&
sleep 1
}
export -f run_mounttabled
function run_syncbased() {
local -r BLESSNAME="$1"
local -r MT="$2"
local -r NAME="$3"
local -r TMPDIR="$4"
local -r DEF_BLESSING_ROOT="$("${JIRI_ROOT}"/release/go/bin/principal dump -s | cut -d ' ' -f 1 | cut -d ',' -f 1)"
local -r DEF_BLESSING_RUNNER="$(name_to_blessing "${DEF_BLESSING_ROOT}/${BLESSNAME}/sl/${NAME}")"
# Everyone can Resolve to be able to join the syncgroup.
echo "$DEF_BLESSING_RUNNER"
local -r PERMISSIONS_LITERAL="{\
\"Admin\":{\"In\":[\"${DEF_BLESSING_RUNNER}\"]}, \
\"Read\":{\"In\":[\"${DEF_BLESSING_RUNNER}\"]}, \
\"Write\":{\"In\":[\"${DEF_BLESSING_RUNNER}\"]}, \
\"Debug\":{\"In\":[\"${DEF_BLESSING_RUNNER}\"]}, \
\"Resolve\":{\"In\":[\"...\"]} \
}"
"${JIRI_ROOT}"/release/go/bin/vbecome -name="$(name_to_blessing "${BLESSNAME}/sl/syncbased/${NAME}")" \
"${JIRI_ROOT}"/release/go/bin/syncbased -v23.namespace.root "${MT}" \
-name "syncbased/${NAME}" -engine leveldb -root-dir "${TMPDIR}/syncbased/${NAME}" \
-v23.permissions.literal="${PERMISSIONS_LITERAL}" \
&
sleep 1
}
export -f run_syncbased
function run_measured() {
local -r BLESSNAME="$1"
local -r MT="$2"
local -r NAME="$3"
local -r TMPDIR="$4"
run_syncbased "${BLESSNAME}" "${MT}" "measured/${NAME}" "${TMPDIR}"
"${JIRI_ROOT}"/release/go/bin/vbecome -name="$(name_to_blessing "${BLESSNAME}/sl/measured/${NAME}")" \
"${JIRI_ROOT}"/experimental/projects/sensorlog_lite/bin/measured -v23.namespace.root "${MT}" \
-service "syncbased/measured/${NAME}" -alsologtostderr \
&
sleep 1
}
export -f run_measured