mirror of
https://github.com/MetaCubeX/meta-rules-dat.git
synced 2024-11-30 10:25:44 +08:00
135 lines
5.8 KiB
Bash
Executable File
135 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 拉文件
|
|
if [ ! -d rule ]; then
|
|
git init
|
|
git remote add origin https://github.com/blackmatrix7/ios_rule_script.git
|
|
git config core.sparsecheckout true
|
|
echo "rule/Clash" >>.git/info/sparse-checkout
|
|
git pull --depth 1 origin master
|
|
rm -rf .git
|
|
fi
|
|
# 移动文件/目录到同一文件夹
|
|
list=($(find ./rule/Clash/ | awk -F '/' '{print $5}' | sed '/^$/d' | grep -v '\.' | sort -u))
|
|
for ((i = 0; i < ${#list[@]}; i++)); do
|
|
path=$(find ./rule/Clash/ -name ${list[i]})
|
|
mv $path ./rule/Clash/
|
|
done
|
|
|
|
list=($(ls ./rule/Clash/))
|
|
for ((i = 0; i < ${#list[@]}; i++)); do
|
|
if [ -z "$(ls ./rule/Clash/${list[i]} | grep '.yaml')" ]; then
|
|
directory=($(ls ./rule/Clash/${list[i]}))
|
|
for ((x = 0; x < ${#directory[@]}; x++)); do
|
|
mv ./rule/Clash/${list[i]}/${directory[x]} ./rule/Clash/${directory[x]}
|
|
done
|
|
rm -r ./rule/Clash/${list[i]}
|
|
fi
|
|
done
|
|
|
|
list=($(ls ./rule/Clash/))
|
|
for ((i = 0; i < ${#list[@]}; i++)); do
|
|
if [ -f "./rule/Clash/${list[i]}/${list[i]}_Classical.yaml" ]; then
|
|
mv ./rule/Clash/${list[i]}/${list[i]}_Classical.yaml ./rule/Clash/${list[i]}/${list[i]}.yaml
|
|
fi
|
|
done
|
|
|
|
# 处理文件
|
|
list=($(ls ./rule/Clash/))
|
|
for ((i = 0; i < ${#list[@]}; i++)); do
|
|
mkdir -p ${list[i]}
|
|
# 归类
|
|
# android package
|
|
if [ -n "$(cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep PROCESS | grep -v '\.exe' | grep -v '/' | grep '\.')" ]; then
|
|
cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep PROCESS | grep -v '\.exe' | grep -v '/' | grep '\.' | sed 's/ - PROCESS-NAME,//g' > ${list[i]}/package.json
|
|
fi
|
|
# process name
|
|
if [ -n "$(cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep PROCESS | grep -v '/' | grep -v '\.')" ]; then
|
|
cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep -v '#' | grep PROCESS | grep -v '/' | grep -v '\.' | sed 's/ - PROCESS-NAME,//g' > ${list[i]}/process.json
|
|
fi
|
|
if [ -n "$(cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep PROCESS | grep '\.exe')" ]; then
|
|
cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep -v '#' | grep PROCESS | grep '\.exe' | sed 's/ - PROCESS-NAME,//g' >> ${list[i]}/process.json
|
|
fi
|
|
# domain
|
|
if [ -n "$(cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep '\- DOMAIN-SUFFIX,')" ]; then
|
|
cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep '\- DOMAIN-SUFFIX,' | sed 's/ - DOMAIN-SUFFIX,//g' > ${list[i]}/domain.json
|
|
cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep '\- DOMAIN-SUFFIX,' | sed 's/ - DOMAIN-SUFFIX,/./g' > ${list[i]}/suffix.json
|
|
fi
|
|
if [ -n "$(cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep '\- DOMAIN,')" ]; then
|
|
cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep '\- DOMAIN,' | sed 's/ - DOMAIN,//g' >> ${list[i]}/domain.json
|
|
fi
|
|
if [ -n "$(cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep '\- DOMAIN-KEYWORD,')" ]; then
|
|
cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep '\- DOMAIN-KEYWORD,' | sed 's/ - DOMAIN-KEYWORD,//g' > ${list[i]}/keyword.json
|
|
fi
|
|
# ipcidr
|
|
if [ -n "$(cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep '\- IP-CIDR')" ]; then
|
|
cat ./rule/Clash/${list[i]}/${list[i]}.yaml | grep -v '#' | grep '\- IP-CIDR' | sed 's/ - IP-CIDR,//g' | sed 's/ - IP-CIDR6,//g' > ${list[i]}/ipcidr.json
|
|
fi
|
|
# 转成json格式
|
|
# android package
|
|
if [ -f "${list[i]}/package.json" ]; then
|
|
sed -i 's/^/ "/g' ${list[i]}/package.json
|
|
sed -i 's/$/",/g' ${list[i]}/package.json
|
|
sed -i '1s/^/ "package_name": [\n/g' ${list[i]}/package.json
|
|
sed -i '$ s/,$/\n ],/g' ${list[i]}/package.json
|
|
fi
|
|
# process name
|
|
if [ -f "${list[i]}/process.json" ]; then
|
|
sed -i 's/^/ "/g' ${list[i]}/process.json
|
|
sed -i 's/$/",/g' ${list[i]}/process.json
|
|
sed -i '1s/^/ "process_name": [\n/g' ${list[i]}/process.json
|
|
sed -i '$ s/,$/\n ],/g' ${list[i]}/process.json
|
|
fi
|
|
# domain
|
|
if [ -f "${list[i]}/domain.json" ]; then
|
|
sed -i 's/^/ "/g' ${list[i]}/domain.json
|
|
sed -i 's/$/",/g' ${list[i]}/domain.json
|
|
sed -i '1s/^/ "domain": [\n/g' ${list[i]}/domain.json
|
|
sed -i '$ s/,$/\n ],/g' ${list[i]}/domain.json
|
|
fi
|
|
if [ -f "${list[i]}/suffix.json" ]; then
|
|
sed -i 's/^/ "/g' ${list[i]}/suffix.json
|
|
sed -i 's/$/",/g' ${list[i]}/suffix.json
|
|
sed -i '1s/^/ "domain_suffix": [\n/g' ${list[i]}/suffix.json
|
|
sed -i '$ s/,$/\n ],/g' ${list[i]}/suffix.json
|
|
fi
|
|
if [ -f "${list[i]}/keyword.json" ]; then
|
|
sed -i 's/^/ "/g' ${list[i]}/keyword.json
|
|
sed -i 's/$/",/g' ${list[i]}/keyword.json
|
|
sed -i '1s/^/ "domain_keyword": [\n/g' ${list[i]}/keyword.json
|
|
sed -i '$ s/,$/\n ],/g' ${list[i]}/keyword.json
|
|
fi
|
|
# ipcidr
|
|
if [ -f "${list[i]}/ipcidr.json" ]; then
|
|
sed -i 's/^/ "/g' ${list[i]}/ipcidr.json
|
|
sed -i 's/$/",/g' ${list[i]}/ipcidr.json
|
|
sed -i '1s/^/ "ip_cidr": [\n/g' ${list[i]}/ipcidr.json
|
|
sed -i '$ s/,$/\n ],/g' ${list[i]}/ipcidr.json
|
|
fi
|
|
# 合并文件
|
|
if [ -f "${list[i]}/package.json" -a -f "${list[i]}/process.json" ]; then
|
|
mv ${list[i]}/package.json ${list[i]}.json
|
|
sed -i '$ s/,$/\n },\n {/g' ${list[i]}.json
|
|
cat ${list[i]}/process.json >> ${list[i]}.json
|
|
rm ${list[i]}/process.json
|
|
elif [ -f "${list[i]}/package.json" ]; then
|
|
mv ${list[i]}/package.json ${list[i]}.json
|
|
elif [ -f "${list[i]}/process.json" ]; then
|
|
mv ${list[i]}/process.json ${list[i]}.json
|
|
fi
|
|
|
|
if [ "$(ls ${list[i]})" = "" ]; then
|
|
sed -i '1s/^/{\n "version": 1,\n "rules": [\n {\n/g' ${list[i]}.json
|
|
elif [ -f "${list[i]}.json" ]; then
|
|
sed -i '1s/^/{\n "version": 1,\n "rules": [\n {\n/g' ${list[i]}.json
|
|
sed -i '$ s/,$/\n },\n {/g' ${list[i]}.json
|
|
cat ${list[i]}/* >> ${list[i]}.json
|
|
else
|
|
cat ${list[i]}/* >> ${list[i]}.json
|
|
sed -i '1s/^/{\n "version": 1,\n "rules": [\n {\n/g' ${list[i]}.json
|
|
fi
|
|
sed -i '$ s/,$/\n }\n ]\n}/g' ${list[i]}.json
|
|
rm -r ${list[i]}
|
|
./sing-box rule-set compile ${list[i]}.json -o ${list[i]}.srs
|
|
done
|