Update Social IP Ranges #2839
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # نام ورکفلو که در بخش Actions گیتهاب نمایش داده میشود | |
| name: Update Social IP Ranges | |
| # تعریف زمانبندی و شرایط اجرای ورکفلو | |
| on: | |
| # این گزینه به شما اجازه میدهد ورکفلو را به صورت دستی هم اجرا کنید | |
| workflow_dispatch: | |
| # اجرای خودکار در زمانبندی مشخص | |
| schedule: | |
| # این کد به معنی "اجرا در دقیقه صفر هر ساعت" است (یعنی رأس هر ساعت) | |
| - cron: '0 * * * *' | |
| # تعریف کارها (Jobs) که باید در ورکفلو انجام شوند | |
| jobs: | |
| update-ips: | |
| # استفاده از آخرین نسخه اوبونتو برای اجرای دستورات | |
| runs-on: ubuntu-latest | |
| # **تغییر اصلی در اینجا است** | |
| # افزودن دسترسی برای نوشتن در ریپازیتوری | |
| permissions: | |
| contents: write | |
| # مراحل اجرایی این کار | |
| steps: | |
| # مرحله اول: دریافت کدهای موجود در ریپازیتوری شما | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| # مرحله دوم: ایجاد پوشه 'app' در صورت عدم وجود | |
| - name: Create app directory | |
| run: mkdir -p app | |
| # مرحله سوم: دریافت لیست IP ها و ذخیره در فایلهای مربوطه | |
| - name: Fetch IP Ranges | |
| run: | | |
| # آدرسهای زیر از پروژه متنباز و معتبر FireHOL گرفته شدهاند که لیستهای بلاک را نگهداری میکند. | |
| # شما میتوانید لیستهای کاملتر را در این آدرس پیدا کنید: https://github.com/firehol/blocklist-ipsets | |
| # نکته: آدرسهای IP واتساپ و اینستاگرام معمولاً بخشی از رنج شبکه فیسبوک هستند. | |
| echo "Downloading IP lists..." | |
| curl "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/telegram.netset" -o app/telegram.cidr || echo "Failed to download Telegram IPs" | |
| curl "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/facebook.netset" -o app/whatsapp.cidr || echo "Failed to download WhatsApp IPs" | |
| curl "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/facebook.netset" -o app/instagram.cidr || echo "Failed to download Instagram IPs" | |
| curl "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/facebook.netset" -o app/facebook.cidr || echo "Failed to download Facebook IPs" | |
| curl "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/twitter.netset" -o app/twitter.cidr || echo "Failed to download Twitter IPs" | |
| curl "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/tiktok.netset" -o app/tiktok.cidr || echo "Failed to download TikTok IPs" | |
| curl "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/discord.netset" -o app/discord.cidr || echo "Failed to download Discord IPs" | |
| echo "Cleaning up downloaded files..." | |
| # حذف خطوط کامنت (که با # شروع میشوند) از فایلهای دانلود شده | |
| # این کار باعث میشود فقط آدرسهای IP در فایلها باقی بمانند | |
| for file in app/*.cidr; do | |
| if [ -f "$file" ]; then | |
| # یک فایل موقت برای ذخیره محتوay تمیز شده ایجاد میشود | |
| tmpfile=$(mktemp) | |
| # تمام خطوطی که با # شروع نمیشوند در فایل موقت ذخیره میشوند | |
| grep -v '^#' "$file" > "$tmpfile" | |
| # فایل اصلی با فایل موقت جایگزین میشود | |
| mv "$tmpfile" "$file" | |
| fi | |
| done | |
| # مرحله چهارم: کامیت و پوش کردن تغییرات در صورت وجود | |
| - name: Commit and push if changed | |
| run: | | |
| # تنظیم نام و ایمیل برای کامیتها | |
| git config --global user.name 'mo13ammad' | |
| git config --global user.email 'mohammadsaadati74@gmail.com' | |
| # اضافه کردن تمام فایلهای داخل پوشه app به لیست تغییرات برای کامیت | |
| git add app/ | |
| # بررسی اینکه آیا تغییری برای کامیت کردن وجود دارد یا خیر | |
| # اگر تغییری وجود نداشت، هیچ کامیتی ثبت نمیشود | |
| if ! git diff --staged --quiet; then | |
| echo "Changes detected. Committing and pushing..." | |
| git commit -m "Auto-update IP ranges for social networks" | |
| git push | |
| else | |
| echo "No changes to commit." | |
| fi |