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

Reply via email to