#!/bin/bash

# Copyright (c) 2012 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.

# modify_netboot_ip.sh --image=[image] --addr=[ip address]
#
# This script takes initrd image generated by make_netboot.sh as input, and
# modify mini-Omaha server address inside lsb-factory.

. "$(dirname "$(readlink -f "$0")")/factory_common.sh" || exit 1

DEFINE_string image "" "Path to the initrd image"
DEFINE_string addr "" "New mini-Omaha server address"

# Parse command line.
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"

[ -z "${FLAGS_image}" ] && die "No image specified"
[ -z "${FLAGS_addr}" ] && die "No server address specified"

cleanup() {
  info "Cleaning up"
  sudo umount ${WORK_DIR}/rootfs_dir >/dev/null 2>&1 || true
  rm -f "${WORK_DIR}/r.gz" "${WORK_DIR}/r" "${IMAGE_INFO}" >/dev/null 2>&1
  rmdir "${WORK_DIR}/rootfs_dir" "${WORK_DIR}" >/dev/null 2>&1 || true
}

set -e
trap cleanup EXIT

IMAGE_PATH="$(readlink -f ${FLAGS_image})"
WORK_DIR="$(mktemp -d modip_XXXXXXXX | xargs readlink -f)"
IMAGE_INFO="${WORK_DIR}/image_info"

# Save image metadata from header so that we can restore it later.
info "Saving image metadata from ${IMAGE_PATH}"
mkimage -l "${IMAGE_PATH}" >"${IMAGE_INFO}" || die

# Header resides in the first 64 bytes. Let's remove it.
info "Removing UImage header"
dd if="${IMAGE_PATH}" of="${WORK_DIR}/r.gz" bs=64 skip=1 >/dev/null 2>&1

# initrd image generated by make_netboot is gzip'ed. Decompresses it and modify
# lsb-factory inside.
info "Decompressing image"
gunzip ${WORK_DIR}/r.gz
mkdir ${WORK_DIR}/rootfs_dir
info "Modifying server address to ${FLAGS_addr}"
sudo mount -o loop ${WORK_DIR}/r ${WORK_DIR}/rootfs_dir
LSB_FACTORY_PATH="rootfs_dir/mnt/stateful_partition/dev_image/etc/lsb-factory"
sudo sed -i "s,http://[^:]*:,http://${FLAGS_addr}:," \
    "${WORK_DIR}/${LSB_FACTORY_PATH}"
sync
sudo umount ${WORK_DIR}/rootfs_dir
info "Compressing image"
gzip -9 ${WORK_DIR}/r

info "Append UImage header"
IMAGE_NAME=$(grep "Image Name" "${IMAGE_INFO}" | sed 's/^[^:]*: *//')
LOAD_ADDR="0x$(grep "Load Address" "${IMAGE_INFO}" | sed 's/^[^:]*: *//')"
ENTRY_ADDR="0x$(grep "Entry Point" "${IMAGE_INFO}" | sed 's/^[^:]*: *//')"
if grep -q "x86" "${IMAGE_INFO}" ; then
  ARCH="x86"
else
  ARCH="arm"
fi
mkimage -A "${ARCH}" -O linux -T ramdisk -a "${LOAD_ADDR}" -e "${ENTRY_ADDR}" \
    -n "${IMAGE_NAME}" -C gzip -d "${WORK_DIR}/r.gz" "${IMAGE_PATH}" >/dev/null

info "Done"
