name: bin_update

on: 
#   release:
#       types: [published]
#   push:
#       tags:
#       - 'v*'
#   branches: 
#       - master
    schedule:
        - cron: 0 10 * * 5
#   watch:
#       types: [started]
    workflow_dispatch:

jobs:
  update:
    runs-on: ubuntu-latest

    steps:
    
    - name: Checkout ShellCrash
      uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
      with:
        repository: juewuy/ShellCrash
        fetch-depth: 1
        
    - name: Apt Update
      env:
        DEBIAN_FRONTEND: noninteractive
      run: |
        sudo apt-get update
        sudo apt-get -y install unzip curl git tar
        
    - name: Update Dashboard
      run: |
        mkdir -p bin/dashboard
        mkdir -p bin/geodata
        cd bin/dashboard
        echo 下载官方面板
        # curl -kfSL -o clashdb.zip  https://github.com/Dreamacro/clash-dashboard/archive/gh-pages.zip
        echo 下载Meta面板
        curl -kfSL -o meta_db.zip  https://github.com/MetaCubeX/Razord-meta/archive/gh-pages.zip
        echo 下载yacd面板
        curl -kfSL -o yacd.zip  https://github.com/haishanh/yacd/archive/gh-pages.zip 
        echo 下载meta魔改yacd面板
        curl -kfSL -o meta_yacd.zip  https://github.com/MetaCubeX/Yacd-meta/archive/gh-pages.zip
        echo 下载meta-xd面板
        curl -kfSL -o meta_xd.zip  https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip
        echo 解压缩
        # unzip -o clashdb.zip > /dev/null
        unzip -o yacd.zip > /dev/null
        # cd clash-dashboard-gh-pages
        # tar -zcvf clashdb.tar.gz * > /dev/null
        # mv -f clashdb.tar.gz ../
        # cd ..
        cd yacd-gh-pages
        echo yacd特殊处理
        find -name '*.map' | xargs  rm -rf
        rm -rf report.html
        tar -zcvf yacd.tar.gz * > /dev/null
        mv -f yacd.tar.gz ../
        cd ..
        
        echo 解压缩meta
        unzip -o meta_db.zip > /dev/null
        unzip -o meta_yacd.zip > /dev/null
        cd Razord-meta-gh-pages
        tar -zcvf meta_db.tar.gz * > /dev/null
        mv -f meta_db.tar.gz ../
        cd ..
        cd Yacd-meta-gh-pages
        echo yacd特殊处理
        find -name '*.map' | xargs  rm -rf
        rm -rf report.html
        tar -zcvf meta_yacd.tar.gz * > /dev/null
        mv -f meta_yacd.tar.gz ../
        cd ..
        
        echo 解压缩meta-xd
        unzip -o meta_xd.zip > /dev/null
        cd metacubexd-gh-pages
        echo 删除字体文件
        find -name '*.ttf' | xargs  rm -rf
        tar -zcvf meta_xd.tar.gz * > /dev/null
        mv -f meta_xd.tar.gz ../
        
        cd ..       
        rm -rf clashdb.zip
        rm -rf yacd.zip
        rm -rf meta_db.zip
        rm -rf meta_yacd.zip
        rm -rf meta_xd.zip
        rm -rf clash-dashboard-gh-pages
        rm -rf yacd-gh-pages
        rm -rf Razord-meta-gh-pages
        rm -rf Yacd-meta-gh-pages
        rm -rf metacubexd-gh-pages
        echo 面板更新完成！

    - name: Update certificate
      run: |
        wget https://raw.githubusercontent.com/curl/curl/master/scripts/mk-ca-bundle.pl
        chmod +x ./mk-ca-bundle.pl
        ./mk-ca-bundle.pl
        rm -f mk-ca-bundle.pl certdata.txt

    - name: Update GeoIP
      run: |
        cd bin
        source version
        #curl -kfSL -o geodata/Country.mmdb https://raw.githubusercontent.com/alecthw/mmdb_china_ip_list/release/Country.mmdb
        curl -kfSL -o geodata/cn_mini.mmdb https://raw.githubusercontent.com/Hackl0us/GeoIP2-CN/release/Country.mmdb
        curl -kfSL -o geodata/china_ip_list.txt https://raw.githubusercontent.com/ChanthMiao/China-IPv4-List/release/cn.txt
        curl -kfSL -o geodata/china_ipv6_list.txt https://raw.githubusercontent.com/ChanthMiao/China-IPv6-List/release/cn6.txt
        curl -kfSL -o geodata/geosite.dat https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/geosite.dat
        curl -kfSL -o geodata/geoip_cn.db https://github.com/lyc8503/sing-box-rules/releases/latest/download/geoip-cn.db
        curl -kfSL -o geodata/geosite_cn.db https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box/geosite-lite.db
        curl -kfSL -o geodata/srs_geoip_cn.srs https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/cnip.srs
        curl -kfSL -o geodata/srs_geosite_cn.srs https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/cn.srs
        curl -kfSL -o geodata/mrs_geosite_cn.mrs https://github.com/DustinWin/ruleset_geodata/releases/download/clash-ruleset/cn.mrs
        mv -f ../ca-bundle.crt ./fix/ca-certificates.crt
        sed -i "s/GeoIP_v=.*/GeoIP_v=$(date '+%Y%m%d')/" version #修改版本号
        echo 数据库及根证书文件更新完成！

    - name: Commit and push
      run: |
        git config --global user.email "github-actions[bot]@users.noreply.github.com" && git config --global user.name "github-actions[bot]"
        git add . && git commit -m "自动更新最新Dashboard、地址库、根证书" || exit 0
        git push
        
    - name: Cleanup Workflow
      uses: Mattraks/delete-workflow-runs@main
      with:
        retain_days: 1
        keep_minimum_runs: 2
