diff options
Diffstat (limited to 'package/dropbear')
-rw-r--r-- | package/dropbear/Config.in | 10 | ||||
-rw-r--r-- | package/dropbear/Makefile | 80 | ||||
-rw-r--r-- | package/dropbear/dropbear.control | 9 | ||||
-rwxr-xr-x | package/dropbear/files/S50dropbear | 64 | ||||
-rw-r--r-- | package/dropbear/patches/change-user.patch | 15 | ||||
-rw-r--r-- | package/dropbear/patches/use-dev-urandom.patch | 12 |
6 files changed, 190 insertions, 0 deletions
diff --git a/package/dropbear/Config.in b/package/dropbear/Config.in new file mode 100644 index 0000000000..b82464586d --- /dev/null +++ b/package/dropbear/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_DROPBEAR + tristate "SSH Server/Client" + default y + select BR2_PACKAGE_ZLIB + help + dropbear + + A small SSH 2 server/client designed for small memory environments. + + http://matt.ucc.asn.au/dropbear/ diff --git a/package/dropbear/Makefile b/package/dropbear/Makefile new file mode 100644 index 0000000000..eec889deaf --- /dev/null +++ b/package/dropbear/Makefile @@ -0,0 +1,80 @@ +############################################################# +# +# dropbear +# +############################################################# +include $(TOPDIR)/rules.mk + +DROPBEAR_VERSION:=0.44 +DROPBEAR_SOURCE:=dropbear-$(DROPBEAR_VERSION).tar.bz2 +DROPBEAR_SITE:=http://matt.ucc.asn.au/dropbear/releases/ +DROPBEAR_DIR:=$(BUILD_DIR)/dropbear-$(DROPBEAR_VERSION) +DROPBEAR_CAT:=bzcat +DROPBEAR_BINARY:=dropbearmulti +DROPBEAR_TARGET_BINARY:=usr/sbin/dropbear +DROPBEAR_IPK:=dropbear_$(DROPBEAR_VERSION)-1_$(ARCH).ipk +DROPBEAR_IPK_DIR:=$(DROPBEAR_DIR)/ipkg + +$(DL_DIR)/$(DROPBEAR_SOURCE): + $(WGET) -P $(DL_DIR) $(DROPBEAR_SITE)/$(DROPBEAR_SOURCE) + +$(DROPBEAR_DIR)/.patched: $(DL_DIR)/$(DROPBEAR_SOURCE) + $(DROPBEAR_CAT) $(DL_DIR)/$(DROPBEAR_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + $(PATCH) $(DROPBEAR_DIR) ./patches \*.patch + $(SED) 's,^/\* #define DROPBEAR_MULTI.*,#define DROPBEAR_MULTI,g' $(DROPBEAR_DIR)/options.h + touch $(DROPBEAR_DIR)/.patched + +$(DROPBEAR_DIR)/.configured: $(DROPBEAR_DIR)/.patched + (cd $(DROPBEAR_DIR); rm -rf config.cache; \ + autoconf; \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS)" \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --exec-prefix=/usr \ + --bindir=/usr/bin \ + --sbindir=/usr/sbin \ + --libexecdir=/usr/lib \ + --sysconfdir=/etc \ + --datadir=/usr/share \ + --localstatedir=/var \ + --mandir=/usr/man \ + --infodir=/usr/info \ + $(DISABLE_NLS) \ + --with-shared \ + ); + touch $(DROPBEAR_DIR)/.configured + +$(DROPBEAR_DIR)/$(DROPBEAR_BINARY): $(DROPBEAR_DIR)/.configured + $(MAKE) $(TARGET_CONFIGURE_OPTS) LD=$(TARGET_CC) \ + PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" \ + MULTI=1 SCPPROGRESS=1 -C $(DROPBEAR_DIR) + +$(PACKAGE_DIR)/$(DROPBEAR_IPK): $(DROPBEAR_DIR)/$(DROPBEAR_BINARY) + $(SCRIPT_DIR)/make-ipkg-dir.sh $(DROPBEAR_IPK_DIR) dropbear.control $(DROPBEAR_VERSION)-1 $(ARCH) + mkdir -p $(DROPBEAR_IPK_DIR)/usr/bin + mkdir -p $(DROPBEAR_IPK_DIR)/usr/sbin + install -m 755 $(DROPBEAR_DIR)/$(DROPBEAR_BINARY) \ + $(DROPBEAR_IPK_DIR)/$(DROPBEAR_TARGET_BINARY) + $(STRIP) $(DROPBEAR_IPK_DIR)/usr/sbin/dropbear + ln -sf ../sbin/dropbear $(DROPBEAR_IPK_DIR)/usr/bin/scp + ln -sf ../sbin/dropbear $(DROPBEAR_IPK_DIR)/usr/bin/ssh + ln -sf ../sbin/dropbear $(DROPBEAR_IPK_DIR)/usr/bin/dropbearkey + ln -sf ../sbin/dropbear $(DROPBEAR_IPK_DIR)/usr/bin/dropbearconvert + mkdir -p $(DROPBEAR_IPK_DIR)/etc/init.d + cp ./files/S50dropbear $(DROPBEAR_IPK_DIR)/etc/init.d/ + chmod a+x $(DROPBEAR_IPK_DIR)/etc/init.d/S50dropbear + $(IPKG_BUILD) $(DROPBEAR_IPK_DIR) $(PACKAGE_DIR) + +source: $(DL_DIR)/$(DROPBEAR_SOURCE) +prepare: $(DROPBEAR_DIR)/.patched +compile: $(PACKAGE_DIR)/$(DROPBEAR_IPK) +install: compile + $(IPKG) install $(PACKAGE_DIR)/$(DROPBEAR_IPK) +clean: + rm -rf $(DROPBEAR_DIR) + rm -f $(PACKAGE_DIR)/$(DROPBEAR_IPK) + diff --git a/package/dropbear/dropbear.control b/package/dropbear/dropbear.control new file mode 100644 index 0000000000..e30f02ac5c --- /dev/null +++ b/package/dropbear/dropbear.control @@ -0,0 +1,9 @@ +Package: dropbear +Priority: optional +Depends: zlib +Section: net +Version: 0.44-1 +Architecture: mipsel +Maintainer: Felix Fietkau <nbd@vd-s.ath.cx> +Source: buildroot internal +Description: a small SSH 2 server/client designed for small memory environments. diff --git a/package/dropbear/files/S50dropbear b/package/dropbear/files/S50dropbear new file mode 100755 index 0000000000..c7ae0af6ba --- /dev/null +++ b/package/dropbear/files/S50dropbear @@ -0,0 +1,64 @@ +#!/bin/sh +# +# Starts dropbear sshd. +# + +# Make sure the dropbearkey progam exists +[ -f /usr/bin/dropbearkey ] || exit 0 + +# Check for the Dropbear RSA key +if [ ! -f /etc/dropbear/dropbear_rsa_host_key ] ; then + ( + echo Generating RSA Key... + mkdir -p /etc/dropbear + /usr/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key + [ -f /etc/dropbear/dropbear_rsa_host_key ] && exec $0 $* + ) > /dev/null 2> /dev/null & + exit 0 +fi + +# Check for the Dropbear DSS key +if [ ! -f /etc/dropbear/dropbear_dss_host_key ] ; then + ( + echo Generating DSS Key... + mkdir -p /etc/dropbear + /usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key + [ -f /etc/dropbear/dropbear_dss_host_key ] && exec $0 $* + ) > /dev/null 2> /dev/null & + exit 0 +fi + +umask 077 + +start() { + echo -n "Starting dropbear sshd: " + start-stop-daemon --start --quiet --pidfile /var/run/dropbear.pid --exec /usr/sbin/dropbear + echo "OK" +} +stop() { + echo -n "Stopping dropbear sshd: " + start-stop-daemon --stop --quiet --pidfile /var/run/dropbear.pid + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo $"Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/package/dropbear/patches/change-user.patch b/package/dropbear/patches/change-user.patch new file mode 100644 index 0000000000..3dc068f8ba --- /dev/null +++ b/package/dropbear/patches/change-user.patch @@ -0,0 +1,15 @@ +--- dropbear-0.44.old/svr-chansession.c 2005-02-03 02:29:44.000000000 +0100 ++++ dropbear-0.44/svr-chansession.c 2005-02-03 02:31:05.000000000 +0100 +@@ -859,10 +859,10 @@ + /* We can only change uid/gid as root ... */ + if (getuid() == 0) { + +- if ((setgid(ses.authstate.pw->pw_gid) < 0) || ++ if ((ses.authstate.pw->pw_uid != 0) && ((setgid(ses.authstate.pw->pw_gid) < 0) || + (initgroups(ses.authstate.pw->pw_name, + ses.authstate.pw->pw_gid) < 0) || +- (setuid(ses.authstate.pw->pw_uid) < 0)) { ++ (setuid(ses.authstate.pw->pw_uid) < 0))) { + dropbear_exit("error changing user"); + } + } else { diff --git a/package/dropbear/patches/use-dev-urandom.patch b/package/dropbear/patches/use-dev-urandom.patch new file mode 100644 index 0000000000..139728308c --- /dev/null +++ b/package/dropbear/patches/use-dev-urandom.patch @@ -0,0 +1,12 @@ +diff -urN dropbear-0.44.old/options.h dropbear-0.44/options.h +--- dropbear-0.44.old/options.h 2005-03-02 23:08:07.000000000 +0100 ++++ dropbear-0.44/options.h 2005-03-03 01:12:21.000000000 +0100 +@@ -139,7 +139,7 @@ + * will prevent Dropbear from blocking on the device. This could + * however significantly reduce the security of your ssh connections + * if the PRNG state becomes simpler. */ +-#define DROPBEAR_RANDOM_DEV "/dev/random" ++#define DROPBEAR_RANDOM_DEV "/dev/urandom" + + /* prngd must be manually set up to produce output */ + /*#define DROPBEAR_PRNGD_SOCKET "/var/run/dropbear-rng"*/ |