-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclone
86 lines (86 loc) · 5.37 KB
/
clone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
### Cloner basic system ###
###
### varPath
mirror_base='/var/www'
mirrorcache="$mirror_base/.cache"
mirror_list="$mirror_base/.repo/mirror.list"
mirror_logs="$mirrorcache/logs"
mirror_skel="$mirrorcache/skel"
mirror_sums="$mirrorcache/sums"
mirror_urls="$mirrorcache/urls"
### varString
head_string="$(for ((a=0;a<=79;a++)); do printf "#"; done; printf "\n")"
limit_rate='10M'
### Body start
for mirror in $(cat $mirror_list | grep -v 'clean ' | sed 's|[^\]*://||g;s| |:sc:|g;s|/:sc:\.|:sc:|g;s|/:sc:/|:sc:/|g'); do
wurl=$(echo $mirror | sed 's|:sc:[^\]*||')
url=$(echo $wurl | sed 's|/[^\]*||')
dest=$(echo $url | sed 's|\.|-|g')
code=$(echo $mirror | sed "s|$wurl:sc:||;s|:sc:[^\]*||;s|\./|/|")
vers=$(echo $mirror | sed "s|[^\]*$code||;s|:sc:||"); if [ "$vers" == "" ]; then vers='/'; fi
dist=$(echo dists/$code | sed "s|dists//||")
isum="$mirror_urls/$url/$dest-InRelease"
rsum="$mirror_urls/$url/$dest-Release"
hsum="$mirror_sums/$url/$dest"
echo $head_string
echo "SKEL from $url $code"
for component in $(echo $vers | sed 's|:sc:|\n|g'); do
if [ ! -e $mirror_skel/$wurl/$dist/InRelease -o ! -e $mirror_skel/$wurl/$dist/Release ]; then
echo "Getting base list"
mkdir -p $mirror_logs/$url $mirror_skel/$wurl/$dist/$component $mirror_sums/$url $mirror_urls/$url $wurl/$dist/$component
wget --limit-rate=$limit_rate -nv -Nx $wurl/$dist/InRelease -P $mirror_skel -a $mirror_logs/InRelease
wget --limit-rate=$limit_rate -nv -Nx $wurl/$dist/Release -P $mirror_skel -a $mirror_logs/Release
wget --limit-rate=$limit_rate -nv -Nx $wurl/$dist/Release.gpg -P $mirror_skel -a $mirror_logs/Release
if [ -e $mirror_skel/$wurl/$dist/InRelease ]; then sed -i 's|[^\]*\-> ||g;s|:||g' $mirror_logs/InRelease
cp -R $mirror_skel/$wurl/$dist/InRelease $wurl/$dist/InRelease
cat $wurl/$dist/InRelease | sed ':a;N;$!ba;s|SIGNATURE[^\]*\n||;s|\n\n|\n|;s|\n |\n|g;s|MD5Sum:\n|\nmd5sum-|;s|SHA1:\n|sha1sum-|;s|SHA256:\n|sha256sum-|;s|SHA512:\n|sha512sum-|;s| [ 0-9]* | '$wurl/$dist/'|g;s|///|/|g;s|//|/|g' | grep -v ':\|--' > $hsum.hashsums
printf 'end_tl' >> $hsum.hashsums
cat $hsum.hashsums | sed ':a;N;$!ba;s|\nmd5sum-||;s|sha1sum[^\]*\n||;s|\nend_tl||' > $hsum-md5.sum
cat $hsum.hashsums | sed ':a;N;$!ba;s|\n[^\]*sha1sum-||;s|sha256sum[^\]*\n||;s|\nend_tl||' > $hsum-sha1.sum
cat $hsum.hashsums | sed ':a;N;$!ba;s|\n[^\]*sha256sum-||;s|sha512sum[^\]*\n||;s|\nend_tl||' > $hsum-sha256.sum
cat $hsum-md5.sum | sed 's|[^\]* ||' > $isum.list
fi
if [ -e $mirror_skel/$wurl/$dist/Release ]; then sed -i 's|[^\]*\-> ||g;s|:||g' $mirror_logs/Release
cp -R $mirror_skel/$wurl/$dist/Release $wurl/$dist/Release
cat $wurl/$dist/Release | sed ':a;N;$!ba;s|SIGNATURE[^\]*\n||;s|\n\n|\n|;s|\n |\n|g;s|MD5Sum:\n|\nmd5sum-|;s|SHA1:\n|sha1sum-|;s|SHA256:\n|sha256sum-|;s|SHA512:\n|sha512sum-|;s| [ 0-9]* | '$wurl/$dist/'|g;s|///|/|g;s|//|/|g' | grep -v ':\|--' > $hsum.hashsums
printf 'end_tl' >> $hsum.hashsums
cat $hsum.hashsums | sed ':a;N;$!ba;s|\nmd5sum-||;s|sha1sum[^\]*\n||;s|\nend_tl||' > $hsum-md5.sum
cat $hsum.hashsums | sed ':a;N;$!ba;s|\n[^\]*sha1sum-||;s|sha256sum[^\]*\n||;s|\nend_tl||' > $hsum-sha1.sum
cat $hsum.hashsums | sed ':a;N;$!ba;s|\n[^\]*sha256sum-||;s|sha512sum[^\]*\n||;s|\nend_tl||' > $hsum-sha256.sum
cat $hsum-md5.sum | sed 's|[^\]* ||' > $rsum.list
fi
if [ -e $mirror_skel/$wurl/$dist/Release.gpg ]; then sed -i 's|[^\]*\-> ||g;s|:||g' $mirror_logs/Release
cp -R $mirror_skel/$wurl/$dist/Release.gpg $wurl/$dist/Release.gpg
fi
fi
done
if [ -e $isum.list ]; then skel_file="$mirror_skel/$(cat $isum.list | grep -m 1 'Release')"
else skel_file="$mirror_skel/$(cat $rsum.list | grep -m 1 'Release')"; fi
if [ ! -e $skel_file ]; then echo "Getting skel files from $url"
if [ -e $isum.list ]; then wget --limit-rate=$limit_rate -nv -Nxi $isum.list -P $mirror_skel -a $mirror_logs/$url/skel; sed -i 's|[^\]*\-> ||g;s|:||g' $mirror_logs/$url/skel
else wget --limit-rate=$limit_rate -nv -Nxi $rsum.list -P $mirror_skel -a $mirror_logs/$url/skel; sed -i 's|[^\]*\-> ||g;s|:||g' $mirror_logs/$url/skel; fi
fi
if [ -e $isum.list ]; then list=$isum; else list=$rsum; fi
for packages in $(cat $list.list | grep 'Packages.gz'); do
packages_dir="$(echo $packages | sed 's|/Packages\.gz||')"
if [ ! -e $mirror_skel/$packages_dir/Packages ]; then 7z -y x $mirror_skel/$packages -o$mirror_skel/$packages_dir > /dev/null 2>&1; fi
if [ ! -e $hsum-sha256.xsum ]; then
cat $mirror_skel/$packages_dir/Packages | grep 'SHA1\:' | sed 's|SHA1: ||g' >> $hsum-sha1.xsum
cat $mirror_skel/$packages_dir/Packages | grep 'MD5sum\:' | sed 's|MD5sum: ||g' >> $hsum-md5.xsum
cat $mirror_skel/$packages_dir/Packages | grep 'SHA256\:' | sed 's|SHA256: ||g' >> $hsum-sha256.xsum
fi
if [ ! -e $list.pkg ]; then
cat $mirror_skel/$packages_dir/Packages | grep 'Filename\:' | sed "s|Filename: |$url/|g;s|\./||g" >> $list.pkg
fi
if [ ! -e $hsum-md5.sum ]; then
paste -d" " $hsum-md5.xsum $list.pkg >> $hsum-md5.sum
paste -d" " $hsum-sha1.xsum $list.pkg >> $hsum-sha1.sum
paste -d" " $hsum-sha256.xsum $list.pkg >> $hsum-sha256.sum
fi
#echo $packages_dir
done
for sources in $(cat $list.list | grep 'Sources.gz'); do
sources_dir="$(echo $sources | sed 's|/Sources\.gz||')"
if [ ! -e $mirror_skel/$sources_dir/Sources ]; then 7z -y x $mirror_skel/$sources -o$mirror_skel/$sources_dir > /dev/null 2>&1; fi
done
done