From: Sergey Sergeev <ad...@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 <ad...@yapic.net> --- package/base-files/files/lib/upgrade/common.sh | 30 +++++++++++++++++++++----- package/base-files/files/sbin/sysupgrade | 15 +++++++++++++ 2 files changed, 40 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..0b0ad9a 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -180,20 +180,40 @@ get_image() { # <source> [ <command> ] local from="$1" local conc="$2" local cmd + local need_shield=1 case "$from" in - http://*|ftp://*) cmd="wget -O- -q";; - *) cmd="cat";; + scp://*) + cmd="ssh" + local stuff="${from#scp://}" + # extract user name and host + local user_and_host=${stuff%%:*} + # extract custom ssh port(if specified) + local custom_port=${stuff%:*} + custom_port=${custom_port##$user_and_host} + custom_port=${custom_port#:} + [ -n "$custom_port" ] && cmd="$cmd -p $custom_port" + # extract target file for cat + local target_file=${stuff##*:} + # recompile from string + need_shield=0 + from="\"$user_and_host\" \"cat $target_file\"" + ;; + http://* | https://* | ftp://*) cmd="wget -O-" ;; + *) cmd="cat" ;; esac + + # if needed => add shielding quotes to $from var + [ "$need_shield" -eq "1" ] && from="\"$from\"" + 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}" } get_magic_word() { diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index 2f441f8..9158363 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://*) + 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}" -- 1.9.1 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev