mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 10:25:52 +02:00
feat/encrypt-request (#854)
* feat: encrypt login and install request #852 * fix: user curd panic after install * chore: update error definations
This commit is contained in:
commit
9cbbd429d9
33 changed files with 1108 additions and 768 deletions
22
api/crypto/crypto.go
Normal file
22
api/crypto/crypto.go
Normal file
|
@ -0,0 +1,22 @@
|
|||
package crypto
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/0xJacky/Nginx-UI/api"
|
||||
"github.com/0xJacky/Nginx-UI/internal/crypto"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// GetPublicKey generates a new ED25519 key pair and registers it in the cache
|
||||
func GetPublicKey(c *gin.Context) {
|
||||
sign, err := crypto.GetCryptoParams()
|
||||
if err != nil {
|
||||
api.ErrHandler(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"public_key": sign.PublicKey,
|
||||
})
|
||||
}
|
10
api/crypto/router.go
Normal file
10
api/crypto/router.go
Normal file
|
@ -0,0 +1,10 @@
|
|||
package crypto
|
||||
|
||||
import "github.com/gin-gonic/gin"
|
||||
|
||||
func InitPublicRouter(r *gin.RouterGroup) {
|
||||
g := r.Group("/crypto")
|
||||
{
|
||||
g.GET("public_key", GetPublicKey)
|
||||
}
|
||||
}
|
|
@ -1,12 +1,13 @@
|
|||
package system
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/internal/middleware"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func InitPublicRouter(r *gin.RouterGroup) {
|
||||
r.GET("install", InstallLockCheck)
|
||||
r.POST("install", InstallNginxUI)
|
||||
r.POST("install", middleware.EncryptedParams(), InstallNginxUI)
|
||||
r.GET("translation/:code", GetTranslation)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package user
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/internal/middleware"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func InitAuthRouter(r *gin.RouterGroup) {
|
||||
r.POST("/login", Login)
|
||||
r.POST("/login", middleware.EncryptedParams(), Login)
|
||||
r.DELETE("/logout", Logout)
|
||||
|
||||
r.GET("/begin_passkey_login", BeginPasskeyLogin)
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
"axios": "^1.7.9",
|
||||
"dayjs": "^1.11.13",
|
||||
"highlight.js": "^11.11.1",
|
||||
"jsencrypt": "^3.3.2",
|
||||
"lodash": "^4.17.21",
|
||||
"marked": "^15.0.6",
|
||||
"marked-highlight": "^2.2.1",
|
||||
|
|
8
app/pnpm-lock.yaml
generated
8
app/pnpm-lock.yaml
generated
|
@ -59,6 +59,9 @@ importers:
|
|||
highlight.js:
|
||||
specifier: ^11.11.1
|
||||
version: 11.11.1
|
||||
jsencrypt:
|
||||
specifier: ^3.3.2
|
||||
version: 3.3.2
|
||||
lodash:
|
||||
specifier: ^4.17.21
|
||||
version: 4.17.21
|
||||
|
@ -3122,6 +3125,9 @@ packages:
|
|||
resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
jsencrypt@3.3.2:
|
||||
resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==}
|
||||
|
||||
jsesc@0.5.0:
|
||||
resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
|
||||
hasBin: true
|
||||
|
@ -7904,6 +7910,8 @@ snapshots:
|
|||
|
||||
jsdoc-type-pratt-parser@4.1.0: {}
|
||||
|
||||
jsencrypt@3.3.2: {}
|
||||
|
||||
jsesc@0.5.0: {}
|
||||
|
||||
jsesc@3.0.2: {}
|
||||
|
|
|
@ -19,7 +19,7 @@ const auth = {
|
|||
password,
|
||||
otp,
|
||||
recovery_code: recoveryCode,
|
||||
})
|
||||
}, { crypto: true })
|
||||
},
|
||||
async casdoor_login(code?: string, state?: string) {
|
||||
await http.post('/casdoor_callback', {
|
||||
|
|
|
@ -12,7 +12,7 @@ const install = {
|
|||
return http.get('/install')
|
||||
},
|
||||
install_nginx_ui(data: InstallRequest) {
|
||||
return http.post('/install', data)
|
||||
return http.post('/install', data, { crypto: true })
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
export default {
|
||||
50001: () => $gettext('Plain text is empty'),
|
||||
50002: () => $gettext('Cipher text is too short'),
|
||||
40401: () => $gettext('Request timeout'),
|
||||
}
|
||||
|
|
4
app/src/constants/errors/middleware.ts
Normal file
4
app/src/constants/errors/middleware.ts
Normal file
|
@ -0,0 +1,4 @@
|
|||
export default {
|
||||
40000: () => $gettext('Invalid request format'),
|
||||
40001: () => $gettext('Decryption failed'),
|
||||
}
|
|
@ -71,8 +71,8 @@ msgstr "إضافة تكوين"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "أضف التوجيه أدناه"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "أضف مكان"
|
||||
|
||||
|
@ -187,7 +187,7 @@ msgstr "هل أنت متأكد أنك تريد إزالة هذا التوجيه
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "هل أنت متأكد أنك تريد إزالة هذا العنصر؟"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "هل أنت متأكد أنك تريد إزالة هذا المكان؟"
|
||||
|
||||
|
@ -315,7 +315,7 @@ msgstr "مجلد سلطة التصديق"
|
|||
msgid "CADir"
|
||||
msgstr "مجلد سلطة التصديق"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr "لا يمكن المسح؟ استخدم ربط مفتاح النص"
|
||||
|
||||
|
@ -372,7 +372,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "الفاصل الزمني لتجديد الشهادة"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
msgstr[0] "صفر"
|
||||
|
@ -400,7 +400,7 @@ msgstr "طريقة التحدي"
|
|||
msgid "Change Certificate"
|
||||
msgstr "تغيير الشهادة"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
msgstr[0] "صفر"
|
||||
|
@ -466,8 +466,8 @@ msgid "Command"
|
|||
msgstr "أمر"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "تعليقات"
|
||||
|
@ -501,8 +501,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr "تم فقدان الاتصال، يرجى تحديث الصفحة."
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "محتوى"
|
||||
|
||||
|
@ -519,11 +519,11 @@ msgstr "نسخ"
|
|||
msgid "Core Upgrade"
|
||||
msgstr "ترقية نواة"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "حالة CPU"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
|
||||
|
@ -565,11 +565,11 @@ msgstr "بيان الاعتماد"
|
|||
msgid "Credentials"
|
||||
msgstr "بيانات الاعتماد"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr "TOTP مفعل للحساب الحالي."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr "TOTP معطل للحساب الحالي."
|
||||
|
||||
|
@ -601,6 +601,11 @@ msgstr "قاعدة البيانات (اختياري، الافتراضي: قاع
|
|||
msgid "Days"
|
||||
msgstr "أيام"
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "وصف"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -731,7 +736,7 @@ msgstr "معطل"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "تم التعطيل بنجاح"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "إدخال/إخراج القرص"
|
||||
|
||||
|
@ -906,7 +911,7 @@ msgstr "فشل تفعيل %{conf_name} في %{node_name}"
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr "تم تفعيل %{conf_name} في %{node_name} بنجاح"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "تم تفعيل المصادقة الثنائية بنجاح"
|
||||
|
||||
|
@ -942,7 +947,7 @@ msgstr "تم التفعيل بنجاح"
|
|||
msgid "Enable TLS"
|
||||
msgstr "تفعيل TLS"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
msgid "Enable TOTP"
|
||||
msgstr "تفعيل TOTP"
|
||||
|
||||
|
@ -976,7 +981,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "تم تنظيف متغيرات البيئة"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
msgid "Environments"
|
||||
msgstr "البيئات"
|
||||
|
||||
|
@ -1157,7 +1162,7 @@ msgstr ""
|
|||
"إذا وصل عدد محاولات تسجيل الدخول الفاشلة من عنوان IP إلى الحد الأقصى "
|
||||
"للمحاولات في حد دقائق الحظر، سيتم حظر عنوان IP لفترة من الوقت."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1198,12 +1203,12 @@ msgstr "خطأ في ترقية النواة الأولية"
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "بدء ترقية النواة"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr "أدخل الرمز من التطبيق:"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr "أدخل رمز الاسترداد:"
|
||||
|
||||
|
@ -1246,6 +1251,11 @@ msgstr "رمز المرور أو رمز الاسترداد غير صالح"
|
|||
msgid "Invalid recovery code"
|
||||
msgstr "رمز 2FA أو الاسترداد غير صالح"
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
#, fuzzy
|
||||
msgid "Invalid request format"
|
||||
msgstr "رمز 2FA أو الاسترداد غير صالح"
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr "IP"
|
||||
|
@ -1321,15 +1331,15 @@ msgstr "ابدأ الرابط"
|
|||
msgid "List"
|
||||
msgstr "قائمة"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
msgid "Load Average:"
|
||||
msgstr "متوسط التحميل:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr "تحميل من الإعدادات"
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
msgid "Load successfully"
|
||||
msgstr "تم التحميل بنجاح"
|
||||
|
||||
|
@ -1338,7 +1348,7 @@ msgstr "تم التحميل بنجاح"
|
|||
msgid "Local"
|
||||
msgstr "محلي"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "مكان"
|
||||
|
||||
|
@ -1415,12 +1425,12 @@ msgstr "شهادة مُدارة"
|
|||
msgid "Max Attempts"
|
||||
msgstr "الحد الأقصى للمحاولات"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "ذاكرة"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "الذاكرة والتخزين"
|
||||
|
||||
|
@ -1474,19 +1484,19 @@ msgstr "توجيه متعدد الأسطر"
|
|||
msgid "Name"
|
||||
msgstr "اسم"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "شبكة"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "إحصائيات الشبكة"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "إجمالي استقبال الشبكة"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "إجمالي إرسال الشبكة"
|
||||
|
||||
|
@ -1600,7 +1610,7 @@ msgstr "تم إعادة تشغيل Nginx بنجاح"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1724,7 +1734,7 @@ msgstr "الاسم الأصلي"
|
|||
msgid "OS"
|
||||
msgstr "نظام التشغيل"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "نظام التشغيل:"
|
||||
|
||||
|
@ -1779,8 +1789,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "مسار"
|
||||
|
||||
|
@ -1875,7 +1885,7 @@ msgid ""
|
|||
"Please note that the unit of time configurations below are all in seconds."
|
||||
msgstr "يرجى ملاحظة أن تكوين وحدات الوقت أدناه كلها بالثواني."
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr "يرجى اختيار عقدة واحدة على الأقل للترقية"
|
||||
|
||||
|
@ -1932,11 +1942,11 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr "يقرأ"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr "يستقبل"
|
||||
|
@ -1955,15 +1965,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "تم الاسترداد بنجاح"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr "استرداد"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr "رمز الاسترداد"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr "رمز الاسترداد:"
|
||||
|
||||
|
@ -2123,6 +2133,10 @@ msgstr "تجديد الشهادة بنجاح"
|
|||
msgid "Renew successfully"
|
||||
msgstr "تم التجديد بنجاح"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr "تم الطلب باستخدام عوامل خاطئة"
|
||||
|
@ -2131,7 +2145,7 @@ msgstr "تم الطلب باستخدام عوامل خاطئة"
|
|||
msgid "Reset"
|
||||
msgstr "إعادة تعيين"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
msgid "Reset 2FA"
|
||||
msgstr "إعادة تعيين التحقق بخطوتين"
|
||||
|
||||
|
@ -2218,7 +2232,7 @@ msgstr "تم الحفظ بنجاح"
|
|||
msgid "Saved successfully"
|
||||
msgstr "تم الحفظ بنجاح"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr "امسح رمز الاستجابة السريعة بهاتفك المحمول لإضافة الحساب إلى التطبيق."
|
||||
|
||||
|
@ -2226,7 +2240,7 @@ msgstr "امسح رمز الاستجابة السريعة بهاتفك المح
|
|||
msgid "SDK"
|
||||
msgstr "حزمة تطوير البرمجيات SDK"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr "تم نسخ السر"
|
||||
|
||||
|
@ -2238,12 +2252,12 @@ msgstr "المحدد"
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "إرسال"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "معلومات الخادم"
|
||||
|
||||
|
@ -2379,8 +2393,8 @@ msgstr "الحالة"
|
|||
msgid "Stopped"
|
||||
msgstr "متوقف"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "تخزين"
|
||||
|
||||
|
@ -2410,8 +2424,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr "تبديل"
|
||||
|
||||
|
@ -2581,7 +2595,7 @@ msgstr ""
|
|||
"يجب أن يحتوي اسم العقدة على حروف وأحرف يونيكود وأرقام وشرطات وعلامات وصل "
|
||||
"ونقاط فقط."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr "رمز الاسترداد يُعرض مرة واحدة فقط، يرجى حفظه في مكان آمن."
|
||||
|
@ -2672,7 +2686,7 @@ msgstr "نصائح"
|
|||
msgid "Title"
|
||||
msgstr "عنوان"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2725,11 +2739,11 @@ msgstr[3] ""
|
|||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr "كلمة مرور لمرة واحدة تعتمد على الوقت"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2770,7 +2784,7 @@ msgstr "محدث في"
|
|||
msgid "Updated successfully"
|
||||
msgstr "تم التحديث بنجاح"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr "ترقية"
|
||||
|
@ -2791,7 +2805,7 @@ msgstr "جارٍ ترقية Nginx UI، يرجى الانتظار..."
|
|||
msgid "Upstream Name"
|
||||
msgstr "اسم المنبع"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "مدة التشغيل:"
|
||||
|
||||
|
@ -2903,7 +2917,7 @@ msgstr ""
|
|||
"الموقع والعقد المحددة أدناه."
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "يكتب"
|
||||
|
||||
|
@ -2918,7 +2932,7 @@ msgstr "كتابة الشهادة إلى القرص"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "نعم"
|
||||
|
||||
|
|
|
@ -69,8 +69,8 @@ msgstr "Edit Configuration"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "Add Directive Below"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "Add Location"
|
||||
|
||||
|
@ -196,7 +196,7 @@ msgstr "Are you sure you want to remove this directive?"
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "Are you sure you want to remove this directive?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
#, fuzzy
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "Are you sure you want to remove this directive?"
|
||||
|
@ -327,7 +327,7 @@ msgstr ""
|
|||
msgid "CADir"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr ""
|
||||
|
||||
|
@ -383,7 +383,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "Certificate is valid"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
#, fuzzy
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
|
@ -411,7 +411,7 @@ msgstr ""
|
|||
msgid "Change Certificate"
|
||||
msgstr "Certificate is valid"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
#, fuzzy
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
|
@ -477,8 +477,8 @@ msgid "Command"
|
|||
msgstr "Comments"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "Comments"
|
||||
|
@ -513,8 +513,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr ""
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "Content"
|
||||
|
||||
|
@ -531,11 +531,11 @@ msgstr ""
|
|||
msgid "Core Upgrade"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "CPU Status"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
|
||||
|
@ -581,11 +581,11 @@ msgstr ""
|
|||
msgid "Credentials"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
|
@ -617,6 +617,11 @@ msgstr "Database (Optional, default: database)"
|
|||
msgid "Days"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "Enable failed"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -756,7 +761,7 @@ msgstr "Disabled"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "Disabled successfully"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "Disk IO"
|
||||
|
||||
|
@ -936,7 +941,7 @@ msgstr ""
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
#, fuzzy
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "Enabled successfully"
|
||||
|
@ -978,7 +983,7 @@ msgstr "Enabled successfully"
|
|||
msgid "Enable TLS"
|
||||
msgstr "Enable TLS"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
#, fuzzy
|
||||
msgid "Enable TOTP"
|
||||
msgstr "Enable TLS"
|
||||
|
@ -1013,7 +1018,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr ""
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
#, fuzzy
|
||||
msgid "Environments"
|
||||
msgstr "Comments"
|
||||
|
@ -1199,7 +1204,7 @@ msgid ""
|
|||
"ban threshold minutes, the ip will be banned for a period of time."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1237,12 +1242,12 @@ msgstr ""
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1287,6 +1292,10 @@ msgstr ""
|
|||
msgid "Invalid recovery code"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
msgid "Invalid request format"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr ""
|
||||
|
@ -1370,16 +1379,16 @@ msgstr ""
|
|||
msgid "List"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#, fuzzy
|
||||
msgid "Load Average:"
|
||||
msgstr "Load Averages:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
#, fuzzy
|
||||
msgid "Load successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
@ -1390,7 +1399,7 @@ msgstr "Saved successfully"
|
|||
msgid "Local"
|
||||
msgstr "Location"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "Location"
|
||||
|
||||
|
@ -1465,12 +1474,12 @@ msgstr "Certificate is valid"
|
|||
msgid "Max Attempts"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "Memory"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "Memory and Storage"
|
||||
|
||||
|
@ -1529,19 +1538,19 @@ msgstr "Single Directive"
|
|||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "Network"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "Network Statistics"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "Network Total Receive"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "Network Total Send"
|
||||
|
||||
|
@ -1661,7 +1670,7 @@ msgstr "Saved successfully"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1786,7 +1795,7 @@ msgstr ""
|
|||
msgid "OS"
|
||||
msgstr "OS:"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "OS:"
|
||||
|
||||
|
@ -1837,8 +1846,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "Path"
|
||||
|
||||
|
@ -1932,7 +1941,7 @@ msgid ""
|
|||
"Please note that the unit of time configurations below are all in seconds."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1991,11 +2000,11 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr "Reads"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr "Receive"
|
||||
|
@ -2015,15 +2024,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "Saved successfully"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2202,6 +2211,10 @@ msgstr "Certificate is valid"
|
|||
msgid "Renew successfully"
|
||||
msgstr "Enabled successfully"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr ""
|
||||
|
@ -2210,7 +2223,7 @@ msgstr ""
|
|||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
msgid "Reset 2FA"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2303,7 +2316,7 @@ msgstr "Saved successfully"
|
|||
msgid "Saved successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2311,7 +2324,7 @@ msgstr ""
|
|||
msgid "SDK"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2323,12 +2336,12 @@ msgstr ""
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "Send"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "Server Info"
|
||||
|
||||
|
@ -2470,8 +2483,8 @@ msgstr "Status"
|
|||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "Storage"
|
||||
|
||||
|
@ -2501,8 +2514,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr "Swap"
|
||||
|
||||
|
@ -2674,7 +2687,7 @@ msgid ""
|
|||
"hyphens, dashes, colons, and dots."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr ""
|
||||
|
@ -2764,7 +2777,7 @@ msgstr ""
|
|||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2802,11 +2815,11 @@ msgid_plural "Total %{total} items"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2847,7 +2860,7 @@ msgstr "Updated at"
|
|||
msgid "Updated successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr ""
|
||||
|
@ -2870,7 +2883,7 @@ msgstr ""
|
|||
msgid "Upstream Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "Uptime:"
|
||||
|
||||
|
@ -2978,7 +2991,7 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "Writes"
|
||||
|
||||
|
@ -2993,7 +3006,7 @@ msgstr ""
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "Yes"
|
||||
|
||||
|
|
|
@ -74,8 +74,8 @@ msgstr "Agregar configuración"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "Añadir directiva a continuación"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "Agregar Ubicación"
|
||||
|
||||
|
@ -192,7 +192,7 @@ msgstr "¿Está seguro de que quiere borrar esta directiva?"
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "¿Está seguro de que desea eliminar este elemento?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "¿Está seguro de que quiere borrar esta ubicación?"
|
||||
|
||||
|
@ -322,7 +322,7 @@ msgstr "Dir CA"
|
|||
msgid "CADir"
|
||||
msgstr "Directorio CA"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr "¿No puede escanear? Utilice la vinculación con una llave de texto"
|
||||
|
||||
|
@ -379,7 +379,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "Intervalo de renovación del Certificado"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
msgstr[0] "Estado del Certificado"
|
||||
|
@ -403,7 +403,7 @@ msgstr "Método de desafío"
|
|||
msgid "Change Certificate"
|
||||
msgstr "Cambiar Certificado"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
msgstr[0] "Cambiar Certificado"
|
||||
|
@ -465,8 +465,8 @@ msgid "Command"
|
|||
msgstr "Comando"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "Comentarios"
|
||||
|
@ -500,8 +500,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr "Conexión perdida, por favor actualice la página."
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "Contenido"
|
||||
|
||||
|
@ -518,11 +518,11 @@ msgstr "Copiar"
|
|||
msgid "Core Upgrade"
|
||||
msgstr "Actualización del kernel"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "Estado del CPU"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
|
||||
|
@ -564,11 +564,11 @@ msgstr "Credencial"
|
|||
msgid "Credentials"
|
||||
msgstr "Credenciales"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr "La cuenta actual tiene habilitada TOTP."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr "La cuenta actual no tiene habilitada TOTP."
|
||||
|
||||
|
@ -602,6 +602,11 @@ msgstr "Base de datos (Opcional, default: database)"
|
|||
msgid "Days"
|
||||
msgstr "Días"
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -733,7 +738,7 @@ msgstr "Desactivado"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "Desactivado con éxito"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "I/O del disco"
|
||||
|
||||
|
@ -903,7 +908,7 @@ msgstr "Falló el habilitado de %{conf_name} en %{node_name}"
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "Habilitar 2FA exitoso"
|
||||
|
||||
|
@ -943,7 +948,7 @@ msgstr "Habilitado con Éxito"
|
|||
msgid "Enable TLS"
|
||||
msgstr "Habilitar TLS"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
#, fuzzy
|
||||
msgid "Enable TOTP"
|
||||
msgstr "Habilitar TLS"
|
||||
|
@ -978,7 +983,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "Variables de entorno limpiadas"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
msgid "Environments"
|
||||
msgstr "Entornos"
|
||||
|
||||
|
@ -1163,7 +1168,7 @@ msgstr ""
|
|||
"el máximo de intentos en los minutos del umbral de prohibición, la IP será "
|
||||
"bloqueada por un período de tiempo."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1205,12 +1210,12 @@ msgstr "Error de actualización de kernel inicial"
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "Inicializando la actualización del kernel"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr "Ingrese el código de la aplicación:"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr "Ingrese el código de recuperación:"
|
||||
|
||||
|
@ -1253,6 +1258,11 @@ msgstr "Código de acceso o código de recuperación inválido"
|
|||
msgid "Invalid recovery code"
|
||||
msgstr "Código 2FA o de recuperación inválido"
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
#, fuzzy
|
||||
msgid "Invalid request format"
|
||||
msgstr "Código 2FA o de recuperación inválido"
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr "IP"
|
||||
|
@ -1330,15 +1340,15 @@ msgstr "Iniciar conexión"
|
|||
msgid "List"
|
||||
msgstr "Lista"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
msgid "Load Average:"
|
||||
msgstr "Promedios de carga:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr "Cargar desde configuraciones"
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
msgid "Load successfully"
|
||||
msgstr "Cargado con éxito"
|
||||
|
||||
|
@ -1347,7 +1357,7 @@ msgstr "Cargado con éxito"
|
|||
msgid "Local"
|
||||
msgstr "Local"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "Ubicación"
|
||||
|
||||
|
@ -1425,12 +1435,12 @@ msgstr "Certificado Administrado"
|
|||
msgid "Max Attempts"
|
||||
msgstr "Intentos máximos"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "Memoria"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "Memoria y almacenamiento"
|
||||
|
||||
|
@ -1484,19 +1494,19 @@ msgstr "Directiva multilínea"
|
|||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "Red"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "Estadísticas de red"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "Total recibido por la red"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "Total enviado por la red"
|
||||
|
||||
|
@ -1613,7 +1623,7 @@ msgstr "Nginx reiniciado con éxito"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1739,7 +1749,7 @@ msgstr "Nombre original"
|
|||
msgid "OS"
|
||||
msgstr "SO"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "SO:"
|
||||
|
||||
|
@ -1795,8 +1805,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "Ruta"
|
||||
|
||||
|
@ -1902,7 +1912,7 @@ msgstr ""
|
|||
"Tenga en cuenta que las siguientes configuraciones de unidades de tiempo "
|
||||
"están todas en segundos."
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr "Seleccione al menos un nodo para actualizar"
|
||||
|
||||
|
@ -1964,11 +1974,11 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr "Lecturas"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr "Recibido"
|
||||
|
@ -1987,15 +1997,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "Recuperado con éxito"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr "Recuperación"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr "Código de Recuperación"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr "Código de Recuperación:"
|
||||
|
||||
|
@ -2163,6 +2173,10 @@ msgstr "Renovado de Certificado exitoso"
|
|||
msgid "Renew successfully"
|
||||
msgstr "Renovado con éxito"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr "Pedido con parámetros incorrectos"
|
||||
|
@ -2171,7 +2185,7 @@ msgstr "Pedido con parámetros incorrectos"
|
|||
msgid "Reset"
|
||||
msgstr "Limpiar"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
msgid "Reset 2FA"
|
||||
msgstr "Restablecer 2FA"
|
||||
|
||||
|
@ -2264,7 +2278,7 @@ msgstr "Guardado con éxito"
|
|||
msgid "Saved successfully"
|
||||
msgstr "Guardado con éxito"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr ""
|
||||
"Escanee el código QR con su teléfono móvil para agregar la cuenta a la "
|
||||
|
@ -2274,7 +2288,7 @@ msgstr ""
|
|||
msgid "SDK"
|
||||
msgstr "SDK"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr "El secreto ha sido copiado"
|
||||
|
||||
|
@ -2286,12 +2300,12 @@ msgstr "Seleccionador"
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "Enviado"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "Información del servidor"
|
||||
|
||||
|
@ -2428,8 +2442,8 @@ msgstr "Estado"
|
|||
msgid "Stopped"
|
||||
msgstr "Detenido"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "Almacenamiento"
|
||||
|
||||
|
@ -2459,8 +2473,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr "Swap"
|
||||
|
||||
|
@ -2640,7 +2654,7 @@ msgstr ""
|
|||
"El nombre del servidor solo debe contener letras, Unicode, números, guiones, "
|
||||
"rayas y puntos."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr ""
|
||||
|
@ -2741,7 +2755,7 @@ msgstr "Consejos"
|
|||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2792,11 +2806,11 @@ msgid_plural "Total %{total} items"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr "TOTP"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2838,7 +2852,7 @@ msgstr "Actualizado a"
|
|||
msgid "Updated successfully"
|
||||
msgstr "Actualización exitosa"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr "Actualizar"
|
||||
|
@ -2859,7 +2873,7 @@ msgstr "Actualizando Nginx UI, por favor espere..."
|
|||
msgid "Upstream Name"
|
||||
msgstr "Nombre de la Transmisión"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "Tiempo encendido:"
|
||||
|
||||
|
@ -2974,7 +2988,7 @@ msgstr ""
|
|||
"continuación se sincronizarán."
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "Escrituras"
|
||||
|
||||
|
@ -2989,7 +3003,7 @@ msgstr "Escribir certificado a disco"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "Si"
|
||||
|
||||
|
|
|
@ -71,8 +71,8 @@ msgstr "Modifier la configuration"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "Ajouter une directive"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "Ajouter une localisation"
|
||||
|
||||
|
@ -199,7 +199,7 @@ msgstr "Voulez-vous vraiment supprimer cette directive ?"
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "Voulez-vous vraiment supprimer cette directive ?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "Voulez-vous vraiment supprimer cette localisation ?"
|
||||
|
||||
|
@ -330,7 +330,7 @@ msgstr ""
|
|||
msgid "CADir"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr ""
|
||||
|
||||
|
@ -388,7 +388,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "Le certificat est valide"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
#, fuzzy
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
|
@ -415,7 +415,7 @@ msgstr "Méthode de challenge"
|
|||
msgid "Change Certificate"
|
||||
msgstr "Changer de certificat"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
#, fuzzy
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
|
@ -481,8 +481,8 @@ msgid "Command"
|
|||
msgstr "Commentaires"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "Commentaires"
|
||||
|
@ -516,8 +516,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr ""
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "Contenu"
|
||||
|
||||
|
@ -534,11 +534,11 @@ msgstr ""
|
|||
msgid "Core Upgrade"
|
||||
msgstr "Mise à jour du core"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "État du processeur"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU :"
|
||||
|
||||
|
@ -584,11 +584,11 @@ msgstr "Identifiant"
|
|||
msgid "Credentials"
|
||||
msgstr "Identifiants"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
|
@ -620,6 +620,11 @@ msgstr "Base de données (Facultatif, par défaut : database)"
|
|||
msgid "Days"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "Description"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -760,7 +765,7 @@ msgstr "Désactivé"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "Désactivé avec succès"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "E/S disque"
|
||||
|
||||
|
@ -939,7 +944,7 @@ msgstr ""
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
#, fuzzy
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "Activé avec succès"
|
||||
|
@ -981,7 +986,7 @@ msgstr "Activé avec succès"
|
|||
msgid "Enable TLS"
|
||||
msgstr "Activer TLS"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
#, fuzzy
|
||||
msgid "Enable TOTP"
|
||||
msgstr "Activer TLS"
|
||||
|
@ -1017,7 +1022,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "Définition des variables d'environnement"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
#, fuzzy
|
||||
msgid "Environments"
|
||||
msgstr "Commentaires"
|
||||
|
@ -1203,7 +1208,7 @@ msgid ""
|
|||
"ban threshold minutes, the ip will be banned for a period of time."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1242,12 +1247,12 @@ msgstr "Erreur du programme de mise à niveau initial du core"
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "Initialisation du programme de mise à niveau du core"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1288,6 +1293,10 @@ msgstr ""
|
|||
msgid "Invalid recovery code"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
msgid "Invalid request format"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr ""
|
||||
|
@ -1371,16 +1380,16 @@ msgstr ""
|
|||
msgid "List"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#, fuzzy
|
||||
msgid "Load Average:"
|
||||
msgstr "Charges moyennes :"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
#, fuzzy
|
||||
msgid "Load successfully"
|
||||
msgstr "Enregistré avec succès"
|
||||
|
@ -1391,7 +1400,7 @@ msgstr "Enregistré avec succès"
|
|||
msgid "Local"
|
||||
msgstr "Localisation"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
#, fuzzy
|
||||
msgid "Location"
|
||||
msgstr "Localisation"
|
||||
|
@ -1468,12 +1477,12 @@ msgstr "Changer de certificat"
|
|||
msgid "Max Attempts"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "Mémoire"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "Mémoire et stockage"
|
||||
|
||||
|
@ -1530,19 +1539,19 @@ msgstr "Directive multiligne"
|
|||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "Réseau"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "Statistiques du réseau"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "Réception totale du réseau"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "Envoi total réseau"
|
||||
|
||||
|
@ -1662,7 +1671,7 @@ msgstr "Nginx a redémarré avec succès"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1786,7 +1795,7 @@ msgstr ""
|
|||
msgid "OS"
|
||||
msgstr "OS"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "OS :"
|
||||
|
||||
|
@ -1837,8 +1846,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "Chemin"
|
||||
|
||||
|
@ -1942,7 +1951,7 @@ msgid ""
|
|||
"Please note that the unit of time configurations below are all in seconds."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2002,12 +2011,12 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
#, fuzzy
|
||||
msgid "Reads"
|
||||
msgstr "Lectures"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
#, fuzzy
|
||||
msgid "Receive"
|
||||
|
@ -2028,15 +2037,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "Enregistré avec succès"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2217,6 +2226,10 @@ msgstr "Changer de certificat"
|
|||
msgid "Renew successfully"
|
||||
msgstr "Activé avec succès"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr ""
|
||||
|
@ -2225,7 +2238,7 @@ msgstr ""
|
|||
msgid "Reset"
|
||||
msgstr "Réinitialiser"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
#, fuzzy
|
||||
msgid "Reset 2FA"
|
||||
msgstr "Réinitialiser"
|
||||
|
@ -2317,7 +2330,7 @@ msgstr "Sauvegarde réussie"
|
|||
msgid "Saved successfully"
|
||||
msgstr "Enregistré avec succès"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2325,7 +2338,7 @@ msgstr ""
|
|||
msgid "SDK"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2337,12 +2350,12 @@ msgstr "Sélecteur"
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "Envoyer"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "Informations sur le serveur"
|
||||
|
||||
|
@ -2483,8 +2496,8 @@ msgstr "Statut"
|
|||
msgid "Stopped"
|
||||
msgstr "Arrêté"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "Stockage"
|
||||
|
||||
|
@ -2514,8 +2527,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
#, fuzzy
|
||||
msgid "Swap"
|
||||
msgstr "Échanger"
|
||||
|
@ -2688,7 +2701,7 @@ msgid ""
|
|||
"hyphens, dashes, colons, and dots."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr ""
|
||||
|
@ -2782,7 +2795,7 @@ msgstr ""
|
|||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2824,11 +2837,11 @@ msgid_plural "Total %{total} items"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2868,7 +2881,7 @@ msgstr "Mis à jour le"
|
|||
msgid "Updated successfully"
|
||||
msgstr "Mis à jour avec succés"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr "Mettre à niveau"
|
||||
|
@ -2890,7 +2903,7 @@ msgstr "Mise à jour de Nginx UI, veuillez patienter..."
|
|||
msgid "Upstream Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "Disponibilité :"
|
||||
|
||||
|
@ -3001,7 +3014,7 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "Écritures"
|
||||
|
||||
|
@ -3016,7 +3029,7 @@ msgstr "Écriture du certificat sur le disque"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "Oui"
|
||||
|
||||
|
|
|
@ -72,8 +72,8 @@ msgstr "구성 추가"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "아래에 지시문 추가"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "위치 추가"
|
||||
|
||||
|
@ -189,7 +189,7 @@ msgstr "이 지시문을 정말로 제거하시겠습니까?"
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "이 항목을 제거하시겠습니까?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "이 위치를 제거하시겠습니까?"
|
||||
|
||||
|
@ -317,7 +317,7 @@ msgstr "CA 디렉토리"
|
|||
msgid "CADir"
|
||||
msgstr "CA 디렉토리"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr ""
|
||||
|
||||
|
@ -374,7 +374,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "인증서 갱신 간격"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
msgstr[0] "인증서 상태"
|
||||
|
@ -398,7 +398,7 @@ msgstr "인증 방법"
|
|||
msgid "Change Certificate"
|
||||
msgstr "인증서 변경"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
#, fuzzy
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
|
@ -462,8 +462,8 @@ msgid "Command"
|
|||
msgstr "명령어"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "댓글"
|
||||
|
@ -497,8 +497,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr "연결이 끊어졌습니다. 페이지를 새로 고침하세요."
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "내용"
|
||||
|
||||
|
@ -515,11 +515,11 @@ msgstr ""
|
|||
msgid "Core Upgrade"
|
||||
msgstr "코어 업그레이드"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "CPU 상태"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
|
||||
|
@ -564,11 +564,11 @@ msgstr "인증 정보"
|
|||
msgid "Credentials"
|
||||
msgstr "인증 정보들"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
|
@ -600,6 +600,11 @@ msgstr "데이터베이스 (선택사항, 기본값: database)"
|
|||
msgid "Days"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "설명"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -736,7 +741,7 @@ msgstr "비활성화됨"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "성공적으로 비활성화됨"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "디스크 IO"
|
||||
|
||||
|
@ -904,7 +909,7 @@ msgstr "%{node_name}에서 %{conf_name} 활성화 실패"
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr "%{node_name}에서 %{conf_name} 성공적으로 활성화됨"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
#, fuzzy
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "성공적으로 활성화"
|
||||
|
@ -945,7 +950,7 @@ msgstr "성공적으로 활성화"
|
|||
msgid "Enable TLS"
|
||||
msgstr "TLS 활성화"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
#, fuzzy
|
||||
msgid "Enable TOTP"
|
||||
msgstr "TLS 활성화"
|
||||
|
@ -981,7 +986,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "환경 변수 설정"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
msgid "Environments"
|
||||
msgstr "환경"
|
||||
|
||||
|
@ -1166,7 +1171,7 @@ msgid ""
|
|||
"ban threshold minutes, the ip will be banned for a period of time."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1204,12 +1209,12 @@ msgstr "초기 코어 업그레이더 오류"
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "코어 업그레이더 초기화"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1254,6 +1259,10 @@ msgstr ""
|
|||
msgid "Invalid recovery code"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
msgid "Invalid request format"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr ""
|
||||
|
@ -1337,16 +1346,16 @@ msgstr "링크 시작"
|
|||
msgid "List"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#, fuzzy
|
||||
msgid "Load Average:"
|
||||
msgstr "부하 평균:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
#, fuzzy
|
||||
msgid "Load successfully"
|
||||
msgstr "성공적으로 저장됨"
|
||||
|
@ -1357,7 +1366,7 @@ msgstr "성공적으로 저장됨"
|
|||
msgid "Local"
|
||||
msgstr "지역"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "위치"
|
||||
|
||||
|
@ -1437,12 +1446,12 @@ msgstr "인증서 유효"
|
|||
msgid "Max Attempts"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "메모리"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "메모리 및 저장소"
|
||||
|
||||
|
@ -1501,19 +1510,19 @@ msgstr "단일 지시문"
|
|||
msgid "Name"
|
||||
msgstr "이름"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "네트워크"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "네트워크 통계"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "네트워크 총 수신"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "네트워크 총 송신"
|
||||
|
||||
|
@ -1635,7 +1644,7 @@ msgstr "Nginx가 성공적으로 재시작됨"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1760,7 +1769,7 @@ msgstr ""
|
|||
msgid "OS"
|
||||
msgstr "OS"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "OS:"
|
||||
|
||||
|
@ -1811,8 +1820,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "경로"
|
||||
|
||||
|
@ -1909,7 +1918,7 @@ msgid ""
|
|||
"Please note that the unit of time configurations below are all in seconds."
|
||||
msgstr "아래의 시간 설정 단위는 모두 초 단위임을 유의해주세요."
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
#, fuzzy
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr "적어도 하나의 노드를 선택해주세요!"
|
||||
|
@ -1970,11 +1979,11 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr "읽기"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr "수신"
|
||||
|
@ -1994,15 +2003,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "성공적으로 제거됨"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2184,6 +2193,10 @@ msgstr "인증서 갱신 성공"
|
|||
msgid "Renew successfully"
|
||||
msgstr "성공적으로 갱신됨"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr "잘못된 매개변수로 요청됨"
|
||||
|
@ -2192,7 +2205,7 @@ msgstr "잘못된 매개변수로 요청됨"
|
|||
msgid "Reset"
|
||||
msgstr "재설정"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
#, fuzzy
|
||||
msgid "Reset 2FA"
|
||||
msgstr "재설정"
|
||||
|
@ -2286,7 +2299,7 @@ msgstr "성공적으로 저장됨"
|
|||
msgid "Saved successfully"
|
||||
msgstr "성공적으로 저장됨"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2294,7 +2307,7 @@ msgstr ""
|
|||
msgid "SDK"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2306,12 +2319,12 @@ msgstr "선택"
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "보내기"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "서버 정보"
|
||||
|
||||
|
@ -2452,8 +2465,8 @@ msgstr "상태"
|
|||
msgid "Stopped"
|
||||
msgstr "정지됨"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "저장소"
|
||||
|
||||
|
@ -2483,8 +2496,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr "스왑"
|
||||
|
||||
|
@ -2656,7 +2669,7 @@ msgid ""
|
|||
"hyphens, dashes, colons, and dots."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr ""
|
||||
|
@ -2750,7 +2763,7 @@ msgstr "팁"
|
|||
msgid "Title"
|
||||
msgstr "제목"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2791,11 +2804,11 @@ msgid_plural "Total %{total} items"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2836,7 +2849,7 @@ msgstr "업데이트됨"
|
|||
msgid "Updated successfully"
|
||||
msgstr "성공적으로 저장되었습니다"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr "업그레이드"
|
||||
|
@ -2859,7 +2872,7 @@ msgstr "Nginx UI를 업그레이드하는 중입니다. 잠시 기다려주세
|
|||
msgid "Upstream Name"
|
||||
msgstr "업스트림 이름"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "가동 시간:"
|
||||
|
||||
|
@ -2973,7 +2986,7 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "쓰기"
|
||||
|
||||
|
@ -2988,7 +3001,7 @@ msgstr "인증서를 디스크에 쓰기"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "예"
|
||||
|
||||
|
|
|
@ -64,8 +64,8 @@ msgstr ""
|
|||
msgid "Add Directive Below"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr ""
|
||||
|
||||
|
@ -178,7 +178,7 @@ msgstr ""
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -306,7 +306,7 @@ msgstr ""
|
|||
msgid "CADir"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr ""
|
||||
|
||||
|
@ -359,7 +359,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
msgstr[0] ""
|
||||
|
@ -383,7 +383,7 @@ msgstr ""
|
|||
msgid "Change Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
msgstr[0] ""
|
||||
|
@ -442,8 +442,8 @@ msgid "Command"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
@ -477,8 +477,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr ""
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr ""
|
||||
|
||||
|
@ -495,11 +495,11 @@ msgstr ""
|
|||
msgid "Core Upgrade"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -543,11 +543,11 @@ msgstr ""
|
|||
msgid "Credentials"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
|
@ -579,6 +579,10 @@ msgstr ""
|
|||
msgid "Days"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
msgid "Decryption failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -711,7 +715,7 @@ msgstr ""
|
|||
msgid "Disabled successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr ""
|
||||
|
||||
|
@ -875,7 +879,7 @@ msgstr ""
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr ""
|
||||
|
||||
|
@ -911,7 +915,7 @@ msgstr ""
|
|||
msgid "Enable TLS"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
msgid "Enable TOTP"
|
||||
msgstr ""
|
||||
|
||||
|
@ -948,7 +952,7 @@ msgstr ""
|
|||
|
||||
#: src/routes/index.ts:234
|
||||
#: src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
msgid "Environments"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1126,7 +1130,7 @@ msgstr ""
|
|||
msgid "If the number of login failed attempts from a ip reach the max attempts in ban threshold minutes, the ip will be banned for a period of time."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid "If you lose your mobile phone, you can use the recovery code to reset your 2FA."
|
||||
msgstr ""
|
||||
|
||||
|
@ -1161,12 +1165,12 @@ msgstr ""
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1208,6 +1212,10 @@ msgstr ""
|
|||
msgid "Invalid recovery code"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
msgid "Invalid request format"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr ""
|
||||
|
@ -1283,15 +1291,15 @@ msgstr ""
|
|||
msgid "List"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
msgid "Load Average:"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
msgid "Load successfully"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1300,7 +1308,7 @@ msgstr ""
|
|||
msgid "Local"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1368,12 +1376,12 @@ msgstr ""
|
|||
msgid "Max Attempts"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1430,19 +1438,19 @@ msgstr ""
|
|||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1557,7 +1565,7 @@ msgstr ""
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1675,7 +1683,7 @@ msgstr ""
|
|||
msgid "OS"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1723,8 +1731,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1808,7 +1816,7 @@ msgstr ""
|
|||
msgid "Please note that the unit of time configurations below are all in seconds."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1867,11 +1875,11 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr ""
|
||||
|
@ -1890,15 +1898,15 @@ msgid "Recovered Successfully"
|
|||
msgstr ""
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2051,6 +2059,10 @@ msgstr ""
|
|||
msgid "Renew successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr ""
|
||||
|
@ -2059,7 +2071,7 @@ msgstr ""
|
|||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
msgid "Reset 2FA"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2147,7 +2159,7 @@ msgstr ""
|
|||
msgid "Saved successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2155,7 +2167,7 @@ msgstr ""
|
|||
msgid "SDK"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2168,12 +2180,12 @@ msgstr ""
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2301,8 +2313,8 @@ msgstr ""
|
|||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2327,8 +2339,8 @@ msgstr ""
|
|||
msgid "Support communication with the backend through the WebSocket protocol. If your Nginx UI is being used via an Nginx reverse proxy, please refer to this link to write the corresponding configuration file: https://nginxui.com/guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2470,7 +2482,7 @@ msgstr ""
|
|||
msgid "The Public Security Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid "The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2549,7 +2561,7 @@ msgstr ""
|
|||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid "To enable it, you need to install the Google or Microsoft Authenticator app on your mobile phone."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2575,11 +2587,11 @@ msgid_plural "Total %{total} items"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid "TOTP is a two-factor authentication method that uses a time-based one-time password algorithm."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2619,7 +2631,7 @@ msgid "Updated successfully"
|
|||
msgstr ""
|
||||
|
||||
#: src/routes/index.ts:297
|
||||
#: src/views/environment/Environment.vue:56
|
||||
#: src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143
|
||||
#: src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
|
@ -2642,7 +2654,7 @@ msgstr ""
|
|||
msgid "Upstream Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2739,7 +2751,7 @@ msgid "When you enable/disable, delete, or save this site, the nodes set in the
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2754,7 +2766,7 @@ msgstr ""
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -73,8 +73,8 @@ msgstr "Добавить конфигурацию"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "Добавить директиву ниже"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "Добавить Location"
|
||||
|
||||
|
@ -191,7 +191,7 @@ msgstr "Вы уверены, что хотите удалить эту дире
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "Вы уверены, что хотите удалить этот элемент?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "Вы уверены, что хотите удалить location?"
|
||||
|
||||
|
@ -320,7 +320,7 @@ msgstr "Директория корневого сертификата"
|
|||
msgid "CADir"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr ""
|
||||
|
||||
|
@ -378,7 +378,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "Интервал обновления сертификата"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
msgstr[0] "Статус сертификата"
|
||||
|
@ -402,7 +402,7 @@ msgstr "Метод Challenge"
|
|||
msgid "Change Certificate"
|
||||
msgstr "Изменить сертификат"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
msgstr[0] "Сертификат изменен"
|
||||
|
@ -464,8 +464,8 @@ msgid "Command"
|
|||
msgstr "Команда"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "Комментарии"
|
||||
|
@ -499,8 +499,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr "Соединение потеряно, пожалуйста, обновите страницу."
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "Содержание"
|
||||
|
||||
|
@ -517,11 +517,11 @@ msgstr "Копировать"
|
|||
msgid "Core Upgrade"
|
||||
msgstr "Обновление ядра"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "Нагрузка CPU"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
|
||||
|
@ -563,12 +563,12 @@ msgstr "Учетные данные"
|
|||
msgid "Credentials"
|
||||
msgstr "Учетные данные"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
#, fuzzy
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr "Текущая учетная запись имеет включенную 2ФА."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
#, fuzzy
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr ""
|
||||
|
@ -603,6 +603,11 @@ msgstr "База данных (Опционально, по умолчанию:
|
|||
msgid "Days"
|
||||
msgstr "Дни"
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "Описание"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -739,7 +744,7 @@ msgstr "Отключено"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "Отключено успешно"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "Нагрузка на Диск IO"
|
||||
|
||||
|
@ -911,7 +916,7 @@ msgstr "Включение %{conf_name} in %{node_name} нипалучилася
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr "Включение %{conf_name} in %{node_name} успешно"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "Двухфакторная аутентификация успешно включена"
|
||||
|
||||
|
@ -951,7 +956,7 @@ msgstr "Включено успешно"
|
|||
msgid "Enable TLS"
|
||||
msgstr "Включить TLS"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
#, fuzzy
|
||||
msgid "Enable TOTP"
|
||||
msgstr "Включить TLS"
|
||||
|
@ -986,7 +991,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "Переменные окружения очищены"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
msgid "Environments"
|
||||
msgstr "Окружения"
|
||||
|
||||
|
@ -1170,7 +1175,7 @@ msgstr ""
|
|||
"количества попыток в течение пороговых минут блокировки, IP будет "
|
||||
"заблокирован на определенный период времени."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1212,12 +1217,12 @@ msgstr "Ошибка первоначального обновления ядр
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "Инициализация программы обновления ядра"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr "Введите код из приложения:"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr "Введите код восстановления:"
|
||||
|
||||
|
@ -1260,6 +1265,11 @@ msgstr "Неверный пароль или код восстановления
|
|||
msgid "Invalid recovery code"
|
||||
msgstr "Неверный 2FA или код восстановления"
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
#, fuzzy
|
||||
msgid "Invalid request format"
|
||||
msgstr "Неверный 2FA или код восстановления"
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr "IP"
|
||||
|
@ -1337,15 +1347,15 @@ msgstr "Начало ссылки"
|
|||
msgid "List"
|
||||
msgstr "Список"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
msgid "Load Average:"
|
||||
msgstr "Средняя нагрузка:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr "Загрузить из настроек"
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
msgid "Load successfully"
|
||||
msgstr "Загружено успешно"
|
||||
|
||||
|
@ -1354,7 +1364,7 @@ msgstr "Загружено успешно"
|
|||
msgid "Local"
|
||||
msgstr "Локальный"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "Локация"
|
||||
|
||||
|
@ -1431,12 +1441,12 @@ msgstr "Управление сертификатом"
|
|||
msgid "Max Attempts"
|
||||
msgstr "Максимальное количество попыток"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "Память"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "Память и хранилище"
|
||||
|
||||
|
@ -1490,19 +1500,19 @@ msgstr "Многострочная директива"
|
|||
msgid "Name"
|
||||
msgstr "Имя"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "Сеть"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "Статистика сети"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "Всего получено"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "Всего отправлено"
|
||||
|
||||
|
@ -1619,7 +1629,7 @@ msgstr "Nginx успешно перезапущен"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1742,7 +1752,7 @@ msgstr "Оригинальное имя"
|
|||
msgid "OS"
|
||||
msgstr "ОС"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "OS:"
|
||||
|
||||
|
@ -1794,8 +1804,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "Путь"
|
||||
|
||||
|
@ -1899,7 +1909,7 @@ msgstr ""
|
|||
"Обратите внимание, что единица измерения времени в конфигурациях ниже "
|
||||
"указана в секундах."
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr "Пожалуйста, выберите хотя бы один узел"
|
||||
|
||||
|
@ -1959,11 +1969,11 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr "Чтение"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr "Принято"
|
||||
|
@ -1982,15 +1992,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "Восстановлено успешно"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr "Восстановление"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr "Код восстановления"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr "Код восстановления:"
|
||||
|
||||
|
@ -2157,6 +2167,10 @@ msgstr "Успешное обновление сертификата"
|
|||
msgid "Renew successfully"
|
||||
msgstr "Успешно обновлено"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr "Запрос с неправильными параметрами"
|
||||
|
@ -2165,7 +2179,7 @@ msgstr "Запрос с неправильными параметрами"
|
|||
msgid "Reset"
|
||||
msgstr "Сброс"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
msgid "Reset 2FA"
|
||||
msgstr "Сброс 2FA"
|
||||
|
||||
|
@ -2258,7 +2272,7 @@ msgstr "Сохранено успешно"
|
|||
msgid "Saved successfully"
|
||||
msgstr "Успешно сохранено"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr ""
|
||||
"Отсканируйте QR-код с помощью мобильного телефона, чтобы добавить учетную "
|
||||
|
@ -2268,7 +2282,7 @@ msgstr ""
|
|||
msgid "SDK"
|
||||
msgstr "SDK"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2280,12 +2294,12 @@ msgstr "Выбор"
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "Отправлено"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "Информация о сервере"
|
||||
|
||||
|
@ -2422,8 +2436,8 @@ msgstr "Статус"
|
|||
msgid "Stopped"
|
||||
msgstr "Остановлен"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "Хранилище"
|
||||
|
||||
|
@ -2453,8 +2467,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr "Своп"
|
||||
|
||||
|
@ -2633,7 +2647,7 @@ msgstr ""
|
|||
"Имя сервера должно содержать только буквы, юникод, цифры, дефисы, тире и "
|
||||
"точки."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr ""
|
||||
|
@ -2734,7 +2748,7 @@ msgstr "Советы"
|
|||
msgid "Title"
|
||||
msgstr "Заголовок"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2778,11 +2792,11 @@ msgid_plural "Total %{total} items"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2824,7 +2838,7 @@ msgstr "Обновлено в"
|
|||
msgid "Updated successfully"
|
||||
msgstr "Успешно обновлено"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr "Обновление"
|
||||
|
@ -2845,7 +2859,7 @@ msgstr "Обновление Nginx UI, подождите..."
|
|||
msgid "Upstream Name"
|
||||
msgstr "Имя Upstream"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "Аптайм:"
|
||||
|
||||
|
@ -2955,7 +2969,7 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "Запись"
|
||||
|
||||
|
@ -2970,7 +2984,7 @@ msgstr "Запись сертификата на диск"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "Да"
|
||||
|
||||
|
|
|
@ -70,8 +70,8 @@ msgstr "Yapılandırma Ekle"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "Direktifi Aşağıya Ekleyin"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "Konum ekle"
|
||||
|
||||
|
@ -187,7 +187,7 @@ msgstr "Bu yönergeyi kaldırmak istediğinizden emin misiniz?"
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "Bu öğeyi kaldırmak istediğinizden emin misiniz?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "Bu konumu kaldırmak istediğinizden emin misiniz?"
|
||||
|
||||
|
@ -315,7 +315,7 @@ msgstr "CA Dizini"
|
|||
msgid "CADir"
|
||||
msgstr "CADizini"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr "Tarayamıyor musunuz? Metin anahtar bağlamasını kullanın"
|
||||
|
||||
|
@ -372,7 +372,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "Sertifika Yenileme Aralığı"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
msgstr[0] "Sertifika Durumu"
|
||||
|
@ -396,7 +396,7 @@ msgstr "Doğrulama Yöntemi"
|
|||
msgid "Change Certificate"
|
||||
msgstr "Sertifika Değiştir"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
msgstr[0] "Değişen Sertifika"
|
||||
|
@ -458,8 +458,8 @@ msgid "Command"
|
|||
msgstr "Komut"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "Yorumlar"
|
||||
|
@ -493,8 +493,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr "Bağlantı kesildi, lütfen sayfayı yenileyin."
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "İçerik"
|
||||
|
||||
|
@ -511,11 +511,11 @@ msgstr "Kopya"
|
|||
msgid "Core Upgrade"
|
||||
msgstr "Çekirdek Yükseltme"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "CPU Durumu"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
|
||||
|
@ -557,11 +557,11 @@ msgstr "Kimlik bilgisi"
|
|||
msgid "Credentials"
|
||||
msgstr "Kimlik bilgileri"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr "Mevcut hesap için TOTP etkinleştirildi."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr "Mevcut hesap için TOTP etkin değil."
|
||||
|
||||
|
@ -594,6 +594,11 @@ msgstr "Veritabanı (İsteğe bağlı, varsayılan: database)"
|
|||
msgid "Days"
|
||||
msgstr "Günler"
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "Açıklama"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -735,7 +740,7 @@ msgstr "Devre dışı"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "Başarıyla devre dışı bırakıldı"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "Disk IO"
|
||||
|
||||
|
@ -909,7 +914,7 @@ msgstr ""
|
|||
"%{conf_name} yapılandırmasını %{node_name} düğümünde etkinleştirme başarılı "
|
||||
"oldu"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "2FA'yı başarıyla etkinleştirildi"
|
||||
|
||||
|
@ -953,7 +958,7 @@ msgstr "Başarıyla etkinleştirildi"
|
|||
msgid "Enable TLS"
|
||||
msgstr "TLS'yi Etkinleştir"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
msgid "Enable TOTP"
|
||||
msgstr "TOTP'yi Etkinleştir"
|
||||
|
||||
|
@ -987,7 +992,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "Ortam değişkenleri temizlendi"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
msgid "Environments"
|
||||
msgstr "Ortamlar"
|
||||
|
||||
|
@ -1171,7 +1176,7 @@ msgstr ""
|
|||
"yasaklama eşiği dakikaları içinde maksimum deneme sayısına ulaşırsa, IP "
|
||||
"adresi belirli bir süre için yasaklanacaktır."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1214,12 +1219,12 @@ msgstr "İlk çekirdek yükseltici hatası"
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "Çekirdek yükseltici başlatılıyor"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr "Uygulamadan kodu girin:"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr "Kurtarma kodunu girin:"
|
||||
|
||||
|
@ -1262,6 +1267,11 @@ msgstr "Geçersiz parola veya kurtarma kodu"
|
|||
msgid "Invalid recovery code"
|
||||
msgstr "Geçersiz 2FA veya kurtarma kodu"
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
#, fuzzy
|
||||
msgid "Invalid request format"
|
||||
msgstr "Geçersiz 2FA veya kurtarma kodu"
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr "IP"
|
||||
|
@ -1338,15 +1348,15 @@ msgstr "Bağlantı Başlat"
|
|||
msgid "List"
|
||||
msgstr "Liste"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
msgid "Load Average:"
|
||||
msgstr "Yük Ortalaması:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr "Ayarlar'dan yükle"
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
msgid "Load successfully"
|
||||
msgstr "Başarıyla yüklendi"
|
||||
|
||||
|
@ -1355,7 +1365,7 @@ msgstr "Başarıyla yüklendi"
|
|||
msgid "Local"
|
||||
msgstr "Yerel"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "Konum"
|
||||
|
||||
|
@ -1439,13 +1449,13 @@ msgstr "Yönetilen Sertifika"
|
|||
msgid "Max Attempts"
|
||||
msgstr "Maksimum Deneme"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
#, fuzzy
|
||||
msgid "Memory"
|
||||
msgstr "Hafıza"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
#, fuzzy
|
||||
msgid "Memory and Storage"
|
||||
msgstr "Bellek ve Depolama"
|
||||
|
@ -1508,22 +1518,22 @@ msgstr "Çok Hatlı Direktif"
|
|||
msgid "Name"
|
||||
msgstr "İsim"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
#, fuzzy
|
||||
msgid "Network"
|
||||
msgstr "Ağ"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
#, fuzzy
|
||||
msgid "Network Statistics"
|
||||
msgstr "Ağ İstatistikleri"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
#, fuzzy
|
||||
msgid "Network Total Receive"
|
||||
msgstr "Ağ Toplam Alım"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
#, fuzzy
|
||||
msgid "Network Total Send"
|
||||
msgstr "Ağ Toplam Gönderme"
|
||||
|
@ -1654,7 +1664,7 @@ msgstr "Nginx başarıyla yeniden başlatıldı"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
#, fuzzy
|
||||
|
@ -1798,7 +1808,7 @@ msgstr "Gerçek Adı"
|
|||
msgid "OS"
|
||||
msgstr "OS"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
#, fuzzy
|
||||
msgid "OS:"
|
||||
msgstr "İŞLETIM SISTEMI:"
|
||||
|
@ -1861,8 +1871,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
#, fuzzy
|
||||
msgid "Path"
|
||||
msgstr "Yol"
|
||||
|
@ -1982,7 +1992,7 @@ msgstr ""
|
|||
"Lütfen aşağıdaki zaman birimi konfigürasyonlarının tümünün saniye cinsinden "
|
||||
"olduğunu unutmayın."
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
#, fuzzy
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr "Lütfen yükseltmek için en az bir düğüm seçin"
|
||||
|
@ -2052,12 +2062,12 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
#, fuzzy
|
||||
msgid "Reads"
|
||||
msgstr "Okumalar"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
#, fuzzy
|
||||
msgid "Receive"
|
||||
|
@ -2079,17 +2089,17 @@ msgid "Recovered Successfully"
|
|||
msgstr "Başarıyla Kurtarıldı"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
#, fuzzy
|
||||
msgid "Recovery"
|
||||
msgstr "Kurtarma"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
#, fuzzy
|
||||
msgid "Recovery Code"
|
||||
msgstr "Kurtarma Kodu"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
#, fuzzy
|
||||
msgid "Recovery Code:"
|
||||
msgstr "Kurtarma Kodu:"
|
||||
|
@ -2288,6 +2298,10 @@ msgstr "Sertifika Yenileme Başarısı"
|
|||
msgid "Renew successfully"
|
||||
msgstr "Başarıyla yenileyin"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
#, fuzzy
|
||||
msgid "Requested with wrong parameters"
|
||||
|
@ -2298,7 +2312,7 @@ msgstr "Yanlış parametrelerle talep edildi"
|
|||
msgid "Reset"
|
||||
msgstr "Sıfırla"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
#, fuzzy
|
||||
msgid "Reset 2FA"
|
||||
msgstr "2FA'yı Sıfırla"
|
||||
|
@ -2401,7 +2415,7 @@ msgstr "Başarıyla kaydedin"
|
|||
msgid "Saved successfully"
|
||||
msgstr "Başarıyla Kaydedildi"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
#, fuzzy
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr "Hesabı uygulamaya eklemek için QR kodunu cep telefonunuzla tarayın."
|
||||
|
@ -2411,7 +2425,7 @@ msgstr "Hesabı uygulamaya eklemek için QR kodunu cep telefonunuzla tarayın."
|
|||
msgid "SDK"
|
||||
msgstr "SDK"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
#, fuzzy
|
||||
msgid "Secret has been copied"
|
||||
msgstr "Sır kopyalandı"
|
||||
|
@ -2425,13 +2439,13 @@ msgstr "Selektör"
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
#, fuzzy
|
||||
msgid "Send"
|
||||
msgstr "Gönder"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
#, fuzzy
|
||||
msgid "Server Info"
|
||||
msgstr "Sunucu Bilgisi"
|
||||
|
@ -2588,8 +2602,8 @@ msgstr "Durum"
|
|||
msgid "Stopped"
|
||||
msgstr "Durduruldu"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
#, fuzzy
|
||||
msgid "Storage"
|
||||
msgstr "Depolama"
|
||||
|
@ -2621,8 +2635,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
#, fuzzy
|
||||
msgid "Swap"
|
||||
msgstr "Değiştir"
|
||||
|
@ -2824,7 +2838,7 @@ msgstr ""
|
|||
"Sunucu adı yalnızca harf, unicode, sayı, kısa çizgi, tire ve nokta "
|
||||
"içermelidir."
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
|
@ -2937,7 +2951,7 @@ msgstr "İpuçları"
|
|||
msgid "Title"
|
||||
msgstr "Başlık"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
|
@ -2992,12 +3006,12 @@ msgid_plural "Total %{total} items"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
#, fuzzy
|
||||
msgid "TOTP"
|
||||
msgstr "TOTP"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
|
@ -3045,7 +3059,7 @@ msgstr "Güncelleme"
|
|||
msgid "Updated successfully"
|
||||
msgstr "Başarıyla güncellendi"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
#, fuzzy
|
||||
msgid "Upgrade"
|
||||
|
@ -3071,7 +3085,7 @@ msgstr "Nginx kullanıcı arayüzü yükseltiliyor, lütfen bekleyin..."
|
|||
msgid "Upstream Name"
|
||||
msgstr "Yukarı Akış Adı"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#, fuzzy
|
||||
msgid "Uptime:"
|
||||
msgstr "Çalışma süresi:"
|
||||
|
@ -3200,7 +3214,7 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
#, fuzzy
|
||||
msgid "Writes"
|
||||
msgstr "Yazıyor"
|
||||
|
@ -3218,7 +3232,7 @@ msgstr "Sertifikayı diske yazma"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
#, fuzzy
|
||||
msgid "Yes"
|
||||
msgstr "Evet"
|
||||
|
|
|
@ -69,8 +69,8 @@ msgstr "Sửa cấu hình"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "Thêm Directive"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "Thêm Location"
|
||||
|
||||
|
@ -197,7 +197,7 @@ msgstr "Bạn chắc chắn muốn xoá directive này ?"
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "Bạn chắc chắn muốn xoá directive này ?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
#, fuzzy
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "Bạn chắc chắn muốn xoá location này ?"
|
||||
|
@ -330,7 +330,7 @@ msgstr ""
|
|||
msgid "CADir"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr ""
|
||||
|
||||
|
@ -388,7 +388,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "Chứng chỉ SSL hợp lệ"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
#, fuzzy
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
|
@ -416,7 +416,7 @@ msgstr "Phương pháp xác thực"
|
|||
msgid "Change Certificate"
|
||||
msgstr "Thay đổi chứng chỉ"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
#, fuzzy
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
|
@ -482,8 +482,8 @@ msgid "Command"
|
|||
msgstr "Bình luận"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "Bình luận"
|
||||
|
@ -518,8 +518,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr ""
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "Nội dung"
|
||||
|
||||
|
@ -536,11 +536,11 @@ msgstr ""
|
|||
msgid "Core Upgrade"
|
||||
msgstr "Cập nhật core"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "Trạng thái CPU"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
|
||||
|
@ -586,11 +586,11 @@ msgstr "Chứng chỉ"
|
|||
msgid "Credentials"
|
||||
msgstr "Chứng chỉ"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr ""
|
||||
|
||||
|
@ -622,6 +622,11 @@ msgstr "Tên cơ sở dữ liệu (Tuỳ chọn, Mặc định là: database)"
|
|||
msgid "Days"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "Mô tả"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -762,7 +767,7 @@ msgstr "Đã tắt"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "Đã tắt thành công"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "Disk IO"
|
||||
|
||||
|
@ -944,7 +949,7 @@ msgstr "Không thể bật %{conf_name} trên %{node_name}"
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr "Đã bật %{conf_name} trên %{node_name}"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
#, fuzzy
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "Đã bật"
|
||||
|
@ -986,7 +991,7 @@ msgstr "Đã bật"
|
|||
msgid "Enable TLS"
|
||||
msgstr "Bật TLS"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
#, fuzzy
|
||||
msgid "Enable TOTP"
|
||||
msgstr "Bật TLS"
|
||||
|
@ -1022,7 +1027,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "Đặt biến môi trường"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
#, fuzzy
|
||||
msgid "Environments"
|
||||
msgstr "Environments"
|
||||
|
@ -1209,7 +1214,7 @@ msgid ""
|
|||
"ban threshold minutes, the ip will be banned for a period of time."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1248,12 +1253,12 @@ msgstr "Không thể khởi tạo trình nâng cấp"
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "Đang khởi tạo trình nâng cấp"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1298,6 +1303,10 @@ msgstr ""
|
|||
msgid "Invalid recovery code"
|
||||
msgstr ""
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
msgid "Invalid request format"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr ""
|
||||
|
@ -1382,16 +1391,16 @@ msgstr "Liên kết bắt đầu"
|
|||
msgid "List"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#, fuzzy
|
||||
msgid "Load Average:"
|
||||
msgstr "Tải trung bình:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
#, fuzzy
|
||||
msgid "Load successfully"
|
||||
msgstr "Lưu thành công"
|
||||
|
@ -1402,7 +1411,7 @@ msgstr "Lưu thành công"
|
|||
msgid "Local"
|
||||
msgstr "Location"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "Location"
|
||||
|
||||
|
@ -1476,12 +1485,12 @@ msgstr ""
|
|||
msgid "Max Attempts"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "Memory"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "Memory và Storage"
|
||||
|
||||
|
@ -1540,19 +1549,19 @@ msgstr "Single Directive"
|
|||
msgid "Name"
|
||||
msgstr "Tên"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "Mạng"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "Thống kê mạng"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "Tổng lưu lượng mạng đã nhận"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "Tổng lưu lượng mạng đã gửi"
|
||||
|
||||
|
@ -1673,7 +1682,7 @@ msgstr "Restart Nginx thành công"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1798,7 +1807,7 @@ msgstr ""
|
|||
msgid "OS"
|
||||
msgstr "Hệ điều hành"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "Hệ điều hành:"
|
||||
|
||||
|
@ -1849,8 +1858,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "Đường dẫn"
|
||||
|
||||
|
@ -1950,7 +1959,7 @@ msgid ""
|
|||
"Please note that the unit of time configurations below are all in seconds."
|
||||
msgstr "Lưu ý đơn vị cấu hình thời gian bên dưới được tính bằng giây."
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2009,11 +2018,11 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr "Đọc"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr "Nhận"
|
||||
|
@ -2033,15 +2042,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "Xoá thành công"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2223,6 +2232,10 @@ msgstr "Gia hạn chứng chỉ SSL thành công"
|
|||
msgid "Renew successfully"
|
||||
msgstr "Gia hạn chứng chỉ SSL"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr "Yêu cầu có chứa tham số sai"
|
||||
|
@ -2231,7 +2244,7 @@ msgstr "Yêu cầu có chứa tham số sai"
|
|||
msgid "Reset"
|
||||
msgstr "Đặt lại"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
#, fuzzy
|
||||
msgid "Reset 2FA"
|
||||
msgstr "Đặt lại"
|
||||
|
@ -2325,7 +2338,7 @@ msgstr "Lưu thành công"
|
|||
msgid "Saved successfully"
|
||||
msgstr "Lưu thành công"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2333,7 +2346,7 @@ msgstr ""
|
|||
msgid "SDK"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2345,12 +2358,12 @@ msgstr "Bộ chọn"
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "Gửi"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "Thông tin máy chủ"
|
||||
|
||||
|
@ -2488,8 +2501,8 @@ msgstr "Trạng thái"
|
|||
msgid "Stopped"
|
||||
msgstr "Đã dừng"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "Storage"
|
||||
|
||||
|
@ -2519,8 +2532,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr "Swap"
|
||||
|
||||
|
@ -2690,7 +2703,7 @@ msgid ""
|
|||
"hyphens, dashes, colons, and dots."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr ""
|
||||
|
@ -2781,7 +2794,7 @@ msgstr ""
|
|||
msgid "Title"
|
||||
msgstr "Tiêu đề"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2823,11 +2836,11 @@ msgid_plural "Total %{total} items"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2868,7 +2881,7 @@ msgstr "Ngày cập nhật"
|
|||
msgid "Updated successfully"
|
||||
msgstr "Cập nhật thành công"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr "Cập nhật"
|
||||
|
@ -2891,7 +2904,7 @@ msgstr "Đang cập nhật Nginx UI, vui lòng đợi..."
|
|||
msgid "Upstream Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "Thời gian hoạt động:"
|
||||
|
||||
|
@ -3005,7 +3018,7 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "Ghi"
|
||||
|
||||
|
@ -3020,7 +3033,7 @@ msgstr "Ghi chứng chỉ vào disk"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "Có"
|
||||
|
||||
|
|
|
@ -71,8 +71,8 @@ msgstr "添加配置"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "在下面添加指令"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "添加 Location"
|
||||
|
||||
|
@ -184,7 +184,7 @@ msgstr "您确定要删除这条指令?"
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "您确定要删除这个项目吗?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "您确定要删除这个 Location?"
|
||||
|
||||
|
@ -310,7 +310,7 @@ msgstr "CA Dir"
|
|||
msgid "CADir"
|
||||
msgstr "CADir"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr "无法扫描?使用文本密钥绑定"
|
||||
|
||||
|
@ -363,7 +363,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "证书续期间隔"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
msgstr[0] "证书状态"
|
||||
|
@ -386,7 +386,7 @@ msgstr "挑战方法"
|
|||
msgid "Change Certificate"
|
||||
msgstr "更改证书"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
msgstr[0] "变更证书"
|
||||
|
@ -448,8 +448,8 @@ msgid "Command"
|
|||
msgstr "命令"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "注释"
|
||||
|
@ -483,8 +483,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr "连接中断,请刷新页面。"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "内容"
|
||||
|
||||
|
@ -501,11 +501,11 @@ msgstr "拷贝"
|
|||
msgid "Core Upgrade"
|
||||
msgstr "核心升级"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "CPU 状态"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
|
||||
|
@ -547,11 +547,11 @@ msgstr "DNS 凭证"
|
|||
msgid "Credentials"
|
||||
msgstr "凭证"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr "当前账户已启用 TOTP 验证。"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr "当前用户未启用 TOTP 验证。"
|
||||
|
||||
|
@ -583,6 +583,10 @@ msgstr "数据库 (可选,默认: database)"
|
|||
msgid "Days"
|
||||
msgstr "天"
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
msgid "Decryption failed"
|
||||
msgstr "解密失败"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -713,7 +717,7 @@ msgstr "禁用"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "禁用成功"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "磁盘 IO"
|
||||
|
||||
|
@ -876,7 +880,7 @@ msgstr "在%{node_name}中启用%{conf_name}失败"
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr "成功启用%{node_name}中的%{conf_name}"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "二步验证启用成功"
|
||||
|
||||
|
@ -912,7 +916,7 @@ msgstr "启用成功"
|
|||
msgid "Enable TLS"
|
||||
msgstr "启用 TLS"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
msgid "Enable TOTP"
|
||||
msgstr "启用 TOTP"
|
||||
|
||||
|
@ -946,7 +950,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "环境变量已清理"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
msgid "Environments"
|
||||
msgstr "环境"
|
||||
|
||||
|
@ -1126,7 +1130,7 @@ msgstr ""
|
|||
"如果某个 IP 的登录失败次数达到禁用阈值分钟内的最大尝试次数,该 IP 将被禁止登"
|
||||
"录一段时间。"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1163,12 +1167,12 @@ msgstr "初始化核心升级程序错误"
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "初始化核心升级器"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr "输入应用程序中的代码:"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr "输入恢复代码:"
|
||||
|
||||
|
@ -1209,6 +1213,10 @@ msgstr "二次验证码或恢复代码无效"
|
|||
msgid "Invalid recovery code"
|
||||
msgstr "无效的恢复代码"
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
msgid "Invalid request format"
|
||||
msgstr "无效的请求格式"
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr "IP"
|
||||
|
@ -1284,15 +1292,15 @@ msgstr "链接"
|
|||
msgid "List"
|
||||
msgstr "列表"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
msgid "Load Average:"
|
||||
msgstr "系统负载:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr "从设置中加载"
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
msgid "Load successfully"
|
||||
msgstr "加载成功"
|
||||
|
||||
|
@ -1301,7 +1309,7 @@ msgstr "加载成功"
|
|||
msgid "Local"
|
||||
msgstr "本地"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "Location"
|
||||
|
||||
|
@ -1376,12 +1384,12 @@ msgstr "托管证书"
|
|||
msgid "Max Attempts"
|
||||
msgstr "最大尝试次数"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "内存"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "内存与存储"
|
||||
|
||||
|
@ -1435,19 +1443,19 @@ msgstr "多行指令"
|
|||
msgid "Name"
|
||||
msgstr "名称"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "网络"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "流量统计"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "下载流量"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "上传流量"
|
||||
|
||||
|
@ -1561,7 +1569,7 @@ msgstr "Nginx 重启成功"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1681,7 +1689,7 @@ msgstr "原名"
|
|||
msgid "OS"
|
||||
msgstr "OS"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "OS:"
|
||||
|
||||
|
@ -1733,8 +1741,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr "密码长度不能超过 20 个字符"
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "路径"
|
||||
|
||||
|
@ -1828,7 +1836,7 @@ msgid ""
|
|||
"Please note that the unit of time configurations below are all in seconds."
|
||||
msgstr "请注意,下面的时间单位配置均以秒为单位。"
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr "请至少选择一个节点进行升级"
|
||||
|
||||
|
@ -1885,11 +1893,11 @@ msgid "Public Security Number"
|
|||
msgstr "公安备案号"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr "读"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr "下载"
|
||||
|
@ -1908,15 +1916,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "恢复成功"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr "恢复"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr "恢复代码"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr "恢复代码:"
|
||||
|
||||
|
@ -2073,6 +2081,10 @@ msgstr "证书续期成功"
|
|||
msgid "Renew successfully"
|
||||
msgstr "更新成功"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr "请求超时"
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr "请求参数错误"
|
||||
|
@ -2081,7 +2093,7 @@ msgstr "请求参数错误"
|
|||
msgid "Reset"
|
||||
msgstr "重置"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
msgid "Reset 2FA"
|
||||
msgstr "重置二步验证"
|
||||
|
||||
|
@ -2168,7 +2180,7 @@ msgstr "保存成功"
|
|||
msgid "Saved successfully"
|
||||
msgstr "保存成功"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr "用手机扫描二维码,将账户添加到应用程序中。"
|
||||
|
||||
|
@ -2176,7 +2188,7 @@ msgstr "用手机扫描二维码,将账户添加到应用程序中。"
|
|||
msgid "SDK"
|
||||
msgstr "SDK"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr "密钥已复制"
|
||||
|
||||
|
@ -2188,12 +2200,12 @@ msgstr "选择器"
|
|||
msgid "Self Check"
|
||||
msgstr "自我检查"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "上传"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "服务器信息"
|
||||
|
||||
|
@ -2328,8 +2340,8 @@ msgstr "状态"
|
|||
msgid "Stopped"
|
||||
msgstr "已停止"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "存储"
|
||||
|
||||
|
@ -2359,8 +2371,8 @@ msgstr ""
|
|||
"支持通过 WebSocket 协议与后端通信,如果您正在使用 Nginx 反向代理了 Nginx UI "
|
||||
"请参考:https://nginxui.com/guide/nginx-proxy-example.html 编写配置文件"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr "Swap"
|
||||
|
||||
|
@ -2519,7 +2531,7 @@ msgid ""
|
|||
"hyphens, dashes, colons, and dots."
|
||||
msgstr "公安备案号只能包含字母、单码、数字、连字符、破折号、冒号和点。"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr "恢复密码只会显示一次,请妥善保存。"
|
||||
|
@ -2608,7 +2620,7 @@ msgstr "提示"
|
|||
msgid "Title"
|
||||
msgstr "标题"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2652,11 +2664,11 @@ msgid "Total %{total} item"
|
|||
msgid_plural "Total %{total} items"
|
||||
msgstr[0] "共 %{total} 个项目"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr "TOTP"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2695,7 +2707,7 @@ msgstr "修改时间"
|
|||
msgid "Updated successfully"
|
||||
msgstr "更新成功"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr "升级"
|
||||
|
@ -2716,7 +2728,7 @@ msgstr "正在升级 Nginx UI,请等待..."
|
|||
msgid "Upstream Name"
|
||||
msgstr "Upstream 名称"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "运行时间:"
|
||||
|
||||
|
@ -2825,7 +2837,7 @@ msgstr ""
|
|||
"操作。"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "写"
|
||||
|
||||
|
@ -2840,7 +2852,7 @@ msgstr "正在将证书写入磁盘"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "是的"
|
||||
|
||||
|
|
|
@ -76,8 +76,8 @@ msgstr "添加配置"
|
|||
msgid "Add Directive Below"
|
||||
msgstr "在下方新增指令"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:132
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:159
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:130
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:157
|
||||
msgid "Add Location"
|
||||
msgstr "新增 Location"
|
||||
|
||||
|
@ -192,7 +192,7 @@ msgstr "您確定要刪除這條指令嗎?"
|
|||
msgid "Are you sure you want to remove this item?"
|
||||
msgstr "您確定要刪除此項目嗎?"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:86
|
||||
msgid "Are you sure you want to remove this location?"
|
||||
msgstr "您確定要刪除此 Location 嗎?"
|
||||
|
||||
|
@ -319,7 +319,7 @@ msgstr "CA Dir"
|
|||
msgid "CADir"
|
||||
msgstr "CADir"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:145
|
||||
#: src/views/preference/components/TOTP.vue:129
|
||||
msgid "Can't scan? Use text key binding"
|
||||
msgstr ""
|
||||
|
||||
|
@ -377,7 +377,7 @@ msgid "Certificate Renewal Interval"
|
|||
msgstr "憑證更新間隔"
|
||||
|
||||
#: src/views/certificate/CertificateEditor.vue:128
|
||||
#: src/views/site/cert/Cert.vue:32
|
||||
#: src/views/site/cert/Cert.vue:33
|
||||
msgid "Certificate Status"
|
||||
msgid_plural "Certificates Status"
|
||||
msgstr[0] "憑證狀態"
|
||||
|
@ -400,7 +400,7 @@ msgstr "驗證方式"
|
|||
msgid "Change Certificate"
|
||||
msgstr "更換憑證"
|
||||
|
||||
#: src/views/site/cert/Cert.vue:51
|
||||
#: src/views/site/cert/Cert.vue:52
|
||||
msgid "Changed Certificate"
|
||||
msgid_plural "Changed Certificates"
|
||||
msgstr[0] "變更後憑證"
|
||||
|
@ -461,8 +461,8 @@ msgid "Command"
|
|||
msgstr "命令"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:105
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:136
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:103
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:134
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:134
|
||||
msgid "Comments"
|
||||
msgstr "備註"
|
||||
|
@ -496,8 +496,8 @@ msgid "Connection lost, please refresh the page."
|
|||
msgstr "連接丟失,請重新整理。"
|
||||
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:117
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:145
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:115
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:143
|
||||
msgid "Content"
|
||||
msgstr "內容"
|
||||
|
||||
|
@ -514,11 +514,11 @@ msgstr "複製"
|
|||
msgid "Core Upgrade"
|
||||
msgstr "核心升級"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:305
|
||||
#: src/views/dashboard/ServerAnalytic.vue:301
|
||||
msgid "CPU Status"
|
||||
msgstr "中央處理器狀態"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:199
|
||||
#: src/views/dashboard/ServerAnalytic.vue:195
|
||||
msgid "CPU:"
|
||||
msgstr "中央處理器:"
|
||||
|
||||
|
@ -560,12 +560,12 @@ msgstr "認證"
|
|||
msgid "Credentials"
|
||||
msgstr "認證資訊"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:93
|
||||
#: src/views/preference/components/TOTP.vue:77
|
||||
#, fuzzy
|
||||
msgid "Current account is enabled TOTP."
|
||||
msgstr "當前帳戶已啟用多因素身份驗證。"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
#: src/views/preference/components/TOTP.vue:74
|
||||
#, fuzzy
|
||||
msgid "Current account is not enabled TOTP."
|
||||
msgstr "當前帳戶未啟用多因素身份驗證。"
|
||||
|
@ -599,6 +599,11 @@ msgstr "資料庫 (可選,預設: database)"
|
|||
msgid "Days"
|
||||
msgstr "天"
|
||||
|
||||
#: src/constants/errors/middleware.ts:3
|
||||
#, fuzzy
|
||||
msgid "Decryption failed"
|
||||
msgstr "描述"
|
||||
|
||||
#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
|
||||
#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
|
||||
#: src/views/site/ngx_conf/NgxServer.vue:110
|
||||
|
@ -735,7 +740,7 @@ msgstr "停用"
|
|||
msgid "Disabled successfully"
|
||||
msgstr "成功停用"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:370
|
||||
#: src/views/dashboard/ServerAnalytic.vue:366
|
||||
msgid "Disk IO"
|
||||
msgstr "磁碟 IO"
|
||||
|
||||
|
@ -828,8 +833,9 @@ msgstr "試運轉模式已啟用"
|
|||
msgid ""
|
||||
"Due to the security policies of some browsers, you cannot use passkeys on "
|
||||
"non-HTTPS websites, except when running on localhost."
|
||||
msgstr "基於部分瀏覽器的安全政策,您無法在未啟用 HTTPS 網站,特別是 localhost "
|
||||
"上使用通行密鑰。"
|
||||
msgstr ""
|
||||
"基於部分瀏覽器的安全政策,您無法在未啟用 HTTPS 網站,特別是 localhost 上使用"
|
||||
"通行密鑰。"
|
||||
|
||||
#: src/views/site/site_list/SiteDuplicate.vue:72
|
||||
#: src/views/site/site_list/SiteList.vue:140
|
||||
|
@ -898,7 +904,7 @@ msgstr "在 %{node_name} 啟用 %{conf_name} 失敗"
|
|||
msgid "Enable %{conf_name} in %{node_name} successfully"
|
||||
msgstr "成功在 %{node_name} 啟用 %{conf_name}"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:52
|
||||
#: src/views/preference/components/TOTP.vue:38
|
||||
msgid "Enable 2FA successfully"
|
||||
msgstr "啟用多因素身份驗證成功"
|
||||
|
||||
|
@ -938,7 +944,7 @@ msgstr "啟用成功"
|
|||
msgid "Enable TLS"
|
||||
msgstr "啟用 TLS"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:119
|
||||
#: src/views/preference/components/TOTP.vue:103
|
||||
#, fuzzy
|
||||
msgid "Enable TOTP"
|
||||
msgstr "啟用 TLS"
|
||||
|
@ -973,7 +979,7 @@ msgid "Environment variables cleaned"
|
|||
msgstr "環境變數已清理"
|
||||
|
||||
#: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
|
||||
#: src/views/environment/Environment.vue:33
|
||||
#: src/views/environment/Environment.vue:43
|
||||
msgid "Environments"
|
||||
msgstr "環境"
|
||||
|
||||
|
@ -1154,7 +1160,7 @@ msgstr ""
|
|||
"如果來自某個 IP 的登錄失敗次數在禁止閾值分鐘內達到最大嘗試次數,該 IP 將被禁"
|
||||
"止一段時間。"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:105
|
||||
#: src/views/preference/components/TOTP.vue:89
|
||||
msgid ""
|
||||
"If you lose your mobile phone, you can use the recovery code to reset your "
|
||||
"2FA."
|
||||
|
@ -1191,12 +1197,12 @@ msgstr "初始化核心升級程式錯誤"
|
|||
msgid "Initialing core upgrader"
|
||||
msgstr "正在初始化核心升級程式"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:152
|
||||
#: src/views/preference/components/TOTP.vue:136
|
||||
msgid "Input the code from the app:"
|
||||
msgstr "請輸入應用程式中的代碼:"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:82
|
||||
#: src/views/preference/components/TOTP.vue:165
|
||||
#: src/views/preference/components/TOTP.vue:149
|
||||
msgid "Input the recovery code:"
|
||||
msgstr "輸入恢復碼:"
|
||||
|
||||
|
@ -1239,6 +1245,11 @@ msgstr "無效的密碼或恢復碼"
|
|||
msgid "Invalid recovery code"
|
||||
msgstr "無效的多重因素驗證或恢復碼"
|
||||
|
||||
#: src/constants/errors/middleware.ts:2
|
||||
#, fuzzy
|
||||
msgid "Invalid request format"
|
||||
msgstr "無效的多重因素驗證或恢復碼"
|
||||
|
||||
#: src/views/preference/AuthSettings.vue:14
|
||||
msgid "IP"
|
||||
msgstr "IP"
|
||||
|
@ -1317,15 +1328,15 @@ msgstr "連結開始"
|
|||
msgid "List"
|
||||
msgstr "列表"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:187
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
msgid "Load Average:"
|
||||
msgstr "負載平均值:"
|
||||
|
||||
#: src/views/environment/Environment.vue:39
|
||||
#: src/views/environment/Environment.vue:49
|
||||
msgid "Load from settings"
|
||||
msgstr "從設置加載"
|
||||
|
||||
#: src/views/environment/Environment.vue:13
|
||||
#: src/views/environment/Environment.vue:17
|
||||
msgid "Load successfully"
|
||||
msgstr "加載成功"
|
||||
|
||||
|
@ -1334,7 +1345,7 @@ msgstr "加載成功"
|
|||
msgid "Local"
|
||||
msgstr "本機"
|
||||
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:69
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:68
|
||||
msgid "Location"
|
||||
msgstr "Location"
|
||||
|
||||
|
@ -1408,12 +1419,12 @@ msgstr "受管理的憑證"
|
|||
msgid "Max Attempts"
|
||||
msgstr "最大嘗試次數"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:226
|
||||
#: src/views/dashboard/ServerAnalytic.vue:227
|
||||
#: src/views/dashboard/ServerAnalytic.vue:222
|
||||
#: src/views/dashboard/ServerAnalytic.vue:223
|
||||
msgid "Memory"
|
||||
msgstr "記憶體"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:216
|
||||
#: src/views/dashboard/ServerAnalytic.vue:212
|
||||
msgid "Memory and Storage"
|
||||
msgstr "記憶體與儲存"
|
||||
|
||||
|
@ -1467,19 +1478,19 @@ msgstr "多行指令"
|
|||
msgid "Name"
|
||||
msgstr "名稱"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:331
|
||||
#: src/views/dashboard/ServerAnalytic.vue:327
|
||||
msgid "Network"
|
||||
msgstr "網路"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:273
|
||||
#: src/views/dashboard/ServerAnalytic.vue:269
|
||||
msgid "Network Statistics"
|
||||
msgstr "網路統計"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:280
|
||||
#: src/views/dashboard/ServerAnalytic.vue:276
|
||||
msgid "Network Total Receive"
|
||||
msgstr "下載流量"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:286
|
||||
#: src/views/dashboard/ServerAnalytic.vue:282
|
||||
msgid "Network Total Send"
|
||||
msgstr "上傳流量"
|
||||
|
||||
|
@ -1596,7 +1607,7 @@ msgstr "Nginx 重啟成功"
|
|||
#: src/views/preference/AuthSettings.vue:136
|
||||
#: src/views/preference/CertSettings.vue:70
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:90
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:88
|
||||
#: src/views/site/site_list/SiteList.vue:143
|
||||
#: src/views/stream/StreamList.vue:163
|
||||
msgid "No"
|
||||
|
@ -1717,7 +1728,7 @@ msgstr "原始名稱"
|
|||
msgid "OS"
|
||||
msgstr "作業系統"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:193
|
||||
#: src/views/dashboard/ServerAnalytic.vue:189
|
||||
msgid "OS:"
|
||||
msgstr "作業系統:"
|
||||
|
||||
|
@ -1769,8 +1780,8 @@ msgid "Password length cannot exceed 20 characters"
|
|||
msgstr "密碼長度不能超過 20 個字元"
|
||||
|
||||
#: src/views/config/ConfigEditor.vue:263
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:111
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:139
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:109
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:137
|
||||
msgid "Path"
|
||||
msgstr "路徑"
|
||||
|
||||
|
@ -1866,7 +1877,7 @@ msgid ""
|
|||
"Please note that the unit of time configurations below are all in seconds."
|
||||
msgstr "請注意,以下時間配置單位均為秒。"
|
||||
|
||||
#: src/views/environment/Environment.vue:48
|
||||
#: src/views/environment/Environment.vue:58
|
||||
#, fuzzy
|
||||
msgid "Please select at least one node to upgrade"
|
||||
msgstr "請至少選擇一個節點!"
|
||||
|
@ -1927,11 +1938,11 @@ msgid "Public Security Number"
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:387
|
||||
#: src/views/dashboard/ServerAnalytic.vue:383
|
||||
msgid "Reads"
|
||||
msgstr "讀取"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:338
|
||||
#: src/views/dashboard/ServerAnalytic.vue:334
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Receive"
|
||||
msgstr "接收"
|
||||
|
@ -1950,15 +1961,15 @@ msgid "Recovered Successfully"
|
|||
msgstr "恢復成功"
|
||||
|
||||
#: src/components/TwoFA/Authorization.vue:89
|
||||
#: src/views/preference/components/TOTP.vue:172
|
||||
#: src/views/preference/components/TOTP.vue:156
|
||||
msgid "Recovery"
|
||||
msgstr "恢復"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:98
|
||||
#: src/views/preference/components/TOTP.vue:82
|
||||
msgid "Recovery Code"
|
||||
msgstr "恢復碼"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:107
|
||||
#: src/views/preference/components/TOTP.vue:91
|
||||
msgid "Recovery Code:"
|
||||
msgstr "恢復碼:"
|
||||
|
||||
|
@ -2124,6 +2135,10 @@ msgstr "更新憑證成功"
|
|||
msgid "Renew successfully"
|
||||
msgstr "更新成功"
|
||||
|
||||
#: src/constants/errors/crypto.ts:4
|
||||
msgid "Request timeout"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:32
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr "請求參數錯誤"
|
||||
|
@ -2132,7 +2147,7 @@ msgstr "請求參數錯誤"
|
|||
msgid "Reset"
|
||||
msgstr "重設"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:127
|
||||
#: src/views/preference/components/TOTP.vue:111
|
||||
msgid "Reset 2FA"
|
||||
msgstr "重置多重因素驗證"
|
||||
|
||||
|
@ -2223,7 +2238,7 @@ msgstr "儲存成功"
|
|||
msgid "Saved successfully"
|
||||
msgstr "儲存成功"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:88
|
||||
#: src/views/preference/components/TOTP.vue:72
|
||||
msgid "Scan the QR code with your mobile phone to add the account to the app."
|
||||
msgstr "用手機掃描二維碼將賬戶添加到應用程序中。"
|
||||
|
||||
|
@ -2231,7 +2246,7 @@ msgstr "用手機掃描二維碼將賬戶添加到應用程序中。"
|
|||
msgid "SDK"
|
||||
msgstr "SDK"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:144
|
||||
#: src/views/preference/components/TOTP.vue:128
|
||||
msgid "Secret has been copied"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2243,12 +2258,12 @@ msgstr "選擇器"
|
|||
msgid "Self Check"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:348
|
||||
#: src/views/dashboard/ServerAnalytic.vue:344
|
||||
#: src/views/dashboard/ServerAnalytic.vue:35
|
||||
msgid "Send"
|
||||
msgstr "傳送"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
#: src/views/dashboard/ServerAnalytic.vue:175
|
||||
msgid "Server Info"
|
||||
msgstr "伺服器資訊"
|
||||
|
||||
|
@ -2383,8 +2398,8 @@ msgstr "狀態"
|
|||
msgid "Stopped"
|
||||
msgstr "已停止"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:254
|
||||
#: src/views/dashboard/ServerAnalytic.vue:255
|
||||
#: src/views/dashboard/ServerAnalytic.vue:250
|
||||
#: src/views/dashboard/ServerAnalytic.vue:251
|
||||
msgid "Storage"
|
||||
msgstr "儲存空間"
|
||||
|
||||
|
@ -2414,8 +2429,8 @@ msgid ""
|
|||
"guide/nginx-proxy-example.html"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:240
|
||||
#: src/views/dashboard/ServerAnalytic.vue:241
|
||||
#: src/views/dashboard/ServerAnalytic.vue:236
|
||||
#: src/views/dashboard/ServerAnalytic.vue:237
|
||||
msgid "Swap"
|
||||
msgstr "交換空間"
|
||||
|
||||
|
@ -2580,7 +2595,7 @@ msgid ""
|
|||
"hyphens, dashes, colons, and dots."
|
||||
msgstr "伺服器名稱應僅包含字母、Unicode、數字、連字符、破折號和點。"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:106
|
||||
#: src/views/preference/components/TOTP.vue:90
|
||||
msgid ""
|
||||
"The recovery code is only displayed once, please save it in a safe place."
|
||||
msgstr "恢復碼僅顯示一次,請將其保存在安全的地方。"
|
||||
|
@ -2672,7 +2687,7 @@ msgstr "提示"
|
|||
msgid "Title"
|
||||
msgstr "標題"
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:87
|
||||
#: src/views/preference/components/TOTP.vue:71
|
||||
msgid ""
|
||||
"To enable it, you need to install the Google or Microsoft Authenticator app "
|
||||
"on your mobile phone."
|
||||
|
@ -2712,11 +2727,11 @@ msgid "Total %{total} item"
|
|||
msgid_plural "Total %{total} items"
|
||||
msgstr[0] ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:85
|
||||
#: src/views/preference/components/TOTP.vue:69
|
||||
msgid "TOTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/preference/components/TOTP.vue:86
|
||||
#: src/views/preference/components/TOTP.vue:70
|
||||
msgid ""
|
||||
"TOTP is a two-factor authentication method that uses a time-based one-time "
|
||||
"password algorithm."
|
||||
|
@ -2756,7 +2771,7 @@ msgstr "更新時間"
|
|||
msgid "Updated successfully"
|
||||
msgstr "更新成功"
|
||||
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
|
||||
#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
|
||||
#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
|
||||
msgid "Upgrade"
|
||||
msgstr "升級"
|
||||
|
@ -2777,7 +2792,7 @@ msgstr "正在升級 Nginx UI,請稍候..."
|
|||
msgid "Upstream Name"
|
||||
msgstr "Upstream 名稱"
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:183
|
||||
#: src/views/dashboard/ServerAnalytic.vue:179
|
||||
msgid "Uptime:"
|
||||
msgstr "運作時間:"
|
||||
|
||||
|
@ -2884,7 +2899,7 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/ServerAnalytic.vue:37
|
||||
#: src/views/dashboard/ServerAnalytic.vue:377
|
||||
#: src/views/dashboard/ServerAnalytic.vue:373
|
||||
msgid "Writes"
|
||||
msgstr "寫"
|
||||
|
||||
|
@ -2899,7 +2914,7 @@ msgstr "將憑證寫入磁碟"
|
|||
#: src/views/preference/AuthSettings.vue:135
|
||||
#: src/views/preference/CertSettings.vue:69
|
||||
#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:89
|
||||
#: src/views/site/ngx_conf/LocationEditor.vue:87
|
||||
msgid "Yes"
|
||||
msgstr "是的"
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import { useSettingsStore, useUserStore } from '@/pinia'
|
|||
import router from '@/routes'
|
||||
import { message } from 'ant-design-vue'
|
||||
import axios from 'axios'
|
||||
import JSEncrypt from 'jsencrypt'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import 'nprogress/nprogress.css'
|
||||
|
||||
|
@ -33,16 +34,35 @@ const instance = axios.create({
|
|||
baseURL: import.meta.env.VITE_API_ROOT,
|
||||
timeout: 50000,
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
transformRequest: [function (data, headers) {
|
||||
if (!(headers) || headers['Content-Type'] === 'multipart/form-data;charset=UTF-8')
|
||||
return data
|
||||
else
|
||||
headers['Content-Type'] = 'application/json'
|
||||
|
||||
return JSON.stringify(data)
|
||||
}],
|
||||
})
|
||||
|
||||
const http = {
|
||||
get(url: string, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.get<any, any>(url, config)
|
||||
},
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
post(url: string, data: any = undefined, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.post<any, any>(url, data, config)
|
||||
},
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
put(url: string, data: any = undefined, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.put<any, any>(url, data, config)
|
||||
},
|
||||
delete(url: string, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.delete<any, any>(url, config)
|
||||
},
|
||||
patch(url: string, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.patch<any, any>(url, config)
|
||||
},
|
||||
}
|
||||
|
||||
export default http
|
||||
|
||||
const nprogress = useNProgress()
|
||||
|
||||
// Add new dedupe utility at the top
|
||||
|
@ -65,23 +85,36 @@ function useMessageDedupe(interval = 5000): MessageDedupe {
|
|||
}
|
||||
|
||||
instance.interceptors.request.use(
|
||||
config => {
|
||||
async config => {
|
||||
nprogress.start()
|
||||
if (token.value) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
(config.headers as any).Authorization = token.value
|
||||
config.headers.Authorization = token.value
|
||||
}
|
||||
|
||||
if (settings.environment.id) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
(config.headers as any)['X-Node-ID'] = settings.environment.id
|
||||
config.headers['X-Node-ID'] = settings.environment.id
|
||||
}
|
||||
|
||||
if (secureSessionId.value) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
(config.headers as any)['X-Secure-Session-ID'] = secureSessionId.value
|
||||
config.headers['X-Secure-Session-ID'] = secureSessionId.value
|
||||
}
|
||||
|
||||
if (config.headers?.['Content-Type'] !== 'multipart/form-data;charset=UTF-8') {
|
||||
config.headers['Content-Type'] = 'application/json'
|
||||
|
||||
if (config.crypto) {
|
||||
const cryptoParams = await http.get('/crypto/public_key')
|
||||
const { public_key } = await cryptoParams
|
||||
|
||||
// Encrypt data with RSA public key
|
||||
const encrypt = new JSEncrypt()
|
||||
encrypt.setPublicKey(public_key)
|
||||
|
||||
config.data = JSON.stringify({
|
||||
encrypted_params: encrypt.encrypt(JSON.stringify(config.data)),
|
||||
})
|
||||
}
|
||||
}
|
||||
return config
|
||||
},
|
||||
err => {
|
||||
|
@ -154,30 +187,3 @@ instance.interceptors.response.use(
|
|||
return Promise.reject(error.response.data)
|
||||
},
|
||||
)
|
||||
|
||||
const http = {
|
||||
get(url: string, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.get<any, any>(url, config)
|
||||
},
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
post(url: string, data: any = undefined, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.post<any, any>(url, data, config)
|
||||
},
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
put(url: string, data: any = undefined, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.put<any, any>(url, data, config)
|
||||
},
|
||||
delete(url: string, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.delete<any, any>(url, config)
|
||||
},
|
||||
patch(url: string, config: AxiosRequestConfig = {}) {
|
||||
// eslint-disable-next-line ts/no-explicit-any
|
||||
return instance.patch<any, any>(url, config)
|
||||
},
|
||||
}
|
||||
|
||||
export default http
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"version":"2.0.0-rc.1","build_id":7,"total_build":381}
|
||||
{"version":"2.0.0-rc.1","build_id":8,"total_build":382}
|
7
app/src/vite-env.d.ts
vendored
7
app/src/vite-env.d.ts
vendored
|
@ -27,3 +27,10 @@ declare module '@vue/runtime-core' {
|
|||
}, disableHtmlEscaping?: boolean) => string
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'axios' {
|
||||
interface AxiosRequestConfig {
|
||||
crypto?: boolean
|
||||
skipErrHandling?: boolean
|
||||
}
|
||||
}
|
||||
|
|
2
gen.sh
2
gen.sh
|
@ -4,7 +4,7 @@ go run generate.go -config ../../app.ini
|
|||
popd || exit
|
||||
|
||||
# generate error definitions
|
||||
go run cmd/errdef/generate.go . ts ./app/src/constants/errors
|
||||
go run cmd/errdef/generate.go -project . -type ts -output ./app/src/constants/errors -ignore-dirs .devcontainer,app,.github
|
||||
|
||||
# parse nginx directive indexs
|
||||
go run cmd/ngx_dir_index/ngx_dir_index.go ./internal/nginx/nginx_directives.json
|
||||
|
|
6
go.mod
6
go.mod
|
@ -35,7 +35,7 @@ require (
|
|||
github.com/spf13/cast v1.7.1
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/tufanbarisyildirim/gonginx v0.0.0-20250120210832-12a9c7ae0c8a
|
||||
github.com/uozi-tech/cosy v1.14.3
|
||||
github.com/uozi-tech/cosy v1.14.4
|
||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.1
|
||||
github.com/urfave/cli/v3 v3.0.0-beta1
|
||||
golang.org/x/crypto v0.32.0
|
||||
|
@ -256,7 +256,7 @@ require (
|
|||
go.uber.org/ratelimit v0.3.1 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
golang.org/x/arch v0.14.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c // indirect
|
||||
golang.org/x/exp v0.0.0-20250207012021-f9890c6ad9f3 // indirect
|
||||
golang.org/x/mod v0.23.0 // indirect
|
||||
golang.org/x/oauth2 v0.26.0 // indirect
|
||||
golang.org/x/sync v0.11.0 // indirect
|
||||
|
@ -269,7 +269,7 @@ require (
|
|||
google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect
|
||||
google.golang.org/grpc v1.70.0 // indirect
|
||||
google.golang.org/protobuf v1.36.4 // indirect
|
||||
google.golang.org/protobuf v1.36.5 // indirect
|
||||
gopkg.in/fsnotify.v1 v1.4.7 // indirect
|
||||
gopkg.in/guregu/null.v4 v4.0.0 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
|
|
66
go.sum
66
go.sum
|
@ -712,28 +712,16 @@ github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgI
|
|||
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
|
||||
github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
|
||||
github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
|
||||
github.com/aws/aws-sdk-go-v2 v1.35.0 h1:jTPxEJyzjSuuz0wB+302hr8Eu9KUI+Zv8zlujMGJpVI=
|
||||
github.com/aws/aws-sdk-go-v2 v1.35.0/go.mod h1:JgstGg0JjWU1KpVJjD5H0y0yyAIpSdKEq556EI6yOOM=
|
||||
github.com/aws/aws-sdk-go-v2 v1.36.0 h1:b1wM5CcE65Ujwn565qcwgtOTT1aT4ADOHHgglKjG7fk=
|
||||
github.com/aws/aws-sdk-go-v2 v1.36.0/go.mod h1:5PMILGVKiW32oDzjj6RU52yrNrDPUHcbZQYr1sM7qmM=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.29.3 h1:a5Ucjxe6iV+LHEBmYA9w40rT5aGxWybx/4l/O/fvJlE=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.29.3/go.mod h1:pt9z1x12zDiDb4iFLrxoeAKLVCU/Gp9DL/5BnwlY77o=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.29.5 h1:4lS2IB+wwkj5J43Tq/AwvnscBerBJtQQ6YS7puzCI1k=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.29.5/go.mod h1:SNzldMlDVbN6nWxM7XsUiNXPSa1LWlqiXtvh/1PrJGg=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.56 h1:JKMBreKudV+ozx6rZJLvEtiexv48aEdhdC7mXUw9MLs=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.56/go.mod h1:S3xRjIHD8HHFgMTz4L56q/7IldfNtGL9JjH/vP3U6DA=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.58 h1:/d7FUpAPU8Lf2KUdjniQvfNdlMID0Sd9pS23FJ3SS9Y=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.58/go.mod h1:aVYW33Ow10CyMQGFgC0ptMRIqJWvJ4nxZb0sUiuQT/A=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26 h1:XMBqBEuZLf8yxtH+mU/uUDyQbN4iD/xv9h6he2+lzhw=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.26/go.mod h1:d0+wQ/3CYGPuHEfBTPpQdfUX7gjk0/Lxs5Q6KzdEGY8=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 h1:7lOW8NUwE9UZekS1DYoiPdVAqZ6A+LheHWb+mHbNOq8=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27/go.mod h1:w1BASFIPOPUae7AgaH4SbjNbfdkxuggLyGfNFTn8ITY=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30 h1:+7AzSGNhHoY53di13lvztf9Dyd/9ofzoYGBllkWp3a0=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.30/go.mod h1:Jxd/FrCny99yURiQiMywgXvBhd7tmgdv6KdlUTNzMSo=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 h1:lWm9ucLSRFiI4dQQafLrEOmEDGry3Swrz0BIRdiHJqQ=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31/go.mod h1:Huu6GG0YTfbPphQkDSo4dEGmQRTKb9k9G7RdtyQWxuI=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30 h1:Ex06eY6I5rO7IX0HalGfa5nGjpBoOsS1Qm3xfjkuszs=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.30/go.mod h1:AvyEMA9QcX59kFhVizBpIBpEMThUTXssuJe+emBdcGM=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 h1:ACxDklUKKXb48+eg5ROZXi1vDgfMyfIA/WyvqHcHI0o=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31/go.mod h1:yadnfsDwqXeVaohbGc/RaD287PuyRw2wugkh5ZL2J6k=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk=
|
||||
|
@ -741,28 +729,16 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJN
|
|||
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11 h1:5JKQ2J3BBW4ovy6A/5Lwx9SpA6IzgH8jB3bquGZ1NUw=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.11/go.mod h1:VShCk7rfCzK/b9U1aSkzLwcOoaDlYna16482QqEavis=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 h1:O+8vD2rGjfihBewr5bT+QUfYUHIxCVgG61LHoT59shM=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12/go.mod h1:usVdWJaosa66NMvmCrr08NcWDBRv4E6+YFG2pUdw1Lk=
|
||||
github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.13 h1:yukUijkcclShNo3QXry+udZDyDQOy8siCjqNfpRKuf8=
|
||||
github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.13/go.mod h1:Ka+a4bm2nmtvk+Ql1K2Bmr7MrJCs8qz4UDmaLQs1daY=
|
||||
github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.14 h1:GH3vnPsdH2sTkZRBPnAeMqwkJXdwPNrEh9nI+DEdD0o=
|
||||
github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.14/go.mod h1:fHFrxpH3kA2iK2NBg/jj3jxgVVfNS7WaKYC5axxr/PY=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.48.4 h1:qajhoD/ElVskbXAJfgljClGj7DGME0uoDGUMVjFTkNs=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.48.4/go.mod h1:kDfNqSNtcqB8aNUJClykJ+xLILNoYAaUIo72A2uR73Y=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.48.6 h1:O7L9iEodiF07vJoXShMrw2XyeAqZhLUIXqWEitCq6EE=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.48.6/go.mod h1:E93uWfli9RToQzVA7+bYnynKOFcYOhNWqhY1hWSMZRc=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.24.13 h1:q4pOAKxypbFoUJzOpgo939bF50qb4DgYshiDfcsdN0M=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.24.13/go.mod h1:G/0PTg7+vQT42ictQGjJhixzTcVZtHFvrN/OeTXrRfQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 h1:c5WJ3iHz7rLIgArznb3JCSQT3uUMiz9DLZhIX+1G8ok=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.24.14/go.mod h1:+JJQTxB6N4niArC14YNtxcQtwEqzS3o9Z32n7q33Rfs=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12 h1:4sGSGshSSfO1vrcXruPick3ioSf8nhhD6nuB2ni37P4=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.12/go.mod h1:NHpu/pLOelViA4qxkAFH10VLqh+XeLhZfXDaFyMVgSs=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 h1:f1L/JtUkVODD+k1+IiSJUUv8A++2qVr+Xvb3xWXETMU=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13/go.mod h1:tvqlFoja8/s0o+UruA1Nrezo/df0PzdunMDDurUfg6U=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.11 h1:RIXOjp7Dp4siCYJRwBHUcBdVgOWflSJGlq4ZhMI5Ta0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.11/go.mod h1:ZR17k9bPKPR8u0IkyA6xVsjr56doNQ4ZB1fs7abYBfE=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.13 h1:3LXNnmtH3TURctC23hnC0p/39Q5gre3FI7BNOiDcVWc=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.13/go.mod h1:7Yn+p66q/jt38qMoVfNvjbm3D89mGBnkwDcijgtih8w=
|
||||
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
|
||||
|
@ -1558,8 +1534,6 @@ github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYr
|
|||
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A=
|
||||
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU=
|
||||
github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE=
|
||||
github.com/oracle/oci-go-sdk/v65 v65.82.0 h1:42fSqE847E95ICfVPcKhRmzkvM6tucwbPdUMQydfWGc=
|
||||
github.com/oracle/oci-go-sdk/v65 v65.82.0/go.mod h1:IBEV9l1qBzUpo7zgGaRUhbB05BVfcDGYRFBCPlTcPp0=
|
||||
github.com/oracle/oci-go-sdk/v65 v65.83.0 h1:KFI0oyyCTPmgevHF+QlN02Zdf23Jx1p1X+4KPyH14H8=
|
||||
github.com/oracle/oci-go-sdk/v65 v65.83.0/go.mod h1:IBEV9l1qBzUpo7zgGaRUhbB05BVfcDGYRFBCPlTcPp0=
|
||||
github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI=
|
||||
|
@ -1678,8 +1652,6 @@ github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd
|
|||
github.com/sashabaranov/go-openai v1.36.1 h1:EVfRXwIlW2rUzpx6vR+aeIKCK/xylSrVYAx1TMTSX3g=
|
||||
github.com/sashabaranov/go-openai v1.36.1/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
|
||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31 h1:Fj7jPyu9TQjqfXcLylINK5PANSzOWXIX4QtGmfp67AY=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32 h1:4+LP7qmsLSGbmc66m1s5dKRMBwztRppfxFKlYqYte/c=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
|
@ -1687,8 +1659,6 @@ github.com/selectel/domains-go v1.1.0 h1:futG50J43ALLKQAnZk9H9yOtLGnSUh7c5hSvuC5
|
|||
github.com/selectel/domains-go v1.1.0/go.mod h1:SugRKfq4sTpnOHquslCpzda72wV8u0cMBHx0C0l+bzA=
|
||||
github.com/selectel/go-selvpcclient/v3 v3.2.1 h1:ny6WIAMiHzKxOgOEnwcWE79wIQij1AHHylzPA41MXCw=
|
||||
github.com/selectel/go-selvpcclient/v3 v3.2.1/go.mod h1:3EfSf8aEWyhspOGbvZ6mvnFg7JN5uckxNyBFPGWsXNQ=
|
||||
github.com/shirou/gopsutil/v4 v4.24.12 h1:qvePBOk20e0IKA1QXrIIU+jmk+zEiYVVx06WjBRlZo4=
|
||||
github.com/shirou/gopsutil/v4 v4.24.12/go.mod h1:DCtMPAad2XceTeIAbGyVfycbYQNBGk2P8cvDi7/VN9o=
|
||||
github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs=
|
||||
github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI=
|
||||
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
||||
|
@ -1780,12 +1750,8 @@ github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69
|
|||
github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
|
||||
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
|
||||
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1090 h1:0fZ+FZE7ZvqxGdYbtQW8OyPXGD1qGPmg4wT+Tjkv+1s=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1090/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1091 h1:RxogX8ZCPBmZ6PY7DjnWnwGRkAkYEEinT5WNNxbLVeo=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1091/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1090 h1:8AXFluT9RV4EeWC7kfJUWjnFQlIJ4pBVC/+Qtqgg0hM=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1090/go.mod h1:/XMAs17Sih+pqp/Pxy0WpmdZE/CychzXEnW/tTrCujk=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1091 h1:36WwNgrtoGKszQovUj3+0CjNsM1gMQ3a5lvZx2bkjng=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1091/go.mod h1:cWRGvOUnMQMky4oliMX1dXT6Z4CbsSGOIxaUcrD5Zvw=
|
||||
github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
|
||||
|
@ -1812,12 +1778,12 @@ github.com/ultradns/ultradns-go-sdk v1.8.0-20241010134910-243eeec h1:2s/ghQ8wKE+
|
|||
github.com/ultradns/ultradns-go-sdk v1.8.0-20241010134910-243eeec/go.mod h1:BZr7Qs3ku1ckpqed8tCRSqTlp8NAeZfAVpfx4OzXMss=
|
||||
github.com/uozi-tech/cosy v1.14.3 h1:YDleGHghw5Dtd8H7Fy0Iq0caXfxmhk7Zt6tJBONjq5Q=
|
||||
github.com/uozi-tech/cosy v1.14.3/go.mod h1:DSKLtoVaGLUlJ8KiQ1vWEsnv85epRrAAMXSijuq+asM=
|
||||
github.com/uozi-tech/cosy v1.14.4 h1:9X9CzxYjTg9DRQKgBjYvDNOAYYFclOXYYq518nO4vr0=
|
||||
github.com/uozi-tech/cosy v1.14.4/go.mod h1:DSKLtoVaGLUlJ8KiQ1vWEsnv85epRrAAMXSijuq+asM=
|
||||
github.com/uozi-tech/cosy-driver-mysql v0.2.2 h1:22S/XNIvuaKGqxQPsYPXN8TZ8hHjCQdcJKVQ83Vzxoo=
|
||||
github.com/uozi-tech/cosy-driver-mysql v0.2.2/go.mod h1:EZnRIbSj1V5U0gEeTobrXai/d1SV11lkl4zP9NFEmyE=
|
||||
github.com/uozi-tech/cosy-driver-postgres v0.2.1 h1:OICakGuT+omva6QOJCxTJ5Lfr7CGXLmk/zD+aS51Z2o=
|
||||
github.com/uozi-tech/cosy-driver-postgres v0.2.1/go.mod h1:eAy1A89yHbAEfjkhNAifaJQk172NqrNoRyRtFcZc9Go=
|
||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.0 h1:eTpIMyGoFUK4JcaiKfJHD5AyiM6vtCwN98c7Bz5n25o=
|
||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.0/go.mod h1:87a6mzn5IuEtIR4z7U4Ey8eKLGfNEOSkv7kPQlbNQgM=
|
||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.1 h1:W+Z4pY25PSJCeReqroG7LIBeffsqotbpHzgqSMqZDIM=
|
||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.1/go.mod h1:2ya7Z5P3HzFi1ktfL8gvwaAGx0DDV0bmWxNSNpaLlwo=
|
||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||
|
@ -1840,12 +1806,8 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2
|
|||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
|
||||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/yandex-cloud/go-genproto v0.0.0-20250127124313-5be1a2cc06d4 h1:3N8k0k2YikzqQUUAFqPhbhiLEodQrRKIvlsUuJ09DYo=
|
||||
github.com/yandex-cloud/go-genproto v0.0.0-20250127124313-5be1a2cc06d4/go.mod h1:0LDD/IZLIUIV4iPH+YcF+jysO3jkSvADFGm4dCAuwQo=
|
||||
github.com/yandex-cloud/go-genproto v0.0.0-20250203115010-0bcba64c41f6 h1:CHYGew+KO1JaK5sx/N2ApgVCTGCKvfSl0sSPplTyCog=
|
||||
github.com/yandex-cloud/go-genproto v0.0.0-20250203115010-0bcba64c41f6/go.mod h1:0LDD/IZLIUIV4iPH+YcF+jysO3jkSvADFGm4dCAuwQo=
|
||||
github.com/yandex-cloud/go-sdk v0.0.0-20250127132311-016f84adc072 h1:s2wfllm5Z32Sl1TktCxHXMKJ9yQXpdFUuN5CFA/8qJY=
|
||||
github.com/yandex-cloud/go-sdk v0.0.0-20250127132311-016f84adc072/go.mod h1:/7UdvQNU5/ISIOPHcj0S4lUcp/KejW2LJQhZGt9tdMU=
|
||||
github.com/yandex-cloud/go-sdk v0.0.0-20250203123950-24786ecffd92 h1:UTcY1921ZXBABB5JpSWxccyZaCjMuSbniyifW6nmLZ4=
|
||||
github.com/yandex-cloud/go-sdk v0.0.0-20250203123950-24786ecffd92/go.mod h1:MQm5WxsYpQRdUklz2C8q3uDhuIaDzzV7seLErAILLBE=
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||
|
@ -1931,8 +1893,6 @@ go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
|
|||
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
|
||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
golang.org/x/arch v0.13.0 h1:KCkqVVV1kGg0X87TFysjCJ8MxtZEIU4Ja/yXGeoECdA=
|
||||
golang.org/x/arch v0.13.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
|
||||
golang.org/x/arch v0.14.0 h1:z9JUEZWr8x4rR0OU6c4/4t6E6jOZ8/QBS2bBYBm4tx4=
|
||||
golang.org/x/arch v0.14.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
|
@ -1991,6 +1951,8 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk
|
|||
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
|
||||
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c h1:KL/ZBHXgKGVmuZBZ01Lt57yE5ws8ZPSkkihmEyq7FXc=
|
||||
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
|
||||
golang.org/x/exp v0.0.0-20250207012021-f9890c6ad9f3 h1:qNgPs5exUA+G0C96DrPwNrvLSj7GT/9D+3WMWUcUg34=
|
||||
golang.org/x/exp v0.0.0-20250207012021-f9890c6ad9f3/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
|
||||
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
|
@ -2033,8 +1995,6 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
|
|||
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
|
||||
golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
|
||||
golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM=
|
||||
golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -2147,8 +2107,6 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec
|
|||
golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
|
||||
golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
|
||||
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
|
||||
golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
|
||||
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
|
||||
golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE=
|
||||
golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -2167,8 +2125,6 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
|
|||
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
|
||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
||||
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
|
@ -2293,8 +2249,6 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|||
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
|
||||
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
|
||||
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
|
@ -2335,8 +2289,6 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
|||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
|
@ -2347,8 +2299,6 @@ golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxb
|
|||
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
|
||||
golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||
golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4=
|
||||
golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
@ -2645,16 +2595,10 @@ google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOl
|
|||
google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
|
||||
google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
|
||||
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
|
||||
google.golang.org/genproto v0.0.0-20250127172529-29210b9bc287 h1:WoUI1G0DQ648FKvSl756SKxHQR/bI+y4HyyIQfxMWI8=
|
||||
google.golang.org/genproto v0.0.0-20250127172529-29210b9bc287/go.mod h1:wkQ2Aj/xvshAUDtO/JHvu9y+AaN9cqs28QuSVSHtZSY=
|
||||
google.golang.org/genproto v0.0.0-20250204164813-702378808489 h1:nQcbCCOg2h2CQ0yA8SY3AHqriNKDvsetuq9mE/HFjtc=
|
||||
google.golang.org/genproto v0.0.0-20250204164813-702378808489/go.mod h1:wkQ2Aj/xvshAUDtO/JHvu9y+AaN9cqs28QuSVSHtZSY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287 h1:A2ni10G3UlplFrWdCDJTl7D7mJ7GSRm37S+PDimaKRw=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287 h1:J1H9f+LEdWAfHcez/4cvaVBox7cOYT+IU6rgqj5x++8=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
|
@ -2721,6 +2665,8 @@ google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw
|
|||
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
|
||||
google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
|
||||
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
|
102
internal/crypto/crypto.go
Normal file
102
internal/crypto/crypto.go
Normal file
|
@ -0,0 +1,102 @@
|
|||
package crypto
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"crypto/rsa"
|
||||
"crypto/x509"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"encoding/pem"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/0xJacky/Nginx-UI/internal/cache"
|
||||
"github.com/uozi-tech/cosy/logger"
|
||||
)
|
||||
|
||||
const (
|
||||
CacheKey = "sign"
|
||||
timeout = 10 * time.Minute
|
||||
)
|
||||
|
||||
type Sign struct {
|
||||
PrivateKey string `json:"-"`
|
||||
PublicKey string `json:"public_key"`
|
||||
}
|
||||
|
||||
// GenerateRSAKeyPair generates a new RSA key pair
|
||||
func GenerateRSAKeyPair() (privateKeyPEM, publicKeyPEM []byte, err error) {
|
||||
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
privateKeyPEM = pem.EncodeToMemory(&pem.Block{
|
||||
Type: "RSA PRIVATE KEY",
|
||||
Bytes: x509.MarshalPKCS1PrivateKey(privateKey),
|
||||
})
|
||||
publicKeyPEM = pem.EncodeToMemory(&pem.Block{
|
||||
Type: "RSA PUBLIC KEY",
|
||||
Bytes: x509.MarshalPKCS1PublicKey(&privateKey.PublicKey),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// GetCryptoParams registers a new key pair in the cache if it doesn't exist
|
||||
// otherwise, it returns the existing nonce and public key
|
||||
func GetCryptoParams() (sign *Sign, err error) {
|
||||
// Check if the key pair exists in then cache
|
||||
if sign, ok := cache.Get(CacheKey); ok {
|
||||
return sign.(*Sign), nil
|
||||
}
|
||||
// Generate a nonce = hash(publicKey)
|
||||
privateKeyPEM, publicKeyPEM, err := GenerateRSAKeyPair()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sign = &Sign{
|
||||
PrivateKey: string(privateKeyPEM),
|
||||
PublicKey: string(publicKeyPEM),
|
||||
}
|
||||
cache.Set(CacheKey, sign, timeout)
|
||||
return
|
||||
}
|
||||
|
||||
// Decrypt decrypts the data with the private key (nonce, paramEncrypted)
|
||||
func Decrypt(paramEncrypted string) (data map[string]interface{}, err error) {
|
||||
// Get sign params from cache
|
||||
sign, ok := cache.Get(CacheKey)
|
||||
if !ok {
|
||||
return nil, ErrTimeout
|
||||
}
|
||||
|
||||
signParams := sign.(*Sign)
|
||||
block, _ := pem.Decode([]byte(signParams.PrivateKey))
|
||||
if block == nil {
|
||||
return nil, fmt.Errorf("failed to decode PEM block containing private key")
|
||||
}
|
||||
|
||||
privateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
|
||||
if err != nil {
|
||||
logger.Errorf("failed to parse private key: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
paramEncryptedDecoded, err := base64.StdEncoding.DecodeString(paramEncrypted)
|
||||
if err != nil {
|
||||
logger.Errorf("base64 decode error: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
decrypted, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, paramEncryptedDecoded)
|
||||
if err != nil {
|
||||
logger.Errorf("decryption failed: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal(decrypted, &data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
|
@ -6,4 +6,5 @@ var (
|
|||
e = cosy.NewErrorScope("crypto")
|
||||
ErrPlainTextEmpty = e.New(50001, "plain text is empty")
|
||||
ErrCipherTextTooShort = e.New(50002, "cipher text is too short")
|
||||
ErrTimeout = e.New(40401, "request timeout")
|
||||
)
|
||||
|
|
|
@ -3,6 +3,10 @@ package kernel
|
|||
import (
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"mime"
|
||||
"path"
|
||||
"runtime"
|
||||
|
||||
"github.com/0xJacky/Nginx-UI/internal/analytic"
|
||||
"github.com/0xJacky/Nginx-UI/internal/cache"
|
||||
"github.com/0xJacky/Nginx-UI/internal/cert"
|
||||
|
@ -17,10 +21,8 @@ import (
|
|||
"github.com/uozi-tech/cosy"
|
||||
sqlite "github.com/uozi-tech/cosy-driver-sqlite"
|
||||
"github.com/uozi-tech/cosy/logger"
|
||||
cModel "github.com/uozi-tech/cosy/model"
|
||||
cSettings "github.com/uozi-tech/cosy/settings"
|
||||
"mime"
|
||||
"path"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
func Boot() {
|
||||
|
@ -73,12 +75,13 @@ func recovery() {
|
|||
}
|
||||
|
||||
func InitDatabase() {
|
||||
cModel.ResolvedModels()
|
||||
// Skip install
|
||||
if settings.NodeSettings.SkipInstallation {
|
||||
skipInstall()
|
||||
}
|
||||
|
||||
if "" != cSettings.AppSettings.JwtSecret {
|
||||
if cSettings.AppSettings.JwtSecret != "" {
|
||||
db := cosy.InitDB(sqlite.Open(path.Dir(cSettings.ConfPath), settings.DatabaseSettings))
|
||||
model.Use(db)
|
||||
query.Init(db)
|
||||
|
@ -88,7 +91,7 @@ func InitDatabase() {
|
|||
}
|
||||
|
||||
func InitNodeSecret() {
|
||||
if "" == settings.NodeSettings.Secret {
|
||||
if settings.NodeSettings.Secret == "" {
|
||||
logger.Info("Secret is empty, generating...")
|
||||
uuidStr := uuid.New().String()
|
||||
settings.NodeSettings.Secret = uuidStr
|
||||
|
@ -102,7 +105,7 @@ func InitNodeSecret() {
|
|||
}
|
||||
|
||||
func InitCryptoSecret() {
|
||||
if "" == settings.CryptoSettings.Secret {
|
||||
if settings.CryptoSettings.Secret == "" {
|
||||
logger.Info("Secret is empty, generating...")
|
||||
|
||||
key := make([]byte, 32)
|
||||
|
|
46
internal/middleware/encrypted_params.go
Normal file
46
internal/middleware/encrypted_params.go
Normal file
|
@ -0,0 +1,46 @@
|
|||
package middleware
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
|
||||
"github.com/0xJacky/Nginx-UI/internal/crypto"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/uozi-tech/cosy"
|
||||
)
|
||||
|
||||
var (
|
||||
e = cosy.NewErrorScope("middleware")
|
||||
ErrInvalidRequestFormat = e.New(40000, "invalid request format")
|
||||
ErrDecryptionFailed = e.New(40001, "decryption failed")
|
||||
)
|
||||
|
||||
func EncryptedParams() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
// 1. Read the encrypted payload
|
||||
var encryptedReq struct {
|
||||
EncryptedParams string `json:"encrypted_params"`
|
||||
}
|
||||
|
||||
if err := c.ShouldBindJSON(&encryptedReq); err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusBadRequest, ErrInvalidRequestFormat)
|
||||
return
|
||||
}
|
||||
|
||||
// 2. Decrypt the parameters (implement your decryption logic)
|
||||
decryptedData, err := crypto.Decrypt(encryptedReq.EncryptedParams)
|
||||
if err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusBadRequest, ErrDecryptionFailed)
|
||||
return
|
||||
}
|
||||
|
||||
// 3. Replace request body with decrypted data
|
||||
newBody, _ := json.Marshal(decryptedData)
|
||||
c.Request.Body = io.NopCloser(bytes.NewReader(newBody))
|
||||
c.Request.ContentLength = int64(len(newBody))
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
|
@ -741,6 +741,11 @@
|
|||
"https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate"
|
||||
]
|
||||
},
|
||||
"grpc_ssl_certificate_cache": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_cache"
|
||||
]
|
||||
},
|
||||
"grpc_ssl_certificate_key": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_key"
|
||||
|
@ -1241,6 +1246,11 @@
|
|||
"https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable"
|
||||
]
|
||||
},
|
||||
"keepalive_min_timeout": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_min_timeout"
|
||||
]
|
||||
},
|
||||
"keepalive_requests": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests",
|
||||
|
@ -2100,6 +2110,12 @@
|
|||
"https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_certificate"
|
||||
]
|
||||
},
|
||||
"proxy_ssl_certificate_cache": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_cache",
|
||||
"https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_ssl_certificate_cache"
|
||||
]
|
||||
},
|
||||
"proxy_ssl_certificate_key": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_key",
|
||||
|
@ -2750,6 +2766,12 @@
|
|||
"https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_certificate"
|
||||
]
|
||||
},
|
||||
"ssl_certificate_cache": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_cache",
|
||||
"https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_certificate_cache"
|
||||
]
|
||||
},
|
||||
"ssl_certificate_key": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_key",
|
||||
|
@ -2821,6 +2843,11 @@
|
|||
"https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html#ssl_key_log"
|
||||
]
|
||||
},
|
||||
"ssl_object_cache_inheritable": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/ngx_core_module.html#ssl_object_cache_inheritable"
|
||||
]
|
||||
},
|
||||
"ssl_ocsp": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ocsp",
|
||||
|
@ -3374,6 +3401,11 @@
|
|||
"https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate"
|
||||
]
|
||||
},
|
||||
"uwsgi_ssl_certificate_cache": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate_cache"
|
||||
]
|
||||
},
|
||||
"uwsgi_ssl_certificate_key": {
|
||||
"links": [
|
||||
"https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_ssl_certificate_key"
|
||||
|
|
|
@ -15,6 +15,7 @@ import (
|
|||
"github.com/0xJacky/Nginx-UI/api/openai"
|
||||
"github.com/0xJacky/Nginx-UI/api/public"
|
||||
"github.com/0xJacky/Nginx-UI/api/settings"
|
||||
"github.com/0xJacky/Nginx-UI/api/crypto"
|
||||
"github.com/0xJacky/Nginx-UI/api/sites"
|
||||
"github.com/0xJacky/Nginx-UI/api/streams"
|
||||
"github.com/0xJacky/Nginx-UI/api/system"
|
||||
|
@ -42,6 +43,7 @@ func InitRouter() {
|
|||
root := r.Group("/api")
|
||||
{
|
||||
public.InitRouter(root)
|
||||
crypto.InitPublicRouter(root)
|
||||
system.InitPublicRouter(root)
|
||||
user.InitAuthRouter(root)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue