blob: 94afd1578ae48fe89e3f4f55edbf08f58c61d57e [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.
# Expects credentials in tmp/creds, generated as follows:
#
# make creds
#
# Optionally, the creds variable can specify a subdirectory.
set -euo pipefail
trap kill_child_processes INT TERM EXIT
silence() {
"$@" &> /dev/null || true
}
# Copied from chat example app.
kill_child_processes() {
# Attempt to stop child processes using the TERM signal.
if [[ -n "$(jobs -p -r)" ]]; then
silence pkill -P $$
sleep 1
# Kill any remaining child processes using the KILL signal.
if [[ -n "$(jobs -p -r)" ]]; then
silence sudo -u "${SUDO_USER}" pkill -9 -P $$
fi
fi
}
main() {
PATH=${PATH}:${V23_ROOT}/release/go/bin
local -r TMP=tmp
local -r CREDS=./tmp/creds/${creds-}
local -r PORT=${port-4000}
local -r SYNCBASED_ADDR=":$((PORT))"
local -r BLESSINGS=`principal dump --v23.credentials=${CREDS} -s=true`
if [ ${client-} ]; then
local -r SG_NAME=dummy
echo "Starting syncbased on ${SYNCBASED_ADDR}"
else
local -r RE="dev\.v\.io/u/(.*)"
if [[ ${BLESSINGS} =~ ${RE} ]]; then
local -r V_USER=${BASH_REMATCH[1]}
fi
local -r SG_NAME=users/${V_USER}/travel/sgadmin
local -r NS_ROOT=/ns.dev.v.io:8101
local -r NS_OPT="--v23.namespace.root=${NS_ROOT}"
echo "Starting syncbased on ${SYNCBASED_ADDR} mounted at ${NS_ROOT}/${SG_NAME}"
fi
mkdir -p $TMP
./bin/syncbased \
--v=5 \
--alsologtostderr=false \
--root-dir=${TMP}/syncbase_${PORT} \
--name=${SG_NAME} \
${NS_OPT-} \
--v23.proxy=/ns.dev.v.io:8101/proxy \
--v23.tcp.address=${SYNCBASED_ADDR} \
--v23.credentials=${CREDS} \
--v23.permissions.literal="{\"Admin\":{\"In\":[\"${BLESSINGS}\"]},\"Write\":{\"In\":[\"${BLESSINGS}\"]},\"Read\":{\"In\":[\"${BLESSINGS}\"]},\"Resolve\":{\"In\":[\"${BLESSINGS}\"]},\"Debug\":{\"In\":[\"...\"]}}"
tail -f /dev/null # wait forever
}
main "$@"