# Это временно. Переменную timezone должна определить ndms (прошивка)
if [ -f "/var/TZ" ]; then
  export TZ="$(cat /var/TZ)"
else
  export TZ="UTC"
fi

logger -t installer '[1/5] Начало установки системы пакетов "Entware"...'

check_fs_opt="$(mount | grep 'on /opt ' | cut -d' ' -f5)"

case "$check_fs_opt" in
    ext*)
	logger -t installer 'Info: Раздел пригоден для установки.'
    ;;
    *ntfs*)
	logger -t installer 'Info: Раздел NTFS! Атрибуты "owner:group" могут не поддерживаться.'
	logger -t installer 'При возникновении проблем, используйте накопитель с файловой системой ext2/ext3/ext4.'
    ;;
    *hfs*)
	logger -t installer 'Info: Раздел с HFS! (!не тестировалось!)'
	logger -t installer 'При возникновении проблем, используйте накопитель с файловой системой ext2/ext3/ext4.'
    ;;
    ubifs)
	logger -t installer 'Info: Раздел с UBIFS! (!не тестировалось!)'
	logger -t installer 'При возникновении проблем, используйте внешний накопитель с файловой системой ext2/ext3/ext4.'
    ;;
    *)
        logger -t installer 'Critical error: Неизвестный тип ФС. Используйте накопитель с файловой системой ext2/ext3/ext4. Отменяем...'
	logger -t installer 'Выход из установки.'
	exit 1
    ;;
esac

# Только для opkg. Остальные каталоги будут созданы пакетом opt-ndmsv2
logger -t installer 'Info: Создание каталогов...'
for folder in lib/opkg tmp var/lock; do
  if [ ! -d "/opt/$folder" ]; then
    mkdir -p /opt/$folder
  fi
done

# opkg update
logger -t installer '[2/5] Загрузка и установка основных пакетов...'
if ! opkg update >/dev/null 2>&1
  then
	logger -t installer 'Critical error: Во время обновления списка пакетов произошла ошибка.'
	logger -t installer 'Выход из установки.'
	exit 1
fi

# install basic packages
for ipk in libgcc libc libpthread librt entware-release findutils grep ldconfig locales opkg zoneinfo-asia zoneinfo-europe opt-ndmsv2 dropbear poorbox busybox
 do
	logger -t installer "Info: Устанавливается пакет \"$ipk\"..."
  if ! opkg install $ipk >/dev/null 2>&1
    then
	logger -t installer "Critical error: Во время установки пакета \"$ipk\" произошла ошибка."
	logger -t installer 'Выход из установки.'
	exit 1
    else
	logger -t installer "Info: Пакет \"$ipk\" установлен."
	sleep 1
  fi
done

logger -t installer 'Info: Установка пакетов прошла успешно!'

ldconfig >/dev/null 2>&1

# Установка прав для многопользовательской среды
chmod 777 /opt/tmp

# keygen
logger -t installer '[3/5] Генерация SSH-ключей...'

for key in rsa ecdsa ed25519; do
  rm /opt/etc/dropbear/dropbear_${key}_host_key
	logger -t installer "Info: Генерируется ключ \"$key\"..."
  if ! dropbearkey -t $key -f /opt/etc/dropbear/dropbear_${key}_host_key >/dev/null 2>&1
    then
	logger -t installer "Critical error: Во время генерации ключа \"$key\" произошла ошибка."
	logger -t installer 'Выход из установки.'
	exit 1
    else
	logger -t installer "Info: Ключ \"$key\" создан."
	sleep 1
  fi
done

logger -t installer '[4/5] Настройка сценария запуска, установка часового пояса и запуск "dropbear"...'

# TZ
timezone="$(echo $(wget -qO - localhost:79/rci/show/clock/date/tz | grep locality | cut -d':' -f2 | sed 's#\("\|,\)##g'))"

if [ -n "$timezone" ]; then
  ln -sf /opt/share/zoneinfo/"$timezone" /opt/etc/localtime
fi

# SSH
if [ -f "/usr/sbin/dropbear" ] || [ -n "$(pidof dropbear)" ]; then
	sed -i "s,PORT=22\$,PORT=222," /opt/etc/config/dropbear.conf
fi

/opt/etc/init.d/S51dropbear start

wget -qO - --post-data='[{"opkg":{"initrc":{"path":"/opt/etc/init.d/rc.unslung"}}},{"system":{"configuration":{"save":true}}}]' localhost:79/rci/ >/dev/null 2>&1

if grep -q "222" /opt/etc/config/dropbear.conf; then
	logger -t installer 'Можно открыть SSH-сессию для соединения с устройством (логин - root, пароль - keenetic, порт - 222).'
  else
	logger -t installer 'Можно открыть SSH-сессию для соединения с устройством (логин - root, пароль - keenetic).'
fi

logger -t installer '[5/5] Установка системы пакетов "Entware" завершена! Не забудьте сменить пароль и номер порта!'

rm /opt/etc/init.d/doinstall

rm "$0"
