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
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