|
|
|
# Copyright 1999-2022 Gentoo Authors
|
|
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
|
|
|
|
EAPI=7
|
|
|
|
|
|
|
|
MY_P="BackupPC-${PV}"
|
|
|
|
|
|
|
|
inherit depend.apache systemd
|
|
|
|
|
|
|
|
DESCRIPTION="High-performance backups to a server's disk"
|
|
|
|
HOMEPAGE="https://backuppc.github.io/backuppc/index.html"
|
|
|
|
SRC_URI="https://github.com/${PN}/${PN}/releases/download/${PV}/${MY_P}.tar.gz"
|
|
|
|
S="${WORKDIR}/${MY_P}"
|
|
|
|
|
|
|
|
LICENSE="GPL-2"
|
|
|
|
SLOT="0"
|
|
|
|
KEYWORDS="amd64 x86"
|
|
|
|
IUSE="rss samba"
|
|
|
|
|
|
|
|
DEPEND="
|
|
|
|
acct-group/backuppc
|
|
|
|
acct-user/backuppc
|
|
|
|
app-admin/apache-tools
|
|
|
|
app-admin/makepasswd
|
|
|
|
dev-lang/perl
|
|
|
|
"
|
|
|
|
|
|
|
|
# The CGI modules are handled in ${RDEPEND}.
|
|
|
|
APACHE_MODULES="apache2_modules_alias," # RedirectMatch
|
|
|
|
APACHE_MODULES+="apache2_modules_authn_core," # AuthType
|
|
|
|
APACHE_MODULES+="apache2_modules_authz_core," # Require
|
|
|
|
APACHE_MODULES+="apache2_modules_authz_host," # Require host
|
|
|
|
APACHE_MODULES+="apache2_modules_authz_user" # Require valid-user
|
|
|
|
|
|
|
|
# Older versions of mod_perl think they're compatible with apache-2.4,
|
|
|
|
# so we require the new one explicitly.
|
|
|
|
RDEPEND="
|
|
|
|
${DEPEND}
|
|
|
|
app-arch/par2cmdline
|
|
|
|
dev-perl/Archive-Zip
|
|
|
|
dev-perl/CGI
|
|
|
|
dev-perl/File-RsyncP
|
|
|
|
dev-perl/libwww-perl
|
|
|
|
virtual/mta
|
|
|
|
virtual/perl-IO-Compress
|
|
|
|
www-apache/mod_perl
|
|
|
|
www-apache/mpm_itk
|
|
|
|
|| (
|
|
|
|
>=www-servers/apache-2.4[${APACHE_MODULES},apache2_modules_cgi]
|
|
|
|
>=www-servers/apache-2.4[${APACHE_MODULES},apache2_modules_cgid]
|
|
|
|
>=www-servers/apache-2.4[${APACHE_MODULES},apache2_modules_fcgid]
|
|
|
|
)
|
|
|
|
rss? ( dev-perl/XML-RSS )
|
|
|
|
samba? ( net-fs/samba )"
|
|
|
|
|
|
|
|
PATCHES=(
|
|
|
|
"${FILESDIR}/3.3.0/01-fix-configure.pl.patch"
|
|
|
|
"${FILESDIR}/3.3.0/02-fix-config.pl-formatting.patch"
|
|
|
|
"${FILESDIR}/3.3.0/03-reasonable-config.pl-defaults.patch"
|
|
|
|
"${FILESDIR}/3.2.0/04-add-docdir-marker.patch"
|
|
|
|
"${FILESDIR}/3.2.0/05-nicelevel.patch"
|
|
|
|
"${FILESDIR}"/${P}-perl522.patch #580254
|
|
|
|
"${FILESDIR}"/${P}-perl526.patch #594128
|
|
|
|
)
|
|
|
|
|
|
|
|
CGIDIR="/usr/lib/backuppc/htdocs"
|
|
|
|
CONFDIR="/etc/BackupPC"
|
|
|
|
DATADIR="/var/lib/backuppc"
|
|
|
|
DOCDIR="/usr/share/doc/${PF}"
|
|
|
|
LOGDIR="/var/log/BackupPC"
|
|
|
|
need_apache2_4
|
|
|
|
|
|
|
|
src_prepare() {
|
|
|
|
default
|
|
|
|
|
|
|
|
# Fix initscript
|
|
|
|
sed -e 's/runscript/openrc-run/g' -i init.d/src/gentoo-backuppc || die
|
|
|
|
|
|
|
|
# Fix docs location using the marker that we've patched in.
|
|
|
|
sed "s+__DOCDIR__+${DOCDIR}+" -i "lib/BackupPC/CGI/View.pm" || die
|
|
|
|
}
|
|
|
|
|
|
|
|
src_install() {
|
|
|
|
local myconf
|
|
|
|
myconf=""
|
|
|
|
if use samba ; then
|
|
|
|
myconf="--bin-path smbclient=$(type -p smbclient)"
|
|
|
|
myconf="${myconf} --bin-path nmblookup=$(type -p nmblookup)"
|
|
|
|
fi
|
|
|
|
|
|
|
|
/usr/bin/env perl ./configure.pl \
|
|
|
|
--batch \
|
|
|
|
--bin-path perl=$(type -p perl) \
|
|
|
|
--bin-path tar=$(type -p tar) \
|
|
|
|
--bin-path rsync=$(type -p rsync) \
|
|
|
|
--bin-path ping=$(type -p ping) \
|
|
|
|
--bin-path df=$(type -p df) \
|
|
|
|
--bin-path ssh=$(type -p ssh) \
|
|
|
|
--bin-path sendmail=$(type -p sendmail) \
|
|
|
|
--bin-path hostname=$(type -p hostname) \
|
|
|
|
--bin-path gzip=$(type -p gzip) \
|
|
|
|
--bin-path bzip2=$(type -p bzip2) \
|
|
|
|
--config-dir "${CONFDIR}" \
|
|
|
|
--install-dir /usr \
|
|
|
|
--data-dir "${DATADIR}" \
|
|
|
|
--hostname 127.0.0.1 \
|
|
|
|
--uid-ignore \
|
|
|
|
--dest-dir "${D}" \
|
|
|
|
--html-dir "${CGIDIR}"/image \
|
|
|
|
--html-dir-url /image \
|
|
|
|
--cgi-dir "${CGIDIR}" \
|
|
|
|
--fhs \
|
|
|
|
${myconf} || die "failed the configure.pl script"
|
|
|
|
|
|
|
|
ebegin "Installing documentation"
|
|
|
|
|
|
|
|
pod2man \
|
|
|
|
-errors=none \
|
|
|
|
--section=8 \
|
|
|
|
--center="BackupPC manual" \
|
|
|
|
"${S}"/doc/BackupPC.pod backuppc.8 \
|
|
|
|
|| die "failed to generate man page"
|
|
|
|
|
|
|
|
doman backuppc.8
|
|
|
|
|
|
|
|
# Place the documentation in the correct location
|
|
|
|
dodoc "${D}/usr/doc/BackupPC.html"
|
|
|
|
dodoc "${D}/usr/doc/BackupPC.pod"
|
|
|
|
rm -rf "${D}/usr/doc" || die
|
|
|
|
|
|
|
|
eend 0
|
|
|
|
|
|
|
|
# Setup directories
|
|
|
|
dodir "${CONFDIR}/pc"
|
|
|
|
|
|
|
|
keepdir "${CONFDIR}"
|
|
|
|
keepdir "${CONFDIR}/pc"
|
|
|
|
keepdir "${DATADIR}"/{trash,pool,pc,cpool}
|
|
|
|
keepdir "${LOGDIR}"
|
|
|
|
|
|
|
|
ebegin "Setting up init.d/conf.d/systemd scripts"
|
|
|
|
newinitd "${S}"/init.d/gentoo-backuppc backuppc
|
|
|
|
newconfd "${S}"/init.d/gentoo-backuppc.conf backuppc
|
|
|
|
systemd_dounit "${FILESDIR}/${PN}.service"
|
|
|
|
|
|
|
|
insinto "${APACHE_MODULES_CONFDIR}"
|
|
|
|
doins "${FILESDIR}"/99_backuppc.conf
|
|
|
|
|
|
|
|
# Make sure that the ownership is correct
|
|
|
|
chown -R backuppc:backuppc "${D}${CONFDIR}" || die
|
|
|
|
chown -R backuppc:backuppc "${D}${DATADIR}" || die
|
|
|
|
chown -R backuppc:backuppc "${D}${LOGDIR}" || die
|
|
|
|
}
|
|
|
|
|
|
|
|
pkg_postinst() {
|
|
|
|
elog "Installation finished, you may now start using BackupPC."
|
|
|
|
elog
|
|
|
|
elog "- Read the documentation in /usr/share/doc/${PF}/BackupPC.html"
|
|
|
|
elog " Please pay special attention to the security section."
|
|
|
|
elog
|
|
|
|
elog "- You can launch backuppc by running:"
|
|
|
|
elog
|
|
|
|
elog " # /etc/init.d/backuppc start"
|
|
|
|
elog
|
|
|
|
elog "- To enable the GUI, first edit ${ROOT}/etc/conf.d/apache2 and add,"
|
|
|
|
elog
|
|
|
|
elog " \"-D BACKUPPC -D PERL -D MPM_ITK\""
|
|
|
|
elog
|
|
|
|
elog " to the APACHE2_OPTS line."
|
|
|
|
elog
|
|
|
|
elog " Then you must edit ${ROOT}/etc/apache2/modules.d/00_mpm_itk.conf"
|
|
|
|
elog " and adjust the values of LimitUIDRange/LimitGIDRange to include"
|
|
|
|
elog " the UID and GID of the backuppc user."
|
|
|
|
elog
|
|
|
|
elog " Finally, start apache:"
|
|
|
|
elog
|
|
|
|
elog " # /etc/init.d/apache2 start"
|
|
|
|
elog
|
|
|
|
elog " The web interface should now be running on,"
|
|
|
|
elog
|
|
|
|
elog " http://127.0.0.1:8080/"
|
|
|
|
elog
|
|
|
|
|
|
|
|
# Generate a new password if there's no auth file
|
|
|
|
if [[ ! -f "${CONFDIR}/users.htpasswd" ]]; then
|
|
|
|
adminuser="backuppc"
|
|
|
|
adminpass=$( makepasswd --chars=12 )
|
|
|
|
htpasswd -bc "${CONFDIR}/users.htpasswd" $adminuser $adminpass
|
|
|
|
|
|
|
|
elog ""
|
|
|
|
elog "- Created admin user $adminuser with password $adminpass"
|
|
|
|
elog " To add new users, run: "
|
|
|
|
elog ""
|
|
|
|
elog " # htpasswd ${CONFDIR}/users.htpasswd newUser"
|
|
|
|
fi
|
|
|
|
}
|