Gozargah / Marzban

Unified GUI Censorship Resistant Solution Powered by Xray
https://t.me/gozargah_marzban
GNU Affero General Public License v3.0
3.35k stars 465 forks source link

اکسپایر شدن اکانت با حجم و زمان باقیمانده #850

Open automa-gen opened 7 months ago

automa-gen commented 7 months ago

درود

اخیرا بعد از آپدیت به 0.4.3 چند مورد پیش اومده که اکانت کاربر اکسپایر میشه ولی هم حجم باقیمانده داره هم زمان. یک نمونه رو ضمیمه کردم. Screenshot_20240305-122237

SaintShit commented 7 months ago

@diditra سلام به نسخه ۰.۴.۹ ارتقا بدین بررسی کنید مشکل هنوز وجود داره؟

WebiloMain commented 6 months ago

@diditra سلام به نسخه ۰.۴.۹ ارتقا بدین بررسی کنید مشکل هنوز وجود داره؟

درود ، شب و روز شما بخیر آرزوی سلامتی و موفقیت برای شما و تیمتون بنده به یک باگ هماهنند باگ موجود در تیکت برخوردم نسخه دولوپر هم نیست و v0.4.9 هستم، دراین باگ زمانی که کاربر توسط حجم یا انقضای اشتراکش به پایان میرسه و مجدد توسط بنده و یا ربات تمدید میشه، توی برنامه همچنان ارور EOF میده اما در لینک ساب و در پنل مرزبان اون رو تمدید شده نشون میده درواقع زمانی که تمدید میشه لینک ساب کاربر را کپی کنی و در مرورگر اجرا کنی در خروجی میگه اشتراک فعال است و اگر همون ساب رو در v2ray یا هرکلاینتی وارد کنی و متصل بشی ارور eof میخوره. راه حل این باگ برای بنده این بود که اشتراک کاربر رو یک بار rekove کنم و مجدد براش ارسال کنم که در اوایل میشکلی نداشت ولی جدیدا خیلی دردسر شده. با تشکر از شما و وقتی که گذاشتید برای خوندن این تیکت.

vahidyeganeh1373 commented 6 months ago

سلام منم چند بار این اتفاق افتاد که امروز موفق شدم ازش عکس بگیرم توی اخرین ورژن هم هست 0.4.9 با توجه به حرف دوستمون این اکانت رو Revoke هم نکردم Untitlssed

mohandex commented 5 months ago

با شلام خدمت همه عزیزان @gozarman @govfvck دوستان عزیز مرزبان چقدر زمان میبره که این باگ رفع بشه؟ الان بیشتر از ۱۵ روز هست که این باگ رو مشاهده کردیم شرح باگ: کاربر بعد تمدید اکانتش active هست اما ارور eof میگیره و نیاز یک بار اکانتش disable بشه و باز دوباره enable بشه تا باگ رفع بشه خیلی باگ ازار دهنده ای شده متاشفانه

automa-gen commented 2 months ago

درود

این مشکل همچنان پابرجاست حتی در ورژن 0.6.0. به نظر میرسه به این ربط داشته باشه که بات چند ریکوئست مختلف مرزبان (که تداخلی با هم ندارن) رو همزمان اجرا میکنه. ما توی ddbot بین این ریکوئستها sleep یک ثانیه ای گذاشتیم که یه کم شرایط رو بهتر کرد ولی همچنان اتفاق میفته. یوزر ساخته یا تمدید میشه، حجم و زمان هم درست ست میشه، مصرف قبلیش هم درست ریست میشه، وضعیتش روی پنل مرزبان هم active هست ولی کانفیگهاش eof میدن. اکثر موارد با disable و enable کردن اکانت مشکل حل میشه. به نظر میرسه یک race condition یک جایی هست.

ImMohammad20000 commented 2 months ago

یوزر فقط لیمیت میشه یا اکسپایر هم میشه؟

ImMohammad20000 commented 2 months ago

با شلام خدمت همه عزیزان @gozarman @govfvck دوستان عزیز مرزبان چقدر زمان میبره که این باگ رفع بشه؟ الان بیشتر از ۱۵ روز هست که این باگ رو مشاهده کردیم شرح باگ: کاربر بعد تمدید اکانتش active هست اما ارور eof میگیره و نیاز یک بار اکانتش disable بشه و باز دوباره enable بشه تا باگ رفع بشه خیلی باگ ازار دهنده ای شده متاشفانه

بجز مرزبان چیز دیگه ای هم نصب دارید که با پنل کار کنه ربات مثلا؟

erfjab commented 2 months ago

درود

این مشکل همچنان پابرجاست حتی در ورژن 0.6.0. به نظر میرسه به این ربط داشته باشه که بات چند ریکوئست مختلف مرزبان (که تداخلی با هم ندارن) رو همزمان اجرا میکنه. ما توی ddbot بین این ریکوئستها sleep یک ثانیه ای گذاشتیم که یه کم شرایط رو بهتر کرد ولی همچنان اتفاق میفته. یوزر ساخته یا تمدید میشه، حجم و زمان هم درست ست میشه، مصرف قبلیش هم درست ریست میشه، وضعیتش روی پنل مرزبان هم active هست ولی کانفیگهاش eof میدن. اکثر موارد با disable و enable کردن اکانت مشکل حل میشه. به نظر میرسه یک race condition یک جایی هست.

برای موضوع expired شدن وضعیت کاربر، بهتره از طریق api به اطلاعات کاربر ریکویست بزنید. نتیجه رو ارسال کنید.

vahidyeganeh1373 commented 2 months ago

یوزر فقط لیمیت میشه یا اکسپایر هم میشه؟

فقط اکسپایر میشه بعنوان مثال نوشته ۱۹ روز دیگه زمان داره ولی ارور eof میده فقط نیازه روی یوزر کلیک کنیم و بدون تغییر چیزی، Edit رو بزنیم اوکی میشه البته اینم بگم فقط بعضی از کاربرها زمانی که تازه تمدید میکنن تا ۲۴ بعدش این اتفاق میافته

automa-gen commented 2 months ago

درود

این مشکل همچنان پابرجاست حتی در ورژن 0.6.0. به نظر میرسه به این ربط داشته باشه که بات چند ریکوئست مختلف مرزبان (که تداخلی با هم ندارن) رو همزمان اجرا میکنه. ما توی ddbot بین این ریکوئستها sleep یک ثانیه ای گذاشتیم که یه کم شرایط رو بهتر کرد ولی همچنان اتفاق میفته. یوزر ساخته یا تمدید میشه، حجم و زمان هم درست ست میشه، مصرف قبلیش هم درست ریست میشه، وضعیتش روی پنل مرزبان هم active هست ولی کانفیگهاش eof میدن. اکثر موارد با disable و enable کردن اکانت مشکل حل میشه. به نظر میرسه یک race condition یک جایی هست.

خب این مشکل رو با استفاده از صفحه OpenAPI مرزبان بیشتر تست کردیم و مشخص شد باگ کجاست. البته با مشکلاتی که چند ماه پیش گزارش شده متفاوت هست و تو نسخه 0.5 یا 0.6 به وجود اومده. اگر یه ریکوئست POST به این شکل بزنم برای ایجاد یوزر جدید:

{ "username": "user1234", "proxies": { "vmess": {}, "vless": {} }, "inbounds": { "vmess": [ "VMess Websocket" ], "vless": [ "Legacy", "de+usd" ] }, "expire": 0, "data_limit": 0, "status": "active", "note": "Test1234" }

کانفیگهای ویلس همه EOF میزنن ولی ویمسها وصل میشن. اما اگر ریکوئست POST برای ایجاد یوزر رو اینجوری بزنم که همه اینباندها انتخاب بشن:

{ "username": "user1234", "proxies": { "vmess": {}, "vless": {} }, "inbounds": { "vmess": [ ], "vless": [ ] }, "expire": 0, "data_limit": 0, "status": "active", "note": "Test1234" }

این بار دقیقا همون کانفیگها میان توی ساب ولی همه کار میکنن و پینگ میدن.

mohandex commented 2 months ago

با شلام خدمت همه عزیزان @gozarman @govfvck دوستان عزیز مرزبان چقدر زمان میبره که این باگ رفع بشه؟ الان بیشتر از ۱۵ روز هست که این باگ رو مشاهده کردیم شرح باگ: کاربر بعد تمدید اکانتش active هست اما ارور eof میگیره و نیاز یک بار اکانتش disable بشه و باز دوباره enable بشه تا باگ رفع بشه خیلی باگ ازار دهنده ای شده متاشفانه

بجز مرزبان چیز دیگه ای هم نصب دارید که با پنل کار کنه ربات مثلا؟

بله ربات هست

mohandex commented 2 months ago

درود این مشکل همچنان پابرجاست حتی در ورژن 0.6.0. به نظر میرسه به این ربط داشته باشه که بات چند ریکوئست مختلف مرزبان (که تداخلی با هم ندارن) رو همزمان اجرا میکنه. ما توی ddbot بین این ریکوئستها sleep یک ثانیه ای گذاشتیم که یه کم شرایط رو بهتر کرد ولی همچنان اتفاق میفته. یوزر ساخته یا تمدید میشه، حجم و زمان هم درست ست میشه، مصرف قبلیش هم درست ریست میشه، وضعیتش روی پنل مرزبان هم active هست ولی کانفیگهاش eof میدن. اکثر موارد با disable و enable کردن اکانت مشکل حل میشه. به نظر میرسه یک race condition یک جایی هست.

خب این مشکل رو با استفاده از صفحه OpenAPI مرزبان بیشتر تست کردیم و مشخص شد باگ کجاست. البته با مشکلاتی که چند ماه پیش گزارش شده متفاوت هست و تو نسخه 0.5 یا 0.6 به وجود اومده. اگر یه ریکوئست POST به این شکل بزنم برای ایجاد یوزر جدید:

{ "username": "user1234", "proxies": { "vmess": {}, "vless": {} }, "inbounds": { "vmess": [ "VMess Websocket" ], "vless": [ "Legacy", "de+usd" ] }, "expire": 0, "data_limit": 0, "status": "active", "note": "Test1234" }

کانفیگهای ویلس همه EOF میزنن ولی ویمسها وصل میشن. اما اگر ریکوئست POST برای ایجاد یوزر رو اینجوری بزنم که همه اینباندها انتخاب بشن:

{ "username": "user1234", "proxies": { "vmess": {}, "vless": {} }, "inbounds": { "vmess": [ ], "vless": [ ] }, "expire": 0, "data_limit": 0, "status": "active", "note": "Test1234" }

این بار دقیقا همون کانفیگها میان توی ساب ولی همه کار میکنن و پینگ میدن.

بله من هم تست کردم ظاهرا مشکل از همین قظیه هست امیدوارم زودتر رفع بشه

automa-gen commented 2 months ago

درود این مشکل همچنان پابرجاست حتی در ورژن 0.6.0. به نظر میرسه به این ربط داشته باشه که بات چند ریکوئست مختلف مرزبان (که تداخلی با هم ندارن) رو همزمان اجرا میکنه. ما توی ddbot بین این ریکوئستها sleep یک ثانیه ای گذاشتیم که یه کم شرایط رو بهتر کرد ولی همچنان اتفاق میفته. یوزر ساخته یا تمدید میشه، حجم و زمان هم درست ست میشه، مصرف قبلیش هم درست ریست میشه، وضعیتش روی پنل مرزبان هم active هست ولی کانفیگهاش eof میدن. اکثر موارد با disable و enable کردن اکانت مشکل حل میشه. به نظر میرسه یک race condition یک جایی هست.

خب این مشکل رو با استفاده از صفحه OpenAPI مرزبان بیشتر تست کردیم و مشخص شد باگ کجاست. البته با مشکلاتی که چند ماه پیش گزارش شده متفاوت هست و تو نسخه 0.5 یا 0.6 به وجود اومده. اگر یه ریکوئست POST به این شکل بزنم برای ایجاد یوزر جدید:

{ "username": "user1234", "proxies": { "vmess": {}, "vless": {} }, "inbounds": { "vmess": [ "VMess Websocket" ], "vless": [ "Legacy", "de+usd" ] }, "expire": 0, "data_limit": 0, "status": "active", "note": "Test1234" }

کانفیگهای ویلس همه EOF میزنن ولی ویمسها وصل میشن. اما اگر ریکوئست POST برای ایجاد یوزر رو اینجوری بزنم که همه اینباندها انتخاب بشن:

{ "username": "user1234", "proxies": { "vmess": {}, "vless": {} }, "inbounds": { "vmess": [ ], "vless": [ ] }, "expire": 0, "data_limit": 0, "status": "active", "note": "Test1234" }

این بار دقیقا همون کانفیگها میان توی ساب ولی همه کار میکنن و پینگ میدن.

این مورد خاص مشکلش پیدا شد. باگ از مرزبان نبود. مشکل اینجا بود که کاربر کانفیگ مربوط به اینباند رو زیر مجموعه اینباند دیگه قرار داده بود توی قسمت Host settings. بعد موقع ساخت یوزر اینباندی که کانفیگی نداشت ولی برای کانفیگهای دیگه لازم نبود رو انتخاب نمیکرد.

اما همچنان مشکلی که یوزر تمدید میکنه و تمدید هم میشه ولی کانفیگهاش eof میزنن باقیه. روی همه پنلها هم پیش نمیاد. وضعیت یوزر active هست و حجم و زمان هم درست ست شده. با توجه به اینکه این مورد فقط موقع استفاده از بات و فقط موقع تمدید پیش میاد ما اومدیم یه سری تست انجام دادیم. فاصله زمانی بین ریکوئستهای ریست کردن ترافیک و ریکوئست modify یوزر تاثیر داره. اگر سریع پشت سر هم زده بشن قطعا این این اتفاق میفته. ریکوئستها با موفقیت انجام میشن و مصرف یوزر ریست میشه و حجم و زمان جدید هم درست ست میشه. اما کانفیگهاش eof میدن. با یک بار enable و disable کردن دستی اکانت مشکل برطرف میشه.

automa-gen commented 1 month ago

یه مورد دیگه تو نسخه 0.6.0

Screenshot_20240812-174452~2

Screenshot_20240812-174507

erfjab commented 1 month ago

یه مورد دیگه تو نسخه 0.6.0

این اکانت چطوری ساخته شده؟ با api یا از طریق پنل؟ اگر از طریق api هست لطفا نحوه‌ی درخواست زدن تون رو برای ساخت کاربر ارسال کنید.

automa-gen commented 1 month ago

یه مورد دیگه تو نسخه 0.6.0

این اکانت چطوری ساخته شده؟ با api یا از طریق پنل؟ اگر از طریق api هست لطفا نحوه‌ی درخواست زدن تون رو برای ساخت کاربر ارسال کنید.

خود اکانت قبلا از طریق بات ساخته شده ولی همونطوری که توی نوت میبینید آخرین اتفاقی که روش افتاده تمدید توسط بات بوده. برای تمدید ما api های زیر رو صدا میزنیم:

POST: /user/{username}/reset

بعدش یک ثانیه sleep. چون از ورژن 0.4.3 به بعد بدون sleep اکانت تمدید میشد ولی بعدش EOF میداد با وجود اینکه status اکتیو بود! یک ثانیه تاخیر رو که اضافه کردیم تقریبا دیگه پیش نیومد. اما هنوز هم هستن کسایی که مشکل دارن و این خودش یه مشکل دیگست. بعد از یک ثانیه تاخیر همچین ریکوئستی میزنه بات:

PUT: /user/{username} payload: {"status":"active","enabled":true,"note":"Renewed by 85997915 at 14-08-2024 20:36:08","expire":1724087167,"data_limit":10737418240}

بسته به پنل شاید یک در 100 یوزر تو حالت expired قرار میگیره حالا یا بعد از یه مدت یا دقیقا بعد از تمدید. گفتنش سخته چون یوزر همون لحظه اطلاع نمیده.