On 12/08/2016 16:54, Сергеев Сергей wrote: > Hello. I made a new version of the patch according to your notes: > http://patchwork.ozlabs.org/patch/658677/ > > I remove the shell redirection to stderr because we need to show a > diagnostic messages (for wget) as well as the certificate accept request > and enter the password messages (for ssh) > Both wget and ssh are send these messages to stderr
adding this info here is useless. it needs to go intot he commit description of the patch. John >> 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 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev