diff options
author | Conrad Kostecki <conikost@gentoo.org> | 2021-07-11 23:03:48 +0200 |
---|---|---|
committer | Conrad Kostecki <conikost@gentoo.org> | 2021-07-11 23:18:25 +0200 |
commit | 00eeaa6f7d079b25e6316e1c07b4772672c78569 (patch) | |
tree | 2186ced976e645b1eedd108fa0967d38ed189f6d | |
parent | net-misc/samplicator: drop old version (diff) | |
download | gentoo-00eeaa6f7d079b25e6316e1c07b4772672c78569.tar.gz gentoo-00eeaa6f7d079b25e6316e1c07b4772672c78569.tar.bz2 gentoo-00eeaa6f7d079b25e6316e1c07b4772672c78569.zip |
net-misc/stargazer: migrate to GLEP 81
Bug: https://bugs.gentoo.org/781440
Package-Manager: Portage-3.0.20, Repoman-3.0.3
Signed-off-by: Conrad Kostecki <conikost@gentoo.org>
-rw-r--r-- | net-misc/stargazer/stargazer-2.408-r2.ebuild | 542 |
1 files changed, 542 insertions, 0 deletions
diff --git a/net-misc/stargazer/stargazer-2.408-r2.ebuild b/net-misc/stargazer/stargazer-2.408-r2.ebuild new file mode 100644 index 000000000000..7f3667a702eb --- /dev/null +++ b/net-misc/stargazer/stargazer-2.408-r2.ebuild @@ -0,0 +1,542 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PROJECTS="sgconv rlm_stg rscriptd sgauth sgconf sgconf_xml stargazer" + +STG_MODULES_AUTH="always_online internet_access freeradius" +STG_MODULES_CAPTURE="ipq ether netflow" +STG_MODULES_CONFIG="sgconfig rpcconfig" +STG_MODULES_OTHER="ping smux remote_script" +STG_MODULES_STORE="files firebird mysql postgres" + +declare -A MODULES +MODULES=( [module_auth_always_online]="authorization\/ao:mod_ao" + [module_auth_internet_access]="authorization\/inetaccess:mod_ia" + [module_auth_freeradius]="other\/radius:mod_radius" + [module_capture_ipq]="capture\/ipq_linux:mod_cap_ipq" + [module_capture_ether]="capture\/ether_linux:mod_cap_ether" + [module_capture_netflow]="capture\/cap_nf:mod_cap_nf" + [module_config_sgconfig]="configuration\/sgconfig:mod_sg" + [module_config_rpcconfig]="configuration\/rpcconfig:mod_rpc" + [module_other_ping]="other\/ping:mod_ping" + [module_other_smux]="other\/smux:mod_smux" + [module_other_remote_script]="other\/rscript:mod_remote_script" + [module_store_files]="store\/files:store_files" + [module_store_firebird]="store\/firebird:store_firebird" + [module_store_mysql]="store\/mysql:store_mysql" + [module_store_postgres]="store\/postgresql:store_postgresql" +) + +declare -A INIT +INIT=( [module_store_files]="11d" + [module_store_firebird]="11d;s/need net/need net firebird/" + [module_store_mysql]="11d;s/need net/need net mysql/" + [module_store_postgres]="11d;s/need net/need net postgresql/" +) + +MY_P="stg-${PV}" + +inherit flag-o-matic linux-info + +DESCRIPTION="Billing system for small home and office networks" +HOMEPAGE="http://stg.dp.ua/" +SRC_URI="http://stg.dp.ua/download/server/${PV}/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +CDEPEND=" + acct-group/stg + acct-user/stg +" + +RDEPEND=" + module_config_rpcconfig? ( + dev-libs/expat + dev-libs/xmlrpc-c[abyss,cxx] + ) + module_config_sgconfig? ( dev-libs/expat ) + module_store_firebird? ( dev-db/firebird ) + module_store_mysql? ( dev-db/mysql-connector-c:0= ) + module_store_postgres? ( dev-db/postgresql:= ) + rscriptd? ( ${CDEPEND} ) + sgauth? ( ${CDEPEND} ) + sgconf? ( + ${CDEPEND} + dev-libs/expat + ) + sgconf_xml? ( dev-libs/expat ) + stargazer? ( ${CDEPEND} ) +" + +DEPEND="${RDEPEND}" + +REQUIRED_USE="stargazer? ( ^^ ( module_store_files module_store_firebird module_store_mysql module_store_postgres ) )" + +DOCS=( BUGS ../../ChangeLog CHANGES README TODO ) + +# Patches already in upstream's trunk +PATCHES=( + # Fix dependency on fbclient for module_store_firebird + "${FILESDIR}"/patches/stg-2.408-makefile-firebird-upstream.patch + # Rewrite config for rscriptd + "${FILESDIR}"/patches/stg-2.408-rscriptd.conf-upstream.patch + # Rewrite config for sgauth + "${FILESDIR}"/patches/stg-2.408-sgauth.conf-upstream.patch + # Standardization of 'On-scripts' + "${FILESDIR}"/patches/stg-2.408-on-upstream.patch + # Install demo scripts for rscriptd + "${FILESDIR}"/patches/stg-2.408-rscriptd-upstream.patch + # Fix crush on stop + "${FILESDIR}"/patches/stg-2.408-fix-crash-on-stop.patch + # Rename convertor to sgconv to avoid possible file name collisions + "${FILESDIR}"/patches/stg-2.408-sgconv-upstream.patch + # Debug support. Install radius lib to /usr/lib/freeradius + "${FILESDIR}"/patches/stg-2.408-makefile-build-upstream.patch + # Don't compile sgconv always with debug. Remove MAKEOPTS=-j1 + "${FILESDIR}"/patches/stg-2.408-build-upstream.patch + # FreeBSD install directory + "${FILESDIR}"/patches/stg-2.408-radius-upstream.patch +) + +IUSE="sgconv radius rscriptd sgauth sgconf sgconf_xml stargazer debug" + +for module in ${STG_MODULES_AUTH} ; do IUSE="${IUSE} module_auth_${module}" ; done +for module in ${STG_MODULES_CAPTURE} ; do IUSE="${IUSE} module_capture_${module}" ; done +for module in ${STG_MODULES_CONFIG} ; do IUSE="${IUSE} module_config_${module}" ; done +for module in ${STG_MODULES_OTHER} ; do IUSE="${IUSE} module_other_${module}" ; done +for module in ${STG_MODULES_STORE} ; do IUSE="${IUSE} module_store_${module}" ; done + +IUSE=${IUSE/stargazer/+stargazer} +IUSE=${IUSE/module_store_files/+module_store_files} + +src_prepare() { + # Rename convertor to sgconv to avoid possible file name collisions + mv projects/convertor/ projects/sgconv/ \ + || die "Couldn't move convertor folder" + mv projects/sgconv/convertor.conf \ + projects/sgconv/sgconv.conf || die "Couldn't move convertor config" + + default + + local project + for project in ${PROJECTS} ; do + # Rename build script to configure for further econf launch in every project + mv projects/$project/build projects/$project/configure \ + || die "Couldn't move build folder for $project" + # Change check for debug build + sed -i 's/if \[ "$1" = "debug" \]/if \[ "${10}" = "--enable-debug" \]/' \ + projects/$project/configure \ + || die "sed for debug check failed" + done + + # Correct working directory, user and group for sgconv.conf, store_files.conf + # Correct paths for rscriptd.conf, store_firebird.conf, mod_remote_scriptd.conf, stargazer.conf, rpcconfig.cpp, 00-base-00.sql + eapply "${FILESDIR}"/patches/stg-2.408-correct-paths.patch + + # Correct target install-data for stargazer, rscriptd, sgauth, remove debug symbols stripping + eapply "${FILESDIR}"/patches/stg-2.408-makefile.patch + + # Remove make from script (for keeping symbols), always add variable to Makefile.conf for all projects + eapply "${FILESDIR}"/patches/stg-2.408-build.patch + + # Remove static-libs + eapply "${FILESDIR}"/patches/stg-2.408-static-libs.patch + + # Define which module to compile + local module + for module in ${!MODULES[@]} ; do + if ! use $module ; then + sed -i "s/${MODULES[$module]%:*}//" \ + projects/stargazer/configure \ + || die "sed for module configure failed" + fi + done + + # Correct Gentoo init script + sed -i -e 's/opts/extra_commands/' \ + -e 's/runscript/openrc-run/' \ + projects/stargazer/inst/linux/etc/init.d/stargazer.gentoo \ + || die "sed for init-script failed" + local init + for init in ${!INIT[@]} ; do + if use $init ; then + sed -i "${INIT[$init]}" \ + projects/stargazer/inst/linux/etc/init.d/stargazer.gentoo \ + || die "sed for $init failed" + fi + done + + # Check for IPQ subsystem availability + if use module_capture_ipq && kernel_is ge 3 5 ; then + die "The IPQ subsystem requires kernel 3.5 or greater." + fi +} + +src_configure() { + use debug && filter-flags '-O?' + + # Define local variables, strip '+' symbol for used by default USE flags + local USEFLAGS=(${IUSE//+}) + local PROJECTS=($PROJECTS) + local i + + for (( i = 0 ; i < ${#PROJECTS[@]} ; i++ )) ; do + if use ${USEFLAGS[$i]} ; then + cd "${S}"/projects/${PROJECTS[$i]} \ + || die "cd to ${PROJECTS[$i]} failed" + econf $(use_enable debug) + fi + done +} + +src_compile() { + # Define local variables, strip '+' symbol for used by default USE flags + local USEFLAGS=(${IUSE//+}) + local PROJECTS=($PROJECTS) + local i + + # Set jobs to 1 for debug build + use debug && MAKEOPTS="-j1" + + # Build necessary libraries first + touch Makefile.conf + cd stglibs || die "cd to stglibs failed" + emake STG_LIBS="ia.lib srvconf.lib" + + for (( i = 0 ; i < ${#PROJECTS[@]} ; i++ )) ; do + if use ${USEFLAGS[$i]} ; then + cd "${S}"/projects/${PROJECTS[$i]} \ + || die "cd to ${PROJECTS[$i]} failed" + emake + fi + done +} + +src_install() { + if use rscriptd || use stargazer ; then + # Install config file for logrotate + insinto /etc/logrotate.d + newins "${FILESDIR}"/logrotate stargazer + + # Keeping logs directory + diropts -m 755 -o stg -g stg + keepdir /var/log/stargazer + if use stargazer ; then + diropts -m 775 -o stg -g stg + keepdir /var/lib/stargazer + fi + fi + + if use sgconv ; then + cd projects/sgconv || die "cd to sgconv failed" + + emake DESTDIR="${D}" PREFIX="${D}" install + + # Install files into specified directory + insinto /etc/stargazer + doins "${S}"/projects/sgconv/sgconv.conf + + # Install manual page + doman "${FILESDIR}"/mans/sgconv.1 + fi + + if use radius ; then + cd "${S}"/projects/rlm_stg || die "cd to rlm_stg failed" + + emake DESTDIR="${D}" PREFIX="${D}" install + fi + + if use rscriptd ; then + cd "${S}"/projects/rscriptd || die "cd to rscriptd failed" + + emake DESTDIR="${D}" PREFIX="${D}" install + + # Install Gentoo init script + doinitd "${FILESDIR}"/rscriptd + + # Correct permissions for file + fperms 0640 /etc/stargazer/rscriptd.conf + + # Install manual page + doman "${FILESDIR}"/mans/rscriptd.8 + fi + + if use sgauth ; then + cd "${S}"/projects/sgauth || die "cd to sgauth failed" + + emake DESTDIR="${D}" PREFIX="${D}" install + + # Correct permissions for file + fperms 0640 /etc/stargazer/sgauth.conf + + # Install manual page + doman "${FILESDIR}"/mans/sgauth.8 + fi + + if use sgconf ; then + cd "${S}"/projects/sgconf || die "cd to sgconf failed" + + emake DESTDIR="${D}" PREFIX="${D}" install + + # Install manual page + doman "${FILESDIR}"/mans/sgconf.1 + fi + + if use sgconf_xml ; then + cd "${S}"/projects/sgconf_xml || die "cd to sgconf_xml failed" + + emake DESTDIR="${D}" PREFIX="${D}" install + + # Install manual page + doman "${FILESDIR}"/mans/sgconf_xml.1 + fi + + if use stargazer ; then + cd "${S}"/projects/stargazer || die "cd to stargazer failed" + + emake DESTDIR="${D}" PREFIX="${D}" install + + # Install docs + einstalldocs + + # Install and rename Gentoo init script + newinitd "${S}"/projects/stargazer/inst/linux/etc/init.d/stargazer.gentoo stargazer + + # Install manual page + doman "${FILESDIR}"/mans/stargazer.8 + + # Install files needed for module_store_files + if use module_store_files ; then + # Install files into specified directory + insinto /var/lib + doins -r "${S}"/projects/stargazer/inst/var/stargazer + + # Correct user and group for files and directories + fowners -R stg:stg /var/lib/stargazer + fi + + if use module_store_firebird ; then + # Install files into specified directory + insinto /usr/share/stargazer/db/firebird + doins \ + "${S}"/projects/stargazer/inst/var/00-base-00.sql \ + "${S}"/projects/stargazer/inst/var/00-alter-01.sql + fi + + if use module_store_mysql ; then + # Install file into specified directory + insinto /usr/share/stargazer/db/mysql + doins "${S}"/projects/stargazer/inst/var/00-mysql-01.sql + fi + + if use module_store_postgres ; then + # Install files into specified directory + insinto /usr/share/stargazer/db/postgresql + doins \ + "${S}"/projects/stargazer/inst/var/00-base-00.postgresql.sql \ + "${S}"/projects/stargazer/inst/var/00-alter-01.postgresql.sql + fi + + if use module_other_smux ; then + # Install files into specified directory + insinto /usr/share/snmp/mibs + doins "${S}"/projects/stargazer/plugins/other/smux/STG-MIB.mib + fi + + if use module_other_remote_script ; then + # Create subnets file based on example from mod_remote_script.conf + grep 192 "${S}"/projects/stargazer/inst/linux/etc/stargazer/conf-available.d/mod_remote_script.conf \ + | sed 's/# //' > "${ED}"/etc/stargazer/subnets + + # Correct permissions for file + fperms 0640 /etc/stargazer/subnets + fi + + # Correct permissions for files + fperms 0640 \ + /etc/stargazer/rules \ + /etc/stargazer/stargazer.conf + + # Install files into specified directory for selected modules + insinto /etc/stargazer/conf-available.d + insopts -m 0640 + + local module + for module in ${!MODULES[@]} ; do + use $module && doins "${S}"/projects/stargazer/inst/linux/etc/stargazer/conf-available.d/${MODULES[$module]#*:}.conf + done + + # Create symlinks of configs for selected modules + for module in ${!MODULES[@]} ; do + use $module \ + && dosym \ + /etc/stargazer/conf-available.d/${MODULES[$module]#*:}.conf \ + /etc/stargazer/conf-enabled.d/${MODULES[$module]#*:}.conf + done + fi + + # Correct user and gsroup for files and directories + if use sgconv || use rscriptd || use sgauth || use stargazer ; then + fowners -R stg:stg /etc/stargazer + fi + + # Put the files in the right folder to support multilib + if [ ! -e "${ED}"/usr/$(get_libdir) ] ; then + mv "${ED}"/usr/lib/ "${ED}"/usr/$(get_libdir) \ + || die "Failed to move library directory for multilib support" + fi +} + +pkg_postinst() { + if use sgconv ; then + einfo "\nSgconv:" + einfo "----------" + einfo "For further use edit /etc/stargazer/sgconv.conf." + fi + + if use radius ; then + einfo "\nRadius:" + einfo "-------" + einfo "For further use emerge net-dialup/freeradius.\n" + + einfo "Example config:\n" + + einfo "stg {" + einfo " local_port = 6667" + einfo " server = localhost" + einfo " port = 6666" + einfo " password = 123456" + einfo " }\n" + + einfo "You should place 'stg' into section Instantiate, Authorize." + einfo "In section Authentificate 'stg' should go in sub-section" + einfo "Auth-Type before other authentifications modules:\n" + + einfo "Auth-Type PAP {" + einfo " stg" + einfo " pap" + einfo "}\n" + + einfo "It also may be used in section Accounting and Post-Auth." + + use module_auth_freeradius || einfo "\nFor use RADIUS enable USE-flag module_auth_freeradius." + fi + + if use rscriptd ; then + einfo "\nRemote Script Executer:" + einfo "-----------------------" + einfo "For further use edit /etc/stargazer/rscriptd.conf." + einfo "You have to change 'Password' field at least." + fi + + if use sgauth ; then + einfo "\nSgauth:" + einfo "-------" + einfo "For further use edit /etc/stargazer/sgauth.conf." + einfo "You have to change 'ServerName', 'Login', 'Password' fields at least." + fi + + if use sgconf ; then + einfo "\nSgconf:" + einfo "-------" + use module_config_sgconfig \ + || einfo "For further use enable USE-flag module_config_sgconfig." + fi + + if use sgconf_xml ; then + einfo "\nSgconf_xml:" + einfo "-----------" + use module_config_rpcconfig \ + || einfo "For further use enable USE-flag module_config_rpcconfig." + fi + + if use stargazer ; then + einfo "\nStargazer:" + einfo "----------" + einfo "Modules availability:\n" + if use module_auth_always_online ; then + einfo "* module_auth_always_online available." + fi + if use module_auth_internet_access ; then + einfo "* module_auth_internet_access available." + fi + if use module_auth_freeradius ; then + einfo "* module_auth_freeradius available.\n" + einfo "For further use emerge net-dialup/freeradius.\n" + use radius || einfo "\n For use RADIUS enable use USE-flag radius." + fi + if use module_capture_ipq ; then + einfo "* module_capture_ipq available." + fi + if use module_capture_ether ; then + einfo "* module_capture_ether available." + fi + if use module_capture_netflow ; then + einfo "* module_capture_netflow available.\n" + einfo "For further use emerge any netflow sensor:\n" + einfo "net-firewall/ipt_netflow or net-analyzer/softflowd.\n" + fi + if use module_config_sgconfig ; then + einfo "* module_config_sgconfig available." + fi + if use module_config_rpcconfig ; then + einfo "* module_config_rpcconfig available.\n" + einfo "KNOWN BUG: Sometimes you can't configure Stargazer" + einfo "through xml-based configurator, because module is not responding." + einfo "This bug is introduced by xmlrpc-c library." + einfo "This bug proceeds very rare, but it still exists.\n" + fi + if use module_other_ping ; then + einfo "* module_other_ping available." + fi + if use module_other_smux ; then + einfo "* module_other_smux available.\n" + einfo "For further use emerge net-analyzer/net-snmp.\n" + fi + if use module_other_remote_script ; then + einfo "* module_other_remote_script available.\n" + einfo "For further use edit /etc/stargazer/subnets.\n" + fi + if use module_store_files ; then + einfo "* module_store_files available." + fi + if use module_store_firebird ; then + einfo "* module_store_firebird available.\n" + einfo "You should add 'firebird' user to stg group:\n" + einfo "# usermod -a -G stg firebird\n" + einfo "and restart firebird:\n" + einfo "# /etc/init.d/firebird restart\n" + einfo "Stargazer DB schema for Firebird is here: /usr/share/stargazer/db/firebird" + einfo "For new setup you should execute 00-base-00.sql:\n" + einfo "# fbsql -q -i /usr/share/stargazer/db/firebird/00-base-00.sql\n" + einfo "For upgrade from version 2.406 you should execute 00-alter-01.sql:\n" + einfo "# fbsql -i /usr/share/stargazer/db/firebird/00-alter-01.sql\n" + fi + if use module_store_mysql ; then + einfo "* module_store_mysql available.\n" + einfo "For upgrade from version 2.406 you should execute 00-mysql-01.sql:\n" + einfo "# mysql < /usr/share/stargazer/db/mysql/00-mysql-01.sql\n" + fi + if use module_store_postgres ; then + einfo "* module_store_postgres available.\n" + einfo "DB schema for PostgresSQL is here: /usr/share/stargazer/db/postgresql" + einfo "For new setup you should execute 00-base-00.postgresql.sql:\n" + einfo "# psql -f /usr/share/stargazer/db/postgresql/00-base-00.postgresql.sql\n" + einfo "For upgrade from version 2.406 you should execute 00-alter-01.sql:\n" + einfo "# psql -f /usr/share/stargazer/db/postgresql/00-alter-01.sql\n" + fi + einfo "\n For all storage backends:\n" + einfo "* Default admin login - admin, default admin password - 123456." + einfo "* Default subscriber login - test, default subscriber password - 123456.\n" + einfo "Don't run newer versions without reading their ChangeLog first," + einfo "it can be found in /usr/share/doc/${PF}" + fi + if use debug ; then + ewarn "\nThis is a debug build, avoid to use it in production." + fi +} |