2022-10-11 05:01:14 +00:00
|
|
|
#! /bin/bash
|
|
|
|
|
2022-10-11 12:51:11 +00:00
|
|
|
[[ -z $SF_REDIS_AUTH ]] && {
|
|
|
|
# SF_REDIS_AUTH=$(dd bs=1024 count=1 if=/dev/urandom status=none | sha512sum | base64 -w0)
|
|
|
|
SF_REDIS_AUTH=$(echo -n "Redis AUTH $SF_SEED" | sha512sum | base64 -w0)
|
|
|
|
SF_REDIS_AUTH="${SF_REDIS_AUTH//[^[:alnum:]]}"
|
|
|
|
SF_REDIS_AUTH="${SF_REDIS_AUTH:0:32}"
|
|
|
|
export SF_REDIS_AUTH
|
|
|
|
}
|
|
|
|
|
2022-10-18 17:57:35 +00:00
|
|
|
|
2022-10-11 05:01:14 +00:00
|
|
|
[[ "$1" != up ]] && exec docker-compose "$@"
|
|
|
|
|
|
|
|
# HERE: "up"
|
|
|
|
BINDIR="$(cd "$(dirname "${0}")" || exit; pwd)"
|
|
|
|
source "${BINDIR}/funcs.sh" || exit 254
|
|
|
|
|
|
|
|
[[ -z $SF_SEED ]] && ERREXIT 255 "SF_SEED= not set"
|
|
|
|
|
2022-10-18 17:57:35 +00:00
|
|
|
# [DIR] [project name] [id] [INODE-LIMIT]
|
|
|
|
xfs_init_quota()
|
|
|
|
{
|
|
|
|
local dir
|
|
|
|
local prj
|
|
|
|
local id
|
|
|
|
local ihard
|
|
|
|
local err
|
|
|
|
dir=$(readlink -f "$1")
|
|
|
|
prj=$2
|
|
|
|
id=$3
|
|
|
|
ihard=$4
|
|
|
|
|
|
|
|
command -v xfs_quota &>/dev/null || { WARN "[${prj}] XFS-QUOTA not set"; return 255; }
|
|
|
|
|
|
|
|
grep "^${prj}" /etc/projid >/dev/null || echo "${prj}:${id}" >>/etc/projid
|
|
|
|
# This survives a reboot but maybe our parameters have changed. Set to latest:
|
|
|
|
xfs_quota -x -c "limit -p ihard=${ihard} ${prj}" || { WARN "[${prj}] XFS-QUOTA not set"; return 255; }
|
|
|
|
xfs_quota -x -c "project -s -p${dir} ${prj}" >/dev/null || { WARN "[${prj}] XFS-QUOTA not set"; return 255; }
|
|
|
|
|
|
|
|
echo "[${dir##*/}] Quota set to ihard=${ihard}."
|
|
|
|
}
|
|
|
|
|
|
|
|
# Load variables from ENV but only those not already set in
|
|
|
|
# user's environemtn.
|
|
|
|
load_env()
|
|
|
|
{
|
|
|
|
local n
|
|
|
|
local v
|
|
|
|
local arr
|
|
|
|
local a
|
|
|
|
envfile="./.env"
|
|
|
|
|
|
|
|
[[ -n $SF_BASEDIR ]] && envfile="${SF_BASEDIR}/.env"
|
|
|
|
if [[ ! -f "${envfile}" ]]; then
|
|
|
|
WARN "Not found: \${SF_BASEDIR}/.env (${envfile})"
|
|
|
|
else
|
|
|
|
IFS=$'\n'
|
|
|
|
arr=( $(grep -v ^# "${envfile}") )
|
|
|
|
for a in "${arr[@]}"; do
|
|
|
|
|
|
|
|
n="${a%%=*}"
|
|
|
|
# Prefer user's environemtn over .env settings.
|
|
|
|
[[ -z "$(eval echo \$$n)" ]] && eval "${a}"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
[[ -z $SF_BASEDIR ]] && ERREXIT 255 "SF_BASEDIR= not set in ${envfile}."
|
|
|
|
}
|
|
|
|
|
|
|
|
load_env
|
|
|
|
|
|
|
|
[[ -z $SF_DATADIR ]] && SF_DATADIR="${SF_BASEDIR}/data"
|
|
|
|
[[ ! -f "${SF_DATADIR}/share/GeoLite2-City.mmdb" ]] && {
|
|
|
|
WARN "Not found: data/share/GeoLite2-City.mmdb"
|
|
|
|
echo -e "Try \`curl 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=zNACjsJrHnGPBxgI&suffix=tar.gz' | tar xfvz - --strip-components=1 --no-anchored -C \"${SF_DATADIR}/share/\" 'GeoLite2-City.mmdb'\`."
|
|
|
|
}
|
|
|
|
|
|
|
|
xfs_init_quota "${SF_DATADIR}/everyone-root" "everyone" 100 1024
|
|
|
|
|
|
|
|
# If there was a warning then wait...
|
|
|
|
WARN_ENTER
|
|
|
|
|
|
|
|
[[ -z $SF_DATADEV ]] && {
|
|
|
|
d=$(mount | grep -F "${SF_DATADIR}" | head -n1)
|
|
|
|
export SF_DATADEV="${d%% *}"
|
|
|
|
}
|
2022-10-11 05:01:14 +00:00
|
|
|
|
|
|
|
exec docker-compose "$@"
|
|
|
|
|