Skip to content

Commit 259bcf7

Browse files
committed
windows: 适配 massgrave 新镜像链接
1 parent 90becc9 commit 259bcf7

File tree

1 file changed

+37
-21
lines changed

1 file changed

+37
-21
lines changed

reinstall.sh

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,7 +1086,10 @@ get_windows_iso_link() {
10861086
if [ -n "$label_msdl" ]; then
10871087
iso=$(curl -L "$page_url" | grep -ioP 'https://[^ ]+?#[0-9]+' | head -1 | grep .)
10881088
else
1089-
curl -L "$page_url" | grep -ioP 'https://[^ ]+?.(iso|img)' >$tmp/win.list
1089+
curl -L "$page_url" |
1090+
tr -d '\n' | sed -e 's,<a ,\n<a ,g' -e 's,</a>,</a>\n,g' | # 使每个 <a></a> 占一行
1091+
grep -Ei '\.(iso|img)</a>$' | # 找出是 iso 或 img 的行
1092+
sed -E 's,<a href="([^"]+)".+>(.+)</a>,\2 \1,' >$tmp/win.list # 提取文件名和链接
10901093

10911094
# 如果不是 ltsc ,应该先去除 ltsc 链接,否则最终链接有 ltsc 的
10921095
# 例如查找 windows 10 iot enterprise,会得到
@@ -1104,10 +1107,14 @@ get_windows_iso_link() {
11041107
}
11051108

11061109
get_shortest_line() {
1107-
# awk '{print length($0), $0}' | sort -n | head -1 | awk '{print $2}'
11081110
awk '(NR == 1 || length($0) < length(shortest)) { shortest = $0 } END { print shortest }'
11091111
}
11101112

1113+
get_shortest_line_by_field() {
1114+
local field=$1
1115+
awk "(NR == 1 || length(\$$field) < length(field)) { line = \$0; field = \$$field } END { print line }"
1116+
}
1117+
11111118
get_windows_iso_link_inner() {
11121119
regexs=()
11131120

@@ -1139,7 +1146,9 @@ get_windows_iso_link_inner() {
11391146
regex=${regex// /_}
11401147

11411148
echo "looking for: $regex" >&2
1142-
if iso=$(grep -Ei "/$regex" "$tmp/win.list" | get_shortest_line | grep .); then
1149+
if line=$(grep -Ei "^$regex " "$tmp/win.list" | get_shortest_line_by_field 1 | grep .) &&
1150+
iso=$(awk '{print $2}' <<<"$line" | grep .); then
1151+
echo "Selected: $line" >&2
11431152
return
11441153
fi
11451154
done
@@ -1512,7 +1521,9 @@ Continue?
15121521
}
15131522

15141523
setos_windows() {
1524+
auto_find_iso=false
15151525
if [ -z "$iso" ]; then
1526+
auto_find_iso=true
15161527
# 查找时将 windows longhorn serverdatacenter 改成 windows server 2008 serverdatacenter
15171528
image_name=${image_name/windows longhorn server/windows server 2008 server}
15181529
echo "iso url is not set. Attempting to find it automatically."
@@ -1527,27 +1538,32 @@ Continue?
15271538
if [[ "$iso" = magnet:* ]]; then
15281539
: # 不测试磁力链接
15291540
else
1530-
# 需要用户输入 massgrave.dev 直链
1531-
if grep -Eiq '\.massgrave\.dev/.*\.(iso|img)$' <<<"$iso" ||
1532-
grep -Eiq '\.gravesoft\.dev/#[0-9]+$' <<<"$iso"; then
1533-
info "Set Direct link"
1534-
# MobaXterm 不支持
1535-
# printf '\e]8;;http://example.com\e\\This is a link\e]8;;\e\\\n'
1536-
1537-
# MobaXterm 不显示为超链接
1538-
# info false "请在浏览器中打开 $iso 获取直链并粘贴到这里。"
1539-
# info false "Please open $iso in browser to get the direct link and paste it here."
1540-
1541-
echo "请在浏览器中打开 $iso 获取直链并粘贴到这里。"
1542-
echo "Please open $iso in browser to get the direct link and paste it here."
1543-
IFS= read -r -p "Direct Link: " iso
1544-
if [ -z "$iso" ]; then
1545-
error_and_exit "ISO Link is empty."
1541+
iso_is_tested=false
1542+
if $auto_find_iso; then
1543+
if test_url_grace "$iso" iso 2>/dev/null; then
1544+
iso_is_tested=true
1545+
else
1546+
# 需要用户输入 massgrave.dev 直链
1547+
info "Set Direct link"
1548+
# MobaXterm 不支持
1549+
# printf '\e]8;;http://example.com\e\\This is a link\e]8;;\e\\\n'
1550+
1551+
# MobaXterm 不显示为超链接
1552+
# info false "请在浏览器中打开 $iso 获取直链并粘贴到这里。"
1553+
# info false "Please open $iso in browser to get the direct link and paste it here."
1554+
1555+
echo "请在浏览器中打开 $iso 获取直链并粘贴到这里。"
1556+
echo "Please open $iso in browser to get the direct link and paste it here."
1557+
IFS= read -r -p "Direct Link: " iso
1558+
if [ -z "$iso" ]; then
1559+
error_and_exit "ISO Link is empty."
1560+
fi
15461561
fi
15471562
fi
15481563

1549-
# 测试是否是 iso
1550-
test_url "$iso" iso
1564+
if ! $iso_is_tested; then
1565+
test_url "$iso" iso
1566+
fi
15511567

15521568
# 判断 iso 架构是否兼容
15531569
# https://gitlab.com/libosinfo/osinfo-db/-/tree/main/data/os/microsoft.com?ref_type=heads

0 commit comments

Comments
 (0)