2024-05-24 18:01:58 +08:00
|
|
|
#!/usr/bin/env bash
|
2020-04-26 01:55:18 +08:00
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# environment variables passed on docker-compose
|
|
|
|
export NAME=seafile7
|
|
|
|
export MYSQL_ROOT_PASSWORD=pixenij4zacoguq0kopamid6
|
|
|
|
export SEAFILE_ADMIN_EMAIL=seafile@rclone.org
|
|
|
|
export SEAFILE_ADMIN_PASSWORD=pixenij4zacoguq0kopamid6
|
|
|
|
export SEAFILE_IP=127.0.0.1
|
|
|
|
export SEAFILE_PORT=8087
|
|
|
|
export SEAFILE_TEST_DATA=${SEAFILE_TEST_DATA:-/tmp/seafile-test-data}
|
|
|
|
export SEAFILE_VERSION=latest
|
|
|
|
|
|
|
|
# make sure the data directory exists
|
|
|
|
mkdir -p ${SEAFILE_TEST_DATA}/${NAME}
|
|
|
|
|
|
|
|
# docker-compose project directory
|
|
|
|
COMPOSE_DIR=$(dirname "$0")/seafile
|
|
|
|
|
|
|
|
start() {
|
|
|
|
docker-compose --project-directory ${COMPOSE_DIR} --project-name ${NAME} --file ${COMPOSE_DIR}/docker-compose.yml up -d
|
|
|
|
|
2020-11-01 07:33:15 +08:00
|
|
|
# wait for Seafile server to start
|
|
|
|
seafile_endpoint="http://${SEAFILE_IP}:${SEAFILE_PORT}/"
|
|
|
|
wait_seconds=1
|
|
|
|
echo -n "Waiting for Seafile server to start"
|
|
|
|
for iterations in `seq 1 60`;
|
|
|
|
do
|
|
|
|
http_code=$(curl -s -o /dev/null -L -w '%{http_code}' "$seafile_endpoint" || true;)
|
|
|
|
if [ "$http_code" -eq 200 ]; then
|
|
|
|
echo
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
echo -n "."
|
|
|
|
sleep $wait_seconds
|
|
|
|
done
|
2020-04-26 01:55:18 +08:00
|
|
|
|
|
|
|
# authentication token answer should be like: {"token":"dbf58423f1632b5b679a13b0929f1d0751d9250c"}
|
|
|
|
TOKEN=`curl --silent \
|
|
|
|
--data-urlencode username=${SEAFILE_ADMIN_EMAIL} -d password=${SEAFILE_ADMIN_PASSWORD} \
|
|
|
|
http://${SEAFILE_IP}:${SEAFILE_PORT}/api2/auth-token/ \
|
|
|
|
| sed 's/^{"token":"\(.*\)"}$/\1/'`
|
|
|
|
|
|
|
|
# create default library
|
|
|
|
curl -X POST -H "Authorization: Token ${TOKEN}" "http://${SEAFILE_IP}:${SEAFILE_PORT}/api2/default-repo/"
|
|
|
|
|
|
|
|
echo _connect=${SEAFILE_IP}:${SEAFILE_PORT}
|
|
|
|
echo type=seafile
|
|
|
|
echo url=http://${SEAFILE_IP}:${SEAFILE_PORT}/
|
|
|
|
echo user=${SEAFILE_ADMIN_EMAIL}
|
|
|
|
echo pass=$(rclone obscure ${SEAFILE_ADMIN_PASSWORD})
|
|
|
|
echo library=My Library
|
|
|
|
}
|
|
|
|
|
|
|
|
stop() {
|
|
|
|
if status ; then
|
|
|
|
docker-compose --project-directory ${COMPOSE_DIR} --project-name ${NAME} --file ${COMPOSE_DIR}/docker-compose.yml down
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
status() {
|
|
|
|
if docker ps --format "{{.Names}}" | grep ^${NAME}_seafile_1$ >/dev/null ; then
|
|
|
|
echo "$NAME running"
|
|
|
|
else
|
|
|
|
echo "$NAME not running"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
. $(dirname "$0")/run.bash
|