2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 11:27:17 +08:00

Merge remote-tracking branch 'origin/main'

This commit is contained in:
2025-05-14 04:21:22 +08:00
5 changed files with 661 additions and 189 deletions

View File

@@ -9,8 +9,6 @@ import (
mock "github.com/stretchr/testify/mock"
otp "github.com/pquerna/otp"
request "github.com/tnb-labs/panel/internal/http/request"
)
@@ -73,118 +71,6 @@ func (_c *SettingRepo_Delete_Call) RunAndReturn(run func(biz.SettingKey) error)
return _c
}
// GenerateAPIKey provides a mock function with no fields
func (_m *SettingRepo) GenerateAPIKey() (string, error) {
ret := _m.Called()
if len(ret) == 0 {
panic("no return value specified for GenerateAPIKey")
}
var r0 string
var r1 error
if rf, ok := ret.Get(0).(func() (string, error)); ok {
return rf()
}
if rf, ok := ret.Get(0).(func() string); ok {
r0 = rf()
} else {
r0 = ret.Get(0).(string)
}
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// SettingRepo_GenerateAPIKey_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GenerateAPIKey'
type SettingRepo_GenerateAPIKey_Call struct {
*mock.Call
}
// GenerateAPIKey is a helper method to define mock.On call
func (_e *SettingRepo_Expecter) GenerateAPIKey() *SettingRepo_GenerateAPIKey_Call {
return &SettingRepo_GenerateAPIKey_Call{Call: _e.mock.On("GenerateAPIKey")}
}
func (_c *SettingRepo_GenerateAPIKey_Call) Run(run func()) *SettingRepo_GenerateAPIKey_Call {
_c.Call.Run(func(args mock.Arguments) {
run()
})
return _c
}
func (_c *SettingRepo_GenerateAPIKey_Call) Return(_a0 string, _a1 error) *SettingRepo_GenerateAPIKey_Call {
_c.Call.Return(_a0, _a1)
return _c
}
func (_c *SettingRepo_GenerateAPIKey_Call) RunAndReturn(run func() (string, error)) *SettingRepo_GenerateAPIKey_Call {
_c.Call.Return(run)
return _c
}
// GenerateTwoFAKey provides a mock function with no fields
func (_m *SettingRepo) GenerateTwoFAKey() (*otp.Key, error) {
ret := _m.Called()
if len(ret) == 0 {
panic("no return value specified for GenerateTwoFAKey")
}
var r0 *otp.Key
var r1 error
if rf, ok := ret.Get(0).(func() (*otp.Key, error)); ok {
return rf()
}
if rf, ok := ret.Get(0).(func() *otp.Key); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*otp.Key)
}
}
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// SettingRepo_GenerateTwoFAKey_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GenerateTwoFAKey'
type SettingRepo_GenerateTwoFAKey_Call struct {
*mock.Call
}
// GenerateTwoFAKey is a helper method to define mock.On call
func (_e *SettingRepo_Expecter) GenerateTwoFAKey() *SettingRepo_GenerateTwoFAKey_Call {
return &SettingRepo_GenerateTwoFAKey_Call{Call: _e.mock.On("GenerateTwoFAKey")}
}
func (_c *SettingRepo_GenerateTwoFAKey_Call) Run(run func()) *SettingRepo_GenerateTwoFAKey_Call {
_c.Call.Run(func(args mock.Arguments) {
run()
})
return _c
}
func (_c *SettingRepo_GenerateTwoFAKey_Call) Return(_a0 *otp.Key, _a1 error) *SettingRepo_GenerateTwoFAKey_Call {
_c.Call.Return(_a0, _a1)
return _c
}
func (_c *SettingRepo_GenerateTwoFAKey_Call) RunAndReturn(run func() (*otp.Key, error)) *SettingRepo_GenerateTwoFAKey_Call {
_c.Call.Return(run)
return _c
}
// Get provides a mock function with given fields: key, defaultValue
func (_m *SettingRepo) Get(key biz.SettingKey, defaultValue ...string) (string, error) {
_va := make([]interface{}, len(defaultValue))

View File

@@ -3,8 +3,11 @@
package biz
import (
mock "github.com/stretchr/testify/mock"
image "image"
biz "github.com/tnb-labs/panel/internal/biz"
mock "github.com/stretchr/testify/mock"
)
// UserRepo is an autogenerated mock type for the UserRepo type
@@ -138,6 +141,124 @@ func (_c *UserRepo_Create_Call) RunAndReturn(run func(string, string) (*biz.User
return _c
}
// Delete provides a mock function with given fields: id
func (_m *UserRepo) Delete(id uint) error {
ret := _m.Called(id)
if len(ret) == 0 {
panic("no return value specified for Delete")
}
var r0 error
if rf, ok := ret.Get(0).(func(uint) error); ok {
r0 = rf(id)
} else {
r0 = ret.Error(0)
}
return r0
}
// UserRepo_Delete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Delete'
type UserRepo_Delete_Call struct {
*mock.Call
}
// Delete is a helper method to define mock.On call
// - id uint
func (_e *UserRepo_Expecter) Delete(id interface{}) *UserRepo_Delete_Call {
return &UserRepo_Delete_Call{Call: _e.mock.On("Delete", id)}
}
func (_c *UserRepo_Delete_Call) Run(run func(id uint)) *UserRepo_Delete_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(uint))
})
return _c
}
func (_c *UserRepo_Delete_Call) Return(_a0 error) *UserRepo_Delete_Call {
_c.Call.Return(_a0)
return _c
}
func (_c *UserRepo_Delete_Call) RunAndReturn(run func(uint) error) *UserRepo_Delete_Call {
_c.Call.Return(run)
return _c
}
// GenerateTwoFA provides a mock function with given fields: id
func (_m *UserRepo) GenerateTwoFA(id uint) (image.Image, string, string, error) {
ret := _m.Called(id)
if len(ret) == 0 {
panic("no return value specified for GenerateTwoFA")
}
var r0 image.Image
var r1 string
var r2 string
var r3 error
if rf, ok := ret.Get(0).(func(uint) (image.Image, string, string, error)); ok {
return rf(id)
}
if rf, ok := ret.Get(0).(func(uint) image.Image); ok {
r0 = rf(id)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(image.Image)
}
}
if rf, ok := ret.Get(1).(func(uint) string); ok {
r1 = rf(id)
} else {
r1 = ret.Get(1).(string)
}
if rf, ok := ret.Get(2).(func(uint) string); ok {
r2 = rf(id)
} else {
r2 = ret.Get(2).(string)
}
if rf, ok := ret.Get(3).(func(uint) error); ok {
r3 = rf(id)
} else {
r3 = ret.Error(3)
}
return r0, r1, r2, r3
}
// UserRepo_GenerateTwoFA_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GenerateTwoFA'
type UserRepo_GenerateTwoFA_Call struct {
*mock.Call
}
// GenerateTwoFA is a helper method to define mock.On call
// - id uint
func (_e *UserRepo_Expecter) GenerateTwoFA(id interface{}) *UserRepo_GenerateTwoFA_Call {
return &UserRepo_GenerateTwoFA_Call{Call: _e.mock.On("GenerateTwoFA", id)}
}
func (_c *UserRepo_GenerateTwoFA_Call) Run(run func(id uint)) *UserRepo_GenerateTwoFA_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(uint))
})
return _c
}
func (_c *UserRepo_GenerateTwoFA_Call) Return(_a0 image.Image, _a1 string, _a2 string, _a3 error) *UserRepo_GenerateTwoFA_Call {
_c.Call.Return(_a0, _a1, _a2, _a3)
return _c
}
func (_c *UserRepo_GenerateTwoFA_Call) RunAndReturn(run func(uint) (image.Image, string, string, error)) *UserRepo_GenerateTwoFA_Call {
_c.Call.Return(run)
return _c
}
// Get provides a mock function with given fields: id
func (_m *UserRepo) Get(id uint) (*biz.User, error) {
ret := _m.Called(id)
@@ -196,17 +317,139 @@ func (_c *UserRepo_Get_Call) RunAndReturn(run func(uint) (*biz.User, error)) *Us
return _c
}
// Save provides a mock function with given fields: user
func (_m *UserRepo) Save(user *biz.User) error {
ret := _m.Called(user)
// IsTwoFA provides a mock function with given fields: username
func (_m *UserRepo) IsTwoFA(username string) (bool, error) {
ret := _m.Called(username)
if len(ret) == 0 {
panic("no return value specified for Save")
panic("no return value specified for IsTwoFA")
}
var r0 bool
var r1 error
if rf, ok := ret.Get(0).(func(string) (bool, error)); ok {
return rf(username)
}
if rf, ok := ret.Get(0).(func(string) bool); ok {
r0 = rf(username)
} else {
r0 = ret.Get(0).(bool)
}
if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(username)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// UserRepo_IsTwoFA_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'IsTwoFA'
type UserRepo_IsTwoFA_Call struct {
*mock.Call
}
// IsTwoFA is a helper method to define mock.On call
// - username string
func (_e *UserRepo_Expecter) IsTwoFA(username interface{}) *UserRepo_IsTwoFA_Call {
return &UserRepo_IsTwoFA_Call{Call: _e.mock.On("IsTwoFA", username)}
}
func (_c *UserRepo_IsTwoFA_Call) Run(run func(username string)) *UserRepo_IsTwoFA_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(string))
})
return _c
}
func (_c *UserRepo_IsTwoFA_Call) Return(_a0 bool, _a1 error) *UserRepo_IsTwoFA_Call {
_c.Call.Return(_a0, _a1)
return _c
}
func (_c *UserRepo_IsTwoFA_Call) RunAndReturn(run func(string) (bool, error)) *UserRepo_IsTwoFA_Call {
_c.Call.Return(run)
return _c
}
// List provides a mock function with given fields: page, limit
func (_m *UserRepo) List(page uint, limit uint) ([]*biz.User, int64, error) {
ret := _m.Called(page, limit)
if len(ret) == 0 {
panic("no return value specified for List")
}
var r0 []*biz.User
var r1 int64
var r2 error
if rf, ok := ret.Get(0).(func(uint, uint) ([]*biz.User, int64, error)); ok {
return rf(page, limit)
}
if rf, ok := ret.Get(0).(func(uint, uint) []*biz.User); ok {
r0 = rf(page, limit)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]*biz.User)
}
}
if rf, ok := ret.Get(1).(func(uint, uint) int64); ok {
r1 = rf(page, limit)
} else {
r1 = ret.Get(1).(int64)
}
if rf, ok := ret.Get(2).(func(uint, uint) error); ok {
r2 = rf(page, limit)
} else {
r2 = ret.Error(2)
}
return r0, r1, r2
}
// UserRepo_List_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'List'
type UserRepo_List_Call struct {
*mock.Call
}
// List is a helper method to define mock.On call
// - page uint
// - limit uint
func (_e *UserRepo_Expecter) List(page interface{}, limit interface{}) *UserRepo_List_Call {
return &UserRepo_List_Call{Call: _e.mock.On("List", page, limit)}
}
func (_c *UserRepo_List_Call) Run(run func(page uint, limit uint)) *UserRepo_List_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(uint), args[1].(uint))
})
return _c
}
func (_c *UserRepo_List_Call) Return(_a0 []*biz.User, _a1 int64, _a2 error) *UserRepo_List_Call {
_c.Call.Return(_a0, _a1, _a2)
return _c
}
func (_c *UserRepo_List_Call) RunAndReturn(run func(uint, uint) ([]*biz.User, int64, error)) *UserRepo_List_Call {
_c.Call.Return(run)
return _c
}
// UpdatePassword provides a mock function with given fields: id, password
func (_m *UserRepo) UpdatePassword(id uint, password string) error {
ret := _m.Called(id, password)
if len(ret) == 0 {
panic("no return value specified for UpdatePassword")
}
var r0 error
if rf, ok := ret.Get(0).(func(*biz.User) error); ok {
r0 = rf(user)
if rf, ok := ret.Get(0).(func(uint, string) error); ok {
r0 = rf(id, password)
} else {
r0 = ret.Error(0)
}
@@ -214,30 +457,79 @@ func (_m *UserRepo) Save(user *biz.User) error {
return r0
}
// UserRepo_Save_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Save'
type UserRepo_Save_Call struct {
// UserRepo_UpdatePassword_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdatePassword'
type UserRepo_UpdatePassword_Call struct {
*mock.Call
}
// Save is a helper method to define mock.On call
// - user *biz.User
func (_e *UserRepo_Expecter) Save(user interface{}) *UserRepo_Save_Call {
return &UserRepo_Save_Call{Call: _e.mock.On("Save", user)}
// UpdatePassword is a helper method to define mock.On call
// - id uint
// - password string
func (_e *UserRepo_Expecter) UpdatePassword(id interface{}, password interface{}) *UserRepo_UpdatePassword_Call {
return &UserRepo_UpdatePassword_Call{Call: _e.mock.On("UpdatePassword", id, password)}
}
func (_c *UserRepo_Save_Call) Run(run func(user *biz.User)) *UserRepo_Save_Call {
func (_c *UserRepo_UpdatePassword_Call) Run(run func(id uint, password string)) *UserRepo_UpdatePassword_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(*biz.User))
run(args[0].(uint), args[1].(string))
})
return _c
}
func (_c *UserRepo_Save_Call) Return(_a0 error) *UserRepo_Save_Call {
func (_c *UserRepo_UpdatePassword_Call) Return(_a0 error) *UserRepo_UpdatePassword_Call {
_c.Call.Return(_a0)
return _c
}
func (_c *UserRepo_Save_Call) RunAndReturn(run func(*biz.User) error) *UserRepo_Save_Call {
func (_c *UserRepo_UpdatePassword_Call) RunAndReturn(run func(uint, string) error) *UserRepo_UpdatePassword_Call {
_c.Call.Return(run)
return _c
}
// UpdateTwoFA provides a mock function with given fields: id, code, secret
func (_m *UserRepo) UpdateTwoFA(id uint, code string, secret string) error {
ret := _m.Called(id, code, secret)
if len(ret) == 0 {
panic("no return value specified for UpdateTwoFA")
}
var r0 error
if rf, ok := ret.Get(0).(func(uint, string, string) error); ok {
r0 = rf(id, code, secret)
} else {
r0 = ret.Error(0)
}
return r0
}
// UserRepo_UpdateTwoFA_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateTwoFA'
type UserRepo_UpdateTwoFA_Call struct {
*mock.Call
}
// UpdateTwoFA is a helper method to define mock.On call
// - id uint
// - code string
// - secret string
func (_e *UserRepo_Expecter) UpdateTwoFA(id interface{}, code interface{}, secret interface{}) *UserRepo_UpdateTwoFA_Call {
return &UserRepo_UpdateTwoFA_Call{Call: _e.mock.On("UpdateTwoFA", id, code, secret)}
}
func (_c *UserRepo_UpdateTwoFA_Call) Run(run func(id uint, code string, secret string)) *UserRepo_UpdateTwoFA_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(uint), args[1].(string), args[2].(string))
})
return _c
}
func (_c *UserRepo_UpdateTwoFA_Call) Return(_a0 error) *UserRepo_UpdateTwoFA_Call {
_c.Call.Return(_a0)
return _c
}
func (_c *UserRepo_UpdateTwoFA_Call) RunAndReturn(run func(uint, string, string) error) *UserRepo_UpdateTwoFA_Call {
_c.Call.Return(run)
return _c
}

198
mocks/biz/UserTokenRepo.go Normal file
View File

@@ -0,0 +1,198 @@
// Code generated by mockery. DO NOT EDIT.
package biz
import (
mock "github.com/stretchr/testify/mock"
biz "github.com/tnb-labs/panel/internal/biz"
)
// UserTokenRepo is an autogenerated mock type for the UserTokenRepo type
type UserTokenRepo struct {
mock.Mock
}
type UserTokenRepo_Expecter struct {
mock *mock.Mock
}
func (_m *UserTokenRepo) EXPECT() *UserTokenRepo_Expecter {
return &UserTokenRepo_Expecter{mock: &_m.Mock}
}
// Create provides a mock function with given fields: userID, ips
func (_m *UserTokenRepo) Create(userID uint, ips []string) (*biz.UserToken, error) {
ret := _m.Called(userID, ips)
if len(ret) == 0 {
panic("no return value specified for Create")
}
var r0 *biz.UserToken
var r1 error
if rf, ok := ret.Get(0).(func(uint, []string) (*biz.UserToken, error)); ok {
return rf(userID, ips)
}
if rf, ok := ret.Get(0).(func(uint, []string) *biz.UserToken); ok {
r0 = rf(userID, ips)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*biz.UserToken)
}
}
if rf, ok := ret.Get(1).(func(uint, []string) error); ok {
r1 = rf(userID, ips)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// UserTokenRepo_Create_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Create'
type UserTokenRepo_Create_Call struct {
*mock.Call
}
// Create is a helper method to define mock.On call
// - userID uint
// - ips []string
func (_e *UserTokenRepo_Expecter) Create(userID interface{}, ips interface{}) *UserTokenRepo_Create_Call {
return &UserTokenRepo_Create_Call{Call: _e.mock.On("Create", userID, ips)}
}
func (_c *UserTokenRepo_Create_Call) Run(run func(userID uint, ips []string)) *UserTokenRepo_Create_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(uint), args[1].([]string))
})
return _c
}
func (_c *UserTokenRepo_Create_Call) Return(_a0 *biz.UserToken, _a1 error) *UserTokenRepo_Create_Call {
_c.Call.Return(_a0, _a1)
return _c
}
func (_c *UserTokenRepo_Create_Call) RunAndReturn(run func(uint, []string) (*biz.UserToken, error)) *UserTokenRepo_Create_Call {
_c.Call.Return(run)
return _c
}
// Get provides a mock function with given fields: id
func (_m *UserTokenRepo) Get(id uint) (*biz.UserToken, error) {
ret := _m.Called(id)
if len(ret) == 0 {
panic("no return value specified for Get")
}
var r0 *biz.UserToken
var r1 error
if rf, ok := ret.Get(0).(func(uint) (*biz.UserToken, error)); ok {
return rf(id)
}
if rf, ok := ret.Get(0).(func(uint) *biz.UserToken); ok {
r0 = rf(id)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*biz.UserToken)
}
}
if rf, ok := ret.Get(1).(func(uint) error); ok {
r1 = rf(id)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// UserTokenRepo_Get_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Get'
type UserTokenRepo_Get_Call struct {
*mock.Call
}
// Get is a helper method to define mock.On call
// - id uint
func (_e *UserTokenRepo_Expecter) Get(id interface{}) *UserTokenRepo_Get_Call {
return &UserTokenRepo_Get_Call{Call: _e.mock.On("Get", id)}
}
func (_c *UserTokenRepo_Get_Call) Run(run func(id uint)) *UserTokenRepo_Get_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(uint))
})
return _c
}
func (_c *UserTokenRepo_Get_Call) Return(_a0 *biz.UserToken, _a1 error) *UserTokenRepo_Get_Call {
_c.Call.Return(_a0, _a1)
return _c
}
func (_c *UserTokenRepo_Get_Call) RunAndReturn(run func(uint) (*biz.UserToken, error)) *UserTokenRepo_Get_Call {
_c.Call.Return(run)
return _c
}
// Save provides a mock function with given fields: user
func (_m *UserTokenRepo) Save(user *biz.UserToken) error {
ret := _m.Called(user)
if len(ret) == 0 {
panic("no return value specified for Save")
}
var r0 error
if rf, ok := ret.Get(0).(func(*biz.UserToken) error); ok {
r0 = rf(user)
} else {
r0 = ret.Error(0)
}
return r0
}
// UserTokenRepo_Save_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Save'
type UserTokenRepo_Save_Call struct {
*mock.Call
}
// Save is a helper method to define mock.On call
// - user *biz.UserToken
func (_e *UserTokenRepo_Expecter) Save(user interface{}) *UserTokenRepo_Save_Call {
return &UserTokenRepo_Save_Call{Call: _e.mock.On("Save", user)}
}
func (_c *UserTokenRepo_Save_Call) Run(run func(user *biz.UserToken)) *UserTokenRepo_Save_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(*biz.UserToken))
})
return _c
}
func (_c *UserTokenRepo_Save_Call) Return(_a0 error) *UserTokenRepo_Save_Call {
_c.Call.Return(_a0)
return _c
}
func (_c *UserTokenRepo_Save_Call) RunAndReturn(run func(*biz.UserToken) error) *UserTokenRepo_Save_Call {
_c.Call.Return(run)
return _c
}
// NewUserTokenRepo creates a new instance of UserTokenRepo. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewUserTokenRepo(t interface {
mock.TestingT
Cleanup(func())
}) *UserTokenRepo {
mock := &UserTokenRepo{}
mock.Mock.Test(t)
t.Cleanup(func() { mock.AssertExpectations(t) })
return mock
}

View File

@@ -495,10 +495,10 @@ msgstr ""
msgid "Index Hit Rate"
msgstr ""
#: internal/service/cli.go:840
#: internal/service/cli.go:831
#: internal/service/cli.go:836
#: internal/service/cli.go:841
#: internal/service/cli.go:845
#: internal/service/cli.go:850
#: internal/service/cli.go:854
msgid "Initialization failed: %v"
msgstr ""
@@ -1196,6 +1196,10 @@ msgstr ""
msgid "Zip is a library for handling ZIP files"
msgstr ""
#: internal/http/middleware/must_login.go:94
msgid "api signature expired"
msgstr ""
#: internal/data/app.go:159
msgid "app %s already installed"
msgstr ""
@@ -1206,6 +1210,7 @@ msgstr ""
#: internal/data/app.go:210
#: internal/data/app.go:265
#: internal/http/middleware/must_install.go:48
msgid "app %s not installed"
msgstr ""
@@ -1220,8 +1225,12 @@ msgstr ""
msgid "app %s requires panel version %s, current version %s"
msgstr ""
#: internal/data/setting.go:354
#: internal/data/setting.go:412
#: internal/http/middleware/must_install.go:29
msgid "app not found"
msgstr ""
#: internal/data/setting.go:312
#: internal/data/setting.go:373
msgid "background task is running, modifying some settings is prohibited, please try again later"
msgstr ""
@@ -1252,6 +1261,10 @@ msgstr ""
msgid "check server connection failed"
msgstr ""
#: internal/http/middleware/must_login.go:122
msgid "client ip/ua changed, please login again"
msgstr ""
#: internal/data/backup.go:564
msgid "could not find .sql backup file"
msgstr ""
@@ -1509,12 +1522,12 @@ msgid "failed to load MySQL root password: %v"
msgstr ""
#: internal/data/cert.go:92
#: internal/data/setting.go:359
#: internal/data/setting.go:317
msgid "failed to parse certificate: %v"
msgstr ""
#: internal/data/cert.go:95
#: internal/data/setting.go:362
#: internal/data/setting.go:320
msgid "failed to parse private key: %v"
msgstr ""
@@ -1626,10 +1639,40 @@ msgstr ""
msgid "get service port failed, please check if it is installed"
msgstr ""
#: internal/service/user.go:78
#: internal/data/user.go:149
#: internal/data/user.go:167
#: internal/service/user.go:93
msgid "invalid 2fa code"
msgstr ""
#: internal/http/middleware/entrance.go:101
msgid "invalid access entrance"
msgstr ""
#: internal/http/middleware/must_login.go:84
msgid "invalid api signature"
msgstr ""
#: internal/service/user.go:79
msgid "invalid key, please refresh the page"
msgstr ""
#: internal/http/middleware/entrance.go:50
msgid "invalid request domain: %s"
msgstr ""
#: internal/http/middleware/entrance.go:63
msgid "invalid request ip: %s"
msgstr ""
#: internal/http/middleware/entrance.go:72
msgid "invalid request user agent: %s"
msgstr ""
#: internal/http/middleware/must_login.go:136
msgid "invalid user id, please login again"
msgstr ""
#: internal/apps/php/app.go:473
msgid "ionCube is a professional-grade PHP encryption and decryption tool (must be installed after OPcache)"
msgstr ""
@@ -1675,6 +1718,22 @@ msgstr ""
msgid "open file error: %v"
msgstr ""
#: internal/http/middleware/status.go:38
msgid "panel is closed"
msgstr ""
#: internal/http/middleware/status.go:30
msgid "panel is maintaining, please refresh later"
msgstr ""
#: internal/http/middleware/status.go:22
msgid "panel is upgrading, please refresh later"
msgstr ""
#: internal/http/middleware/status.go:46
msgid "panel run error, please check or contact support"
msgstr ""
#: internal/apps/php/app.go:328
msgid "pdo_pgsql is a PDO driver for connecting to PostgreSQL (requires PostgreSQL installed)"
msgstr ""
@@ -1696,6 +1755,7 @@ msgstr ""
msgid "phpMyAdmin port not found"
msgstr ""
#: internal/data/user.go:81
#: internal/service/file.go:135
#: internal/service/file.go:222
#: internal/service/file.go:251
@@ -1706,7 +1766,7 @@ msgstr ""
msgid "please retry the manual obtain operation"
msgstr ""
#: internal/data/setting.go:383
#: internal/data/setting.go:341
msgid "port is already in use"
msgstr ""
@@ -1739,6 +1799,10 @@ msgstr ""
msgid "runtime directory does not exist"
msgstr ""
#: internal/http/middleware/must_login.go:107
msgid "session expired, please login again"
msgstr ""
#: internal/apps/php/app.go:333
msgid "sqlsrv is a driver for connecting to SQL Server"
msgstr ""
@@ -1825,8 +1889,9 @@ msgstr ""
msgid "upload file error: %v"
msgstr ""
#: internal/data/user.go:48
#: internal/data/user.go:55
#: internal/data/user.go:103
#: internal/data/user.go:113
#: internal/data/user.go:96
msgid "username or password error"
msgstr ""

View File

@@ -64,8 +64,7 @@ msgstr ""
#: src/views/apps/toolbox/IndexView.vue:66
#: src/views/apps/toolbox/IndexView.vue:72
#: src/views/apps/toolbox/IndexView.vue:81
#: src/views/setting/SettingBase.vue:39
#: src/views/setting/SettingHttps.vue:27
#: src/views/setting/IndexView.vue:46
#: src/views/website/EditView.vue:115
msgid "Saved successfully"
msgstr ""
@@ -370,7 +369,7 @@ msgstr ""
#: src/views/cert/CertView.vue:497
#: src/views/cert/CertView.vue:573
#: src/views/cert/UploadCertModal.vue:38
#: src/views/setting/SettingHttps.vue:45
#: src/views/setting/SettingSafe.vue:54
#: src/views/website/EditView.vue:355
msgid "Certificate"
msgstr ""
@@ -912,8 +911,7 @@ msgstr ""
#: src/views/apps/toolbox/IndexView.vue:109
#: src/views/file/EditModal.vue:31
#: src/views/file/ListTable.vue:723
#: src/views/setting/SettingBase.vue:97
#: src/views/setting/SettingHttps.vue:62
#: src/views/setting/IndexView.vue:63
#: src/views/website/EditView.vue:215
msgid "Save"
msgstr ""
@@ -1611,7 +1609,7 @@ msgstr ""
#: src/views/database/UpdateServerModal.vue:86
#: src/views/database/UserList.vue:40
#: src/views/login/IndexView.vue:115
#: src/views/setting/SettingBase.vue:67
#: src/views/setting/SettingBase.vue:49
#: src/views/ssh/CreateModal.vue:83
#: src/views/ssh/UpdateModal.vue:89
msgid "Username"
@@ -1677,7 +1675,7 @@ msgstr ""
#: src/views/database/UpdateUserModal.vue:49
#: src/views/database/UserList.vue:50
#: src/views/login/IndexView.vue:123
#: src/views/setting/SettingBase.vue:70
#: src/views/setting/SettingBase.vue:52
#: src/views/ssh/CreateModal.vue:77
#: src/views/ssh/CreateModal.vue:86
#: src/views/ssh/UpdateModal.vue:83
@@ -2292,7 +2290,7 @@ msgstr ""
#: src/views/cert/CertView.vue:509
#: src/views/cert/CertView.vue:585
#: src/views/cert/UploadCertModal.vue:46
#: src/views/setting/SettingHttps.vue:52
#: src/views/setting/SettingSafe.vue:61
#: src/views/ssh/CreateModal.vue:78
#: src/views/ssh/CreateModal.vue:89
#: src/views/ssh/UpdateModal.vue:84
@@ -3480,7 +3478,7 @@ msgstr ""
#: src/views/database/UpdateServerModal.vue:76
#: src/views/firewall/ForwardView.vue:32
#: src/views/firewall/RuleView.vue:49
#: src/views/setting/SettingBase.vue:76
#: src/views/setting/SettingBase.vue:58
#: src/views/ssh/CreateModal.vue:68
#: src/views/ssh/UpdateModal.vue:74
#: src/views/website/IndexView.vue:420
@@ -4128,78 +4126,115 @@ msgstr ""
msgid "Time Selection"
msgstr ""
#: src/views/setting/IndexView.vue:17
msgid "Basic"
msgstr ""
#: src/views/setting/SettingBase.vue:42
#: src/views/setting/IndexView.vue:49
msgid "Panel is restarting, page will refresh in 3 seconds"
msgstr ""
#: src/views/setting/SettingBase.vue:55
#: src/views/setting/IndexView.vue:67
msgid "Basic"
msgstr ""
#: src/views/setting/IndexView.vue:70
msgid "Safe"
msgstr ""
#: src/views/setting/SettingBase.vue:20
msgid "Stable"
msgstr ""
#: src/views/setting/SettingBase.vue:24
msgid "Beta"
msgstr ""
#: src/views/setting/SettingBase.vue:34
msgid "Modifying panel port/entrance requires corresponding changes in the browser address bar to access the panel!"
msgstr ""
#: src/views/setting/SettingBase.vue:61
#: src/views/setting/SettingBase.vue:62
#: src/views/setting/SettingBase.vue:40
#: src/views/setting/SettingBase.vue:41
msgid "Panel Name"
msgstr ""
#: src/views/setting/SettingBase.vue:64
#: src/views/setting/SettingBase.vue:43
msgid "Language"
msgstr ""
#: src/views/setting/SettingBase.vue:68
#: src/views/setting/SettingBase.vue:71
#: src/views/setting/SettingBase.vue:80
#: src/views/setting/SettingBase.vue:46
msgid "Update Channel"
msgstr ""
#: src/views/setting/SettingBase.vue:50
#: src/views/setting/SettingBase.vue:53
#: src/views/setting/SettingSafe.vue:26
msgid "admin"
msgstr ""
#: src/views/setting/SettingBase.vue:73
#: src/views/setting/SettingBase.vue:55
msgid "Certificate Default Email"
msgstr ""
#: src/views/setting/SettingBase.vue:74
#: src/views/setting/SettingBase.vue:56
msgid "admin@yourdomain.com"
msgstr ""
#: src/views/setting/SettingBase.vue:77
#: src/views/setting/SettingBase.vue:59
msgid "8888"
msgstr ""
#: src/views/setting/SettingBase.vue:79
msgid "Access Entrance"
msgstr ""
#: src/views/setting/SettingBase.vue:82
msgid "Offline Mode"
msgstr ""
#: src/views/setting/SettingBase.vue:85
msgid "Auto Update"
msgstr ""
#: src/views/setting/SettingBase.vue:88
#: src/views/setting/SettingBase.vue:61
msgid "Default Website Directory"
msgstr ""
#: src/views/setting/SettingBase.vue:89
#: src/views/setting/SettingBase.vue:62
msgid "/www/wwwroot"
msgstr ""
#: src/views/setting/SettingBase.vue:91
#: src/views/setting/SettingBase.vue:64
msgid "Default Backup Directory"
msgstr ""
#: src/views/setting/SettingBase.vue:92
#: src/views/setting/SettingBase.vue:65
msgid "/www/backup"
msgstr ""
#: src/views/setting/SettingHttps.vue:36
msgid "Incorrect certificates may cause the panel to be inaccessible. Please proceed with caution!"
#: src/views/setting/SettingSafe.vue:12
msgid "Login Timeout"
msgstr ""
#: src/views/setting/SettingHttps.vue:42
#: src/views/setting/SettingSafe.vue:15
msgid "120"
msgstr ""
#: src/views/setting/SettingSafe.vue:21
#: src/views/website/ProxyBuilderModal.vue:188
msgid "minutes"
msgstr ""
#: src/views/setting/SettingSafe.vue:25
msgid "Access Entrance"
msgstr ""
#: src/views/setting/SettingSafe.vue:28
msgid "Bind Domain"
msgstr ""
#: src/views/setting/SettingSafe.vue:35
msgid "Bind IP"
msgstr ""
#: src/views/setting/SettingSafe.vue:38
msgid "Bind UA"
msgstr ""
#: src/views/setting/SettingSafe.vue:45
msgid "Offline Mode"
msgstr ""
#: src/views/setting/SettingSafe.vue:48
msgid "Auto Update"
msgstr ""
#: src/views/setting/SettingSafe.vue:51
msgid "Panel HTTPS"
msgstr ""
@@ -4717,10 +4752,6 @@ msgstr ""
msgid "Cache time (minutes)"
msgstr ""
#: src/views/website/ProxyBuilderModal.vue:188
msgid "minutes"
msgstr ""
#: src/views/website/ProxyBuilderModal.vue:191
msgid "Content Replacement"
msgstr ""