精简版第四轮补裁(P4): 页面层摘除 + Xray更新端点下线 + 本机核心监管下线

页面层(用户真机截图发现前两轮漏裁):
- 设置: 摘除 Telegram机器人/邮件菜单与页面, 及页内残留入口(通知页/外部流量/LDAP/2FA设置页)
- Xray配置: 摘除负载均衡/DNS/高级配置菜单与页面; 基础配置(出站+路由)完好
- 总览: 摘除 Xray更新弹窗(VersionModal+GeodataSection)全部入口, 版本号改为静态展示
- 13个locale同步摘除461个已删功能专属翻译键(逐键核查前后端引用为零; i18n-dead-keys测试全绿)

Xray更新后端(经调查确认仅服务本机bin/xray, 与agent下发/订阅无关):
- 删除 getXrayVersion/installXray/updateGeofile 路由与handler(访问返回404)
- 删除 ServerService 对应实现与校验和函数; 同步api-docs/monitor白名单/openapi

本机核心监管下线(设计: 主控永不运行本机xray, 入站全在agent):
- XrayService.RestartXray 降级为no-op(一次性Warning说明日志); StopXray无进程时幂等返回
- web.go 摘除启动拉起本机核心/CheckXrayRunning看门狗(1s)/ApplyPendingRestart cron(30s)/XrayTrafficJob/CheckClientIpJob 注册
- ApplyPendingRestart 降级为消费即清, 其测试更新为新语义
- XrayMetricsService.Sample 短路: 不再每2s探本机/debug/vars, 状态优雅置为不可用
- 配置生成(纯JSON)/agent链路/订阅/入站CRUD未动; 状态读数优雅归零(stop/Unknown)

注: TestGetXrayConfig_EnabledClientsStillEmitted 在基线945b3a5同样失败(既有问题, 非本轮引入)
This commit is contained in:
Muse
2026-10-20 14:58:05 +00:00
parent 945b3a56a2
commit 4828f946b1
56 changed files with 149 additions and 11458 deletions
+4 -466
View File
@@ -67,16 +67,12 @@
"success": "موفق",
"lastOnline": "آخرین فعالیت",
"lastSubFetch": "آخرین دریافت اشتراک",
"getVersion": "دریافت نسخه",
"install": "نصب",
"clients": "کاربران",
"usage": "استفاده",
"twoFactorCode": "کد",
"remained": "باقی‌مانده",
"security": "امنیت",
"emptyDnsDesc": "هیچ سرور DNS اضافه نشده است.",
"emptyFakeDnsDesc": "هیچ سرور Fake DNS اضافه نشده است.",
"emptyBalancersDesc": "هیچ بالانسر اضافه نشده است.",
"somethingWentWrong": "مشکلی پیش آمد",
"subscription": {
"title": "اطلاعات سابسکریپشن",
@@ -87,7 +83,6 @@
"uploaded": "آپلود",
"expiry": "تاریخ پایان",
"totalQuota": "حجم کلی",
"individualLinks": "لینک‌های تکی",
"active": "فعال",
"inactive": "غیرفعال",
"unlimited": "نامحدود",
@@ -136,9 +131,6 @@
"xrayStatus": "Xray",
"stopXray": "توقف",
"restartXray": "راه‌اندازی مجدد",
"xraySwitch": "‌نسخه",
"xrayUpdates": "به‌روزرسانی‌های Xray",
"xraySwitchClickDesk": "لطفا بادقت انتخاب کنید. درصورت انتخاب نسخه قدیمی‌تر، امکان ناهماهنگی با پیکربندی فعلی وجود دارد",
"updatePanel": "به‌روزرسانی پنل",
"panelUpdateDesc": "این عملیات 3X-UI را به آخرین نسخه به‌روزرسانی می‌کند و سرویس پنل را مجدداً راه‌اندازی می‌کند.",
"currentPanelVersion": "نسخه فعلی پنل",
@@ -200,9 +192,6 @@
"download": "دانلود",
"sent": "ارسال شده",
"received": "دریافت شده",
"xraySwitchVersionDialog": "آیا واقعاً می‌خواهید نسخه Xray را تغییر دهید؟",
"xraySwitchVersionDialogDesc": "این کار نسخه Xray را به #version# تغییر می‌دهد.",
"xraySwitchVersionPopover": "Xray با موفقیت به‌روز شد",
"panelUpdateDialog": "آیا مطمئن هستید که می‌خواهید پنل را به‌روزرسانی کنید؟",
"panelUpdateDialogDesc": "این 3X-UI را به نسخه #version# به‌روزرسانی کرده و سرویس پنل را مجدداً راه‌اندازی می‌کند.",
"panelUpdateStartedPopover": "به‌روزرسانی پنل آغاز شد",
@@ -210,24 +199,6 @@
"panelUpdateFailedDesc": "به‌روزرسانی با موفقیت به پایان نرسید. گزارش‌های سرور را بررسی کنید یا دستور «x-ui update» را از خط فرمان اجرا کنید.",
"panelUpdateUnknownTitle": "تأیید نشد که به‌روزرسانی به پایان رسیده باشد",
"panelUpdateUnknownDesc": "پنل به‌موقع نتیجه‌ای گزارش نکرد. صفحه را بارگذاری مجدد کنید تا نسخه فعلی را بررسی کنید یا گزارش‌های سرور را بررسی کنید.",
"geofileUpdateDialog": "آیا واقعاً می‌خواهید فایل جغرافیایی را به‌روز کنید؟",
"geofileUpdateDialogDesc": "این عمل فایل #filename# را به‌روز می‌کند.",
"geofilesUpdateDialogDesc": "با این کار همه فایل‌ها به‌روزرسانی می‌شوند.",
"geofilesUpdateAll": "همه را به‌روزرسانی کنید",
"geofileUpdatePopover": "فایل جغرافیایی با موفقیت به‌روز شد",
"geodataTitle": "به‌روزرسانی خودکار Geodata",
"geodataHint": "Xray این فایل‌ها را طبق زمان‌بندی دانلود کرده و بدون ری‌استارت بارگذاری مجدد می‌کند. آدرس‌ها باید HTTPS باشند. هر فایل باید از قبل در پوشه bin موجود باشد تا Xray بتواند آن را به‌روزرسانی کند.",
"geodataCron": "زمان‌بندی (cron)",
"geodataOutbound": "دانلود از طریق خروجی (اختیاری)",
"geodataFile": "نام فایل",
"geodataAddFile": "افزودن فایل",
"geodataSaveRestart": "ذخیره و ری‌استارت Xray",
"geodataConfirmTitle": "تنظیمات geodata ذخیره شود؟",
"geodataConfirmContent": "قالب پیکربندی Xray به‌روزرسانی و Xray ری‌استارت می‌شود.",
"geodataInvalidUrl": "هر فایل به یک آدرس HTTPS نیاز دارد.",
"geodataInvalidFile": "نام فایل باید ساده باشد، مانند geosite_custom.dat (بدون مسیر).",
"geodataInvalidCron": "Cron باید ۵ بخش داشته باشد، مثل 0 4 * * *",
"geodataEmpty": "فایلی پیکربندی نشده است. در قوانین مسیریابی فایل‌ها به صورت ext:geosite_custom.dat:category استفاده می‌شوند.",
"dontRefresh": "در حال نصب، لطفا صفحه را رفرش نکنید",
"logs": "لاگ‌ها",
"accessLogs": "لاگ‌های دسترسی",
@@ -1082,7 +1053,6 @@
"warnDefaultBasePath": "مسیر پایه پیش‌فرض «/» شناخته‌شده است — آن را به یک مسیر تصادفی تغییر دهید.",
"warnDefaultSubPath": "مسیر ساب پیش‌فرض «/sub/» شناخته‌شده است — تغییرش دهید.",
"warnDefaultJsonPath": "مسیر JSON ساب پیش‌فرض «/json/» شناخته‌شده است — تغییرش دهید.",
"TGBotSettings": "ربات تلگرام",
"panelListeningIP": "آدرس آی‌پی",
"panelListeningIPDesc": "آدرس آی‌پی برای وب پنل. برای گوش‌دادن به‌تمام آی‌پی‌ها خالی‌بگذارید",
"panelListeningDomain": "نام دامنه",
@@ -1111,43 +1081,12 @@
"currentPassword": "رمز‌عبور فعلی",
"newUsername": "نام‌کاربری جدید",
"newPassword": "رمزعبور جدید",
"telegramBotEnable": "فعال‌سازی ربات تلگرام",
"telegramBotEnableDesc": "ربات تلگرام را فعال می‌کند",
"telegramToken": "توکن تلگرام",
"telegramTokenDesc": "دریافت کنید {'@'}botfather توکن را می‌توانید از",
"telegramProxy": "پراکسی SOCKS",
"telegramProxyDesc": "را برای اتصال به تلگرام فعال می کند SOCKS5 پراکسی",
"telegramAPIServer": "سرور API تلگرام",
"telegramAPIServerDesc": "API سرور تلگرام برای اتصال را تغییر میدهد. برای استفاده از سرور پیش فرض خالی بگذارید",
"telegramChatId": "آی‌دی چت مدیر",
"telegramChatIdDesc": "دریافت ‌کنید ('/id'یا (دستور ({'@'}userinfobot) آی‌دی(های) چت تلگرام مدیر، از",
"telegramNotifyTime": "زمان نوتیفیکیشن",
"telegramNotifyTimeDesc": "هر چند وقت یک‌بار ربات تلگرام گزارش دوره‌ای بفرستد. یک بازهٔ آماده انتخاب کنید یا گزینهٔ سفارشی را بزنید تا عبارت crontab وارد کنید.",
"notifyTime": {
"every": "@every — تکرار در یک بازه",
"hourly": "@hourly — هر ساعت",
"daily": "@daily — هر روز ساعت ۰۰:۰۰",
"weekly": "@weekly — هر هفته",
"monthly": "@monthly — هر ماه",
"custom": "سفارشی (crontab)",
"seconds": "ثانیه",
"minutes": "دقیقه",
"hours": "ساعت",
"interval": "بازه زمانی",
"unit": "واحد"
},
"tgNotifyBackup": "پشتیبان‌گیری از دیتابیس",
"tgNotifyBackupDesc": "فایل پشتیبان‌دیتابیس را به‌همراه گزارش ارسال می‌کند",
"tgNotifyLogin": "اعلان ورود",
"tgNotifyLoginDesc": "نام‌کاربری، آدرس آی‌پی، و زمان ورود، فردی که سعی می‌کند وارد پنل شود را نمایش می‌دهد",
"sessionMaxAge": "بیشینه زمان جلسه وب",
"sessionMaxAgeDesc": "(بیشینه زمانی که می‌توانید لاگین بمانید. (واحد: دقیقه",
"expireTimeDiff": "آستانه زمان باقی مانده",
"expireTimeDiffDesc": "(فاصله زمانی هشدار تا رسیدن به زمان انقضا. (واحد: روز",
"trafficDiff": "آستانه ترافیک باقی مانده",
"trafficDiffDesc": "(فاصله زمانی هشدار تا رسیدن به اتمام ترافیک. (واحد: گیگابایت",
"tgNotifyCpu": "آستانه هشدار بار پردازنده",
"tgNotifyCpuDesc": "(اگر بار روی پردازنده ازاین آستانه فراتر رفت، برای شما پیام ارسال می‌شود. (واحد: درصد",
"timeZone": "منطقه زمانی",
"timeZoneDesc": "وظایف برنامه ریزی شده بر اساس این منطقه‌زمانی اجرا می‌شود",
"subSettings": "سابسکریپشن",
@@ -1212,10 +1151,6 @@
"subEncryptDesc": "کدگذاری خواهدشد Base64 محتوای برگشتی سرویس سابسکریپشن برپایه",
"subURI": "پروکسی معکوس URI مسیر",
"subURIDesc": "آدرس پایه کامل (scheme://domain[:port]/path/) برای لینک سابسکریپشن و کد QR، به جای نام دامنه/پورت استفاده می‌شود. هر وقت سابسکریپشن از پشت یک پراکسی معکوس یا روی دامنه/پورت متفاوتی نسبت به موارد بالا در دسترس است، این را پر کنید.",
"externalTrafficInformEnable": "اطلاع رسانی خارجی مصرف ترافیک",
"externalTrafficInformEnableDesc": "به API خارجی در هر به‌روزرسانی ترافیک اطلاع بده.",
"externalTrafficInformURI": "لینک اطلاع رسانی خارجی مصرف ترافیک",
"externalTrafficInformURIDesc": "ترافیک های مصرفی به این لینک هم ارسال می شود",
"restartXrayOnClientDisable": "ری‌استارت Xray بعد از غیرفعال‌سازی خودکار",
"restartXrayOnClientDisableDesc": "وقتی کاربر به‌صورت خودکار به‌دلیل اتمام زمان یا ترافیک غیرفعال می‌شود، Xray ری‌استارت شود.",
"fragment": "فرگمنت",
@@ -1225,38 +1160,6 @@
"noisesSett": "تنظیمات Noises",
"trustedProxyCidrs": "CIDRهای پراکسی مورد اعتماد",
"trustedProxyCidrsDesc": "IPها/CIDRها (با کاما) که مجازند هدرهای host، proto و client IP فوروارد را تنظیم کنند.",
"ldap": {
"enable": "فعال‌سازی همگام‌سازی LDAP",
"host": "میزبان LDAP",
"port": "پورت LDAP",
"useTls": "استفاده از TLS (LDAPS)",
"skipTlsVerify": "رد کردن تأیید گواهی TLS",
"skipTlsVerifyDesc": "ناامن — اعتبارسنجی گواهی سرور را غیرفعال می‌کند. فقط برای CAهای داخلی/غیرمعتبر استفاده کنید.",
"bindDn": "Bind DN",
"passwordConfigured": "تنظیم‌شده؛ برای حفظ رمز فعلی خالی بگذارید.",
"passwordUnconfigured": "تنظیم نشده.",
"passwordPlaceholder": "تنظیم‌شده – برای جایگزینی مقدار جدید وارد کنید",
"baseDn": "Base DN",
"userFilter": "فیلتر کاربر",
"userAttr": "صفت کاربر (username/email)",
"vlessField": "صفت پرچم VLESS",
"flagField": "صفت پرچم عمومی (اختیاری)",
"flagFieldDesc": "اگر تعیین شود، پرچم VLESS را override می‌کند — مثل shadowInactive.",
"truthyValues": "مقادیر صحیح",
"truthyValuesDesc": "با کاما جدا شده؛ پیش‌فرض: true,1,yes,on",
"invertFlag": "وارونگی پرچم",
"invertFlagDesc": "وقتی صفت به معنی «غیرفعال» است فعال کنید (مثل shadowInactive).",
"syncSchedule": "زمان‌بندی همگام‌سازی",
"syncScheduleDesc": "رشته شبیه cron، مثل @every 1m",
"inboundTags": "تگ‌های ورودی",
"inboundTagsDesc": "ورودی‌هایی که همگام‌سازی LDAP اجازه دارد روی آن‌ها کاربر بسازد یا حذف کند.",
"noInbounds": "هیچ ورودی یافت نشد. ابتدا از بخش ورودی‌ها یکی بسازید.",
"autoCreate": "ساخت خودکار کاربران",
"autoDelete": "حذف خودکار کاربران",
"defaultTotalGb": "حجم پیش‌فرض (GB)",
"defaultExpiryDays": "انقضای پیش‌فرض (روز)",
"defaultIpLimit": "محدودیت IP پیش‌فرض"
},
"subFormats": {
"finalMask": "Final Mask",
"finalMaskDesc": "ماسک‌های TCP/UDP مربوط به Xray finalmask و پارامترهای QUIC را به هر پروفایل Xray JSON تولیدشده اضافه می‌کند. به برنامه‌ای با پشتیبانی از اشتراک Xray JSON و هسته جدید Xray نیاز دارد.",
@@ -1280,31 +1183,15 @@
"muxSett": "تنظیمات ماکس",
"direct": "اتصال مستقیم",
"directDesc": "به طور مستقیم با دامنه ها یا محدوده آی‌پی یک کشور خاص ارتباط برقرار می کند",
"notifications": "اعلان‌ها",
"certs": "گواهی‌ها",
"externalTraffic": "ترافیک خارجی",
"dateAndTime": "تاریخ و زمان",
"proxyAndServer": "پراکسی و سرور",
"intervals": "فواصل",
"information": "اطلاعات",
"profile": "پروفایل",
"language": "زبان",
"telegramBotLanguage": "زبان ربات تلگرام",
"security": {
"admin": "اعتبارنامه‌های ادمین",
"twoFactor": "احراز هویت دو مرحله‌ای",
"twoFactorEnable": "فعال‌سازی 2FA",
"twoFactorEnableDesc": "یک لایه اضافی امنیتی برای احراز هویت فراهم می‌کند.",
"twoFactorModalSetTitle": "فعال‌سازی احراز هویت دو مرحله‌ای",
"twoFactorModalDeleteTitle": "غیرفعال‌سازی احراز هویت دو مرحله‌ای",
"twoFactorModalSteps": "برای راه‌اندازی احراز هویت دو مرحله‌ای، مراحل زیر را انجام دهید:",
"twoFactorModalFirstStep": "1. این کد QR را در برنامه احراز هویت اسکن کنید یا توکن کنار کد QR را کپی کرده و در برنامه بچسبانید",
"twoFactorModalSecondStep": "2. کد را از برنامه وارد کنید",
"twoFactorModalRemoveStep": "برای حذف احراز هویت دو مرحله‌ای، کد را از برنامه وارد کنید.",
"twoFactorModalChangeCredentialsTitle": "تغییر اعتبارنامه‌ها",
"twoFactorModalChangeCredentialsStep": "برای تغییر اعتبارنامه‌های مدیر، کد را از برنامه وارد کنید.",
"twoFactorModalSetSuccess": "احراز هویت دو مرحله‌ای با موفقیت برقرار شد",
"twoFactorModalDeleteSuccess": "احراز هویت دو مرحله‌ای با موفقیت حذف شد",
"twoFactorModalError": "کد نادرست",
"show": "نمایش",
"hide": "پنهان",
@@ -1327,36 +1214,6 @@
"getOutboundTrafficError": "خطا در دریافت ترافیک خروجی",
"resetOutboundTrafficError": "خطا در بازنشانی ترافیک خروجی"
},
"smtpSettings": "تنظیمات SMTP",
"smtpEnable": "فعال‌سازی اعلان‌های ایمیلی",
"smtpEnableDesc": "فعال‌سازی اعلان‌های ایمیلی از طریق SMTP",
"smtpHost": "میزبان SMTP",
"smtpHostDesc": "نام میزبان سرور SMTP (مثلاً smtp.gmail.com)",
"smtpPort": "پورت SMTP",
"smtpPortDesc": "پورت سرور SMTP (پیش‌فرض: ۵۸۷)",
"smtpUsername": "نام‌کاربری SMTP",
"smtpUsernameDesc": "نام‌کاربری احراز هویت SMTP",
"smtpFrom": "آدرس فرستنده (From)",
"smtpFromDesc": "آدرس استفاده‌شده در سرآیند From ایمیل. برای استفاده از نام کاربری، خالی بگذارید.",
"smtpFromName": "نام فرستنده (From)",
"smtpFromNameDesc": "نام نمایشی اختیاری پیش از آدرس در سرآیند From.",
"smtpPassword": "رمز عبور SMTP",
"smtpPasswordDesc": "رمز عبور احراز هویت SMTP",
"smtpTo": "گیرندگان",
"smtpToDesc": "آدرس‌های ایمیل گیرندگان، جداشده با کاما",
"emailSettings": "ایمیل",
"emailNotifications": "اعلان‌ها",
"smtpEventBusNotify": "اعلان‌های رویداد ایمیلی",
"smtpEventBusNotifyDesc": "انتخاب کنید کدام رویدادها اعلان ایمیلی را فعال می‌کنند",
"tgEventBusNotify": "اعلان‌های رویداد تلگرام",
"tgEventBusNotifyDesc": "انتخاب کنید کدام رویدادها اعلان تلگرام را فعال می‌کنند",
"testSmtp": "ارسال ایمیل آزمایشی",
"testTgBot": "ارسال پیام آزمایشی",
"eventGroupOutbound": "خروجی",
"eventGroupXray": "هسته Xray",
"eventGroupSystem": "سیستم",
"eventGroupSecurity": "امنیت",
"eventGroupNode": "نودها",
"eventOutboundDown": "قطع",
"eventOutboundUp": "وصل",
"eventXrayCrash": "کرش",
@@ -1364,36 +1221,7 @@
"eventNodeUp": "وصل",
"eventCPUHigh": "بالا بودن CPU (٪)",
"requestFailed": "درخواست ناموفق بود",
"smtpEncryption": "رمزنگاری",
"smtpEncryptionDesc": "روش رمزنگاری اتصال SMTP",
"smtpEncryptionNone": "هیچ‌کدام (متن ساده)",
"smtpEncryptionStartTLS": "STARTTLS",
"smtpEncryptionTLS": "TLS (ضمنی)",
"smtpStageConnect": "اتصال",
"smtpStageAuth": "احراز هویت",
"smtpStageSend": "ارسال",
"smtpTestSuccess": "ایمیل آزمایشی با موفقیت ارسال شد",
"smtpHostNotConfigured": "میزبان SMTP پیکربندی نشده است",
"smtpNoRecipients": "هیچ گیرنده‌ای پیکربندی نشده است",
"smtpFromNotConfigured": "آدرس فرستنده SMTP پیکربندی نشده است",
"eventLoginAttempt": "تلاش برای ورود",
"telegramTokenConfigured": "پیکربندی شده؛ برای حفظ توکن فعلی خالی بگذارید.",
"telegramTokenPlaceholder": "پیکربندی شده - برای جایگزینی، توکن جدید وارد کنید",
"smtpPasswordConfigured": "پیکربندی شده؛ برای حفظ رمز عبور فعلی خالی بگذارید.",
"smtpPasswordPlaceholder": "پیکربندی شده - برای جایگزینی، رمز عبور جدید وارد کنید",
"smtpNotInitialized": "SMTP مقداردهی اولیه نشده است",
"tgBotNotEnabled": "ربات تلگرام فعال نیست",
"tgTestFailed": "آزمایش تلگرام ناموفق بود",
"tgTestSuccess": "پیام آزمایشی به تلگرام ارسال شد",
"tgBotNotRunning": "ربات تلگرام در حال اجرا نیست",
"smtpErrorAuth": "احراز هویت ناموفق بود — نام‌کاربری و رمز عبور را بررسی کنید",
"smtpErrorStarttls": "سرور به STARTTLS نیاز دارد — نوع رمزنگاری را تغییر دهید",
"smtpErrorTls": "سرور به TLS نیاز دارد — نوع رمزنگاری را تغییر دهید",
"smtpErrorRefused": "اتصال رد شد — میزبان و پورت را بررسی کنید",
"smtpErrorTimeout": "مهلت اتصال به پایان رسید — میزبان در دسترس نیست",
"smtpErrorRelay": "سرور ارسال از این آدرس را رد می‌کند",
"smtpErrorEof": "اتصال توسط سرور بسته شد",
"smtpErrorUnknown": "خطای SMTP: {{ .Error }}",
"eventMemoryHigh": "مصرف حافظه بالا (%)",
"validation": {
"pathLeadingSlash": "مسیر باید با / شروع شود"
@@ -1475,8 +1303,6 @@
"directdomains": "دامنه‌های مستقیم",
"ipv4Routing": "IPv4 مسیریابی",
"ipv4RoutingDesc": "این گزینه‌ها ترافیک را از طریق آی‌پی نسخه4 سرور، به مقصد هدایت می‌کند",
"Template": "‌پیکربندی پیشرفته الگو ایکس‌ری",
"TemplateDesc": "فایل پیکربندی نهایی ایکس‌ری بر اساس این الگو ایجاد می‌شود",
"FreedomStrategy": "Freedom استراتژی پروتکل",
"FreedomStrategyDesc": "تعیین می‌کند Freedom استراتژی خروجی شبکه را برای پروتکل",
"FreedomHappyEyeballs": "Freedom Happy Eyeballs (IPv4/IPv6)",
@@ -1492,11 +1318,6 @@
"Balancers": "بالانسرها",
"balancerTagRequired": "تگ الزامی است",
"balancerSelectorRequired": "حداقل یک خروجی انتخاب کنید",
"balancerLive": "هدف زنده",
"balancerOverride": "اجبار مسیر",
"balancerOverridePh": "خودکار (استراتژی)",
"balancerLiveRefresh": "به‌روزرسانی وضعیت زنده بالانسر",
"balancerNotRunning": "این بالانسر در Xray در حال اجرا فعال نیست — ابتدا تغییرات را ذخیره کنید یا Xray را روشن کنید",
"routeTester": "آزمایش مسیر",
"routeTesterDesc": "از Xray در حال اجرا بپرسید یک اتصال از کدام خروجی عبور می‌کند. هیچ ترافیکی ارسال نمی‌شود — پاسخ مستقیماً از موتور مسیریابی زنده می‌آید.",
"routeTesterDest": "دامنه یا IP",
@@ -1513,7 +1334,6 @@
"importOutbounds": "ورود خروجی‌ها",
"exportOutbounds": "خروج خروجی‌ها",
"importInvalidJson": "JSON نامعتبر — یک آرایه یا یک شیء با کلید متناظر انتظار می‌رود.",
"completeTemplate": "همه",
"logLevel": "سطح گزارش",
"logLevelDesc": "سطح گزارش برای گزارش های خطا، نشان دهنده اطلاعاتی است که باید ثبت شوند.",
"accessLog": "مسیر گزارش",
@@ -1544,7 +1364,6 @@
"source": "مبدا",
"dest": "مقصد",
"inbound": "ورودی",
"balancer": "بالانسر",
"useComma": "موارد جدا شده با کاما"
},
"routing": {
@@ -1725,32 +1544,7 @@
"alreadyAdded": "این سرور از قبل در فهرست خروجی است. برای تمدید کلید {reset} را بزنید.",
"provisionFailed": "ساخت خروجی PIA ممکن نشد. دوباره تلاش کنید."
},
"tabBalancerSettings": "تنظیمات بالانسر",
"tabObservatory": "رصدخانه",
"observatory": {
"autoManaged": "رصدگرها به‌صورت خودکار از روی بالانسرهای شما مدیریت می‌شوند. در ادامه می‌توانید نحوهٔ پروب‌زدن را تنظیم کنید؛ خروجی‌های تحت نظر از سلکتورهای بالانسر پیروی می‌کنند.",
"emptyHint": "هیچ رصدگر اتصالی فعال نیست. وقتی یک بالانسر Least Ping یا Least Load بسازید — یا یک بالانسر Random / Round-robin همراه با fallback — به‌صورت خودکار یکی اضافه می‌شود تا بالانسرهای متکی به رصدگر بتوانند پیش از انتخاب مقصد، سلامت خروجی‌ها را بررسی کنند.",
"mixedLegacy": "این پیکربندی هم Observatory و هم Burst Observatory دارد. Xray فقط از یک رصدگر سراسری استفاده می‌کند، بنابراین این حالت قدیمیِ ترکیبی پشتیبانی نمی‌شود؛ ذخیرهٔ بالانسرها آن را به یک رصدگر عادی‌سازی می‌کند.",
"subjectSelector": "خروجی‌های تحت نظر",
"subjectSelectorDesc": "تگ خروجی‌هایی که این رصدگر پروب می‌کند. به‌صورت خودکار از روی بالانسرهای شما مدیریت می‌شود.",
"probeURL": "آدرس پروب (URL)",
"probeURLDesc": "آدرسی که برای سنجش هر خروجی فراخوانی می‌شود. باید HTTP 204 برگرداند.",
"probeInterval": "بازهٔ پروب",
"probeIntervalDesc": "هر چند وقت یک‌بار هر خروجی پروب شود، مثلاً 30s یا 1m یا 2h45m.",
"enableConcurrency": "پروب هم‌زمان",
"enableConcurrencyDesc": "همهٔ خروجی‌های تحت نظر را به‌جای یکی‌یکی، هم‌زمان پروب کن. سریع‌تر است اما در شبکه نمایان‌تر.",
"destination": "مقصد پروب",
"destinationDesc": "آدرسی که برای سنجش هر خروجی فراخوانی می‌شود. باید HTTP 204 برگرداند.",
"connectivity": "بررسی اتصال",
"connectivityDesc": "آدرس اختیاری برای بررسی شبکهٔ محلی که فقط پس از شکست مقصد امتحان می‌شود. برای نادیده‌گرفتن خالی بگذارید.",
"interval": "بازهٔ پروب",
"intervalDesc": "میانگین فاصلهٔ زمانی بین پروب‌ها برای هر خروجی، مثلاً 1m. کمینه 10s.",
"timeout": "مهلت پروب",
"timeoutDesc": "چه مدت برای پاسخ یک پروب صبر شود تا ناموفق به‌حساب بیاید، مثلاً 5s.",
"sampling": "تعداد نمونه‌گیری",
"samplingDesc": "تعداد نتایج اخیر پروب که برای امتیازدهی به هر خروجی نگه داشته می‌شود.",
"httpMethod": "متد HTTP",
"httpMethodDesc": "متد HTTP که برای پروب‌ها استفاده می‌شود.",
"deleteAlsoObservatory": "این آخرین بالانسری است که از Observatory استفاده می‌کند، بنابراین آن هم حذف خواهد شد.",
"deleteAlsoBurst": "این آخرین بالانسری است که از Burst Observatory استفاده می‌کند، بنابراین آن هم حذف خواهد شد."
},
@@ -1762,25 +1556,7 @@
},
"balancer": {
"balancerStrategy": "استراتژی",
"tag": "تگ",
"tagDuplicate": "این تگ توسط بالانسر دیگری استفاده شده است",
"tagPlaceholder": "تگ منحصربه‌فرد بالانسر",
"selector": "انتخابگر",
"fallback": "Fallback",
"cycleTooltip": "حلقه: {path} → (بازگشت به {start})",
"expected": "مورد انتظار",
"expectedPlaceholder": "تعداد نود بهینه",
"maxRtt": "حداکثر RTT",
"tolerance": "تحمل",
"baselines": "خطوط پایه",
"costs": "هزینه‌ها",
"costMatch": "الگوی برچسب",
"costValue": "وزن",
"costRegexp": "تطبیق با عبارت باقاعده",
"balancerDeleteInUse": "امکان حذف این بالانسر وجود ندارد — به عنوان پشتیبان برای موارد زیر استفاده می‌شود: {names}",
"balancerFallbackCycle": "امکان تنظیم این بالانسر به عنوان پشتیبان وجود ندارد — وابستگی دایره‌ای ایجاد می‌کند.",
"balancerFallbackInfo": "ترافیک از مسیر زیر مسیریابی می‌شود: بالانسر → Loopback → سرور → بالانسر مقصد → اتصال خروجی. این یک پرش اضافی از طریق سرور اضافه می‌کند که ممکن است تأخیرهای جزئی ایجاد کند.",
"fallbackBalancerHint": "یک بالانسر دیگر به عنوان پشتیبان انتخاب کنید",
"reservedPrefix": "پیشوند _bl_ برای اشیاء loopback داخلی بالانسر رزرو شده است"
},
"wireguard": {
@@ -1883,55 +1659,8 @@
"usage": "مصرف",
"addOutbound": "افزودن خروجی"
},
"dns": {
"enable": "فعال کردن حل دامنه",
"enableDesc": "سرور حل دامنه داخلی را فعال کنید",
"tag": "برچسب",
"tagDesc": "این برچسب در قوانین مسیریابی به عنوان یک برچسب ورودی قابل استفاده خواهد بود",
"clientIp": "آی‌پی کلاینت",
"clientIpDesc": "برای اطلاع‌رسانی به سرور درباره مکان IP مشخص‌شده در طول درخواست‌های DNS استفاده می‌شود",
"disableCache": "غیرفعال‌سازی کش",
"disableCacheDesc": "کش DNS را غیرفعال می‌کند",
"disableFallback": "غیرفعال‌سازی Fallback",
"disableFallbackDesc": "درخواست‌های DNS Fallback را غیرفعال می‌کند",
"disableFallbackIfMatch": "غیرفعال‌سازی Fallback در صورت تطابق",
"disableFallbackIfMatchDesc": "درخواست‌های DNS Fallback را زمانی که لیست دامنه‌های مطابقت‌یافته سرور DNS فعال است، غیرفعال می‌کند",
"enableParallelQuery": "فعال‌سازی پرس‌وجوی موازی",
"enableParallelQueryDesc": "فعال‌سازی پرس‌وجوهای DNS موازی به چندین سرور برای وضوح سریع‌تر",
"strategy": "استراتژی پرس‌وجو",
"strategyDesc": "استراتژی کلی برای حل نام دامنه",
"add": "افزودن سرور",
"edit": "ویرایش سرور",
"domains": "دامنه‌ها",
"expectIPs": "آی‌پی‌های مورد انتظار",
"unexpectIPs": "آی‌پی‌های غیرمنتظره",
"useSystemHosts": "استفاده از Hosts سیستم",
"useSystemHostsDesc": "استفاده از فایل hosts یک سیستم نصب‌شده",
"serveStale": "ارائه نتایج منقضی",
"serveStaleDesc": "بازگرداندن نتایج منقضی کش هنگام بروزرسانی در پس‌زمینه",
"serveExpiredTTL": "TTL نتایج منقضی",
"serveExpiredTTLDesc": "مدت اعتبار نتایج منقضی به ثانیه؛ ۰ یعنی هرگز منقضی نمی‌شود",
"timeoutMs": "زمان انتظار (میلی‌ثانیه)",
"skipFallback": "رد کردن Fallback",
"finalQuery": "پرس‌وجوی نهایی",
"hosts": "Hosts",
"hostsAdd": "افزودن Host",
"hostsEmpty": "هیچ Host تعریف نشده",
"hostsDomain": "دامنه (مثلاً domain:example.com)",
"hostsValues": "آی‌پی یا دامنه — تایپ کنید و Enter بزنید",
"usePreset": "استفاده از پیش‌تنظیم",
"dnsPresetTitle": "پیش‌تنظیم‌های DNS",
"dnsPresetFamily": "خانوادگی",
"clearAll": "حذف همه",
"clearAllTitle": "حذف همه سرورهای DNS؟",
"clearAllConfirm": "این کار همه سرورهای DNS را از لیست حذف می‌کند و قابل بازگشت نیست.",
"dnsLeakWarning": "DNS ممکن است از طریق localhost، UDP/TCP ساده، حالت محلی DoH/DoQ، درخواست‌های fallback یا EDNS client IP نشت کند. برای حریم خصوصی از DoH مسیریابی‌شده، مقدارهای hosts ثابت و غیرفعال‌سازی fallback استفاده کنید."
},
"fakedns": {
"add": "افزودن دی‌ان‌اس جعلی",
"ipPool": "زیرشبکه استخر آی‌پی",
"poolSize": "اندازه استخر"
},
"dns": {},
"fakedns": {},
"defaultOutbound": "خروجی پیش‌فرض",
"defaultOutboundDesc": "ترافیکی که با هیچ قانون مسیریابی جور نشود از این خروجی استفاده می‌کند (اولین خروجی در فهرست)."
},
@@ -2055,198 +1784,7 @@
}
},
"tgbot": {
"keyboardClosed": "❌ صفحه کلید بسته شد!",
"noResult": "❗ نتیجه ای یافت نشد!",
"noQuery": "❌ درخواست یافت نشد! لطفا دوباره تلاش کنید!",
"wentWrong": "❌ مشکلی پیش آمد!",
"noIpRecord": "❗ رکورد آی پی وجود ندارد!",
"noInbounds": "❗ هیچ ورودی یافت نشد!",
"unlimited": "♾ نامحدود(ریست)",
"add": "افزودن",
"month": "ماه",
"months": "ماه",
"days": "روز",
"hours": "ساعت",
"minutes": "دقیقه",
"unknown": "نامشخص",
"inbounds": "ورودی‌ها",
"clients": "کاربران",
"offline": "🔴 آفلاین",
"online": "🟢 آنلاین",
"commands": {
"unknown": "❗ دستور ناشناخته",
"pleaseChoose": "👇 لطفاً انتخاب کنید:\r\n",
"help": "🤖 به این ربات خوش آمدید! این ربات برای ارائه داده‌های خاص از سرور طراحی شده است و به شما امکان تغییرات لازم را می‌دهد.\r\n\r\n",
"start": "👋 سلام <i>{{ .Firstname }}</i>.\r\n",
"welcome": "🤖 به ربات مدیریت <b>{{ .Hostname }}</b> خوش آمدید.\r\n",
"status": "✅ ربات در حالت عادی است!",
"usage": "❗ لطفاً یک متن برای جستجو وارد کنید!",
"getID": "🆔 شناسه شما: <code>{{ .ID }}</code>",
"helpAdminCommands": "برای راه‌اندازی مجدد Xray Core:\r\n<code>/restart</code>\r\n\r\nبرای جستجوی ایمیل مشتری:\r\n<code>/usage [ایمیل]</code>\r\n\r\nبرای جستجوی ورودی‌ها (با آمار مشتری):\r\n<code>/inbound [توضیحات]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
"helpClientCommands": "برای جستجوی آمار، از دستور زیر استفاده کنید:\r\n<code>/usage [ایمیل]</code>\r\n\r\nشناسه گفتگوی تلگرام:\r\n<code>/id</code>",
"restartUsage": "\r\n\r\n<code>/restart</code>",
"restartSuccess": "✅ عملیات با موفقیت انجام شد!",
"restartFailed": "❗ خطا در عملیات.\r\n\r\n<code>خطا: {{ .Error }}</code>.",
"xrayNotRunning": "❗ Xray Core در حال اجرا نیست.",
"startDesc": "نمایش منوی اصلی",
"helpDesc": "راهنمای ربات",
"statusDesc": "بررسی وضعیت ربات",
"idDesc": "نمایش شناسه تلگرام شما",
"usageDesc": "مشاهده مصرف کاربر: /usage ایمیل",
"inboundDesc": "جستجوی ورودی‌ها: /inbound نام (مدیر)",
"restartDesc": "راه‌اندازی مجدد هسته Xray (مدیر)",
"clearallDesc": "صفر کردن ترافیک همه کاربران (مدیر)"
},
"messages": {
"cpuThreshold": "بار ‌پردازنده {{ .Percent }}% بیشتر از آستانه است {{ .Threshold }}%",
"selectUserFailed": "❌ خطا در انتخاب کاربر!",
"userSaved": "✅ کاربر تلگرام ذخیره شد.",
"loginSuccess": "✅ با موفقیت به پنل وارد شدید.\r\n",
"loginFailed": "❗️ ورود به پنل ناموفق‌بود \r\n",
"report": "🕰 گزارشات‌زمان‌بندی‌شده: {{ .RunTime }}\r\n",
"datetime": "⏰ تاریخ‌وزمان: {{ .DateTime }}\r\n",
"hostname": "💻 میزبان: {{ .Hostname }}\r\n",
"version": "🚀 نسخه‌پنل: {{ .Version }}\r\n",
"xrayVersion": "📡 نسخه‌هسته: {{ .XrayVersion }}\r\n",
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
"ip": "🌐 IP: {{ .IP }}\r\n",
"ips": "🔢 IPها:\r\n{{ .IPs }}\r\n",
"serverUpTime": "⏳ مدت‌کارکردسیستم: {{ .UpTime }} {{ .Unit }}\r\n",
"serverLoad": "📈 بارسیستم: {{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
"traffic": "🚦 ترافیک: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
"xrayStatus": "ℹ️ وضعیت: {{ .State }}\r\n",
"username": "👤 نام‌کاربری: {{ .Username }}\r\n",
"reason": "❗️ دلیل: {{ .Reason }}\r\n",
"time": "⏰ زمان: {{ .Time }}\r\n",
"inbound": "📍 ورودی: {{ .Remark }}\r\n",
"port": "🔌 پورت: {{ .Port }}\r\n",
"expire": "📅 تاریخ‌انقضا: {{ .Time }}\r\n\r\n",
"expireIn": "📅 باقی‌ مانده‌ تا انقضا: {{ .Time }}\r\n\r\n",
"active": "💡 فعال: {{ .Enable }}\r\n",
"enabled": "🚨 وضعیت: {{ .Enable }}\r\n",
"online": "🌐 وضعیت اتصال: {{ .Status }}\r\n",
"lastOnline": "🔙 آخرین فعالیت: {{ .Time }}\r\n",
"email": "📧 ایمیل: {{ .Email }}\r\n",
"upload": "🔼 آپلود: ↑{{ .Upload }}\r\n",
"download": "🔽 دانلود: ↓{{ .Download }}\r\n",
"total": "📊 کل: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
"TGUser": "👤 کاربر تلگرام: {{ .TelegramID }}\r\n",
"exhaustedCount": "🚨 تعداد {{ .Type }} به‌اتمام‌رسیده‌است:\r\n",
"onlinesCount": "🌐 کاربران‌آنلاین: {{ .Count }}\r\n",
"disabled": "🛑 غیرفعال: {{ .Disabled }}\r\n",
"depleteSoon": "🔜 به‌زودی‌به‌پایان‌خواهدرسید: {{ .Deplete }}\r\n\r\n",
"backupTime": "🗄 زمان‌پشتیبان‌گیری: {{ .Time }}\r\n",
"refreshedOn": "\r\n📋🔄 تازه‌سازی شده در: {{ .Time }}\r\n\r\n",
"yes": "✅ بله",
"no": "❌ خیر",
"received_email": "📧📥 ایمیل به‌روزرسانی شد.",
"received_comment": "💬📥 نظر به‌روزرسانی شد.",
"email_prompt": "📧 ایمیل پیش‌فرض: {{ .ClientEmail }}\n\nایمیل خود را وارد کنید.",
"comment_prompt": "💬 نظر پیش‌فرض: {{ .ClientComment }}\n\nنظر خود را وارد کنید.",
"cancel": "❌ فرآیند لغو شد! \n\nمی‌توانید هر زمان که خواستید /start را دوباره اجرا کنید. 🔄",
"error_add_client": "⚠️ خطا:\n\n {{ .error }}",
"using_default_value": "باشه، از مقدار پیش‌فرض استفاده می‌کنم. 😊",
"incorrect_input": "ورودی شما معتبر نیست.\nعبارت‌ها باید بدون فاصله باشند.\nمثال صحیح: aaaaaa\nمثال نادرست: aaa aaa 🚫",
"AreYouSure": "مطمئنی؟ 🤔",
"SuccessResetTraffic": "📧 ایمیل: {{ .ClientEmail }}\n🏁 نتیجه: ✅ موفقیت‌آمیز",
"FailedResetTraffic": "📧 ایمیل: {{ .ClientEmail }}\n🏁 نتیجه: ❌ ناموفق \n\n🛠️ خطا: [ {{ .ErrorMessage }} ]",
"FinishProcess": "🔚 فرآیند بازنشانی ترافیک برای همه مشتریان به پایان رسید.",
"eventOutboundDown": "خروجی {{ .Tag }} قطع است",
"eventOutboundUp": "خروجی {{ .Tag }} وصل است",
"eventErrorDetail": "خطا: {{ .Error }}",
"eventDelayDetail": "تأخیر: {{ .Delay }} میلی‌ثانیه",
"eventXrayCrash": "Xray کرش کرد",
"eventXrayCrashError": "خطا: {{ .Error }}",
"eventNodeDown": "نود {{ .Name }} قطع است",
"eventNodeUp": "نود {{ .Name }} وصل است",
"eventLoginFallback": "ورود ناموفق از {{ .Source }}",
"memoryThreshold": "مصرف حافظه {{ .Percent }}% از حد آستانه {{ .Threshold }}% فراتر رفته است"
},
"buttons": {
"closeKeyboard": "❌ بستن کیبورد",
"cancel": "❌ لغو",
"cancelReset": "❌ لغو تنظیم مجدد",
"cancelIpLimit": "❌ لغو محدودیت آی‌پی",
"confirmResetTraffic": "✅ تأیید تنظیم مجدد ترافیک؟",
"confirmClearIps": "✅ تأیید پاک‌سازی آدرس‌های آی‌پی؟",
"confirmRemoveTGUser": "✅ تأیید حذف کاربر تلگرام؟",
"confirmToggle": "✅ تایید فعال/غیرفعال کردن کاربر؟",
"dbBackup": "دریافت پشتیبان",
"serverUsage": "استفاده از سیستم",
"getInbounds": "دریافت ورودی‌ها",
"depleteSoon": "به‌زودی به پایان خواهد رسید",
"clientUsage": "دریافت آمار کاربر",
"onlines": "کاربران آنلاین",
"commands": "دستورات",
"refresh": "🔄 تازه‌سازی",
"clearIPs": "❌ پاک‌سازی آدرس‌ها",
"removeTGUser": "❌ حذف کاربر تلگرام",
"selectTGUser": "👤 انتخاب کاربر تلگرام",
"selectOneTGUser": "👤 یک کاربر تلگرام را انتخاب کنید:",
"resetTraffic": "📈 تنظیم مجدد ترافیک",
"resetExpire": "📅 تنظیم مجدد تاریخ انقضا",
"ipLog": "🔢 لاگ آدرس‌های IP",
"ipLimit": "🔢 محدودیت IP",
"setTGUser": "👤 تنظیم کاربر تلگرام",
"toggle": "🔘 فعال / غیرفعال",
"custom": "🔢 سفارشی",
"confirmNumber": "✅ تایید: {{ .Num }}",
"confirmNumberAdd": "✅ تایید اضافه کردن: {{ .Num }}",
"limitTraffic": "🚧 محدودیت ترافیک",
"getBanLogs": "گزارش های بلوک را دریافت کنید",
"allClients": "همه مشتریان",
"addClient": "افزودن مشتری",
"submitDisable": "ارسال به عنوان غیرفعال ☑️",
"submitEnable": "ارسال به عنوان فعال ✅",
"use_default": "🏷️ استفاده از پیش‌فرض",
"change_email": "⚙️📧 ایمیل",
"change_comment": "⚙️💬 نظر",
"ResetAllTraffics": "بازنشانی همه ترافیک‌ها",
"SortedTrafficUsageReport": "گزارش استفاده از ترافیک مرتب‌شده"
},
"answers": {
"successfulOperation": "✅ انجام شد!",
"errorOperation": "❗ خطا در عملیات.",
"getInboundsFailed": "❌ دریافت ورودی‌ها با خطا مواجه شد.",
"getClientsFailed": "❌ دریافت مشتریان با شکست مواجه شد.",
"canceled": "❌ {{ .Email }} : عملیات لغو شد.",
"clientRefreshSuccess": "✅ {{ .Email }} : کلاینت با موفقیت تازه‌سازی شد.",
"IpRefreshSuccess": "✅ {{ .Email }} : آدرس‌ها با موفقیت تازه‌سازی شدند.",
"TGIdRefreshSuccess": "✅ {{ .Email }} : کاربر تلگرام کلاینت با موفقیت تازه‌سازی شد.",
"resetTrafficSuccess": "✅ {{ .Email }} : ترافیک با موفقیت تنظیم مجدد شد.",
"setTrafficLimitSuccess": "✅ {{ .Email }} : محدودیت ترافیک با موفقیت ذخیره شد.",
"expireResetSuccess": "✅ {{ .Email }} : تاریخ انقضا با موفقیت تنظیم مجدد شد.",
"resetIpSuccess": "✅ {{ .Email }} : محدودیت آدرس IP {{ .Count }} با موفقیت ذخیره شد.",
"clearIpSuccess": "✅ {{ .Email }} : آدرس‌ها با موفقیت پاک‌سازی شدند.",
"getIpLog": "✅ {{ .Email }} : دریافت لاگ آدرس‌های IP.",
"getUserInfo": "✅ {{ .Email }} : دریافت اطلاعات کاربر تلگرام.",
"removedTGUserSuccess": "✅ {{ .Email }} : کاربر تلگرام با موفقیت حذف شد.",
"enableSuccess": "✅ {{ .Email }} : با موفقیت فعال شد.",
"disableSuccess": "✅ {{ .Email }} : با موفقیت غیرفعال شد.",
"askToAddUserId": "پیکربندی شما یافت نشد!\r\nلطفاً از مدیر خود بخواهید که شناسه کاربر تلگرام خود را در پیکربندی (های) خود استفاده کند.\r\n\r\nشناسه کاربری شما: <code>{{ .TgUserID }}</code>",
"chooseClient": "یک مشتری برای ورودی {{ .Inbound }} انتخاب کنید",
"chooseInbound": "یک ورودی انتخاب کنید"
}
"noIpRecord": "❗ رکورد آی پی وجود ندارد!"
},
"email": {
"labelStatus": "وضعیت",
"labelOutbound": "خروجی",
"labelNode": "نود",
"labelError": "خطا",
"labelDelay": "تأخیر",
"labelUsername": "نام‌کاربری",
"labelIP": "IP",
"labelReason": "دلیل",
"labelSource": "مبدأ",
"statusCrashed": "کرش کرد",
"statusHigh": "بالا",
"statusSuccess": "موفق",
"statusFailed": "ناموفق",
"statusDown": "قطع",
"statusUp": "وصل"
}
"email": {}
}