#!/bin/bash

# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Customizes a Chrome OS release image by setting the chronos user password.

# Usage: ./set_chronos_password.sh <image.bin> <chronos_password> [--force]

# Load common constants and variables.
. "$(dirname "$0")/common.sh"

change_chronos_password() {
  local rootfs=$1
  local password=$2
  echo "Setting chronos password..."
  local crypted_password="$(echo $password | openssl passwd -1 -stdin)"
  local temp_shadow="$rootfs/etc/tempshadow"
  echo "chronos:$crypted_password:14500:0:99999::::" \
    | sudo tee "$temp_shadow" > /dev/null
  sudo grep -Ev ^chronos: "$rootfs/etc/shadow" \
    | sudo tee -a "$temp_shadow" > /dev/null
  sudo mv -f "$temp_shadow" "$rootfs/etc/shadow"
}

main() {
  set -e

  local image=$1
  local chronos_password=$2
  if [ $# -ne 2 ] && [ $# -ne 3 ] || [ ! $3 = "--force" ] ; then
    echo "Usage: $PROG <image.bin> <chronos_password> [--force]"
    exit 1
  fi

  local loopdev=$(loopback_partscan "${image}")
  local rootfs=$(make_temp_dir)
  if [ $# -eq 2 ]; then
    mount_loop_image_partition_ro "${loopdev}" 3 "${rootfs}"
    if ! no_chronos_password "$rootfs"; then
      echo "Password is already set [use --force if you'd like to update it]"
      exit 1
    fi
    # Prepare for remounting read/write.  We can't use `mount -o rw,remount`
    # because of the bits in the ext4 header we've set to block that.  See
    # enable_rw_mount for details.
    sudo umount "${rootfs}"
  fi
  mount_loop_image_partition "${loopdev}" 3 "${rootfs}"
  change_chronos_password "$rootfs" "$chronos_password"
  touch "$image"  # Updates the image modification time.
  echo "Password Set."
}

main $@
