-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathmain.sh
254 lines (254 loc) · 9.28 KB
/
main.sh
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
#usr/bin/bash
echo ###############################################################
echo Openwrt firmware one-click update compilation script #
echo #
echo script By Lenyu #
echo #
echo version v2.1.0 #
echo #################################################################
sleep 3
#获取当前脚本所在的目录
path=$(dirname $(readlink -f $0))
#调用
cd ${path}
clear
echo
echo "脚本正在运行中…"
##lede
git -C ${path}/lede pull >/dev/null 2>&1
git -C ${path}/lede rev-parse HEAD > new_lede
new_lede=`cat new_lede`
#判断old_lede是否存在,不存在创建
if [ ! -f "old_lede" ]; then
clear
echo "old_lede被删除正在创建!"
sleep 0.1
echo $new_lede > old_lede
fi
sleep 0.1
old_lede=`cat old_lede`
if [ "$new_lede" = "$old_lede" ]; then
echo "no_update" > ${path}/nolede
else
echo "update" > ${path}/nolede
echo $new_lede > old_lede
fi
echo
##xray
if [ ! -d "xray_update" ]; then
echo "xray_update文件夹不存在,准备创建…"
mkdir -p ${path}/xray_update
else
count=`ls ${path}/xray_update`
if [ "$count" > "0" ]; then #判断文件夹是否为0,否则git拉去xray源码
git -C ${path}/xray_update pull >/dev/null 2>&1
git -C ${path}/xray_update rev-parse HEAD > ${path}/new_xray
else
git clone https://github.com/XTLS/Xray-core.git ${path}/xray_update #后面指定目录
git -C ${path}/xray_update pull >/dev/null 2>&1
git -C ${path}/xray_update rev-parse HEAD > ${path}/new_xray
fi
fi
echo
new_xray=`cat new_xray`
echo
##智能判断PKG_VERSION项目的最新值##
cat ${path}/xray_update/core/core.go > ${path}/PKG_VERSION
grep "version =" ${path}/PKG_VERSION > ${path}/PKG_VERSION1
cat ${path}/PKG_VERSION1 | cut -d \" -f 2 > ${path}/PKG_VERSION
new_pkg_version=`cat ${path}/PKG_VERSION`
grep "PKG_VERSION:=" ${path}/lede/package/lean/xray/Makefile > ${path}/PKG_VERSION2
cat ${path}/PKG_VERSION2 | cut -d = -f 2 > ${path}/PKG_VERSION3
old_pkg_version=`cat ${path}/PKG_VERSION3`
if [ "$new_pkg_version" != "$old_pkg_version" ]; then
echo "xray有新版本号,正在替换最新的版本号…"
sed -i "s/.*PKG_VERSION:.*/PKG_VERSION:=$new_pkg_version/" ${path}/lede/package/lean/xray/Makefile
fi
rm -rf ${path}/PKG_VERSION*
echo
#判断Makefile是否为源码版,如果是这修改为以git头更新的文件
grep "PKG_SOURCE_VERSION:=" ${path}/lede/package/lean/xray/Makefile > ${path}/jud_Makefile
if [ -s ${path}/jud_Makefile ]; then # -s 判断文件长度是否不为0,为0说明Makefile是源码版,需修改
echo "Makefile已是修改过的版本,故不需再修改…"
echo
else
echo "Makefile正在被脚本修改…"
echo
sed -i 's/PKG_RELEASE:=1/PKG_RELEASE:=2/' ${path}/lede/package/lean/xray/Makefile
sed -i 's/PKG_BUILD_DIR:=$(BUILD_DIR)\/Xray-core-$(PKG_VERSION)/#PKG_BUILD_DIR:=$(BUILD_DIR)\/Xray-core-$(PKG_VERSION)/' ${path}/lede/package/lean/xray/Makefile
sed -i 's/PKG_SOURCE:=xray-core-$(PKG_VERSION).tar.gz/#PKG_SOURCE:=xray-core-$(PKG_VERSION).tar.gz/' ${path}/lede/package/lean/xray/Makefile
sed -i 's/PKG_SOURCE_URL:=https:\/\/codeload.github.com\/XTLS\/xray-core\/tar.gz\/v$(PKG_VERSION)?/#PKG_SOURCE_URL:=https:\/\/codeload.github.com\/XTLS\/xray-core\/tar.gz\/v$(PKG_VERSION)?/' ${path}/lede/package/lean/xray/Makefile
sed -i 's/PKG_HASH:=/#PKG_HASH:=/' ${path}/lede/package/lean/xray/Makefile
sleep 0.1
#然后插入自定义的内容
sed -i '18 a PKG_SOURCE_PROTO:=git' ${path}/lede/package/lean/xray/Makefile
sed -i '19 a PKG_SOURCE_URL:=https://github.com/XTLS/xray-core.git' ${path}/lede/package/lean/xray/Makefile
sed -i '20 a PKG_SOURCE_VERSION:=7da97635b28bfa7296fe79bbe7cd804a684317d9' ${path}/lede/package/lean/xray/Makefile
sed -i '21 a PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz' ${path}/lede/package/lean/xray/Makefile
fi
rm -rf jud_Makefile
echo
##智能判断PKG_VERSION项目的最新值##
echo
#判断old_xray是否存在,不存在创建
if [ ! -f "old_xray" ]; then
clear
echo "old_xray被删除正在创建!"
sleep 0.1
echo $new_xray > old_xray
fi
sleep 0.1
old_xray=`cat old_xray`
#有xray更新就替换最新的commit分支id
if [ "$new_xray" = "$old_xray" ]; then
clear
echo "no_update" > ${path}/noxray
else
clear
echo "发现更新,准备切换到最新的commit分支MD5"
echo "update" > ${path}/noxray
sleep 1
#替换最新的md5值 sed要使用""才会应用变量
sed -i "s/.*PKG_SOURCE_VERSION:.*/PKG_SOURCE_VERSION:=$new_xray/" ${path}/lede/package/lean/xray/Makefile
echo $new_xray > old_xray
fi
echo
##passwall
git -C ${path}/lede/feeds/passwall pull >/dev/null 2>&1
git -C ${path}/lede/feeds/passwall rev-parse HEAD > new_passw
new_passw=`cat new_passw`
#判断old_passw是否存在,不存在创建
if [ ! -f "old_passw" ]; then
clear
echo "old_passw被删除正在创建!"
sleep 0.1
echo $new_passw > old_passw
fi
sleep 0.1
old_passw=`cat old_passw`
if [ "$new_passw" = "$old_passw" ]; then
echo "no_update" > ${path}/nopassw
else
echo "update" > ${path}/nopassw
echo $new_passw > old_passw
fi
echo
##ssr+
git -C ${path}/lede/feeds/helloworld pull >/dev/null 2>&1
git -C ${path}/lede/feeds/helloworld rev-parse HEAD > new_ssr
new_ssr=`cat new_ssr`
#判断old_ssr是否存在,不存在创建
if [ ! -f "old_ssr" ]; then
clear
echo "old_ssr被删除正在创建!"
sleep 0.1
echo $new_ssr > old_ssr
fi
sleep 0.1
old_ssr=`cat old_ssr`
if [ "$new_ssr" = "$old_ssr" ]; then
echo "no_update" > ${path}/nossr
else
echo "update" > ${path}/nossr
echo $new_ssr > old_ssr
fi
echo
##openclash
git -C ${path}/lede/package/luci-app-openclash pull >/dev/null 2>&1
git -C ${path}/lede/package/luci-app-openclash rev-parse HEAD > new_clash
new_clash=`cat new_clash`
#判断old_clash是否存在,不存在创建
if [ ! -f "old_clash" ]; then
clear
echo "old_ssr被删除正在创建!"
sleep 0.1
echo $new_clash > old_clash
fi
sleep 0.1
old_clash=`cat old_clash`
if [ "$new_clash" = "$old_clash" ]; then
echo "no_update" > ${path}/noclash
else
echo "update" > ${path}/noclash
echo $new_clash > old_clash
fi
clear
echo
echo "脚本正在运行中…"
sleep 1
#总结判断之
#监测如果不存在rename.sh则创建该文件
if [ ! -f "${path}/lede/rename.sh" ]; then
echo "rename.sh被删除,正在创建!"
cat>${path}/lede/rename.sh<<EOF
#/usr/bin/bash
path=\$(dirname \$(readlink -f \$0))
cd \${path}
rm -rf \${path}/bin/targets/x86/64/*Lenyu.img.gz
rm -rf \${path}/bin/targets/x86/64/packages
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-generic.manifest
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-rootfs-squashfs.img.gz
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-combined-squashfs.vmdk
rm -rf \${path}/bin/targets/x86/64/config.seed
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-uefi-gpt-squashfs.vmdk
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-vmlinuz
rm -rf \${path}/bin/targets/x86/64/sha256sums
rm -rf \${path}/bin/targets/x86/64/config.buildinfo
rm -rf \${path}/bin/targets/x86/64/feeds.buildinfo
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-generic-kernel.bin
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-combined.vmdk
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-combined-efi.vmdk
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-rootfs.img.gz
rm -rf \${path}/bin/targets/x86/64/version.buildinfo
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-combined-efi.img
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-combined.img
rm -rf \${path}/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-rootfs.img
sleep 3
stre=\`sed '11!d' \${path}/include/kernel-version.mk\` >nul 2>nul
sleep 2
mv \${path}/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-combined.img.gz \${path}/bin/targets/x86/64/openwrt_x86-64-\`date '+%m%d'\`_5.4.\`echo \${stre#* .}\`_dev_Lenyu.img.gz
mv \${path}/bin/targets/x86/64/openwrt-x86-64-generic-squashfs-combined-efi.img.gz \${path}/bin/targets/x86/64/openwrt_x86-64-\`date '+%m%d'\`_5.4.\`echo \${stre#* .}\`_uefi-gpt_dev_Lenyu.img.gz
exit 0
EOF
fi
sleep 0.2
nolede=`cat ${path}/nolede`
noclash=`cat ${path}/noclash`
noxray=`cat ${path}/noxray`
nossr=`cat ${path}/nossr`
nopassw=`cat ${path}/nopassw`
sleep 0.5
if [[("$nolede" = "update") || ("$noclash" = "update") || ("$noxray" = "update") || ("$nossr" = "update" ) || ("$nopassw" = "update" )]]; then
clear
echo
echo "发现更新,请稍后…"
clear
echo
echo "准备开始编译最新固件…"
source /etc/environment && cd ${path}/lede && ./scripts/feeds update -a && ./scripts/feeds install -a && make defconfig && make -j8 download && make -j10 V=s && bash rename.sh
echo
rm -rf ${path}/noxray
rm -rf ${path}/noclash
rm -rf ${path}/nolede
rm -rf ${path}/nossr
rm -rf ${path}/nopassw
echo "固件编译成功,脚本退出!"
echo
exit 0
fi
echo
if [[("$nolede" = "no_update") && ("$noclash" = "no_update") && ("$noxray" = "no_update") && ("$nossr" = "no_update" ) && ("$nopassw" = "no_update" )]]; then
clear
echo
echo "呃呃…检查lede/ssr+/xray/passwall/openclash源码,没有一个源码更新哟…还是稍安勿躁…"
fi
#脚本结束,准备最后的清理工作
rm -rf ${path}/noxray
rm -rf ${path}/noclash
rm -rf ${path}/nolede
rm -rf ${path}/nossr
rm -rf ${path}/nopassw
echo
echo "脚本退出!"
echo
exit 1