#############################################################
TARGETS:=host-sed openwrt-code.bin
-PACKAGES:=oidentd iproute2 sched-modules wshaper zlib openssl openssh pppoecd
+PACKAGES:=oidentd iproute2 sched-modules wshaper zlib openssl openssh pppoecd dropbear
#############################################################
#
packages: ipkg-utils $(PACKAGES_IPK)
-@mkdir -p $(BASE_DIR)/packages
- cd $(BASE_DIR)/packages
- -mv $(BUILD_DIR)/*.ipk .
- $(IPKG_MAKE_INDEX) . > Packages
+ { \
+ cd $(BASE_DIR)/packages; \
+ mv $(BUILD_DIR)/*.ipk .; \
+ $(IPKG_MAKE_INDEX) . > Packages; \
+ }
@echo "ALL DONE."
.PHONY: all world clean dirclean distclean source $(TARGETS) \
--- /dev/null
+#!/bin/sh
+echo
+mkdir -p /etc/dropbear
+[ ! -f /etc/dropbear/dropbear_dss_host_key ] && {
+/tmp/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
+}
+rm /tmp/dropbearkey
+[ ! -f /etc/passwd ] && {
+cat > /etc/passwd << EOF
+root::0:0:root:/tmp:/bin/ash
+EOF
+cat > /etc/shells << EOF
+/bin/ash
+EOF
+cat > /etc/group << EOF
+root:*:0:
+EOF
+passwd
+}
+
+cat << EOF
+==========================================
+dropbear is now configured to run on boot.
+==========================================
+To start it now, run the following command:
+
+/usr/bin/dropbear
+
+EOF
--- /dev/null
+Only in dropbear-0.44test2: .configured
+diff -r -u dropbear-0.44test2-old/cli-session.c dropbear-0.44test2/cli-session.c
+--- dropbear-0.44test2-old/cli-session.c 2004-08-17 21:22:59.000000000 +1000
++++ dropbear-0.44test2/cli-session.c 2004-08-19 21:50:59.000000000 +1000
+@@ -112,9 +112,14 @@
+ cli_ses.tty_raw_mode = 0;
+ cli_ses.winchange = 0;
+
++ /* We store stdin's flags, so we can set them back on exit (otherwise
++ * busybox's ash isn't happy */
++ cli_ses.stdincopy = dup(STDIN_FILENO);
++ cli_ses.stdinflags = fcntl(STDIN_FILENO, F_GETFL, 0);
++
+ /* Auth */
+ cli_ses.lastpubkey = NULL;
+- cli_ses.lastauthtype = NULL;
++ cli_ses.lastauthtype = 0;
+
+ /* For printing "remote host closed" for the user */
+ ses.remoteclosed = cli_remoteclosed;
+@@ -240,6 +245,12 @@
+ if (!sessinitdone) {
+ return;
+ }
++
++ /* Set stdin back to non-blocking - busybox ash dies nastily
++ * if we don't revert the flags */
++ TRACE(("close stdincopy = %d", cli_ses.stdincopy));
++ fcntl(cli_ses.stdincopy, F_SETFL, cli_ses.stdinflags);
++
+ cli_tty_cleanup();
+
+ }
+diff -r -u dropbear-0.44test2-old/options.h dropbear-0.44test2/options.h
+--- dropbear-0.44test2-old/options.h 2004-08-17 21:23:00.000000000 +1000
++++ dropbear-0.44test2/options.h 2004-08-20 13:40:44.000000000 +1000
+@@ -87,7 +87,7 @@
+ * for hostkey as well as for verifying signatures with pubkey auth.
+ * Removing either of these won't save very much space.
+ * SSH2 RFC Draft requires dss, recommends rsa */
+-#define DROPBEAR_RSA
++//#define DROPBEAR_RSA
+ #define DROPBEAR_DSS
+
+ /* Define DSS_PROTOK to use PuTTY's method of generating the value k for dss,
+diff -r -u dropbear-0.44test2-old/session.h dropbear-0.44test2/session.h
+--- dropbear-0.44test2-old/session.h 2004-08-17 21:23:00.000000000 +1000
++++ dropbear-0.44test2/session.h 2004-08-19 21:50:59.000000000 +1000
+@@ -212,6 +212,8 @@
+
+ int tty_raw_mode; /* Whether we're in raw mode (and have to clean up) */
+ struct termios saved_tio;
++ int stdincopy;
++ int stdinflags;
+
+ int winchange; /* Set to 1 when a windowchange signal happens */
+
+diff -r -u dropbear-0.44test2-old/svr-auth.c dropbear-0.44test2/svr-auth.c
+--- dropbear-0.44test2-old/svr-auth.c 2004-08-17 21:23:00.000000000 +1000
++++ dropbear-0.44test2/svr-auth.c 2004-08-20 15:06:15.000000000 +1000
+@@ -102,6 +102,8 @@
+ return;
+ }
+
++ ses.connecttimeout = 0;
++
+ /* send the banner if it exists, it will only exist once */
+ if (svr_opts.banner) {
+ send_msg_userauth_banner();
+diff -r -u dropbear-0.44test2-old/svr-runopts.c dropbear-0.44test2/svr-runopts.c
+--- dropbear-0.44test2-old/svr-runopts.c 2004-08-17 21:23:00.000000000 +1000
++++ dropbear-0.44test2/svr-runopts.c 2004-08-20 11:56:31.000000000 +1000
+@@ -302,7 +302,7 @@
+ }
+ #endif
+ #ifdef DROPBEAR_DSS
+- type = DROPBEAR_SIGNKEY_RSA;
++ type = DROPBEAR_SIGNKEY_DSS;
+ ret = readhostkey(dsskeyfile, hostkey, &type);
+ if (ret == DROPBEAR_FAILURE) {
+ disablekey(DROPBEAR_SIGNKEY_DSS, dsskeyfile);