# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit fcaps flag-o-matic toolchain-funcs

DESCRIPTION="A tunnel which turns UDP traffic into encrypted FakeTCP/UDP/ICMP traffic"
HOMEPAGE="https://github.com/wangyu-/udp2raw-tunnel"

if [[ ${PV} == *9999 ]]; then
	inherit git-r3
	EGIT_REPO_URI="https://github.com/wangyu-/udp2raw-tunnel"
else
	SRC_URI="https://github.com/wangyu-/udp2raw-tunnel/archive/${PV}.tar.gz -> ${P}.tar.gz"
	KEYWORDS="~amd64 ~arm ~x86"
fi

LICENSE="MIT"
SLOT="0"
IUSE="cpu_flags_x86_aes doc iptables"

DEPEND=""
RDEPEND="${DEPEND}
	iptables? ( net-firewall/iptables )"

src_prepare() {
	# Disable optimisation flags and remove prefixes of exec files
	sed -e 's/ -O[0-3a-z]*//' \
		-e 's/\${NAME}_[a-zA-Z0-9\$@]*/\${NAME}/' \
		-e 's/ -static//' \
		-e "s/\${cc_[a-zA-Z0-9_]*}/$(tc-getCXX)/" \
		-i makefile || die 'sed failed!'

	default
}

src_compile() {
	append-cxxflags -Wa,--noexecstack
	emake OPT="${CXXFLAGS}" \
		$(use cpu_flags_x86_aes && use amd64 && echo amd64_hw_aes) \
		$(use arm && echo arm_asm_aes) \
		$(use x86 && echo x86_asm_aes)
}

src_install() {
	local exec_name=${PN%-tunnel}

	insinto "/etc/${exec_name}"
	fowners root:nobody "/etc/${exec_name}"
	fperms 750 "/etc/${exec_name}"
	doins example.conf

	newinitd "${FILESDIR}"/udp2raw-daemon$(use iptables && echo '.iptables').initd udp2raw-daemon
	newconfd "${FILESDIR}"/udp2raw-daemon.confd udp2raw-daemon

	insinto "/etc/logrotate.d"
	newins "${FILESDIR}"/udp2raw-daemon.logrotated udp2raw-daemon

	dobin $exec_name

	doman "${FILESDIR}"/man/udp2raw.1
	dodoc -r \
		$(use doc && echo 'images doc/*') \
		README.md example.conf Dockerfile
}

pkg_postinst() {
	fcaps cap_net_raw+ep /usr/bin/${PN%-tunnel}

	if ! use cpu_flags_x86_aes && use amd64; then
		ewarn "Please add CPU_FLAGS_X86=\"aes\" to /etc/portage/make.conf"
		ewarn "if your CPU support the AES instruction. Just run:"
		ewarn "    ~# emerge -uDN @world"
	fi

	elog "\nSee documentation: https://github.com/wangyu-/udp2raw-tunnel#getting-started\n"
}
