github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/fstest/testserver/init.d/TestSeafile (about) 1 #!/bin/bash 2 3 set -e 4 5 # environment variables passed on docker-compose 6 export NAME=seafile7 7 export MYSQL_ROOT_PASSWORD=pixenij4zacoguq0kopamid6 8 export SEAFILE_ADMIN_EMAIL=seafile@rclone.org 9 export SEAFILE_ADMIN_PASSWORD=pixenij4zacoguq0kopamid6 10 export SEAFILE_IP=127.0.0.1 11 export SEAFILE_PORT=8087 12 export SEAFILE_TEST_DATA=${SEAFILE_TEST_DATA:-/tmp/seafile-test-data} 13 export SEAFILE_VERSION=latest 14 15 # make sure the data directory exists 16 mkdir -p ${SEAFILE_TEST_DATA}/${NAME} 17 18 # docker-compose project directory 19 COMPOSE_DIR=$(dirname "$0")/seafile 20 21 start() { 22 docker-compose --project-directory ${COMPOSE_DIR} --project-name ${NAME} --file ${COMPOSE_DIR}/docker-compose.yml up -d 23 24 # wait for Seafile server to start 25 seafile_endpoint="http://${SEAFILE_IP}:${SEAFILE_PORT}/" 26 wait_seconds=1 27 echo -n "Waiting for Seafile server to start" 28 for iterations in `seq 1 60`; 29 do 30 http_code=$(curl -s -o /dev/null -L -w '%{http_code}' "$seafile_endpoint" || true;) 31 if [ "$http_code" -eq 200 ]; then 32 echo 33 break 34 fi 35 echo -n "." 36 sleep $wait_seconds 37 done 38 39 # authentication token answer should be like: {"token":"dbf58423f1632b5b679a13b0929f1d0751d9250c"} 40 TOKEN=`curl --silent \ 41 --data-urlencode username=${SEAFILE_ADMIN_EMAIL} -d password=${SEAFILE_ADMIN_PASSWORD} \ 42 http://${SEAFILE_IP}:${SEAFILE_PORT}/api2/auth-token/ \ 43 | sed 's/^{"token":"\(.*\)"}$/\1/'` 44 45 # create default library 46 curl -X POST -H "Authorization: Token ${TOKEN}" "http://${SEAFILE_IP}:${SEAFILE_PORT}/api2/default-repo/" 47 48 echo _connect=${SEAFILE_IP}:${SEAFILE_PORT} 49 echo type=seafile 50 echo url=http://${SEAFILE_IP}:${SEAFILE_PORT}/ 51 echo user=${SEAFILE_ADMIN_EMAIL} 52 echo pass=$(rclone obscure ${SEAFILE_ADMIN_PASSWORD}) 53 echo library=My Library 54 } 55 56 stop() { 57 if status ; then 58 docker-compose --project-directory ${COMPOSE_DIR} --project-name ${NAME} --file ${COMPOSE_DIR}/docker-compose.yml down 59 fi 60 } 61 62 status() { 63 if docker ps --format "{{.Names}}" | grep ^${NAME}_seafile_1$ >/dev/null ; then 64 echo "$NAME running" 65 else 66 echo "$NAME not running" 67 return 1 68 fi 69 return 0 70 } 71 72 . $(dirname "$0")/run.bash