mirror of
https://git.freebsd.org/ports.git
synced 2025-06-22 13:10:31 -04:00
HTTP service that selects pkg(8) mirrors near to the client. PR: 253622 Submitted by: Aaron LI <aly@aaronly.me> Approved by: lwhsu (mentor)
67 lines
2.1 KiB
Bash
67 lines
2.1 KiB
Bash
#!/bin/sh
|
|
#
|
|
# PROVIDE: mirrorselect
|
|
# REQUIRE: LOGIN
|
|
#
|
|
# Configurations:
|
|
#
|
|
# mirrorselect_enable (bool): Set to YES to enable mirrorselect
|
|
# Default: NO
|
|
# mirrorselect_conf (str): Mirrorselect configuration file
|
|
# Default: %%ETCDIR%%/mirrorselect.toml
|
|
# mirrorselect_user (str): Mirrorselect daemon user
|
|
# Default: nobody
|
|
# mirrorselect_access_log (str): File to store the mirrorselect web access log
|
|
# Default: /var/log/mirrorselect.log
|
|
# mirrorselect_datadir (str): Data directory to store MMDB files
|
|
# Default: /var/lib/mirrorselect
|
|
# mirrorselect_fetch_dbip (str): DB-IP Lite city database filename to fetch
|
|
# Default: dbip-city-lite-2021-02.mmdb.gz
|
|
#
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="mirrorselect"
|
|
rcvar="${name}_enable"
|
|
|
|
load_rc_config ${name}
|
|
: ${mirrorselect_enable:="NO"}
|
|
: ${mirrorselect_conf:="%%ETCDIR%%/${name}.toml"}
|
|
: ${mirrorselect_user:="nobody"}
|
|
: ${mirrorselect_access_log:="/var/log/${name}.log"}
|
|
: ${mirrorselect_datadir:="/var/lib/${name}"}
|
|
: ${mirrorselect_fetch_dbip:="dbip-city-lite-2021-02.mmdb.gz"}
|
|
|
|
pidfile="/var/run/${name}.pid"
|
|
procname="%%PREFIX%%/bin/${name}"
|
|
command="/usr/sbin/daemon"
|
|
command_args="-c -p ${pidfile} -T ${name}
|
|
${procname} -config ${mirrorselect_conf}
|
|
-access-log ${mirrorselect_access_log}"
|
|
start_precmd="mirrorselect_precmd"
|
|
|
|
mirrorselect_precmd()
|
|
{
|
|
install -o ${mirrorselect_user} /dev/null ${pidfile}
|
|
if [ ! -f "${mirrorselect_access_log}" ]; then
|
|
install -o ${mirrorselect_user} /dev/null ${mirrorselect_access_log}
|
|
fi
|
|
|
|
if [ -z "${mirrorselect_fetch_dbip}" ]; then
|
|
return
|
|
fi
|
|
if [ -f "${mirrorselect_datadir}/${mirrorselect_fetch_dbip%.gz}" ]; then
|
|
return
|
|
fi
|
|
|
|
[ -d "${mirrorselect_datadir}" ] || mkdir -pv ${mirrorselect_datadir}
|
|
|
|
echo "Fetching DB-IP Lite database: ${mirrorselect_fetch_dbip} ..."
|
|
fetch -a -o - \
|
|
https://download.db-ip.com/free/${mirrorselect_fetch_dbip} | \
|
|
gunzip > ${mirrorselect_datadir}/${mirrorselect_fetch_dbip%.gz}
|
|
chmod 0444 ${mirrorselect_datadir}/${mirrorselect_fetch_dbip%.gz}
|
|
ln -svf ${mirrorselect_fetch_dbip%.gz} ${mirrorselect_datadir}/dbip.mmdb
|
|
}
|
|
|
|
run_rc_command "$1"
|