[LEDE-DEV] [PATCH] base-files: sysupgrade. Added the ability to use URL as source
John Crispin
john at phrozen.org
Sat Aug 13 00:08:11 PDT 2016
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, 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 | 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 at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev
More information about the Lede-dev
mailing list