# SliTaz package receipt.

PACKED_SIZE="156.0K"
UNPACKED_SIZE="420.0K"
PACKAGE="dropbear"
VERSION="2025.88"
CATEGORY="security"
TAGS="ssh"
SHORT_DESC="Lightweight SSH2 server and client"
MAINTAINER="pascal.bellard@slitaz.org"
LICENSE="MIT"
WEB_SITE="https://github.com/mkj/dropbear"

TARBALL="$PACKAGE-$VERSION.tar.bz2"
WGET_URL="https://matt.ucc.asn.au/dropbear/releases/$TARBALL"

CONFIG_FILES="/etc/dropbear/banner"
SECRET_FILES="/etc/dropbear/*key"

SUGGESTED="sftp-server"
PROVIDE="ssh"

DEPENDS="zlib"
BUILD_DEPENDS="pam pam-dev zlib-dev"

HOST_ARCH="i486 arm"

# Handle multiarch compilation.
case "$ARCH" in
	arm)
		BUILD_DEPENDS=""
		CROSS_ARGS="--disable-zlib"
		CROSS_BUGS="Fails to find zlib: -lz... no" ;;
esac

# What is the latest version available today?
current_version()
{
	wget -O - https://github.com/mkj/dropbear/releases 2>/dev/null | \
	sed '/tag\//!d;s|.*tag/[A-Z_]*||;s|".*||;q'
}

# Rules to configure and make the package.
compile_rules()
{
	local i
	local DROPBEARS
	DROPBEARS="dropbearkey dropbearconvert dbclient scp"
	cat > localoptions.h <<EOT
#define SFTPSERVER_PATH "/usr/sbin/sftp-server"
#define DROPBEAR_X11FWD 1
EOT
	sed -i 's|shell arch|shell uname -m|' libtommath/makefile_include.mk
	sed -i 's|static_assert|// &|' src/mlkem768.c
	./configure			\
		--prefix=/usr		\
		--disable-lastlog	\
		--without-pam		\
		$CONFIGURE_ARGS		\
		$CROSS_ARGS &&
	make	PROGRAMS="dropbear $DROPBEARS" MULTI=1 SCPPROGRESS=1 &&
	install -d -m 755		$DESTDIR/usr/sbin &&
	install -m 755 dropbearmulti	$DESTDIR/usr/sbin/dropbear &&
	chown 0:0 $DESTDIR/usr/sbin/dropbear || exit 1

	# No pam support in ARM
	case "$ARCH" in
		arm) echo "Skipping Dropbear PAM..." ;;
		i?86)
			cat >> localoptions.h <<EOT
#define DROPBEAR_SVR_PASSWORD_AUTH 0
#define DROPBEAR_SVR_PAM_AUTH 1
EOT
			./configure			\
				--prefix=/usr		\
				--disable-lastlog	\
				--enable-pam		\
				$CONFIGURE_ARGS &&
			make	PROGRAMS="dropbear $DROPBEARS" MULTI=1 SCPPROGRESS=1 &&
			install -m 755 dropbearmulti	$DESTDIR/usr/sbin/dropbear-pam &&
			chown 0:0			$DESTDIR/usr/sbin/dropbear-pam || exit 1 ;;
	esac

	install -d -m 755 $DESTDIR/usr/bin &&
	for i in $DROPBEARS ssh; do
		ln -s ../sbin/dropbear $DESTDIR/usr/bin/$i || exit 1
	done
	install -d -m 755			$DESTDIR/usr/share/man/man1 &&
	install -m 644 $src/manpages/*.1	$DESTDIR/usr/share/man/man1 && 
	install -d -m 755			$DESTDIR/usr/share/man/man8 &&
	install -m 644 $src/manpages/*.8	$DESTDIR/usr/share/man/man8 &&
	install -d -m 755			$DESTDIR/usr/share/doc &&
	install -m 644 $src/[A-Z][A-Z]*		$DESTDIR/usr/share/doc
}

# Rules to gen a SliTaz package suitable for Tazpkg.
genpkg_rules()
{
	mkdir -p $fs/usr
	cp -a $install/usr/bin	$fs/usr
	cp -a $install/usr/sbin	$fs/usr
	rm -f			$fs/usr/sbin/dropbear-pam
	# Configuration file and init script.
	mkdir -p $fs/etc
	cp -a $stuff/dropbear	$fs/etc
	cp -a $stuff/init.d	$fs/etc
	ln -s daemon		$fs/etc/init.d/sshd
	cp -a $stuff/sshx	$fs/usr/bin
	ln -s sshx		$fs/usr/bin/pppssh
	ln -s sshx		$fs/usr/bin/sshfbvnc
	touch	$fs/etc/dropbear/dropbear_rsa_host_key \
		$fs/etc/dropbear/dropbear_ecdsa_host_key \
		$fs/etc/dropbear/dropbear_ed25519_host_key

	# Fix dropbear initscript permissions
	chown -R root:root	$fs
}

# Pre and post install commands for Tazpkg.
pre_install()
{
	for key in dropbear_rsa_host_key dropbear_ecdsa_host_key dropbear_ed25519_host_key
	  do
		[ -s "$1/etc/dropbear/$key" ] &&
		mv   "$1/etc/dropbear/$key"	"$1/etc/dropbear/$key.saved"
	  done
}

post_install()
{
	while read dropbear openssh
	  do
		[ -s "$1/$dropbear.saved" ] && mv "$1/$dropbear.saved" "$1/$dropbear"  
		[ -s "$1/$openssh" ] || continue
		[ -s "$1/$dropbear" ] && continue
		chroot "$1/" dropbearconvert openssh dropbear $openssh $dropbear
		chroot "$1/" dropbearkey -y -f $dropbear | grep Fingerprint
	  done <<EOT
/etc/dropbear/dropbear_rsa_host_key	/etc/ssh/ssh_host_rsa_key
/etc/dropbear/dropbear_ecdsa_host_key	/etc/ssh/ssh_host_ecdsa_key
/etc/dropbear/dropbear_ed25519_host_key	/etc/ssh/ssh_host_ed25519_key
EOT
	grep -q ssh "$1/etc/inetd.conf" || cat >> "$1/etc/inetd.conf" <<EOT
#ssh	stream	tcp	nowait	root	dropbear	dropbear	-i -b /etc/dropbear/banner
EOT
	[ -n "$quiet" ] && return
	echo -e "\nTo start $PACKAGE server you can run:"
	echo "/etc/init.d/$PACKAGE start"
	echo -e "Or add $PACKAGE to RUN_DAEMONS in /etc/rcS.conf\n"
}

post_remove()
{
	grep -q dropbear "$1/etc/inetd.conf" &&
	sed -i '/dropbear/d' "$1/etc/inetd.conf"
}
