#!/bin/sh [ -z "$DFB_URL" ] && DFB_URL=https://online.dune-hd.com/dfb export PATH="$PATH":/sbin:/usr/sbin Do() { echo "$*" >&2 "$@" || exit 1 } CheckCredentials() { if [ "$DFB_CLIENT_ID" = "" ]; then echo "Error: DFB_CLIENT_ID env.var must be set" >&2 exit 1 fi if [ "$DFB_PASSWORD" = "" ]; then echo "Error: DFB_PASSWORD env.var must be set" >&2 exit 1 fi } PrintUsage() { cat <&2 Usage: $0 command args... Commands: download {filename} unpack_cramfs {tango.cramfs} {dir} pack_cramfs {tango.cramfs} {dir} prepare_request {dfb_request.zip} {base_dff} {customer_id} {tango.cramfs} {boot_logo.bmp} submit_request {dfb_request.zip} get_result {dfb_request_id} process_request {dfb_request.zip} run_request {base_dff} {customer_id} {tango.cramfs} {boot_logo.bmp} EOF exit 1 } cmd="$1" shift case "$cmd" in download) CheckCredentials Do wget --http-user="$DFB_CLIENT_ID" --http-password="$DFB_PASSWORD" \ --no-check-certificate "$DFB_URL/base_fw/$1" ;; unpack_cramfs) [ "$#" = 2 ] || PrintUsage Do mkdir -p mnt Do mkdir -p "$2" Do sudo mount -t cramfs -o ro,loop "$1" mnt Do cp -a mnt/* "$2"/ Do sudo umount mnt Do rmdir mnt echo "'$1' extracted into '$2' ok" >&2 ;; pack_cramfs) [ "$#" = 2 ] || PrintUsage Do chmod -R +r "$2" Do mkfs.cramfs -b 4096 "$2" "$1" echo "'$2' packed into '$1' ok" >&2 ;; prepare_request) [ "$#" -ge 3 -a "$#" -le 5 ] || PrintUsage Do rm -rf dfb_request Do mkdir dfb_request Do echo "base_dff = $2" >>dfb_request/dfb_request.txt Do echo "customer_id = $3" >>dfb_request/dfb_request.txt if [ "$4" != "" ]; then Do cp -f "$4" dfb_request/tango.cramfs Do echo "tango_cramfs = tango.cramfs" >>dfb_request/dfb_request.txt fi if [ "$5" != "" ]; then Do cp -f "$5" dfb_request/boot_logo.bmp Do echo "splash_screen_bmp = boot_logo.bmp" >>dfb_request/dfb_request.txt fi if [ "$DFB_FW_VERSION" != "" ]; then Do echo "fw_version = $DFB_FW_VERSION" >>dfb_request/dfb_request.txt Do echo "append_build_no = 0" >>dfb_request/dfb_request.txt fi if [ "$DFB_REQUEST_EXTRA_DATA" != "" ]; then Do echo "$DFB_REQUEST_EXTRA_DATA" >>dfb_request/dfb_request.txt fi zip="$1" file=`basename "$zip"` dir=`dirname "$zip"` dir=`cd "$dir"; pwd` zip="$dir/$file" rm -f "$zip" Do cd dfb_request Do zip -o "$zip" * Do cd .. echo "DFB request created ok: '$zip'" >&2 ;; submit_request) [ "$#" = 1 ] || PrintUsage CheckCredentials str=`curl -k -L --location-trusted --post301 -F filedata=@"$1" -u "$DFB_CLIENT_ID":"$DFB_PASSWORD" "$DFB_URL/request"` || exit 1 id=`echo "$str" | sed 's,.*/,,'` echo "DFB request submitted ok, id = '$id', DFB_URL = '$DFB_URL'" >&2 echo "$id" ;; get_result) [ "$#" = 1 ] || PrintUsage CheckCredentials echo "Checking for result of DFB request with id '$1'..." rm -f "error_message.txt" while true; do wget --http-user="$DFB_CLIENT_ID" --http-password="$DFB_PASSWORD" \ --content-disposition --no-check-certificate --auth-no-challenge \ "$DFB_URL/result/$1" 2>/dev/null && break echo "Waiting..." >&2 sleep 5 done if [ -f "error_message.txt" ]; then echo "ERROR:" >&2 cat "error_message.txt" >&2 exit 1 fi echo "DFB request succeeded ok, resulting .dff.zip downloaded ok" >&2 ;; process_request) [ "$#" = 1 ] || PrintUsage id=`"$0" submit_request "$1"` || exit 1 "$0" get_result "$id" ;; run_request) [ "$#" -ge 2 -a "$#" -le 4 ] || PrintUsage "$0" prepare_request "dfb_request.zip" "$@" || exit 1 "$0" process_request "dfb_request.zip" ;; *) PrintUsage ;; esac