در تیم زیرساخت دیجی‌کال‍ا، میکروسرویس‌های مختلفی در حال پدید آمدن هستند. برخی از این میکروسرویس‌ها قرار است تنها برای کاربران برخی از کشورها در دسترس باشند. سالار که وظیفه‌ی مدیریت درخواست‌های ورودی از کشورهای مختلف را برعهده دارد، لیستی از بازه‌های آی‌پی‌های کشورهای مدنظرش جمع‌آوری کرده است. او اکنون از شما می‌خواهد اسکریپتی برای او بنویسید که با استفاده از آن بتوان درخواست‌های ورودی از کشورهای مختلف را مسدود یا آزاد کرد.

جزئیات پروژه

پروژه‌ی اولیه را از این لینک دانلود کنید.

ساختار فایل‌های پروژه به‌صورت زیر است:

country-manager
├── ip_lists
│   ├── AG.txt
│   ├── CC.txt
│   └── IR.txt
└── country_manager.sh
Plain text

اسکریپت country_manager.sh را مطابق توضیحات زیر پیاده‌سازی کنید:

  • نحوه‌ی اجرای اسکریپت به‌صورت ./country_manager.sh command ip_list_filepath است. مثال:
./country_manager.sh block ./ip_lists/CC.txt
Terminal
bash
  • اگر تعداد آرگومان‌های ورودی اسکریپت کمتر از ۲ تا (یکی برای command و یکی برای ip_list_filepath) بود، اسکریپت باید عبارت not enough arguments را چاپ کند و متوقف شود.
  • اگر مقدار command برابر با block یا unblock نبود، اسکریپت باید عبارت invalid command را چاپ کند و متوقف شود.
  • اگر فایلی که مسیر آن به‌عنوان آرگومان دوم وارد می‌شود وجود نداشت، اسکریپت باید عبارت ip list file not found را چاپ کند و متوقف شود.
  • اگر مقدار command برابر با block باشد، اسکریپت باید لیست بازه‌های آی‌پی موجود در فایل را دریافت کند و درخواست‌های ورودی مربوط به این آی‌پی‌ها را به‌ازای همه‌ی پروتکل‌ها و پورت‌ها DROP کند. اگر rule مربوط به ACCEPT کردن این درخواست‌ها از قبل موجود بود، اسکریپت باید آن‌ها را حذف کند.
  • اگر مقدار command برابر با unblock باشد، اسکریپت باید لیست بازه‌های آی‌پی موجود در فایل را دریافت کند و درخواست‌های ورودی مربوط به این آی‌پی‌ها را به‌ازای همه‌ی پروتکل‌ها و پورت‌ها ACCEPT کند. اگر rule مربوط به DROP کردن این درخواست‌ها از قبل موجود بود، اسکریپت باید آن‌ها را حذف کند.

نکات

  • عملیات مسدودسازی و آزادسازی درخواست‌ها باید با استفاده از iptables انجام شود.
  • داوری این سؤال کمی بیشتر از سایر سؤالات طول می‌کشد.
  • بازه‌های آی‌پی طبق نگارش CIDR هستند.
  • تضمین می‌شود که هیچ rule ای خارج از اسکریپت اضافه نمی‌شود.

آن‌چه باید آپلود کنید

پس از پیاده‌سازی موارد خواسته‌شده، فایل country_manager.sh را آپلود کنید.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.