قواعد جدول ایستا هستند؛ حالت script میگذارد تکهای JavaScript برای هر اتصال پویا خروجی تعیین کند - بر اساس ساعت روز، پورت، IP تفکیکشده، هر ترکیبی. قابلیت هسته Premium و در CFW آماده استفاده.
فعالسازی
بخش سطح بالای script اضافه کنید و mode: script بگذارید (در سوییچ حالتِ کلاینت گزینه Script ظاهر میشود):
mode: script
script:
code: |
function main(ctx, metadata) {
// نام خروجی برگردانید: گروه / "DIRECT" / "REJECT"
if (metadata.host && metadata.host.endsWith("company.com")) {
return "DIRECT";
}
// شبها ترافیک بازی مستقیم، باقی ساعات از پروکسی
const hour = new Date().getHours();
if (metadata.dst_port === 3074 && hour >= 1 && hour <= 7) {
return "DIRECT";
}
// بقیه به موتور قواعد
return ctx.resolveOutbound(metadata) ?? "Select";
}
فیلدهای مفید metadata
| فیلد | معنی |
|---|---|
host | دامنه مقصد (برای اتصال IP خام خالی است) |
dst_ip / dst_port | IP و پورت مقصد |
src_ip / src_port | آدرس مبدأ (تمایز دستگاهها با allow-lan) |
network | tcp / udp |
process_name | فرایند آغازگر (زیر TUN) |
زمینه توابع کمکی هم دارد - ctx.geoip(ip)، ctx.resolveIP(host) - برای منطق «اول تفکیک، بعد تصمیم» که با قواعد ساده بیانشدنی نیست.
میانبرهای script: راه سبک
نمیخواهید کل حالت را بگیرید؟ عبارتهای کوتاه تعریف و از قواعد عادی صدا بزنید - بهترین هر دو دنیا:
script:
shortcuts:
late-night-game: dst_port == 3074 and now.hour < 7
rules:
- SCRIPT,late-night-game,DIRECT
- MATCH,Select
هشدارها
- اسکریپت روی هر اتصال اجرا میشود؛ منطق سنگین تأخیر را چند برابر میکند. هرچه با قاعده بیان میشود، با قاعده.
- اسکریپت خطادار اتصال را میاندازد؛ بعد از تغییر، صفحه Logs را بپایید.
- هرگز اسکریپت پیکربندیهای غیرمطمئن را اجرا نکنید - هرچه قابلیت قویتر، پروفایل بدخواه خطرناکتر.