docker-seafile-client/start.sh

69 lines
2.0 KiB
Bash
Raw Normal View History

2018-04-18 16:32:41 +00:00
#!/bin/bash
set -e
set -u
set -o pipefail
2019-04-11 15:44:45 +00:00
set -x
2018-04-18 16:32:41 +00:00
DATA_DIR="${DATA_DIR:-/data}"
SEAFILE_UID="${SEAFILE_UID:-1000}"
SEAFILE_GID="${SEAFILE_GID:-1000}"
get () {
NAME="$1"
JSON="$2"
# Tries to regex setting name from config. Only works with strings for now
VALUE=$(echo $JSON | grep -Po '"'"$NAME"'"\s*:\s*.*?[^\\]"+,*' | sed -n -e 's/.*: *"\(.*\)",*/\1/p')
# Use eval to ensure that nested expressens are executed (config points to environment var)
eval echo $VALUE
}
setup_lib_sync(){
if [ ! -d $DATA_DIR ]; then
echo "Using new data directory: $DATA_DIR"
mkdir -p $DATA_DIR
chown seafile:seafile -R $DATA_DIR
fi
TOKEN_JSON=$(curl -d "username=$USERNAME" -d "password=$PASSWORD" ${SERVER_URL}:${SERVER_PORT}/api2/auth-token/ 2> /dev/null)
TOKEN=$(get token "$TOKEN_JSON")
LIBS_IN_SYNC=$(su - seafile -c 'seaf-cli list')
2018-04-18 16:32:41 +00:00
LIBS=(${LIBRARY_ID//:/ })
for i in "${!LIBS[@]}"
do
LIB="${LIBS[i]}"
LIB_JSON=$(curl -G -H "Authorization: Token $TOKEN" -H 'Accept: application/json; indent=4' ${SERVER_URL}:${SERVER_PORT}/api2/repos/${LIB}/ 2> /dev/null)
LIB_NAME=$(get name "$LIB_JSON")
2019-01-17 14:50:33 +00:00
LIB_NAME_NO_SPACE=${LIB_NAME// /_}
LIB_DIR=${DATA_DIR}/${LIB_NAME_NO_SPACE}
set +e
LIB_IN_SYNC=$(echo "$LIBS_IN_SYNC" | grep "$LIB")
set -e
if [ ${#LIB_IN_SYNC} -eq 0 ]; then
2018-04-18 16:32:41 +00:00
echo "Syncing $LIB_NAME"
mkdir -p $LIB_DIR
chown seafile:seafile -R $LIB_DIR
2019-01-17 14:50:33 +00:00
su - seafile -c "seaf-cli sync -l \"$LIB\" -s \"${SERVER_URL}:${SERVER_PORT}\" -d \"$LIB_DIR\" -u \"$USERNAME\" -p \"$PASSWORD\""
2018-04-18 16:32:41 +00:00
fi
done
}
setup_uid(){
# Setup user/group ids
if [ ! "$(id -u seafile)" -eq "${SEAFILE_UID}" ]; then
# Change the SEAFILE_UID
usermod -o -u "${SEAFILE_UID}" -g "${SEAFILE_GID}" seafile
fi
}
keep_in_foreground() {
2019-04-11 15:29:42 +00:00
while true; do
tail -f /seafile-client/.ccnet/logs/seafile.log
2018-04-18 16:32:41 +00:00
done
}
setup_uid
su - seafile -c "seaf-cli start"
2019-04-11 14:51:10 +00:00
sleep 10
2018-04-18 16:32:41 +00:00
setup_lib_sync
2019-04-11 14:51:10 +00:00
keep_in_foreground