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