Hi comments inline
On 08/08/2016 13:23, ad...@yapic.net wrote: > 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\"" apart from the port this seems very static and shuld be solvable using awk or sed. the code above looks pretty hard to read. > + ;; > + http://* | https://* | ftp://*) cmd="wget -O-" ;; > + *) cmd="cat" ;; > esac > + > + # if needed => add shielding quotes to $from var > + [ "$need_shield" -eq "1" ] && from="\"$from\"" > + is there ever a need to *not* have quotes ? it looks liek always having them wont harm. > 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}" why do you remove the shell redirection here ? John > } > > 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}" > > _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev