use merge geo script

This commit is contained in:
ElonJunior 2024-05-29 18:49:38 +08:00
parent 797af96c15
commit 528dca222d
3 changed files with 71 additions and 8 deletions

View File

@ -34,6 +34,7 @@ jobs:
cp ./workflow/resouces/convert_* ./sing-rule/ACL4SSR/
cd sing-rule/ACL4SSR/ || exit 1
python convert_json.py ../../ACL4SSR/Clash ./
cp Ruleset/*.srs ./
- name: Convert json to srs
env:
@ -64,19 +65,12 @@ jobs:
run: |
cd sing-rule || exit 1
cp -r ../meta-rules-dat/geo ./
cp -r ../Iran-sing-box-rules/geoip-ir.srs ./geo/geoip/ir.srs
cp -r ../Iran-sing-box-rules/geoip-malware.srs ./geo/geoip/malware.srs
cp -r ../Iran-sing-box-rules/geoip-phishing.srs ./geo/geoip/phishing.srs
cp -r ../Iran-sing-box-rules/geosite*ir.srs ./geo/geosite/
cp -r ../Iran-sing-box-rules/geosite-geolocation*.srs ./geo/geosite/
cp -r ../Iran-sing-box-rules/geosite-cryptominers.srs ./geo/geosite/
cd ./geo/geosite/ && find ./ -type f -name "geosite-*ir.srs" -exec bash -c 'mv "$1" "${1/geosite-/}"' _ {} \;
bash ../workflow/resouces/merge_geo_ir.sh ./geo ../Iran-sing-box-rules/
- name: Git push assets to "sing-rule" branch
run: |
cd sing-rule || exit 1
cp ../workflow/README.md . && cp -r ../workflow/.github .
cp ACL4SSR/Ruleset/*.srs ./ACL4SSR/
git init
git config --local user.name "github-actions[bot]"
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
*.log
*.srs
*.json
tmp/

65
resouces/merge_geo_ir.sh Executable file
View File

@ -0,0 +1,65 @@
#!/bin/bash
CURRENT_DIR=$(cd $(dirname $0); pwd)
SPECIAL_CODES=(ir)
LOG_FILE="merge.log"
target_dir=$1
if [ -z "$target_dir" ]; then
target_dir=$CURRENT_DIR
fi
target_dir=$(readlink -f $target_dir)
if [ ! -d "$target_dir" ]; then
echo "${target_dir} unkown directory"
exit 1
fi
merge_src_dir=$2
if [ -z "$merge_src_dir" ]; then
echo "ERR: empty merge source!"
exit 1
fi
merge_src_dir=$(readlink -f $merge_src_dir)
## Begin
LOG_FILE="${target_dir}/${LOG_FILE}"
cat /dev/null > $LOG_FILE
cd $merge_src_dir
echo -e "\n\ttarget>> ${target_dir}\n\tmerging<= ${merge_src_dir}\n\n"
# Loop through files in folder a
for file1 in $(ls *.srs); do
# Get the filename without path
filename1=${file1##*/}
fsub=${filename1%%-*}
filename2=${filename1#*-}
# Country code
ccode=$(echo "$filename1" |rev | awk -F'[-|.|!]' '{print $2}' | rev | awk -F'@' '{print $1}' )
# Check if file exists in folder b with the same name
file2="$target_dir/$fsub/$filename2"
# If file not found, print filename
if [ ! -f $file2 ]; then
cp $file1 $file2
echo "${fsub}/${filename2}" >> $LOG_FILE
fi
if [[ " ${SPECIAL_CODES[@]} " =~ " $ccode " ]]; then
cp $file1 $file2
echo "${fsub}/${filename2}" >> $LOG_FILE
# echo $ccode
fi
done
cat $LOG_FILE
#END FILE