From 528dca222dcf60046a02a9c63627a09fc36119c1 Mon Sep 17 00:00:00 2001 From: ElonJunior Date: Wed, 29 May 2024 18:49:38 +0800 Subject: [PATCH] use merge geo script --- .github/workflows/run.yml | 10 ++---- .gitignore | 4 +++ resouces/merge_geo_ir.sh | 65 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 .gitignore create mode 100755 resouces/merge_geo_ir.sh diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index b425fe8b..72746d4c 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -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" diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..ff971404 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.log +*.srs +*.json +tmp/ diff --git a/resouces/merge_geo_ir.sh b/resouces/merge_geo_ir.sh new file mode 100755 index 00000000..f76f3940 --- /dev/null +++ b/resouces/merge_geo_ir.sh @@ -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 \ No newline at end of file