# Contributor: Ivan Tham <pickfire@riseup.net>
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer: Francesco Colista <fcolista@alpinelinux.org>
pkgname=john
pkgver=1.8.0
_pkgrel=jumbo-1
pkgrel=7
pkgdesc="John the Ripper password cracker"
url="http://www.openwall.com/john"
arch="x86_64 armhf ppc64le"
license="GPL2"
depends="nss"
options="!strip"
makedepends="libpcap-dev libressl-dev gmp-dev yasm-dev zlib-dev"
install=""
subpackages="$pkgname-doc
	$pkgname-scripts-py:py:noarch
	$pkgname-scripts-perl:perl:noarch
	$pkgname-scripts-ruby:ruby:noarch
	$pkgname-misc::noarch
	$pkgname-zsh-completion:zshcomp:noarch
	$pkgname-bash-completion:bashcomp:noarch
	$pkgname-jumbo:jumbo:noarch
	"
source="$pkgname-$pkgver.tar.gz::https://github.com/magnumripper/JohnTheRipper/archive/$pkgver-$_pkgrel.tar.gz
	truecrypt_fmt_plug.patch
	params-h.patch
	gcc5-support.patch
	libressl.patch
	"
builddir="$srcdir/JohnTheRipper-$pkgver-$_pkgrel"

build() {
	cd "$builddir"/src
	sed -i -e "s/ac_default_prefix.*/ac_default_prefix=\/usr/g" configure
	export OPENSSL_LIBS="-lssl -lcrypto"
	./configure \
		--disable-openmp
	make || return 1
}

package() {
	cd "$builddir"
	mkdir -p "$pkgdir"/usr/bin
	mkdir -p "$pkgdir"/usr/share/doc/$pkgname

	install -Dm644 run/john.conf "$pkgdir"/etc/john/john.conf
	install -Dm644 run/john.local.conf "$pkgdir"/etc/john/john.local.conf
	install -Dm644 doc/* "$pkgdir"/usr/share/doc/$pkgname
	install -Dm644 doc/LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
	rm "$pkgdir"/usr/share/doc/$pkgname/LICENSE*

	local john_bins="john calc_stat genmkvpwd mkvcalcproba relbench
			tgtsnarf raw2dyna"
	for bin in ${john_bins}; do
		install -Dm755 run/${bin} "$pkgdir"/usr/bin
	done

	local john_links="hccap2john keepass2john mozilla2john pdf2john
			pfx2john pwsafe2john racf2john rar2john ssh2john
			unafs unique unsahdow undrop zip2john"
	for link in ${john_links}; do
		ln -s john "$pkgdir"/usr/bin/${link}
	done
}

py() {
	depends="libxml2 libgsf"
	_script python "*.py"
}

perl() {
	_script perl "*.pl benchmark-unify"
}

ruby() {
	_script ruby "*.rb"
}

_script() {
	local lang="$1"

	depends="$depends $lang"
	pkgdesc="John the Ripper ($lang scripts)"
	_install 755 "$2"
}

misc() {
	pkgdesc="Misc tools for John the Ripper: password list and charset files"
	local john_pwd="password.lst dictionary.rfc2865 stats"
	local john_chr="*.chr"
	local john_cfg="dumb*.conf repeats*.conf dynamic*.conf
			korelogic.conf regex_alphabets.conf"
	_install 644 "$john_pwd $john_cfg $john_chr"
}

_install() {
	local perm="$1"
	local files="$2"

	mkdir -p "$subpkgdir"/usr/share/$pkgname
	cd "$builddir"/run
	for f in ${files}; do
		install -Dm${perm} ${f} "$subpkgdir"/usr/share/john
	done
}

bashcomp() {
	depends=""
	pkgdesc="Bash completions for $pkgname"
	install_if="$pkgname=$pkgver-r$pkgrel bash-completion"

	cd "$builddir"
	install -Dm644 run/john.bash_completion \
		"$subpkgdir"/usr/share/bash-completion/completions/$pkgname || return 1
}

zshcomp() {
	depends=""
	pkgdesc="Zsh completions for $pkgname"
	install_if="$pkgname=$pkgver-r$pkgrel zsh"

	cd "$builddir"
	install -Dm644 run/john.zsh_completion \
		"$subpkgdir"/usr/share/zsh/site-functions/$pkgname || return 1
}

jumbo() {
	pkgdesc="$pkgdesc (jumbo pack)"
	depends="$pkgname-scripts-py $pkgname-scripts-perl
		$pkgname-scripts-ruby $pkgname-misc"
	mkdir "$subpkgdir"
}

sha512sums="8b7fad7a6330b5ff1afc306218ba698aaa27776b566f82c2e76102d5ceb10aeafa69d71fa6fff67c81996ea2c6a04384bab4696ed192306c6d074873562e7089  john-1.8.0.tar.gz
80be6cc1b1b35c6a85392008638b2f8b6d8a518ee35f59405e2f5682e025e4b8beecf964148311e6f62d76b59153f04427024fa81aaf56ee2062ac2dbf0a9bcb  truecrypt_fmt_plug.patch
a5c22feb8bf11509c306a2f236f2bd4891fdfc3b01882f07d85015e0895d82f28df0dff78ba8d3a3862d8d95877a88a9eb8138e6c407b40881fa1455079b98fc  params-h.patch
4ebe8b41b1d0c3839348dcf5348332f9d7ce25919077fa054db64b7106150f299c6b177d117f7c18c1db672a494a6de6be8b5afe502f5ca3639602ba3aef6866  gcc5-support.patch
fb46431fe3e42e36c72361c13460e8ac626d2f146fa84c8f6e17e5407e69530a84ceb1de6bc9910c1a03a6e907fc113f7000a2cbc3936ae0860103d3e2d489b0  libressl.patch"