################################################################################
#      Copyright (C) 2009-2010 OpenELEC.tv
#      http://www.openelec.tv
#
#  This Program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2, or (at your option)
#  any later version.
#
#  This Program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with OpenELEC.tv; see the file COPYING.  If not, write to
#  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
#  http://www.gnu.org/copyleft/gpl.html
################################################################################

# start ssh server
#
# runlevels: openelec, textmode

  if [ -f /var/config/settings.conf ]; then
    . /var/config/settings.conf
  fi

  RSA1_KEY="/storage/.cache/ssh/ssh_host_key"
  RSA2_KEY="/storage/.cache/ssh/ssh_host_rsa_key"
  DSA2_KEY="/storage/.cache/ssh/ssh_host_dsa_key"

  KEYGEN="/usr/bin/ssh-keygen"
  SSHD="/usr/sbin/sshd"

  HOME="/storage"

  (
    if [ -f /etc/ssh.conf ]; then
      . /etc/ssh.conf
    fi

    if [ "$SSH" = yes -o -f /storage/.config/ssh_enable -o "$SSHD_START" == "true" ]; then

    # Check for the SSH1 RSA key
      if [ ! -s $RSA1_KEY ] ; then
        progress "SSH: generating SSH1 RSA key"

        mkdir -p /storage/.cache/ssh
          $KEYGEN -q -t rsa1 -f $RSA1_KEY -C '' -N '' >&/dev/null
          chmod 600 $RSA1_KEY
      fi

    # Check for the SSH2 RSA key
      if [ ! -s $RSA2_KEY ] ; then
        progress "SSH: generating SSH2 RSA key"

        mkdir -p /storage/.cache/ssh
          $KEYGEN -q -t rsa -f $RSA2_KEY -C '' -N '' >&/dev/null
          chmod 600 $RSA2_KEY
      fi

    # Check for the SSH2 DSA key
      if [ ! -s $DSA2_KEY ] ; then
        progress "SSH: generating SSH2 DSA key"

        mkdir -p /storage/.cache/ssh
          $KEYGEN -q -t dsa -f $DSA2_KEY -C '' -N '' >&/dev/null
          chmod 600 $DSA2_KEY
      fi

    # ensure that $HOME/.ssh exists, is root-owned and not world-readable
      mkdir -p $HOME/.ssh
      chown root:root $HOME/.ssh
      chmod 0700 $HOME/.ssh

    # Check for predefined known hosts file
      if [ -f /etc/ssh/known_hosts -a ! -f $HOME/.ssh/known_hosts ] ; then
        progress "SSH: setup predefined known hosts"

        cp /etc/ssh/known_hosts $HOME/.ssh
      fi

    # Check if password authentication is disabled
      OPTIONS=""

      if [ "$SSHD_DISABLE_PW_AUTH" == "true" ] ; then
        OPTIONS="-o 'PasswordAuthentication no'"
      fi
      progress "Starting SSH Server"

      mkdir -p /var/empty
      chmod -R 600 /var/empty
      eval $SSHD $OPTIONS
    fi
  )&
