dropbear.init 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/sh /etc/rc.common
  2. # Copyright (C) 2006 OpenWrt.org
  3. # Copyright (C) 2006 Carlos Sobrinho
  4. config_cb() {
  5. local cfg="$CONFIG_SECTION"
  6. local nopasswd
  7. local type
  8. config_get cfgtype "$cfg" TYPE
  9. case "$cfgtype" in
  10. dropbear)
  11. config_get passauth $cfg PasswordAuth
  12. config_get port $cfg Port
  13. case "$passauth" in
  14. no|off|disabled|0) nopasswd=1;;
  15. esac
  16. DROPBEAR_ARGS="${port:+-p $port} ${nopasswd:+-s}"
  17. ;;
  18. esac
  19. }
  20. keygen() {
  21. for keytype in rsa dss; do
  22. # check for keys
  23. key=dropbear/dropbear_${keytype}_host_key
  24. [ -f /tmp/$key -o -f /etc/$key ] || {
  25. # generate missing keys
  26. mkdir -p /tmp/dropbear
  27. [ -x /usr/bin/dropbearkey ] && {
  28. /usr/bin/dropbearkey -t $keytype -f /tmp/$key 2>&- >&- && exec /etc/rc.common "$initscript" start
  29. } &
  30. exit 0
  31. }
  32. done
  33. lock /tmp/.switch2jffs
  34. mkdir -p /etc/dropbear
  35. mv /tmp/dropbear/dropbear_* /etc/dropbear/
  36. lock -u /tmp/.switch2jffs
  37. chown root /etc/dropbear
  38. chmod 0700 /etc/dropbear
  39. }
  40. start() {
  41. [ -f /etc/dropbear/dropbear_rsa_host_key -a \
  42. -f /etc/dropbear/dropbear_dss_host_key ] || keygen
  43. config_load dropbear
  44. /usr/sbin/dropbear $DROPBEAR_ARGS
  45. }
  46. stop() {
  47. killall dropbear
  48. }