Mahdi-zarei / nekoray

Qt based cross-platform GUI proxy configuration manager (backend: sing-box)
GNU General Public License v3.0
243 stars 17 forks source link

Suggestion for Routing #46

Open AkramiPro opened 1 week ago

AkramiPro commented 1 week ago

آقا اول ممنون هستم ازت که وقت میزاری و این برنامه رو توسعه میدی ❤️ در مورد روتینگ به نظرم تغییرات جدید که توی ui داده شده مناسب نیست به نظرم اگر ui رو تغییر نمیدادی و فقط یه migration براش میزدی که همون ui قدیم در بکند با هسته جدید سازگار بشه بهتر بود چون کاربر که به این همه رول پیچیده نیاز نداره . فقط نیاز دارن که مشخص کنن کدوم سایت bypass بشه یا block بشه برای همین به نظرم ui به نسخه قدیمی برگرده و هر کس نیاز داشت که رول های پیچیده طراحی کنه یه بخش باشه که بتونه json وارد کنه یا از custom config استفاده کنن اینطوری هم کاربر های معمولی مشکلشون حل میشه و هم کسی که بخواد رول پیچیده وارد کنه دیگه قطعا بلده با json کار کنه منم اون تایم که اون ایشو رو زدم مشکلم دقیقا این بود که میخواستم با json رول ها رو بزنم ولی سینتکس جدید رول ها رو پشتیبانی نمیکرد و منظورم این بود که فقط از نسخه جدید رول ها پشتیبانی بشه و نیازی به تغییر ui نبود بازم ممنون ازت میدونم خیلی زحمت کشیدی سر این ui جدید ولی الان چون دیدم خیلی ایشو میزنن و مشکل ساز شده گفتم شاید این راه حل بتونه کمک کنه

Mahdi-zarei commented 1 week ago

مشکل ui قدیمی این هست که نمیشه باهاش rule set ها رو درست ساپورت کرد و اینکه نمیشه از profile های دیگه به عنوان outbound توش استفاده کرد. امکان اضافه کردن route profile با جیسون رو در آینده قرار هست بزنم ولی استفاده از outbound های دیگه و rule set ها توش سخت خواهد بود بخاطر اینکه یه outbound آی دی داره و بر اساس اسمش مشخص نمیشه ( میشه 100 تا پروفایل با اسم یکسان و کانفیگ متفاوت داشت ). جدا ازون یکم عجیب هست کسی بیشتر از 4 5 تا rule نیاز داشته باشه و خوب 4 5 rule رو به راحتی میشه با ui جدید اضافه کرد. تنها نکته ای که اینجا اذیت کنندس استفاده برای کاربر های تازه کار هست که اونم با اضافه شدن پروفایل های دیفالت bypass برای ایران و چین احتمالا اوکی میشه.

AkramiPro commented 5 days ago

ببین متوجه هستم ولی اینکه این همه تنظیمات رو بیاریم تو ui به نظرم اصلا کاربردی نیست . چون الان اضافه کردن اینا به صورت json خیلی راحت تر از حالت ui هست برای حالت ui به نظرم در این حد که بشه دامنه یا آیپی مورد نظر رو direct/proxy/block کرد کافی هست. اگر هم خواستن از geoip یا geosite استفاده کنن میتونی 2 حالت رو در نظر بگیری یا آدرس کامل وارد کنن که توی rule_set بذاری یا فقط آیدی رول رو بدن و از آدرس مخزن پیشفرض خود سین باکس استفاده کنی مثلا اگر اینطوری وارد کردن geoip:ir برنامه خودش کد زیر رو اضافه کنه به rule_set

{
    "format": "binary",
    "tag": "geoip-ir",
    "type": "remote",
    "url": "https://github.com/SagerNet/sing-geoip/raw/rule-set/geoip-ir.srs"
},

حالا اگر کسی هم خواست که از url خودش استفاده کنه اینطوری وارد کنه :

geoip:https://raw.githubusercontent.com/Chocolate4U/Iran-sing-box-rules/rule-set/geoip-ir.srs

اینطوری هم فرمت قدیم رو پشتیبانی میکنی و کاربرای قدیم به مشکل نمیخورن دیگه لازم نیست رول هاشون رو آپدیت کنن هم کاربرای جدید میتونن از امکانات جدید هسته استفاده کنن

اگر هم میبینی واقعا نیاز هست که این ui جدید وجود داشته باشه به نظرم یه سوئیچ اضافه کن به اسم Advance که اگر فعال کردن این ui جدید رو نشون بده . اینطوری هم قدیمی ها اوکی هستن هم جدید ها

اون داستان outbound رو قبول دارم ولی همه از این استفاده نمیکنن . بیشتر فقط میخوان اون دامنه مورد نظرشون رو direct/proxy/block کنن .

بازم ممنون که وقت میزاری و جواب میدی

Mahdi-zarei commented 5 days ago

موافقم بنظرم وجود این میتونه مفید باشه، یه بخش ساده که append بشه به rule های قسمت جدید و صرفا بشه توش direct و block رو مشخص کرد شبیه ui قبلی.