Files
docker/cloudreve/ADD/ccmd
2025-11-01 21:18:29 +08:00

99 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
##################################################
# Mount dir #
# - LOG_DIR #
# - DATA_DIR #
##################################################
set -euo pipefail
export LANG=en_US.UTF-8
trap Quit EXIT
PIDS=
GOT_SIGTERM=
LOG_DIR=/var/log/cloudreve
DATA_DIR=/var/lib/cloudreve
SOCK_FILE=/sock/cloudreve
CONF_FILE=$DATA_DIR/cloudreve.ini
function Print {
local file=/dev/null
[ '-f' = "$1" ] && file=$2 && shift && shift
date +"[%F %T] $*" | tee -a $file
}
function Quit {
Print killing cloudreve ...
while :; do
pkill -f cloudreve && Print killing cloudreve ... || break
sleep 1
done
Print Container stopped.
test -n "$GOT_SIGTERM"
}
function ModifyConf {
Print Generating $CONF_FILE ...
cat > $CONF_FILE <<-EOF
[System]
Debug = false
Mode = master
Listen = :80
SessionSecret = $(date +%F | sha256sum | cut -c -64)
HashIDSalt = $(date +%T | sha256sum | cut -c -64)
#[UnixSocket]
#Listen = $SOCK_FILE
#Perm = 0666
[Database]
DBFile = $DATA_DIR/cloudreve.db
#Type = mysql
#Port = 3306
#User = cloudreve
#Password = Cloudreve_1234
#Host = 127.0.0.1
#Name = cloudreve
#TablePrefix = cd_
#Charset = utf8mb4
#[Redis]
#Server = 127.0.0.1:6379
#Password = 123456
#DB = 9
#[CORS]
#AllowOrigins = *
#AllowMethods = OPTIONS,GET,POST
#AllowHeaders = *
#AllowCredentials = false
EOF
}
function StartProc {
Print Starting cloudreve ...
cd $DATA_DIR
/opt/cloudreve -c cloudreve.ini &>> $LOG_DIR/cloudreve.out &
PIDS="$PIDS $!"
sleep 8
[ -e $SOCK_FILE ] && chmod 0666 $SOCK_FILE
Print Cloudreve started.
}
function Main {
local pid=
[ -e $CONF_FILE ] || ModifyConf
StartProc
trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM
while [ -z "$GOT_SIGTERM" ] && sleep 2; do
for pid in $PIDS; do
[ ! -e /proc/$pid ] && Print Unexpected error! && exit
done
done
}
# Start here
Main