2022-01-10 10:54:06 +01:00
# Copyright 1999-2022 Gentoo Authors
2019-05-06 15:11:21 +02:00
# Distributed under the terms of the GNU General Public License v2
2022-03-20 02:28:10 +01:00
EAPI = "8"
2019-05-06 15:11:21 +02:00
if [ [ ${ PV } = = *9999 ] ] ; then
EGIT_REPO_URI = "https://github.com/Froxlor/Froxlor.git"
EGIT_CHECKOUT_DIR = ${ WORKDIR } /${ PN }
2019-09-21 19:59:41 +02:00
inherit git-r3 vcs-clean
2019-05-06 15:11:21 +02:00
KEYWORDS = ""
else
RESTRICT = "mirror"
SRC_URI = " https://files.froxlor.org/releases/ ${ P } .tar.gz "
KEYWORDS = "~amd64 ~x86"
fi
DESCRIPTION = "A PHP-based webhosting-oriented control panel for servers."
HOMEPAGE = "https://www.froxlor.org/"
LICENSE = "GPL-2"
SLOT = "0"
2022-03-20 02:28:10 +01:00
IUSE = "awstats bind +dovecot fcgid fpm ftpquota lighttpd +log mailquota nginx pdns pureftpd quota ssl"
2019-05-06 15:11:21 +02:00
DEPEND = "
2022-01-10 10:54:06 +01:00
virtual/mysql
2019-05-06 15:11:21 +02:00
>= mail-mta/postfix-2.4[ mysql,ssl= ]
virtual/cron
2022-01-10 10:54:06 +01:00
>= dev-lang/php-7.1:*[ bcmath,cli,ctype,curl,filter,gd,json( +) ,mysql,nls,pcntl,pdo,posix,session,simplexml,ssl= ,tokenizer,unicode,xml,xslt,zlib,zip]
2019-05-06 15:11:21 +02:00
pureftpd? (
net-ftp/pure-ftpd[ mysql,ssl= ]
)
!pureftpd? (
2022-01-10 10:54:06 +01:00
net-ftp/proftpd[ mysql,ssl= ]
ftpquota? ( net-ftp/proftpd[ softquota] )
2019-05-06 15:11:21 +02:00
)
awstats? (
www-misc/awstats
)
!awstats? (
app-admin/webalizer
)
2022-01-10 10:54:06 +01:00
bind? ( net-dns/bind )
pdns? ( net-dns/pdns[ mysql] )
2021-05-14 16:42:28 +02:00
ssl? ( dev-libs/openssl )
2019-05-06 15:11:21 +02:00
lighttpd? ( www-servers/lighttpd[ php,ssl= ] )
nginx? (
www-servers/nginx:*[ ssl = ]
)
!lighttpd? (
( !nginx? (
www-servers/apache[ ssl = ]
!fpm? (
dev-lang/php:*[ apache2]
)
)
)
)
fcgid? ( dev-lang/php:*[ cgi]
|| (
sys-auth/libnss-extrausers
sys-auth/libnss-mysql
)
( !lighttpd? (
!nginx? (
www-servers/apache[ apache2_modules_proxy_fcgi]
)
)
)
)
fpm? ( dev-lang/php:*[ fpm]
|| (
sys-auth/libnss-extrausers
sys-auth/libnss-mysql
)
( !lighttpd? (
!nginx? (
www-servers/apache[ apache2_modules_proxy_fcgi]
)
)
)
)
dovecot? ( >= net-mail/dovecot-2.2.0[ mysql]
>= mail-mta/postfix-2.4[ dovecot-sasl]
)
!dovecot? ( dev-libs/cyrus-sasl[ mysql,ssl= ]
2022-01-10 10:54:06 +01:00
net-libs/courier-authlib[ mysql]
2019-05-06 15:11:21 +02:00
net-mail/courier-imap
>= mail-mta/postfix-2.4[ sasl]
)
quota? ( sys-fs/quotatool ) "
RDEPEND = " ${ DEPEND } "
2022-01-10 10:54:06 +01:00
REQUIRED_USE = "lighttpd? ( !nginx ) fcgid? ( !fpm ) pdns? ( !bind )"
2019-05-06 15:11:21 +02:00
# we need that to set the standardlanguage later
2022-01-10 10:54:06 +01:00
LANGS = "cs de en fr it nl pt sv"
2019-05-06 15:11:21 +02:00
for X in ${ LANGS } ; do
IUSE = " ${ IUSE } l10n_ ${ X } "
done
# lets check user defined variables
FROXLOR_DOCROOT = " ${ FROXLOR_DOCROOT :- /var/www } "
S = " ${ WORKDIR } / ${ PN } "
src_unpack( ) {
if [ [ ${ PV } = = *9999 ] ] ; then
git-r3_src_unpack
else
unpack ${ A }
fi
}
2019-11-01 14:32:11 +01:00
src_prepare( ) {
2019-11-01 14:19:54 +01:00
if [ [ ${ PV } = = *9999 ] ] ; then
egit_clean
fi
2019-11-01 14:32:11 +01:00
default
2019-11-01 14:19:54 +01:00
}
2019-05-06 15:11:21 +02:00
src_install( ) {
# set default language
local MYLANG = ""
if use l10n_de ; then
MYLANG = "Deutsch"
elif use l10n_fr ; then
MYLANG = "Français"
elif use l10n_it ; then
2022-01-10 10:54:06 +01:00
MYLANG = "Italiano"
2019-05-06 15:11:21 +02:00
elif use l10n_nl ; then
2022-01-10 10:54:06 +01:00
MYLANG = "Nederlands"
2019-05-06 15:11:21 +02:00
elif use l10n_pt ; then
MYLANG = "Português"
elif use l10n_sv ; then
2022-01-10 10:54:06 +01:00
MYLANG = "Svenska"
elif use l10n_cs ; then
MYLANG = "Česká republika"
2019-05-06 15:11:21 +02:00
fi
if [ [ ${ MYLANG } != '' ] ] ; then
einfo " Setting standardlanguage to ' ${ MYLANG } ' "
sed -e " s|'standardlanguage', 'English'|'standardlanguage', ' ${ MYLANG } '|g " -i " ${ S } /install/froxlor.sql " || die "Unable to change default language"
fi
einfo "Setting 'lastguid' to '10000'"
sed -e "s|'lastguid', '9999'|'lastguid', '10000'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change lastguid"
# set correct webserver reload
if use lighttpd; then
einfo "Switching settings to fit 'lighttpd'"
sed -e "s|/etc/init.d/apache2 reload|/etc/init.d/lighttpd restart|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver restart-command"
sed -e "s|'webserver', 'apache2'|'webserver', 'lighttpd'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver version"
2022-01-10 10:54:06 +01:00
sed -e "s|'apacheconf_vhost', '/etc/apache2/sites-enabled/'|'apacheconf_vhost', '/etc/lighttpd/vj/'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver vhost directory"
sed -e "s|'apacheconf_diroptions', '/etc/apache2/sites-enabled/'|'apacheconf_diroptions', '/etc/lighttpd/diroptions.conf'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver diroptions file"
2019-05-06 15:11:21 +02:00
sed -e "s|'apacheconf_htpasswddir', '/etc/apache2/htpasswd/'|'apacheconf_htpasswddir', '/etc/lighttpd/htpasswd/'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver htpasswd directory"
sed -e "s|'httpuser', 'www-data'|'httpuser', 'lighttpd'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver user"
sed -e "s|'httpgroup', 'www-data'|'httpgroup', 'lighttpd'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver group"
sed -e "s|'fastcgi_ipcdir', '/var/lib/apache2/fastcgi/'|'fastcgi_ipcdir', '/var/run/lighttpd/'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change php-ipc directory"
elif use nginx; then
einfo "Switching settings to fit 'nginx'"
sed -e "s|/etc/init.d/apache2 reload|/etc/init.d/nginx restart|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver restart-command"
sed -e "s|'webserver', 'apache2'|'webserver', 'nginx'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver version"
2022-01-10 10:54:06 +01:00
sed -e "s|'apacheconf_vhost', '/etc/apache2/sites-enabled/'|'apacheconf_vhost', '/etc/nginx/vhosts.d/'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver vhost directory"
sed -e "s|'apacheconf_diroptions', '/etc/apache2/sites-enabled/'|'apacheconf_diroptions', '/etc/nginx/diroptions.conf'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver diroptions file"
2019-05-06 15:11:21 +02:00
sed -e "s|'apacheconf_htpasswddir', '/etc/apache2/htpasswd/'|'apacheconf_htpasswddir', '/etc/nginx/htpasswd/'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver htpasswd directory"
sed -e "s|'httpuser', 'www-data'|'httpuser', 'nginx'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver user"
sed -e "s|'httpgroup', 'www-data'|'httpgroup', 'nginx'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver group"
sed -e "s|'fastcgi_ipcdir', '/var/lib/apache2/fastcgi/'|'fastcgi_ipcdir', '/var/run/nginx/'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change php-ipc directory"
else
einfo "Switching settings to fit 'apache2'"
2022-01-10 10:54:06 +01:00
sed -e "s|'apacheconf_vhost', '/etc/apache2/sites-enabled/'|'apacheconf_vhost', '/etc/apache2/vhosts.d/'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver vhost directory"
sed -e "s|'apacheconf_diroptions', '/etc/apache2/sites-enabled/'|'apacheconf_diroptions', '/etc/apache2/vhosts.d/'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver diroptions file"
2019-05-06 15:11:21 +02:00
sed -e "s|'httpuser', 'www-data'|'httpuser', 'apache'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver user"
sed -e "s|'httpgroup', 'www-data'|'httpgroup', 'apache'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to change webserver group"
fi
if use fcgid && ! use lighttpd && ! use nginx ; then
einfo "Switching 'fcgid' to 'On'"
sed -e "s|'mod_fcgid', '0'|'mod_fcgid', '1'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to set fcgid to 'On'"
einfo "Setting wrapper to FcgidWrapper"
sed -e "s|'mod_fcgid_wrapper', '0'|'mod_fcgid_wrapper', '1'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to set fcgi-wrapper to 'FCGIWrapper'"
fi
if use fpm ; then
einfo "Switching 'fpm' to 'On'"
sed -e "s|'phpfpm', 'enabled', '0'|'phpfpm', 'enabled', '1'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to set fpm to 'On'"
2022-01-10 10:54:06 +01:00
# how to get version of required/installed php package?
# einfo "Setting configdir for fpm"
# sed -e "s|'phpfpm', 'configdir', '/etc/php-fpm.d/'|'phpfpm', 'configdir', '/etc/php/fpm-php5.3/fpm.d/'|g" -i "${S}/install/froxlor.sql" || die "Unable to set configdir for 'fpm'"
2019-05-06 15:11:21 +02:00
fi
# If Bind and pdns will not be used disable nameserver
if ! use bind && ! use pdns; then
einfo "Disabling nameserver"
sed -e 's|' bind_enable', ' 1'|' bind_enable', ' 0'|g' -i " ${ S } /install/froxlor.sql " || die "Unable to change binds enabled flag"
sed -e 's|/etc/init.d/bind9 reload|/bin/true|g' -i " ${ S } /install/froxlor.sql " || die "Unable to change reload path for Bind"
fi
if use bind ; then
einfo "Setting bind9 reload command"
sed -e 's|' bind_enable', ' 0'|' bind_enable', ' 1'|g' -i " ${ S } /install/froxlor.sql " || die "Unable to change binds enabled flag"
sed -e 's|/etc/init.d/bind9 reload|/etc/init.d/named reload|g' -i " ${ S } /install/froxlor.sql " || die "Unable to change reload path for Bind"
fi
if use pdns ; then
einfo "Switching from 'bind' to 'powerdns'"
sed -e 's|' bind_enable', ' 0'|' bind_enable', ' 1'|g' -i " ${ S } /install/froxlor.sql " || die "Unable to change binds enabled flag"
sed -e 's|/etc/init.d/bind9 reload|/etc/init.d/pdns restart|g' -i " ${ S } /install/froxlor.sql " || die "Unable to change reload path for pdns"
sed -e 's|' dns_server', ' bind'|' dns_server', ' pdns'|g' -i " ${ S } /install/froxlor.sql " || die "Unable to change dns-server value from bind to pdns"
ewarn ""
ewarn "Note that you need to configure pdns and create a separate database for it, see:"
ewarn "https://doc.powerdns.com/3/authoritative/installation/#basic-setup-configuring-database-connectivity"
ewarn ""
fi
# default value is logging_enabled='1'
if ! use log ; then
einfo "Switching 'log' to 'Off'"
sed -e "s|'logger', 'enabled', '1'|'logger', 'enabled', '0'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to set logging to 'Off'"
fi
# default value is mailquota='0'
if use mailquota ; then
einfo "Switching 'mailquota' to 'On'"
sed -e "s|'mail_quota_enabled', '0'|'mail_quota_enabled', '1'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to set mailquota to 'On'"
fi
# default value is ssl_enabled='1'
if ! use ssl ; then
einfo "Switching 'SSL' to 'Off'"
sed -e "s|'use_ssl','1'|'use_ssl','0'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to set ssl to 'Off'"
fi
if use awstats ; then
einfo "Switching from 'Webalizer' to 'AWStats'"
sed -e "s|'webalizer_quiet', '2'|'webalizer_quiet', '0'|g" -i " ${ S } /install/froxlor.sql "
sed -e "s|'awstats_enabled', '0'|'awstats_enabled', '1'|g" -i " ${ S } /install/froxlor.sql " || die "Unable to enable AWStats"
fi
if use pureftpd ; then
einfo "Switching from 'ProFTPd' to 'Pure-FTPd'"
sed -e "s|'ftpserver', 'proftpd'|'ftpserver', 'pureftpd'|g" -i " ${ S } /install/froxlor.sql "
fi
# Install the Froxlor files
einfo "Installing Froxlor files"
dodir ${ FROXLOR_DOCROOT }
cp -R " ${ S } / " " ${ D } ${ FROXLOR_DOCROOT } / " || die "Installation of the Froxlor files failed"
}
pkg_postinst( ) {
# we need to check if this is going to be an update or a fresh install!
if [ [ -f " ${ ROOT } ${ FROXLOR_DOCROOT } /froxlor/lib/userdata.inc.php " ] ] ; then
elog "Froxlor is already installed on this system!"
elog
elog "Froxlor will update the database when you open"
elog "it in your browser the first time after the update-process"
elif [ [ -f " ${ ROOT } ${ FROXLOR_DOCROOT } /syscp/lib/userdata.inc.php " ] ] ; then
elog "This seems to be an upgrade from syscp"
elog " please move ${ FROXLOR_DOCROOT } /syscp/lib/userdata.inc.php to "
elog " ${ FROXLOR_DOCROOT } /froxlor/lib/ "
elog "and don't forget to copy " ${ ROOT } /usr/share/${ PN } /froxlor.cron""
elog "to /etc/cron.d/froxlor and remove /etc/cron.d/syscp"
else
elog "Please open http://[ip]/froxlor in your browser to continue"
elog "with the basic setup of Froxlor."
elog
elog "Don't forget to setup your MySQL databases root user and password"
elog "using emerge --config mysql"
fi
}