ports/www/mirrorselect/files/mirrorselect.in
Aaron LI 8bee9d3bea www/mirrorselect: New port
HTTP service that selects pkg(8) mirrors near to the client.

PR:	253622
Submitted by:	Aaron LI <aly@aaronly.me>
Approved by:	lwhsu (mentor)
2021-05-30 17:12:36 -04:00

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"