[LEDE-DEV] [PATCH] base-files: sysupgrade. Added the ability to use URL as source
John Crispin
john at phrozen.org
Sat Aug 13 00:07:39 PDT 2016
On 12/08/2016 16:48, adron at yapic.net wrote:
> From: Sergey Sergeev <adron at yapic.net>
>
> scp uls(like this scp://adron@192.168.88.6:lede/lede-ar71xx-mikrotik-NAND-512b-squashfs-sysupgrade.bin)
> is supported too. And you also can specify custom ssh port(...8.88.6:22110:lede...)
>
> Signed-off-by: Sergey Sergeev <adron at yapic.net>
> ---
> package/base-files/files/lib/upgrade/common.sh | 21 ++++++++++++++++-----
> package/base-files/files/sbin/sysupgrade | 15 +++++++++++++++
> 2 files changed, 31 insertions(+), 5 deletions(-)
>
> diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh
> index ea03f77..1d09f31 100644
> --- a/package/base-files/files/lib/upgrade/common.sh
> +++ b/package/base-files/files/lib/upgrade/common.sh
> @@ -182,18 +182,29 @@ get_image() { # <source> [ <command> ]
> local cmd
>
> case "$from" in
> - http://*|ftp://*) cmd="wget -O- -q";;
> - *) cmd="cat";;
> + scp://*)
> + cmd="ssh"
> + # extract custom ssh port(if specified)
> + local custom_port=`echo $from | sed -ne 's!.\+:\([0-9]\+\):.\+!\1!p'`
> + [ -n "$custom_port" ] && {
> + cmd="$cmd -p $custom_port"
> + # remove custom port from url
> + from=`echo $from | sed -ne 's!:\([0-9]\+\):!:!p'`
> + }
> + from=`echo $from | sed -ne 's!scp://!!p' | sed -ne 's!:\(.\+\)! \"cat \1\"!p'`
> + ;;
> + http://* | https://* | ftp://*) cmd="wget -O-" ;;
> + *) cmd="cat" ;;
> esac
> +
> if [ -z "$conc" ]; then
> - local magic="$(eval $cmd \"$from\" 2>/dev/null | dd bs=2 count=1 2>/dev/null | hexdump -n 2 -e '1/1 "%02x"')"
> + local magic="$(eval $cmd $from | dd bs=2 count=1 2>/dev/null | hexdump -n 2 -e '1/1 "%02x"')"
> case "$magic" in
> 1f8b) conc="zcat";;
> 425a) conc="bzcat";;
> esac
> fi
> -
> - eval "$cmd \"$from\" 2>/dev/null ${conc:+| $conc}"
> + eval "$cmd $from ${conc:+| $conc}"
the "" are now fully gone. are you sure we never need them ? i would
expect it to be better to always have them there.
John
> }
>
> get_magic_word() {
> diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade
> index 2f441f8..fc1df22 100755
> --- a/package/base-files/files/sbin/sysupgrade
> +++ b/package/base-files/files/sbin/sysupgrade
> @@ -137,6 +137,21 @@ include /lib/upgrade
>
> [ "$1" = "nand" ] && nand_upgrade_stage2 $@
>
> +get_if_URL(){
> + local url="$1"
> + local url_repl_file="/tmp/sysupgrade-URL.bin"
> +
> + case "$url" in
> + http://* | https://* | ftp://* | scp://*)
> + get_image "$url" "cat" > $url_repl_file
> + ARGV=${ARGV/"$url"/"$url_repl_file"}
> + ;;
> + esac
> +}
> +
> +# get image file from URL if specified
> +get_if_URL "$ARGV"
> +
> do_save_conffiles() {
> local conf_tar="${1:-$CONF_TAR}"
>
>
More information about the Lede-dev
mailing list