Merge remote-tracking branch 'origin/main'

This commit is contained in:
耗子
2026-10-05 17:42:54 +08:00
11 changed files with 929 additions and 922 deletions
+13 -13
View File
@@ -49,19 +49,19 @@ require (
github.com/libtnb/wire v0.3.0
github.com/medama-io/go-useragent v1.2.5
github.com/mholt/acmez/v3 v3.1.7
github.com/moby/moby/api v1.56.0
github.com/moby/moby/client v0.6.0
github.com/molecule-man/go-brrr v1.1.1
github.com/moby/moby/api v1.56.1
github.com/moby/moby/client v0.6.1
github.com/molecule-man/go-brrr v1.2.0
github.com/orandin/slog-gorm v1.4.0
github.com/pelletier/go-toml/v2 v2.4.3
github.com/pkg/sftp v1.13.11
github.com/pquerna/otp v1.5.0
github.com/samber/lo v1.53.0
github.com/sethvargo/go-limiter v1.2.0
github.com/shirou/gopsutil/v4 v4.26.8
github.com/shirou/gopsutil/v4 v4.26.9
github.com/spf13/cast v1.10.0
github.com/studio-b12/gowebdav v0.13.0
github.com/urfave/cli/v3 v3.13.0
github.com/urfave/cli/v3 v3.14.0
github.com/valyala/fastjson v1.6.10
github.com/wneessen/go-mail v0.8.1
github.com/xuri/excelize/v2 v2.11.0
@@ -73,7 +73,7 @@ require (
golang.org/x/term v0.46.0
golang.org/x/text v0.42.0
gorm.io/gorm v1.31.2
modernc.org/sqlite v1.59.0
modernc.org/sqlite v1.60.1
resty.dev/v3 v3.0.0-rc.4
)
@@ -85,10 +85,10 @@ require (
github.com/boombuler/barcode v1.1.0 // indirect
github.com/boyter/go-string v1.0.5 // indirect
github.com/containerd/errdefs/pkg v0.3.0 // indirect
github.com/docker/go-connections v0.7.0 // indirect
github.com/docker/go-connections v0.8.1 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/ebitengine/purego v0.10.2 // indirect
github.com/ebitengine/purego v0.11.1 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fxamacker/cbor/v2 v2.9.4 // indirect
github.com/gabriel-vasile/mimetype v1.4.13 // indirect
@@ -114,14 +114,14 @@ require (
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.1 // indirect
github.com/philhofer/fwd v1.2.0 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/power-devops/perfstat v0.0.0-20260805114148-88456608a4f6 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/richardlehane/mscfb v1.0.7 // indirect
github.com/richardlehane/msoleps v1.0.6 // indirect
github.com/tiendc/go-deepcopy v1.7.2 // indirect
github.com/tinylib/msgp v1.6.4 // indirect
github.com/tklauser/go-sysconf v0.3.16 // indirect
github.com/tklauser/numcpus v0.11.0 // indirect
github.com/tklauser/go-sysconf v0.4.0 // indirect
github.com/tklauser/numcpus v0.12.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
github.com/xuri/efp v0.0.1 // indirect
@@ -134,8 +134,8 @@ require (
go.opentelemetry.io/otel/trace v1.35.0 // indirect
golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect
golang.org/x/mod v0.41.0 // indirect
golang.org/x/tools v0.49.0 // indirect
modernc.org/libc v1.75.7 // indirect
golang.org/x/tools v0.50.0 // indirect
modernc.org/libc v1.77.1 // indirect
modernc.org/mathutil v1.7.1 // indirect
modernc.org/memory v1.12.1 // indirect
)
+30 -30
View File
@@ -34,14 +34,14 @@ github.com/dchest/captcha v1.1.0 h1:2kt47EoYUUkaISobUdTbqwx55xvKOJxyScVfw25xzhQ=
github.com/dchest/captcha v1.1.0/go.mod h1:7zoElIawLp7GUMLcj54K9kbw+jEyvz2K0FDdRRYhvWo=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/go-connections v0.7.0 h1:6SsRfJddP22WMrCkj19x9WKjEDTB+ahsdiGYf0mN39c=
github.com/docker/go-connections v0.7.0/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q=
github.com/docker/go-connections v0.8.1 h1:JibmG5hULs5qXSr/cp/w3Pw5fZuStt4MOHMUExb29/M=
github.com/docker/go-connections v0.8.1/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/ebitengine/purego v0.10.2 h1:W809HbnvzAxgdm+aOvlSekrM16wGCdT/e76+9tS7gzE=
github.com/ebitengine/purego v0.10.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
github.com/ebitengine/purego v0.11.1 h1:2zpWRSQNVKN4eKsKO9eM1ILDgWfYMY9GwqRmK6XeQ/0=
github.com/ebitengine/purego v0.11.1/go.mod h1:DCHPP08djqhNSoTfImcnHYQRZmd0qhakvrozqaEYhGQ=
github.com/expr-lang/expr v1.17.8 h1:W1loDTT+0PQf5YteHSTpju2qfUfNoBt4yw9+wOEU9VM=
github.com/expr-lang/expr v1.17.8/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
@@ -196,12 +196,12 @@ github.com/miekg/dns v1.1.72 h1:vhmr+TF2A3tuoGNkLDFK9zi36F2LS+hKTRW0Uf8kbzI=
github.com/miekg/dns v1.1.72/go.mod h1:+EuEPhdHOsfk6Wk5TT2CzssZdqkmFhf8r+aVyDEToIs=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/moby/api v1.56.0 h1:GQzua3NA599ASSIICx0iFgiJeO9YkdDARvQsm23ZZuQ=
github.com/moby/moby/api v1.56.0/go.mod h1:sZ+THbVWkjOmBPPfbnzdD/G1LuIexWhqlSHHPTDQ1Uk=
github.com/moby/moby/client v0.6.0 h1:AJjEB21QPbXSXjDsZorFBoDZPhMrfbpaPLgSMAW9Bgs=
github.com/moby/moby/client v0.6.0/go.mod h1:OCo00wNRyA3m4lmJ228W3JbyCN4ZNNYjpOXiJydBdcQ=
github.com/molecule-man/go-brrr v1.1.1 h1:KYwusQhjtV3smALnhmafZf4OBrh7vP4p8O47DyUmmuY=
github.com/molecule-man/go-brrr v1.1.1/go.mod h1:7ybW6/7gA3oKY45jOfVNjSJDtrr6ea4tzbsTkjmQDC4=
github.com/moby/moby/api v1.56.1 h1:PpWkvVPB7Fr/No8w+TfyJ/I6rWZ2YPZhT3JorIg+06c=
github.com/moby/moby/api v1.56.1/go.mod h1:sZ+THbVWkjOmBPPfbnzdD/G1LuIexWhqlSHHPTDQ1Uk=
github.com/moby/moby/client v0.6.1 h1:gvfKmdcWw+9MzXYP0vAUKQtBTGu1L8475K2nsmL7O98=
github.com/moby/moby/client v0.6.1/go.mod h1:XHgTFqz9NCgS/VuoxXMmEDVmVgXQ4vFEc15wsCIwb24=
github.com/molecule-man/go-brrr v1.2.0 h1:dOJU45BC3Gc2WXoxAW0rgCAgVuu2gruAOGncfieA0Jw=
github.com/molecule-man/go-brrr v1.2.0/go.mod h1:7ybW6/7gA3oKY45jOfVNjSJDtrr6ea4tzbsTkjmQDC4=
github.com/ncruces/go-strftime v1.0.0 h1:HMFp8mLCTPp341M/ZnA4qaf7ZlsbTc+miZjCLOFAw7w=
github.com/ncruces/go-strftime v1.0.0/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
@@ -217,8 +217,8 @@ github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJ
github.com/pkg/sftp v1.13.11 h1:0N92SLTB8JqASJB14ZLHHzFnBV8mG9zw4K7jghEFWuE=
github.com/pkg/sftp v1.13.11/go.mod h1:uNkH9roSXglNJqM+glJJi+TQXQUm0fXFWqCFmT8hsN0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/power-devops/perfstat v0.0.0-20260805114148-88456608a4f6 h1:jL3a8soXdzuTCcRnKhOmtcsVOObdDTFf4O2B403HPRU=
github.com/power-devops/perfstat v0.0.0-20260805114148-88456608a4f6/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/pquerna/otp v1.5.0 h1:NMMR+WrmaqXU4EzdGJEE1aUUI0AMRzsp96fFFWNPwxs=
github.com/pquerna/otp v1.5.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
@@ -235,8 +235,8 @@ github.com/sethvargo/go-limiter v1.2.0 h1:XKL1vsaQ2zztVJrnZSzpRWCq/aLQqMllJ/3D/0
github.com/sethvargo/go-limiter v1.2.0/go.mod h1:RC+qY2R7PAK81mBCrZEJlUlKnXSIqqQ8B7G44UgZ/1E=
github.com/shamaton/msgpack/v3 v3.2.0 h1:1q2Ms+MWmuRju+PuDMSFDB7p7621npeX4zprJN5Zck8=
github.com/shamaton/msgpack/v3 v3.2.0/go.mod h1:sgBYvEiyz8JR1NC3yGRoPVME9xXovpnh3l/plW1nfRo=
github.com/shirou/gopsutil/v4 v4.26.8 h1:YQMTF/1J50B5+Y0vlo1eDRf5DoR7Gk69hY+8wjYkQeo=
github.com/shirou/gopsutil/v4 v4.26.8/go.mod h1:5O9FjBiXoTDFatIWjZZosqj4pV0DRtLx598xGbBehzM=
github.com/shirou/gopsutil/v4 v4.26.9 h1:CaBo/hBFqvlJoLvAQEKdHdf5GD97/MN2ACfyv63+2Ig=
github.com/shirou/gopsutil/v4 v4.26.9/go.mod h1:nKH+8wX2zxr/mDbsR+AAy6Qd2z4ZOQ7wfQaEp+yrYmg=
github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=
github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -249,12 +249,12 @@ github.com/tiendc/go-deepcopy v1.7.2 h1:Ut2yYR7W9tWjTQitganoIue4UGxZwCcJy3orjrrI
github.com/tiendc/go-deepcopy v1.7.2/go.mod h1:4bKjNC2r7boYOkD2IOuZpYjmlDdzjbpTRyCx+goBCJQ=
github.com/tinylib/msgp v1.6.4 h1:mOwYbyYDLPj35mkA2BjjYejgJk9BuHxDdvRnb6v2ZcQ=
github.com/tinylib/msgp v1.6.4/go.mod h1:RSp0LW9oSxFut3KzESt5Voq4GVWyS+PSulT77roAqEA=
github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA=
github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI=
github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw=
github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ=
github.com/urfave/cli/v3 v3.13.0 h1:Dr6jqMfIyyFsRVn7Nz5mqLsMY+ZMpfh3a0aMs+umPVY=
github.com/urfave/cli/v3 v3.13.0/go.mod h1:vXn6HxPNccJSzQr2QvwVncOKrgYGIHU0HY5h8B2nQj4=
github.com/tklauser/go-sysconf v0.4.0 h1:7H0uAN+7RkwWRaxhYXDLqa5V3LPrJeV8wmD9dRUgPQU=
github.com/tklauser/go-sysconf v0.4.0/go.mod h1:8mTNWyog7H+MpKijp4VmKJAd2bbYQ2zuUwkYRbUArPI=
github.com/tklauser/numcpus v0.12.0 h1:NR85qdvHA9pFse3x3weVZ0r0ST8R6l5RHbZrlRaqob4=
github.com/tklauser/numcpus v0.12.0/go.mod h1:ABHeXzJnr/qqwguhClkZKT1/8VABcYrsyUiUGobwWJg=
github.com/urfave/cli/v3 v3.14.0 h1:a8414NQlHJs0c/iBsulKLzlES0n/lEAskbL2LKpU4/s=
github.com/urfave/cli/v3 v3.14.0/go.mod h1:vXn6HxPNccJSzQr2QvwVncOKrgYGIHU0HY5h8B2nQj4=
github.com/valyala/fastjson v1.6.10 h1:/yjJg8jaVQdYR3arGxPE2X5z89xrlhS0eGXdv+ADTh4=
github.com/valyala/fastjson v1.6.10/go.mod h1:e6FubmQouUNP73jtMLmcbxS6ydWIpOfhz34TSfO3JaE=
github.com/wneessen/go-mail v0.8.1 h1:tVcncj02/QySVFw3zr/kXOzZcuFQqBNT6K+Rbgm/pcM=
@@ -312,18 +312,18 @@ golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE=
golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc=
golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI=
golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo=
golang.org/x/tools v0.50.0 h1:c2ifzfcuY7L90lZ2aKd8S4K2NpASF08SZx9ZuJkHmSU=
golang.org/x/tools v0.50.0/go.mod h1:7ulVMw3831Mwi5EZD6RomGyffr4VFjuNYXf2BbCEAV0=
gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ=
gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8=
gorm.io/gorm v1.31.2 h1:3o8FXNo9v9S858gil+3LlZA1LkCOzgb4g5BL64FgaCo=
gorm.io/gorm v1.31.2/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs=
gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
modernc.org/cc/v4 v4.29.2 h1:h6+9ciCnPKutf4I03CvheAvDLX7+IHlqR6Iy6J+cgd8=
modernc.org/cc/v4 v4.29.2/go.mod h1:OnovgIhbbMXMu1aISnJ0wvVD1KnW+cAUJkIrAWh+kVI=
modernc.org/ccgo/v4 v4.35.0 h1:F+TUsmw09QxLzmi3aeYYGxjAXarmZaKgj3mKQHNaA8w=
modernc.org/ccgo/v4 v4.35.0/go.mod h1:qrVGs9S3Sr2Ztcg9ve+kTAYMp5a3YvWjo+SoN06kJ5I=
modernc.org/cc/v4 v4.29.7 h1:q+NXGJ0bK3b4TXFYQQVr9pYETGnmwFWkrUzJnMya/Tg=
modernc.org/cc/v4 v4.29.7/go.mod h1:OnovgIhbbMXMu1aISnJ0wvVD1KnW+cAUJkIrAWh+kVI=
modernc.org/ccgo/v4 v4.36.1 h1:ZNIUZAryN0UgnJwtyxrdEzcFc3yD4Cu4AzjfPXsLsIE=
modernc.org/ccgo/v4 v4.36.1/go.mod h1:rrtGc2QkS239nYb/mQNuBMyjq3/y3ZXWbBjPoV3wqzA=
modernc.org/fileutil v1.4.0 h1:j6ZzNTftVS054gi281TyLjHPp6CPHr2KCxEXjEbD6SM=
modernc.org/fileutil v1.4.0/go.mod h1:EqdKFDxiByqxLk8ozOxObDSfcVOv/54xDs/DUHdvCUU=
modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=
@@ -332,8 +332,8 @@ modernc.org/gc/v3 v3.1.5 h1:21ldfPfRYE31Tb7B3mwAK8gy1AxP4+dKjrOQPfqakoc=
modernc.org/gc/v3 v3.1.5/go.mod h1:HFK/6AGESC7Ex+EZJhJ2Gni6cTaYpSMmU/cT9RmlfYY=
modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=
modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=
modernc.org/libc v1.75.7 h1:o3DTP9/0p9pKmY2WCKQaySW6wIiZhNM7wc2lUoyhfew=
modernc.org/libc v1.75.7/go.mod h1:bO5o2ztHxBb2rjz0PgdHN0sSMw57CgxGFLZ3Qd/QpVQ=
modernc.org/libc v1.77.1 h1:Ct8j47QtiZ1Enj2DtFXQtUqrPCAjdCmPjtCuvrYQ0Hs=
modernc.org/libc v1.77.1/go.mod h1:87/pZ4L6nD1zqW4nItuS12YO7hN1igAah34xjnQo/W0=
modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
modernc.org/memory v1.12.1 h1:nFMiWrpStgZczNl6XI9GnIk/rWhYIyHGUaR04pGbp9g=
@@ -342,8 +342,8 @@ modernc.org/opt v0.2.0 h1:tGyef5ApycA7FSEOMraay9SaTk5zmbx7Tu+cJs4QKZg=
modernc.org/opt v0.2.0/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=
modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=
modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=
modernc.org/sqlite v1.59.0 h1:X1es1GpqBlS/5T+vbM4HLUdaa8OtQx468DF2vrx+38A=
modernc.org/sqlite v1.59.0/go.mod h1:+paeT2A3iPRHkQDwG7oA6Tk0zQd5woMEI8q7orfry8k=
modernc.org/sqlite v1.60.1 h1:/blz53O951KWFOso4QQvEs/Fq6cDBKLtMVrYNSeJVKw=
modernc.org/sqlite v1.60.1/go.mod h1:1dIoEagfDE72QytD5scH1lxARtaUgKgHC/NuApA27r0=
modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=
modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
+5 -1
View File
@@ -4043,7 +4043,7 @@ msgstr ""
msgid "failed to get the latest version: %v"
msgstr ""
#: internal/apps/fail2ban/app.go:224
#: internal/apps/fail2ban/app.go:229
msgid "failed to get the status of rule %s: %v"
msgstr ""
@@ -4898,6 +4898,10 @@ msgstr ""
msgid "rewrite rules, custom configs, rate limit and real IP settings are not migrated"
msgstr ""
#: internal/apps/fail2ban/app.go:226
msgid "rule %s is not running, please try restarting Fail2ban"
msgstr ""
#: internal/apps/fail2ban/app.go:131
msgid "rule already exists"
msgstr ""
+6 -2
View File
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-File-ID: 1166\n"
"Project-Id-Version: acepanel\n"
"Language-Team: Chinese Simplified\n"
"PO-Revision-Date: 2026-09-24 13:23\n"
"PO-Revision-Date: 2026-10-05 09:40\n"
#: pkg/tui/tui.go:144
msgid "#%d, leave empty to finish"
@@ -4051,7 +4051,7 @@ msgstr "获取最新版本下载链接失败"
msgid "failed to get the latest version: %v"
msgstr "获取最新版本失败: %v"
#: internal/apps/fail2ban/app.go:224
#: internal/apps/fail2ban/app.go:229
msgid "failed to get the status of rule %s: %v"
msgstr "获取规则 %s 的状态失败:%v"
@@ -4906,6 +4906,10 @@ msgstr "源服务器上已不存在该资源"
msgid "rewrite rules, custom configs, rate limit and real IP settings are not migrated"
msgstr "伪静态规则、自定义配置、速率限制和真实 IP 设置不会迁移"
#: internal/apps/fail2ban/app.go:226
msgid "rule %s is not running, please try restarting Fail2ban"
msgstr "规则 %s 未运行,请尝试重启 Fail2ban"
#: internal/apps/fail2ban/app.go:131
msgid "rule already exists"
msgstr "规则已存在"
+6 -2
View File
@@ -13,7 +13,7 @@ msgstr ""
"X-Crowdin-File-ID: 1166\n"
"Project-Id-Version: acepanel\n"
"Language-Team: Chinese Traditional\n"
"PO-Revision-Date: 2026-09-24 13:23\n"
"PO-Revision-Date: 2026-10-05 09:40\n"
#: pkg/tui/tui.go:144
msgid "#%d, leave empty to finish"
@@ -4051,7 +4051,7 @@ msgstr "無法取得最新版本下載連結"
msgid "failed to get the latest version: %v"
msgstr "無法取得最新版本:%v"
#: internal/apps/fail2ban/app.go:224
#: internal/apps/fail2ban/app.go:229
msgid "failed to get the status of rule %s: %v"
msgstr "獲取規則 %s 的狀態失敗:%v"
@@ -4906,6 +4906,10 @@ msgstr "源伺服器上已不存在該資源"
msgid "rewrite rules, custom configs, rate limit and real IP settings are not migrated"
msgstr "偽靜態規則、自訂設定、速率限制和真實 IP 設定不會遷移"
#: internal/apps/fail2ban/app.go:226
msgid "rule %s is not running, please try restarting Fail2ban"
msgstr "規則 %s 未運行,請嘗試重啟 Fail2ban"
#: internal/apps/fail2ban/app.go:131
msgid "rule already exists"
msgstr "規則已存在"
+11 -11
View File
@@ -55,7 +55,7 @@
"pinia": "4.0.3",
"pinia-plugin-persistedstate": "4.7.1",
"vue": "3.5.43",
"vue-echarts": "8.3.0",
"vue-echarts": "8.3.1",
"vue-router": "5.3.1",
"vue3-gettext": "4.0.1",
"vuedraggable": "4.1.0"
@@ -65,8 +65,8 @@
"@iconify/vue": "5.0.3",
"@tsconfig/node24": "24.0.5",
"@types/lodash-es": "4.17.12",
"@types/luxon": "3.7.5",
"@types/node": "24.19.0",
"@types/luxon": "3.7.6",
"@types/node": "24.19.1",
"@types/node-forge": "1.3.14",
"@unocss/eslint-config": "66.10.5",
"@vitejs/plugin-vue": "6.0.9",
@@ -74,27 +74,27 @@
"@vue/tsconfig": "0.9.1",
"colord": "2.10.0",
"cpx2": "9.0.3",
"eslint": "10.11.0",
"eslint": "10.12.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-oxlint": "1.85.0",
"eslint-plugin-oxlint": "1.86.0",
"eslint-plugin-vue": "10.11.1",
"naive-ui": "2.45.3",
"npm-run-all2": "9.0.3",
"oxfmt": "0.70.0",
"oxlint": "1.85.0",
"sass": "1.105.0",
"oxfmt": "0.71.0",
"oxlint": "1.86.0",
"sass": "1.105.1",
"tsx": "4.23.15",
"typescript": "6.0.3",
"unocss": "66.10.5",
"unplugin-auto-import": "21.1.0",
"unplugin-icons": "24.0.0",
"unplugin-vue-components": "32.1.0",
"vite": "8.3.1",
"vite": "8.3.2",
"vite-plugin-compression2": "2.5.3",
"vite-plugin-html": "3.2.2",
"vite-plugin-mock": "3.0.2",
"vite-plugin-vue-devtools": "8.2.1",
"vue-tsc": "3.3.11"
"vue-tsc": "3.3.12"
},
"packageManager": "pnpm@12.6.0"
"packageManager": "pnpm@12.9.1"
}
+552 -557
View File
File diff suppressed because it is too large Load Diff
+76 -76
View File
@@ -22,7 +22,7 @@ msgid "QQ Group"
msgstr "QQ Group"
#: src/components/common/AppFooter.vue:38 src/locales/menu.ts:24
#: src/views/apps/fail2ban/IndexView.vue:362 src/views/backup/IndexView.vue:53
#: src/views/apps/fail2ban/IndexView.vue:364 src/views/backup/IndexView.vue:53
#: src/views/backup/ListView.vue:356 src/views/backup/ListView.vue:407
#: src/views/cert/CertView.vue:551 src/views/cert/CertView.vue:668
#: src/views/cert/CreateCertModal.vue:119 src/views/home/IndexView.vue:542
@@ -279,9 +279,9 @@ msgstr "Cannot save in current state"
#: src/views/apps/docker/IndexView.vue:152
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:58
#: src/views/apps/elasticsearch/IndexView.vue:51
#: src/views/apps/fail2ban/IndexView.vue:175
#: src/views/apps/fail2ban/IndexView.vue:226
#: src/views/apps/fail2ban/IndexView.vue:236
#: src/views/apps/fail2ban/IndexView.vue:177
#: src/views/apps/fail2ban/IndexView.vue:228
#: src/views/apps/fail2ban/IndexView.vue:238
#: src/views/apps/frp/FrpcConfigTuneView.vue:64
#: src/views/apps/frp/FrpProxyModal.vue:236
#: src/views/apps/frp/FrpsConfigTuneView.vue:64
@@ -371,7 +371,7 @@ msgstr "Select File"
#: src/components/common/PathSelector.vue:58
#: src/views/app/EnvironmentView.vue:38 src/views/app/InstalledView.vue:158
#: src/views/apps/fail2ban/IndexView.vue:52
#: src/views/apps/fail2ban/IndexView.vue:445
#: src/views/apps/fail2ban/IndexView.vue:447
#: src/views/apps/frp/FrpProxyModal.vue:255
#: src/views/apps/frp/FrpProxyView.vue:22
#: src/views/apps/frp/FrpVisitorModal.vue:122
@@ -632,7 +632,7 @@ msgstr "Compressing..."
msgid "Connection failed, retrying..."
msgstr "Connection error. Please refresh."
#: src/components/common/RealtimeLog.vue:448
#: src/components/common/RealtimeLog.vue:492
#: src/views/apps/clickhouse/IndexView.vue:77
#: src/views/apps/mongodb/IndexView.vue:77
#: src/views/apps/mysql/MysqlIndex.vue:112
@@ -643,28 +643,28 @@ msgstr "Connection error. Please refresh."
msgid "Copied successfully"
msgstr "Copied successfully"
#: src/components/common/RealtimeLog.vue:487
#: src/components/common/RealtimeLog.vue:531
#, fuzzy
msgid "Not found"
msgstr "Not used"
#: src/components/common/RealtimeLog.vue:570
#: src/components/common/RealtimeLog.vue:614
msgid "Pause Auto-scroll"
msgstr ""
#: src/components/common/RealtimeLog.vue:570
#: src/components/common/RealtimeLog.vue:614
msgid "Resume Auto-scroll"
msgstr ""
#: src/components/common/RealtimeLog.vue:576
#: src/components/common/RealtimeLog.vue:620
msgid "Jump to Top"
msgstr ""
#: src/components/common/RealtimeLog.vue:579
#: src/components/common/RealtimeLog.vue:623
msgid "Jump to Bottom"
msgstr ""
#: src/components/common/RealtimeLog.vue:584
#: src/components/common/RealtimeLog.vue:628
#: src/components/file-editor/EditorToolbar.vue:190
#: src/components/file-editor/FileTree.vue:710 src/views/app/AppView.vue:237
#: src/views/app/EnvironmentView.vue:264 src/views/app/TemplateView.vue:102
@@ -676,73 +676,73 @@ msgstr ""
msgid "Search"
msgstr ""
#: src/components/common/RealtimeLog.vue:593
#: src/components/common/RealtimeLog.vue:637
#, fuzzy
msgid "Enter keyword and press Enter"
msgstr "Enter user password"
#: src/components/common/RealtimeLog.vue:596
#: src/components/common/RealtimeLog.vue:640
#: src/views/app/TemplateDeployModal.vue:615
#, fuzzy
msgid "Previous"
msgstr "Preview"
#: src/components/common/RealtimeLog.vue:599
#: src/components/common/RealtimeLog.vue:643
#: src/views/app/TemplateDeployModal.vue:624
#: src/views/app/TemplateDeployModal.vue:627
msgid "Next"
msgstr ""
#: src/components/common/RealtimeLog.vue:604
#: src/components/common/RealtimeLog.vue:648
msgid "Only loaded logs are searched"
msgstr ""
#: src/components/common/RealtimeLog.vue:613
#: src/components/common/RealtimeLog.vue:657
#, fuzzy
msgid "Disable Line Wrap"
msgstr "Disable Buffer"
#: src/components/common/RealtimeLog.vue:613
#: src/components/common/RealtimeLog.vue:657
#, fuzzy
msgid "Enable Line Wrap"
msgstr "Disable Buffer"
#: src/components/common/RealtimeLog.vue:618
#: src/components/common/RealtimeLog.vue:662
#, fuzzy
msgid "Copy All"
msgstr "Expose All"
#: src/components/common/RealtimeLog.vue:622
#: src/components/common/RealtimeLog.vue:666
#, fuzzy
msgid "Decrease Font Size"
msgstr "Size"
#: src/components/common/RealtimeLog.vue:625
#: src/components/common/RealtimeLog.vue:669
#, fuzzy
msgid "Increase Font Size"
msgstr "Size"
#: src/components/common/RealtimeLog.vue:631 src/views/ssh/IndexView.vue:550
#: src/components/common/RealtimeLog.vue:675 src/views/ssh/IndexView.vue:550
#, fuzzy
msgid "Exit Fullscreen"
msgstr "Fullscreen Display"
#: src/components/common/RealtimeLog.vue:631 src/views/ssh/IndexView.vue:550
#: src/components/common/RealtimeLog.vue:675 src/views/ssh/IndexView.vue:550
#, fuzzy
msgid "Fullscreen"
msgstr "Fullscreen Display"
#: src/components/common/RealtimeLog.vue:641
#: src/components/common/RealtimeLog.vue:685
msgid "No more logs"
msgstr ""
#: src/components/common/RealtimeLog.vue:655
#: src/components/common/RealtimeLog.vue:682
#: src/components/common/RealtimeLog.vue:699
#: src/components/common/RealtimeLog.vue:726
#, fuzzy
msgid "No logs available"
msgstr "Inodes Available"
#: src/components/common/RealtimeLog.vue:675
#: src/components/common/RealtimeLog.vue:719
#, fuzzy
msgid "%{ count } new line"
msgid_plural "%{ count } new lines"
@@ -872,7 +872,7 @@ msgstr "Autostart disabled successfully"
#: src/views/apps/codeserver/IndexView.vue:37
#: src/views/apps/docker/IndexView.vue:167
#: src/views/apps/elasticsearch/IndexView.vue:62
#: src/views/apps/fail2ban/IndexView.vue:271
#: src/views/apps/fail2ban/IndexView.vue:273
#: src/views/apps/frp/IndexView.vue:77 src/views/apps/frp/IndexView.vue:129
#: src/views/apps/gitea/IndexView.vue:35
#: src/views/apps/grafana/IndexView.vue:63
@@ -1102,7 +1102,7 @@ msgstr ""
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:97
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:132
#: src/views/apps/elasticsearch/IndexView.vue:82
#: src/views/apps/fail2ban/IndexView.vue:483
#: src/views/apps/fail2ban/IndexView.vue:485
#: src/views/apps/frp/FrpcConfigTuneView.vue:115
#: src/views/apps/frp/FrpcConfigTuneView.vue:145
#: src/views/apps/frp/FrpcConfigTuneView.vue:221
@@ -1638,7 +1638,7 @@ msgstr "Rename"
#: src/components/file-editor/FileTree.vue:595
#: src/components/system/composables/useConfirm.ts:32
#: src/components/system/ConfirmDialog.vue:54
#: src/views/apps/fail2ban/IndexView.vue:125
#: src/views/apps/fail2ban/IndexView.vue:127
#: src/views/apps/frp/FrpProxyView.vue:105
#: src/views/apps/frp/FrpVisitorView.vue:94
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:127
@@ -1713,7 +1713,7 @@ msgid "Are you sure you want to delete %{ name }?"
msgstr "Are you sure you want to delete %{ name }?"
#: src/components/file-editor/FileTree.vue:600
#: src/views/apps/fail2ban/IndexView.vue:219
#: src/views/apps/fail2ban/IndexView.vue:221
#: src/views/apps/frp/FrpProxyView.vue:125
#: src/views/apps/frp/FrpVisitorView.vue:114
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:185
@@ -2066,7 +2066,7 @@ msgstr "Show in Home"
#: src/views/app/AppView.vue:68 src/views/app/EnvironmentView.vue:62
#: src/views/app/InstalledView.vue:74 src/views/app/InstalledView.vue:176
#: src/views/apps/fail2ban/IndexView.vue:74
#: src/views/apps/fail2ban/IndexView.vue:141
#: src/views/apps/fail2ban/IndexView.vue:143
#: src/views/apps/frp/FrpProxyView.vue:73
#: src/views/apps/frp/FrpVisitorView.vue:62
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:99
@@ -2767,7 +2767,7 @@ msgstr "Load Status"
#: src/views/apps/codeserver/IndexView.vue:62
#: src/views/apps/docker/IndexView.vue:453
#: src/views/apps/elasticsearch/IndexView.vue:100
#: src/views/apps/fail2ban/IndexView.vue:329
#: src/views/apps/fail2ban/IndexView.vue:331
#: src/views/apps/frp/IndexView.vue:122 src/views/apps/frp/IndexView.vue:180
#: src/views/apps/gitea/IndexView.vue:60
#: src/views/apps/grafana/IndexView.vue:130
@@ -3277,30 +3277,30 @@ msgstr ""
"the meaning of each parameter, please do not modify it randomly!"
#: src/views/apps/fail2ban/IndexView.vue:70
#: src/views/apps/fail2ban/IndexView.vue:405
#: src/views/apps/fail2ban/IndexView.vue:451
#: src/views/apps/fail2ban/IndexView.vue:407
#: src/views/apps/fail2ban/IndexView.vue:453
msgid "Max Retries"
msgstr "Max Retries"
#: src/views/apps/fail2ban/IndexView.vue:71
#: src/views/apps/fail2ban/IndexView.vue:411
#: src/views/apps/fail2ban/IndexView.vue:467
#: src/views/apps/fail2ban/IndexView.vue:413
#: src/views/apps/fail2ban/IndexView.vue:469
msgid "Ban Time"
msgstr "Ban Time"
#: src/views/apps/fail2ban/IndexView.vue:72
#: src/views/apps/fail2ban/IndexView.vue:408
#: src/views/apps/fail2ban/IndexView.vue:459
#: src/views/apps/fail2ban/IndexView.vue:410
#: src/views/apps/fail2ban/IndexView.vue:461
msgid "Find Time"
msgstr "Find Time"
#: src/views/apps/fail2ban/IndexView.vue:91 src/views/cert/CertView.vue:344
#: src/views/apps/fail2ban/IndexView.vue:93 src/views/cert/CertView.vue:344
#: src/views/database/ElasticsearchDataView.vue:186
#: src/views/database/RedisDataView.vue:141
msgid "View"
msgstr "View"
#: src/views/apps/fail2ban/IndexView.vue:109
#: src/views/apps/fail2ban/IndexView.vue:111
#: src/views/apps/frp/FrpProxyView.vue:89
#: src/views/apps/frp/FrpVisitorView.vue:78
#: src/views/apps/rsync/IndexView.vue:95
@@ -3309,20 +3309,20 @@ msgstr "View"
msgid "Configure"
msgstr "Configure"
#: src/views/apps/fail2ban/IndexView.vue:118
#: src/views/apps/fail2ban/IndexView.vue:120
msgid "Are you sure you want to delete rule %{ name }?"
msgstr "Are you sure you want to delete rule %{ name }?"
#: src/views/apps/fail2ban/IndexView.vue:153
#: src/views/apps/fail2ban/IndexView.vue:155
msgid "Are you sure you want to unban %{ ip }?"
msgstr "Are you sure you want to unban %{ ip }?"
#: src/views/apps/fail2ban/IndexView.vue:154
#: src/views/apps/fail2ban/IndexView.vue:159
#: src/views/apps/fail2ban/IndexView.vue:156
#: src/views/apps/fail2ban/IndexView.vue:161
msgid "Unban"
msgstr "Unban"
#: src/views/apps/fail2ban/IndexView.vue:208
#: src/views/apps/fail2ban/IndexView.vue:210
#: src/views/apps/pureftpd/IndexView.vue:130
#: src/views/apps/rsync/IndexView.vue:160 src/views/apps/s3fs/IndexView.vue:77
#: src/views/apps/supervisor/IndexView.vue:259
@@ -3330,41 +3330,41 @@ msgstr "Unban"
msgid "Added successfully"
msgstr "Added successfully"
#: src/views/apps/fail2ban/IndexView.vue:252
#: src/views/apps/fail2ban/IndexView.vue:254
msgid "Unbanned successfully"
msgstr "Unbanned successfully"
#: src/views/apps/fail2ban/IndexView.vue:274
#: src/views/apps/fail2ban/IndexView.vue:276
#: src/views/firewall/SettingView.vue:130
msgid "IP Whitelist"
msgstr "IP Whitelist"
#: src/views/apps/fail2ban/IndexView.vue:279
#: src/views/apps/fail2ban/IndexView.vue:281
msgid "IP whitelist, separated by commas"
msgstr "IP whitelist, separated by commas"
#: src/views/apps/fail2ban/IndexView.vue:289
#: src/views/apps/fail2ban/IndexView.vue:291
msgid "Save Whitelist"
msgstr "Save Whitelist"
#: src/views/apps/fail2ban/IndexView.vue:294
#: src/views/apps/fail2ban/IndexView.vue:296
msgid "Rule Management"
msgstr "Rule Management"
#: src/views/apps/fail2ban/IndexView.vue:296
#: src/views/apps/fail2ban/IndexView.vue:298
msgid "Rule List"
msgstr "Rule List"
#: src/views/apps/fail2ban/IndexView.vue:324
#: src/views/apps/fail2ban/IndexView.vue:334
#: src/views/apps/fail2ban/IndexView.vue:338
#: src/views/apps/fail2ban/IndexView.vue:326
#: src/views/apps/fail2ban/IndexView.vue:336
#: src/views/apps/fail2ban/IndexView.vue:340
#: src/views/monitor/AlertRuleModal.vue:129 src/views/monitor/AlertView.vue:202
#: src/views/tamper/RuleModal.vue:89 src/views/tamper/TamperView.vue:342
#: src/views/website/EditModal.vue:2205
msgid "Add Rule"
msgstr "Add Rule"
#: src/views/apps/fail2ban/IndexView.vue:344
#: src/views/apps/fail2ban/IndexView.vue:346
msgid ""
"If an IP exceeds the maximum retries within the find time (seconds), it will "
"be banned for the ban time (seconds)"
@@ -3372,7 +3372,7 @@ msgstr ""
"If an IP exceeds the maximum retries within the find time (seconds), it will "
"be banned for the ban time (seconds)"
#: src/views/apps/fail2ban/IndexView.vue:351
#: src/views/apps/fail2ban/IndexView.vue:353
msgid ""
"Protected ports are automatically obtained. If you modify the port "
"corresponding to a rule, please delete and re-add the rule, otherwise "
@@ -3382,7 +3382,7 @@ msgstr ""
"corresponding to a rule, please delete and re-add the rule, otherwise "
"protection may not be effective"
#: src/views/apps/fail2ban/IndexView.vue:358
#: src/views/apps/fail2ban/IndexView.vue:360
#: src/views/apps/frp/FrpProxyModal.vue:263
#: src/views/apps/frp/FrpProxyView.vue:29
#: src/views/apps/frp/FrpVisitorModal.vue:130
@@ -3405,23 +3405,23 @@ msgstr ""
msgid "Type"
msgstr "Type"
#: src/views/apps/fail2ban/IndexView.vue:363
#: src/views/apps/fail2ban/IndexView.vue:394
#: src/views/apps/fail2ban/IndexView.vue:365
#: src/views/apps/fail2ban/IndexView.vue:396
msgid "Service"
msgstr "Service"
#: src/views/apps/fail2ban/IndexView.vue:368
#: src/views/apps/fail2ban/IndexView.vue:372 src/views/task/CreateModal.vue:480
#: src/views/apps/fail2ban/IndexView.vue:370
#: src/views/apps/fail2ban/IndexView.vue:374 src/views/task/CreateModal.vue:480
#: src/views/task/CreateModal.vue:486
msgid "Select Website"
msgstr "Select Website"
#: src/views/apps/fail2ban/IndexView.vue:375
#: src/views/apps/fail2ban/IndexView.vue:377
#: src/views/tamper/TamperView.vue:251
msgid "Protection Mode"
msgstr "Protection Mode"
#: src/views/apps/fail2ban/IndexView.vue:380
#: src/views/apps/fail2ban/IndexView.vue:382
#: src/views/apps/pureftpd/IndexView.vue:46
#: src/views/backup/StorageView.vue:277 src/views/backup/StorageView.vue:331
#: src/views/backup/StorageView.vue:361 src/views/backup/StorageView.vue:433
@@ -3430,12 +3430,12 @@ msgstr "Protection Mode"
msgid "Path"
msgstr "Path"
#: src/views/apps/fail2ban/IndexView.vue:387
#: src/views/apps/fail2ban/IndexView.vue:391
#: src/views/apps/fail2ban/IndexView.vue:389
#: src/views/apps/fail2ban/IndexView.vue:393
msgid "Protection Path"
msgstr "Protection Path"
#: src/views/apps/fail2ban/IndexView.vue:422
#: src/views/apps/fail2ban/IndexView.vue:424
#: src/views/apps/frp/FrpProxyModal.vue:582
#: src/views/apps/frp/FrpVisitorModal.vue:241
#: src/views/apps/nginx/NginxIndex.vue:690
@@ -3477,18 +3477,18 @@ msgstr "Protection Path"
msgid "Submit"
msgstr "Submit"
#: src/views/apps/fail2ban/IndexView.vue:430
#: src/views/apps/fail2ban/IndexView.vue:432
#, fuzzy
msgid "Rule Configuration"
msgstr "Module Configuration"
#: src/views/apps/fail2ban/IndexView.vue:439
#: src/views/apps/fail2ban/IndexView.vue:441
msgid ""
"The protected port, filter and log path are derived when the rule is created "
"and are kept as-is here. To change them, delete and re-add the rule."
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:448
#: src/views/apps/fail2ban/IndexView.vue:450
#: src/views/apps/frp/FrpProxyModal.vue:266
#: src/views/apps/frp/FrpProxyView.vue:43
#: src/views/apps/frp/FrpVisitorModal.vue:133
@@ -3501,24 +3501,24 @@ msgstr ""
msgid "Enabled"
msgstr "Enabled"
#: src/views/apps/fail2ban/IndexView.vue:487
#: src/views/apps/fail2ban/IndexView.vue:491
#: src/views/apps/fail2ban/IndexView.vue:489
#: src/views/apps/fail2ban/IndexView.vue:493
msgid "View Rule"
msgstr "View Rule"
#: src/views/apps/fail2ban/IndexView.vue:495
#: src/views/apps/fail2ban/IndexView.vue:497
msgid "Rule Information"
msgstr "Rule Information"
#: src/views/apps/fail2ban/IndexView.vue:498
#: src/views/apps/fail2ban/IndexView.vue:500
msgid "Currently Banned"
msgstr "Currently Banned"
#: src/views/apps/fail2ban/IndexView.vue:502
#: src/views/apps/fail2ban/IndexView.vue:504
msgid "Total Bans"
msgstr "Total Bans"
#: src/views/apps/fail2ban/IndexView.vue:507
#: src/views/apps/fail2ban/IndexView.vue:509
msgid "Ban List"
msgstr "Ban List"
+76 -76
View File
@@ -17,7 +17,7 @@ msgstr ""
#: src/components/common/AppFooter.vue:38
#: src/locales/menu.ts:24
#: src/views/apps/fail2ban/IndexView.vue:362
#: src/views/apps/fail2ban/IndexView.vue:364
#: src/views/backup/IndexView.vue:53
#: src/views/backup/ListView.vue:356
#: src/views/backup/ListView.vue:407
@@ -277,9 +277,9 @@ msgstr ""
#: src/views/apps/docker/IndexView.vue:152
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:58
#: src/views/apps/elasticsearch/IndexView.vue:51
#: src/views/apps/fail2ban/IndexView.vue:175
#: src/views/apps/fail2ban/IndexView.vue:226
#: src/views/apps/fail2ban/IndexView.vue:236
#: src/views/apps/fail2ban/IndexView.vue:177
#: src/views/apps/fail2ban/IndexView.vue:228
#: src/views/apps/fail2ban/IndexView.vue:238
#: src/views/apps/frp/FrpcConfigTuneView.vue:64
#: src/views/apps/frp/FrpProxyModal.vue:236
#: src/views/apps/frp/FrpsConfigTuneView.vue:64
@@ -380,7 +380,7 @@ msgstr ""
#: src/views/app/EnvironmentView.vue:38
#: src/views/app/InstalledView.vue:158
#: src/views/apps/fail2ban/IndexView.vue:52
#: src/views/apps/fail2ban/IndexView.vue:445
#: src/views/apps/fail2ban/IndexView.vue:447
#: src/views/apps/frp/FrpProxyModal.vue:255
#: src/views/apps/frp/FrpProxyView.vue:22
#: src/views/apps/frp/FrpVisitorModal.vue:122
@@ -702,7 +702,7 @@ msgstr ""
msgid "Connection failed, retrying..."
msgstr ""
#: src/components/common/RealtimeLog.vue:448
#: src/components/common/RealtimeLog.vue:492
#: src/views/apps/clickhouse/IndexView.vue:77
#: src/views/apps/mongodb/IndexView.vue:77
#: src/views/apps/mysql/MysqlIndex.vue:112
@@ -714,27 +714,27 @@ msgstr ""
msgid "Copied successfully"
msgstr ""
#: src/components/common/RealtimeLog.vue:487
#: src/components/common/RealtimeLog.vue:531
msgid "Not found"
msgstr ""
#: src/components/common/RealtimeLog.vue:570
#: src/components/common/RealtimeLog.vue:614
msgid "Pause Auto-scroll"
msgstr ""
#: src/components/common/RealtimeLog.vue:570
#: src/components/common/RealtimeLog.vue:614
msgid "Resume Auto-scroll"
msgstr ""
#: src/components/common/RealtimeLog.vue:576
#: src/components/common/RealtimeLog.vue:620
msgid "Jump to Top"
msgstr ""
#: src/components/common/RealtimeLog.vue:579
#: src/components/common/RealtimeLog.vue:623
msgid "Jump to Bottom"
msgstr ""
#: src/components/common/RealtimeLog.vue:584
#: src/components/common/RealtimeLog.vue:628
#: src/components/file-editor/EditorToolbar.vue:190
#: src/components/file-editor/FileTree.vue:710
#: src/views/app/AppView.vue:237
@@ -749,65 +749,65 @@ msgstr ""
msgid "Search"
msgstr ""
#: src/components/common/RealtimeLog.vue:593
#: src/components/common/RealtimeLog.vue:637
msgid "Enter keyword and press Enter"
msgstr ""
#: src/components/common/RealtimeLog.vue:596
#: src/components/common/RealtimeLog.vue:640
#: src/views/app/TemplateDeployModal.vue:615
msgid "Previous"
msgstr ""
#: src/components/common/RealtimeLog.vue:599
#: src/components/common/RealtimeLog.vue:643
#: src/views/app/TemplateDeployModal.vue:624
#: src/views/app/TemplateDeployModal.vue:627
msgid "Next"
msgstr ""
#: src/components/common/RealtimeLog.vue:604
#: src/components/common/RealtimeLog.vue:648
msgid "Only loaded logs are searched"
msgstr ""
#: src/components/common/RealtimeLog.vue:613
#: src/components/common/RealtimeLog.vue:657
msgid "Disable Line Wrap"
msgstr ""
#: src/components/common/RealtimeLog.vue:613
#: src/components/common/RealtimeLog.vue:657
msgid "Enable Line Wrap"
msgstr ""
#: src/components/common/RealtimeLog.vue:618
#: src/components/common/RealtimeLog.vue:662
msgid "Copy All"
msgstr ""
#: src/components/common/RealtimeLog.vue:622
#: src/components/common/RealtimeLog.vue:666
msgid "Decrease Font Size"
msgstr ""
#: src/components/common/RealtimeLog.vue:625
#: src/components/common/RealtimeLog.vue:669
msgid "Increase Font Size"
msgstr ""
#: src/components/common/RealtimeLog.vue:631
#: src/components/common/RealtimeLog.vue:675
#: src/views/ssh/IndexView.vue:550
msgid "Exit Fullscreen"
msgstr ""
#: src/components/common/RealtimeLog.vue:631
#: src/components/common/RealtimeLog.vue:675
#: src/views/ssh/IndexView.vue:550
msgid "Fullscreen"
msgstr ""
#: src/components/common/RealtimeLog.vue:641
#: src/components/common/RealtimeLog.vue:685
msgid "No more logs"
msgstr ""
#: src/components/common/RealtimeLog.vue:655
#: src/components/common/RealtimeLog.vue:682
#: src/components/common/RealtimeLog.vue:699
#: src/components/common/RealtimeLog.vue:726
msgid "No logs available"
msgstr ""
#: src/components/common/RealtimeLog.vue:675
#: src/components/common/RealtimeLog.vue:719
msgid "%{ count } new line"
msgid_plural "%{ count } new lines"
msgstr[0] ""
@@ -949,7 +949,7 @@ msgstr ""
#: src/views/apps/codeserver/IndexView.vue:37
#: src/views/apps/docker/IndexView.vue:167
#: src/views/apps/elasticsearch/IndexView.vue:62
#: src/views/apps/fail2ban/IndexView.vue:271
#: src/views/apps/fail2ban/IndexView.vue:273
#: src/views/apps/frp/IndexView.vue:77
#: src/views/apps/frp/IndexView.vue:129
#: src/views/apps/gitea/IndexView.vue:35
@@ -1183,7 +1183,7 @@ msgstr ""
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:97
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:132
#: src/views/apps/elasticsearch/IndexView.vue:82
#: src/views/apps/fail2ban/IndexView.vue:483
#: src/views/apps/fail2ban/IndexView.vue:485
#: src/views/apps/frp/FrpcConfigTuneView.vue:115
#: src/views/apps/frp/FrpcConfigTuneView.vue:145
#: src/views/apps/frp/FrpcConfigTuneView.vue:221
@@ -1734,7 +1734,7 @@ msgstr ""
#: src/components/file-editor/FileTree.vue:595
#: src/components/system/composables/useConfirm.ts:32
#: src/components/system/ConfirmDialog.vue:54
#: src/views/apps/fail2ban/IndexView.vue:125
#: src/views/apps/fail2ban/IndexView.vue:127
#: src/views/apps/frp/FrpProxyView.vue:105
#: src/views/apps/frp/FrpVisitorView.vue:94
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:127
@@ -1829,7 +1829,7 @@ msgid "Are you sure you want to delete %{ name }?"
msgstr ""
#: src/components/file-editor/FileTree.vue:600
#: src/views/apps/fail2ban/IndexView.vue:219
#: src/views/apps/fail2ban/IndexView.vue:221
#: src/views/apps/frp/FrpProxyView.vue:125
#: src/views/apps/frp/FrpVisitorView.vue:114
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:185
@@ -2215,7 +2215,7 @@ msgstr ""
#: src/views/app/InstalledView.vue:74
#: src/views/app/InstalledView.vue:176
#: src/views/apps/fail2ban/IndexView.vue:74
#: src/views/apps/fail2ban/IndexView.vue:141
#: src/views/apps/fail2ban/IndexView.vue:143
#: src/views/apps/frp/FrpProxyView.vue:73
#: src/views/apps/frp/FrpVisitorView.vue:62
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:99
@@ -2918,7 +2918,7 @@ msgstr ""
#: src/views/apps/codeserver/IndexView.vue:62
#: src/views/apps/docker/IndexView.vue:453
#: src/views/apps/elasticsearch/IndexView.vue:100
#: src/views/apps/fail2ban/IndexView.vue:329
#: src/views/apps/fail2ban/IndexView.vue:331
#: src/views/apps/frp/IndexView.vue:122
#: src/views/apps/frp/IndexView.vue:180
#: src/views/apps/gitea/IndexView.vue:60
@@ -3386,31 +3386,31 @@ msgid "This modifies the ElasticSearch main configuration file. If you do not un
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:70
#: src/views/apps/fail2ban/IndexView.vue:405
#: src/views/apps/fail2ban/IndexView.vue:451
#: src/views/apps/fail2ban/IndexView.vue:407
#: src/views/apps/fail2ban/IndexView.vue:453
msgid "Max Retries"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:71
#: src/views/apps/fail2ban/IndexView.vue:411
#: src/views/apps/fail2ban/IndexView.vue:467
#: src/views/apps/fail2ban/IndexView.vue:413
#: src/views/apps/fail2ban/IndexView.vue:469
msgid "Ban Time"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:72
#: src/views/apps/fail2ban/IndexView.vue:408
#: src/views/apps/fail2ban/IndexView.vue:459
#: src/views/apps/fail2ban/IndexView.vue:410
#: src/views/apps/fail2ban/IndexView.vue:461
msgid "Find Time"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:91
#: src/views/apps/fail2ban/IndexView.vue:93
#: src/views/cert/CertView.vue:344
#: src/views/database/ElasticsearchDataView.vue:186
#: src/views/database/RedisDataView.vue:141
msgid "View"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:109
#: src/views/apps/fail2ban/IndexView.vue:111
#: src/views/apps/frp/FrpProxyView.vue:89
#: src/views/apps/frp/FrpVisitorView.vue:78
#: src/views/apps/rsync/IndexView.vue:95
@@ -3419,20 +3419,20 @@ msgstr ""
msgid "Configure"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:118
#: src/views/apps/fail2ban/IndexView.vue:120
msgid "Are you sure you want to delete rule %{ name }?"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:153
#: src/views/apps/fail2ban/IndexView.vue:155
msgid "Are you sure you want to unban %{ ip }?"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:154
#: src/views/apps/fail2ban/IndexView.vue:159
#: src/views/apps/fail2ban/IndexView.vue:156
#: src/views/apps/fail2ban/IndexView.vue:161
msgid "Unban"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:208
#: src/views/apps/fail2ban/IndexView.vue:210
#: src/views/apps/pureftpd/IndexView.vue:130
#: src/views/apps/rsync/IndexView.vue:160
#: src/views/apps/s3fs/IndexView.vue:77
@@ -3441,34 +3441,34 @@ msgstr ""
msgid "Added successfully"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:252
#: src/views/apps/fail2ban/IndexView.vue:254
msgid "Unbanned successfully"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:274
#: src/views/apps/fail2ban/IndexView.vue:276
#: src/views/firewall/SettingView.vue:130
msgid "IP Whitelist"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:279
#: src/views/apps/fail2ban/IndexView.vue:281
msgid "IP whitelist, separated by commas"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:289
#: src/views/apps/fail2ban/IndexView.vue:291
msgid "Save Whitelist"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:294
#: src/views/apps/fail2ban/IndexView.vue:296
msgid "Rule Management"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:296
#: src/views/apps/fail2ban/IndexView.vue:298
msgid "Rule List"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:324
#: src/views/apps/fail2ban/IndexView.vue:334
#: src/views/apps/fail2ban/IndexView.vue:338
#: src/views/apps/fail2ban/IndexView.vue:326
#: src/views/apps/fail2ban/IndexView.vue:336
#: src/views/apps/fail2ban/IndexView.vue:340
#: src/views/monitor/AlertRuleModal.vue:129
#: src/views/monitor/AlertView.vue:202
#: src/views/tamper/RuleModal.vue:89
@@ -3477,15 +3477,15 @@ msgstr ""
msgid "Add Rule"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:344
#: src/views/apps/fail2ban/IndexView.vue:346
msgid "If an IP exceeds the maximum retries within the find time (seconds), it will be banned for the ban time (seconds)"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:351
#: src/views/apps/fail2ban/IndexView.vue:353
msgid "Protected ports are automatically obtained. If you modify the port corresponding to a rule, please delete and re-add the rule, otherwise protection may not be effective"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:358
#: src/views/apps/fail2ban/IndexView.vue:360
#: src/views/apps/frp/FrpProxyModal.vue:263
#: src/views/apps/frp/FrpProxyView.vue:29
#: src/views/apps/frp/FrpVisitorModal.vue:130
@@ -3514,24 +3514,24 @@ msgstr ""
msgid "Type"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:363
#: src/views/apps/fail2ban/IndexView.vue:394
#: src/views/apps/fail2ban/IndexView.vue:365
#: src/views/apps/fail2ban/IndexView.vue:396
msgid "Service"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:368
#: src/views/apps/fail2ban/IndexView.vue:372
#: src/views/apps/fail2ban/IndexView.vue:370
#: src/views/apps/fail2ban/IndexView.vue:374
#: src/views/task/CreateModal.vue:480
#: src/views/task/CreateModal.vue:486
msgid "Select Website"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:375
#: src/views/apps/fail2ban/IndexView.vue:377
#: src/views/tamper/TamperView.vue:251
msgid "Protection Mode"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:380
#: src/views/apps/fail2ban/IndexView.vue:382
#: src/views/apps/pureftpd/IndexView.vue:46
#: src/views/backup/StorageView.vue:277
#: src/views/backup/StorageView.vue:331
@@ -3544,12 +3544,12 @@ msgstr ""
msgid "Path"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:387
#: src/views/apps/fail2ban/IndexView.vue:391
#: src/views/apps/fail2ban/IndexView.vue:389
#: src/views/apps/fail2ban/IndexView.vue:393
msgid "Protection Path"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:422
#: src/views/apps/fail2ban/IndexView.vue:424
#: src/views/apps/frp/FrpProxyModal.vue:582
#: src/views/apps/frp/FrpVisitorModal.vue:241
#: src/views/apps/nginx/NginxIndex.vue:690
@@ -3602,15 +3602,15 @@ msgstr ""
msgid "Submit"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:430
#: src/views/apps/fail2ban/IndexView.vue:432
msgid "Rule Configuration"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:439
#: src/views/apps/fail2ban/IndexView.vue:441
msgid "The protected port, filter and log path are derived when the rule is created and are kept as-is here. To change them, delete and re-add the rule."
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:448
#: src/views/apps/fail2ban/IndexView.vue:450
#: src/views/apps/frp/FrpProxyModal.vue:266
#: src/views/apps/frp/FrpProxyView.vue:43
#: src/views/apps/frp/FrpVisitorModal.vue:133
@@ -3628,24 +3628,24 @@ msgstr ""
msgid "Enabled"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:487
#: src/views/apps/fail2ban/IndexView.vue:491
#: src/views/apps/fail2ban/IndexView.vue:489
#: src/views/apps/fail2ban/IndexView.vue:493
msgid "View Rule"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:495
#: src/views/apps/fail2ban/IndexView.vue:497
msgid "Rule Information"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:498
#: src/views/apps/fail2ban/IndexView.vue:500
msgid "Currently Banned"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:502
#: src/views/apps/fail2ban/IndexView.vue:504
msgid "Total Bans"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:507
#: src/views/apps/fail2ban/IndexView.vue:509
msgid "Ban List"
msgstr ""
+77 -77
View File
@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: acepanel\n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
"PO-Revision-Date: 2026-09-24 14:55\n"
"PO-Revision-Date: 2026-10-05 09:38\n"
#: src/components/common/AppFooter.vue:18
#: src/views/home/IndexView.vue:560
@@ -27,7 +27,7 @@ msgstr "QQ 群"
#: src/components/common/AppFooter.vue:38
#: src/locales/menu.ts:24
#: src/views/apps/fail2ban/IndexView.vue:362
#: src/views/apps/fail2ban/IndexView.vue:364
#: src/views/backup/IndexView.vue:53
#: src/views/backup/ListView.vue:356
#: src/views/backup/ListView.vue:407
@@ -287,9 +287,9 @@ msgstr "当前状态无法保存"
#: src/views/apps/docker/IndexView.vue:152
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:58
#: src/views/apps/elasticsearch/IndexView.vue:51
#: src/views/apps/fail2ban/IndexView.vue:175
#: src/views/apps/fail2ban/IndexView.vue:226
#: src/views/apps/fail2ban/IndexView.vue:236
#: src/views/apps/fail2ban/IndexView.vue:177
#: src/views/apps/fail2ban/IndexView.vue:228
#: src/views/apps/fail2ban/IndexView.vue:238
#: src/views/apps/frp/FrpcConfigTuneView.vue:64
#: src/views/apps/frp/FrpProxyModal.vue:236
#: src/views/apps/frp/FrpsConfigTuneView.vue:64
@@ -390,7 +390,7 @@ msgstr "选择文件"
#: src/views/app/EnvironmentView.vue:38
#: src/views/app/InstalledView.vue:158
#: src/views/apps/fail2ban/IndexView.vue:52
#: src/views/apps/fail2ban/IndexView.vue:445
#: src/views/apps/fail2ban/IndexView.vue:447
#: src/views/apps/frp/FrpProxyModal.vue:255
#: src/views/apps/frp/FrpProxyView.vue:22
#: src/views/apps/frp/FrpVisitorModal.vue:122
@@ -712,7 +712,7 @@ msgstr "连接中……"
msgid "Connection failed, retrying..."
msgstr "连接失败,正在重试..."
#: src/components/common/RealtimeLog.vue:448
#: src/components/common/RealtimeLog.vue:492
#: src/views/apps/clickhouse/IndexView.vue:77
#: src/views/apps/mongodb/IndexView.vue:77
#: src/views/apps/mysql/MysqlIndex.vue:112
@@ -724,27 +724,27 @@ msgstr "连接失败,正在重试..."
msgid "Copied successfully"
msgstr "复制成功"
#: src/components/common/RealtimeLog.vue:487
#: src/components/common/RealtimeLog.vue:531
msgid "Not found"
msgstr "未找到"
#: src/components/common/RealtimeLog.vue:570
#: src/components/common/RealtimeLog.vue:614
msgid "Pause Auto-scroll"
msgstr "暂停自动滚动"
#: src/components/common/RealtimeLog.vue:570
#: src/components/common/RealtimeLog.vue:614
msgid "Resume Auto-scroll"
msgstr "恢复自动滚动"
#: src/components/common/RealtimeLog.vue:576
#: src/components/common/RealtimeLog.vue:620
msgid "Jump to Top"
msgstr "跳转到顶部"
#: src/components/common/RealtimeLog.vue:579
#: src/components/common/RealtimeLog.vue:623
msgid "Jump to Bottom"
msgstr "跳转到底部"
#: src/components/common/RealtimeLog.vue:584
#: src/components/common/RealtimeLog.vue:628
#: src/components/file-editor/EditorToolbar.vue:190
#: src/components/file-editor/FileTree.vue:710
#: src/views/app/AppView.vue:237
@@ -759,65 +759,65 @@ msgstr "跳转到底部"
msgid "Search"
msgstr "搜索"
#: src/components/common/RealtimeLog.vue:593
#: src/components/common/RealtimeLog.vue:637
msgid "Enter keyword and press Enter"
msgstr "输入关键字并按回车"
#: src/components/common/RealtimeLog.vue:596
#: src/components/common/RealtimeLog.vue:640
#: src/views/app/TemplateDeployModal.vue:615
msgid "Previous"
msgstr "返回"
#: src/components/common/RealtimeLog.vue:599
#: src/components/common/RealtimeLog.vue:643
#: src/views/app/TemplateDeployModal.vue:624
#: src/views/app/TemplateDeployModal.vue:627
msgid "Next"
msgstr "下一步"
#: src/components/common/RealtimeLog.vue:604
#: src/components/common/RealtimeLog.vue:648
msgid "Only loaded logs are searched"
msgstr "仅搜索已加载的日志"
#: src/components/common/RealtimeLog.vue:613
#: src/components/common/RealtimeLog.vue:657
msgid "Disable Line Wrap"
msgstr "禁用自动换行"
#: src/components/common/RealtimeLog.vue:613
#: src/components/common/RealtimeLog.vue:657
msgid "Enable Line Wrap"
msgstr "启用自动换行"
#: src/components/common/RealtimeLog.vue:618
#: src/components/common/RealtimeLog.vue:662
msgid "Copy All"
msgstr "全部复制"
#: src/components/common/RealtimeLog.vue:622
#: src/components/common/RealtimeLog.vue:666
msgid "Decrease Font Size"
msgstr "减小字体大小"
#: src/components/common/RealtimeLog.vue:625
#: src/components/common/RealtimeLog.vue:669
msgid "Increase Font Size"
msgstr "增大字体大小"
#: src/components/common/RealtimeLog.vue:631
#: src/components/common/RealtimeLog.vue:675
#: src/views/ssh/IndexView.vue:550
msgid "Exit Fullscreen"
msgstr "退出全屏"
#: src/components/common/RealtimeLog.vue:631
#: src/components/common/RealtimeLog.vue:675
#: src/views/ssh/IndexView.vue:550
msgid "Fullscreen"
msgstr "全屏"
#: src/components/common/RealtimeLog.vue:641
#: src/components/common/RealtimeLog.vue:685
msgid "No more logs"
msgstr "没有更多日志"
#: src/components/common/RealtimeLog.vue:655
#: src/components/common/RealtimeLog.vue:682
#: src/components/common/RealtimeLog.vue:699
#: src/components/common/RealtimeLog.vue:726
msgid "No logs available"
msgstr "暂无日志数据"
#: src/components/common/RealtimeLog.vue:675
#: src/components/common/RealtimeLog.vue:719
msgid "%{ count } new line"
msgid_plural "%{ count } new lines"
msgstr[0] "%{ count } 行新日志"
@@ -958,7 +958,7 @@ msgstr "自启动已成功禁用"
#: src/views/apps/codeserver/IndexView.vue:37
#: src/views/apps/docker/IndexView.vue:167
#: src/views/apps/elasticsearch/IndexView.vue:62
#: src/views/apps/fail2ban/IndexView.vue:271
#: src/views/apps/fail2ban/IndexView.vue:273
#: src/views/apps/frp/IndexView.vue:77
#: src/views/apps/frp/IndexView.vue:129
#: src/views/apps/gitea/IndexView.vue:35
@@ -1192,7 +1192,7 @@ msgstr "放弃"
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:97
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:132
#: src/views/apps/elasticsearch/IndexView.vue:82
#: src/views/apps/fail2ban/IndexView.vue:483
#: src/views/apps/fail2ban/IndexView.vue:485
#: src/views/apps/frp/FrpcConfigTuneView.vue:115
#: src/views/apps/frp/FrpcConfigTuneView.vue:145
#: src/views/apps/frp/FrpcConfigTuneView.vue:221
@@ -1743,7 +1743,7 @@ msgstr "重命名"
#: src/components/file-editor/FileTree.vue:595
#: src/components/system/composables/useConfirm.ts:32
#: src/components/system/ConfirmDialog.vue:54
#: src/views/apps/fail2ban/IndexView.vue:125
#: src/views/apps/fail2ban/IndexView.vue:127
#: src/views/apps/frp/FrpProxyView.vue:105
#: src/views/apps/frp/FrpVisitorView.vue:94
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:127
@@ -1838,7 +1838,7 @@ msgid "Are you sure you want to delete %{ name }?"
msgstr "您确定要删除 %{ name } 吗?"
#: src/components/file-editor/FileTree.vue:600
#: src/views/apps/fail2ban/IndexView.vue:219
#: src/views/apps/fail2ban/IndexView.vue:221
#: src/views/apps/frp/FrpProxyView.vue:125
#: src/views/apps/frp/FrpVisitorView.vue:114
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:185
@@ -2224,7 +2224,7 @@ msgstr "在主页显示"
#: src/views/app/InstalledView.vue:74
#: src/views/app/InstalledView.vue:176
#: src/views/apps/fail2ban/IndexView.vue:74
#: src/views/apps/fail2ban/IndexView.vue:141
#: src/views/apps/fail2ban/IndexView.vue:143
#: src/views/apps/frp/FrpProxyView.vue:73
#: src/views/apps/frp/FrpVisitorView.vue:62
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:99
@@ -2927,7 +2927,7 @@ msgstr "负载状态"
#: src/views/apps/codeserver/IndexView.vue:62
#: src/views/apps/docker/IndexView.vue:453
#: src/views/apps/elasticsearch/IndexView.vue:100
#: src/views/apps/fail2ban/IndexView.vue:329
#: src/views/apps/fail2ban/IndexView.vue:331
#: src/views/apps/frp/IndexView.vue:122
#: src/views/apps/frp/IndexView.vue:180
#: src/views/apps/gitea/IndexView.vue:60
@@ -3395,31 +3395,31 @@ msgid "This modifies the ElasticSearch main configuration file. If you do not un
msgstr "这将修改 ElasticSearch 主配置文件。如果您不了解各项参数的含义,请勿随意修改!"
#: src/views/apps/fail2ban/IndexView.vue:70
#: src/views/apps/fail2ban/IndexView.vue:405
#: src/views/apps/fail2ban/IndexView.vue:451
#: src/views/apps/fail2ban/IndexView.vue:407
#: src/views/apps/fail2ban/IndexView.vue:453
msgid "Max Retries"
msgstr "最大重试次数"
#: src/views/apps/fail2ban/IndexView.vue:71
#: src/views/apps/fail2ban/IndexView.vue:411
#: src/views/apps/fail2ban/IndexView.vue:467
#: src/views/apps/fail2ban/IndexView.vue:413
#: src/views/apps/fail2ban/IndexView.vue:469
msgid "Ban Time"
msgstr "封禁时间"
#: src/views/apps/fail2ban/IndexView.vue:72
#: src/views/apps/fail2ban/IndexView.vue:408
#: src/views/apps/fail2ban/IndexView.vue:459
#: src/views/apps/fail2ban/IndexView.vue:410
#: src/views/apps/fail2ban/IndexView.vue:461
msgid "Find Time"
msgstr "查找时间"
#: src/views/apps/fail2ban/IndexView.vue:91
#: src/views/apps/fail2ban/IndexView.vue:93
#: src/views/cert/CertView.vue:344
#: src/views/database/ElasticsearchDataView.vue:186
#: src/views/database/RedisDataView.vue:141
msgid "View"
msgstr "查看"
#: src/views/apps/fail2ban/IndexView.vue:109
#: src/views/apps/fail2ban/IndexView.vue:111
#: src/views/apps/frp/FrpProxyView.vue:89
#: src/views/apps/frp/FrpVisitorView.vue:78
#: src/views/apps/rsync/IndexView.vue:95
@@ -3428,20 +3428,20 @@ msgstr "查看"
msgid "Configure"
msgstr "配置"
#: src/views/apps/fail2ban/IndexView.vue:118
#: src/views/apps/fail2ban/IndexView.vue:120
msgid "Are you sure you want to delete rule %{ name }?"
msgstr "您确定要删除规则 %{ name } 吗?"
#: src/views/apps/fail2ban/IndexView.vue:153
#: src/views/apps/fail2ban/IndexView.vue:155
msgid "Are you sure you want to unban %{ ip }?"
msgstr "您确定要解封 %{ ip } 吗?"
#: src/views/apps/fail2ban/IndexView.vue:154
#: src/views/apps/fail2ban/IndexView.vue:159
#: src/views/apps/fail2ban/IndexView.vue:156
#: src/views/apps/fail2ban/IndexView.vue:161
msgid "Unban"
msgstr "解封"
#: src/views/apps/fail2ban/IndexView.vue:208
#: src/views/apps/fail2ban/IndexView.vue:210
#: src/views/apps/pureftpd/IndexView.vue:130
#: src/views/apps/rsync/IndexView.vue:160
#: src/views/apps/s3fs/IndexView.vue:77
@@ -3450,34 +3450,34 @@ msgstr "解封"
msgid "Added successfully"
msgstr "添加成功"
#: src/views/apps/fail2ban/IndexView.vue:252
#: src/views/apps/fail2ban/IndexView.vue:254
msgid "Unbanned successfully"
msgstr "解封成功"
#: src/views/apps/fail2ban/IndexView.vue:274
#: src/views/apps/fail2ban/IndexView.vue:276
#: src/views/firewall/SettingView.vue:130
msgid "IP Whitelist"
msgstr "IP 白名单"
#: src/views/apps/fail2ban/IndexView.vue:279
#: src/views/apps/fail2ban/IndexView.vue:281
msgid "IP whitelist, separated by commas"
msgstr "IP 白名单,用逗号分隔"
#: src/views/apps/fail2ban/IndexView.vue:289
#: src/views/apps/fail2ban/IndexView.vue:291
msgid "Save Whitelist"
msgstr "保存白名单"
#: src/views/apps/fail2ban/IndexView.vue:294
#: src/views/apps/fail2ban/IndexView.vue:296
msgid "Rule Management"
msgstr "规则管理"
#: src/views/apps/fail2ban/IndexView.vue:296
#: src/views/apps/fail2ban/IndexView.vue:298
msgid "Rule List"
msgstr "规则列表"
#: src/views/apps/fail2ban/IndexView.vue:324
#: src/views/apps/fail2ban/IndexView.vue:334
#: src/views/apps/fail2ban/IndexView.vue:338
#: src/views/apps/fail2ban/IndexView.vue:326
#: src/views/apps/fail2ban/IndexView.vue:336
#: src/views/apps/fail2ban/IndexView.vue:340
#: src/views/monitor/AlertRuleModal.vue:129
#: src/views/monitor/AlertView.vue:202
#: src/views/tamper/RuleModal.vue:89
@@ -3486,15 +3486,15 @@ msgstr "规则列表"
msgid "Add Rule"
msgstr "添加规则"
#: src/views/apps/fail2ban/IndexView.vue:344
#: src/views/apps/fail2ban/IndexView.vue:346
msgid "If an IP exceeds the maximum retries within the find time (seconds), it will be banned for the ban time (seconds)"
msgstr "如果一个 IP 在查找时间(秒)内超过最大重试次数,它将被禁止访问指定的禁止时间(秒)"
#: src/views/apps/fail2ban/IndexView.vue:351
#: src/views/apps/fail2ban/IndexView.vue:353
msgid "Protected ports are automatically obtained. If you modify the port corresponding to a rule, please delete and re-add the rule, otherwise protection may not be effective"
msgstr "受保护的端口会自动获取。如果您修改了某个规则对应的端口,请删除并重新添加该规则,否则保护可能无效"
#: src/views/apps/fail2ban/IndexView.vue:358
#: src/views/apps/fail2ban/IndexView.vue:360
#: src/views/apps/frp/FrpProxyModal.vue:263
#: src/views/apps/frp/FrpProxyView.vue:29
#: src/views/apps/frp/FrpVisitorModal.vue:130
@@ -3523,24 +3523,24 @@ msgstr "受保护的端口会自动获取。如果您修改了某个规则对应
msgid "Type"
msgstr "类型"
#: src/views/apps/fail2ban/IndexView.vue:363
#: src/views/apps/fail2ban/IndexView.vue:394
#: src/views/apps/fail2ban/IndexView.vue:365
#: src/views/apps/fail2ban/IndexView.vue:396
msgid "Service"
msgstr "服务"
#: src/views/apps/fail2ban/IndexView.vue:368
#: src/views/apps/fail2ban/IndexView.vue:372
#: src/views/apps/fail2ban/IndexView.vue:370
#: src/views/apps/fail2ban/IndexView.vue:374
#: src/views/task/CreateModal.vue:480
#: src/views/task/CreateModal.vue:486
msgid "Select Website"
msgstr "选择网站"
#: src/views/apps/fail2ban/IndexView.vue:375
#: src/views/apps/fail2ban/IndexView.vue:377
#: src/views/tamper/TamperView.vue:251
msgid "Protection Mode"
msgstr "保护模式"
#: src/views/apps/fail2ban/IndexView.vue:380
#: src/views/apps/fail2ban/IndexView.vue:382
#: src/views/apps/pureftpd/IndexView.vue:46
#: src/views/backup/StorageView.vue:277
#: src/views/backup/StorageView.vue:331
@@ -3553,12 +3553,12 @@ msgstr "保护模式"
msgid "Path"
msgstr "路径"
#: src/views/apps/fail2ban/IndexView.vue:387
#: src/views/apps/fail2ban/IndexView.vue:391
#: src/views/apps/fail2ban/IndexView.vue:389
#: src/views/apps/fail2ban/IndexView.vue:393
msgid "Protection Path"
msgstr "保护路径"
#: src/views/apps/fail2ban/IndexView.vue:422
#: src/views/apps/fail2ban/IndexView.vue:424
#: src/views/apps/frp/FrpProxyModal.vue:582
#: src/views/apps/frp/FrpVisitorModal.vue:241
#: src/views/apps/nginx/NginxIndex.vue:690
@@ -3611,15 +3611,15 @@ msgstr "保护路径"
msgid "Submit"
msgstr "提交"
#: src/views/apps/fail2ban/IndexView.vue:430
#: src/views/apps/fail2ban/IndexView.vue:432
msgid "Rule Configuration"
msgstr "规则配置"
#: src/views/apps/fail2ban/IndexView.vue:439
#: src/views/apps/fail2ban/IndexView.vue:441
msgid "The protected port, filter and log path are derived when the rule is created and are kept as-is here. To change them, delete and re-add the rule."
msgstr "受保护端口、过滤条件和日志路径在创建规则时确定,此处保持不变。如需更改,请删除规则后重新添加。"
#: src/views/apps/fail2ban/IndexView.vue:448
#: src/views/apps/fail2ban/IndexView.vue:450
#: src/views/apps/frp/FrpProxyModal.vue:266
#: src/views/apps/frp/FrpProxyView.vue:43
#: src/views/apps/frp/FrpVisitorModal.vue:133
@@ -3637,24 +3637,24 @@ msgstr "受保护端口、过滤条件和日志路径在创建规则时确定,
msgid "Enabled"
msgstr "已启用"
#: src/views/apps/fail2ban/IndexView.vue:487
#: src/views/apps/fail2ban/IndexView.vue:491
#: src/views/apps/fail2ban/IndexView.vue:489
#: src/views/apps/fail2ban/IndexView.vue:493
msgid "View Rule"
msgstr "查看规则"
#: src/views/apps/fail2ban/IndexView.vue:495
#: src/views/apps/fail2ban/IndexView.vue:497
msgid "Rule Information"
msgstr "规则信息"
#: src/views/apps/fail2ban/IndexView.vue:498
#: src/views/apps/fail2ban/IndexView.vue:500
msgid "Currently Banned"
msgstr "当前已封禁"
#: src/views/apps/fail2ban/IndexView.vue:502
#: src/views/apps/fail2ban/IndexView.vue:504
msgid "Total Bans"
msgstr "总封禁次数"
#: src/views/apps/fail2ban/IndexView.vue:507
#: src/views/apps/fail2ban/IndexView.vue:509
msgid "Ban List"
msgstr "封禁列表"
+77 -77
View File
@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: acepanel\n"
"Language-Team: Chinese Traditional\n"
"Language: zh_TW\n"
"PO-Revision-Date: 2026-09-24 14:55\n"
"PO-Revision-Date: 2026-10-05 09:38\n"
#: src/components/common/AppFooter.vue:18
#: src/views/home/IndexView.vue:560
@@ -27,7 +27,7 @@ msgstr "QQ 群"
#: src/components/common/AppFooter.vue:38
#: src/locales/menu.ts:24
#: src/views/apps/fail2ban/IndexView.vue:362
#: src/views/apps/fail2ban/IndexView.vue:364
#: src/views/backup/IndexView.vue:53
#: src/views/backup/ListView.vue:356
#: src/views/backup/ListView.vue:407
@@ -287,9 +287,9 @@ msgstr "目前狀態無法儲存"
#: src/views/apps/docker/IndexView.vue:152
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:58
#: src/views/apps/elasticsearch/IndexView.vue:51
#: src/views/apps/fail2ban/IndexView.vue:175
#: src/views/apps/fail2ban/IndexView.vue:226
#: src/views/apps/fail2ban/IndexView.vue:236
#: src/views/apps/fail2ban/IndexView.vue:177
#: src/views/apps/fail2ban/IndexView.vue:228
#: src/views/apps/fail2ban/IndexView.vue:238
#: src/views/apps/frp/FrpcConfigTuneView.vue:64
#: src/views/apps/frp/FrpProxyModal.vue:236
#: src/views/apps/frp/FrpsConfigTuneView.vue:64
@@ -390,7 +390,7 @@ msgstr "選擇檔案"
#: src/views/app/EnvironmentView.vue:38
#: src/views/app/InstalledView.vue:158
#: src/views/apps/fail2ban/IndexView.vue:52
#: src/views/apps/fail2ban/IndexView.vue:445
#: src/views/apps/fail2ban/IndexView.vue:447
#: src/views/apps/frp/FrpProxyModal.vue:255
#: src/views/apps/frp/FrpProxyView.vue:22
#: src/views/apps/frp/FrpVisitorModal.vue:122
@@ -712,7 +712,7 @@ msgstr "連接中……"
msgid "Connection failed, retrying..."
msgstr "連接失敗,正在重試..."
#: src/components/common/RealtimeLog.vue:448
#: src/components/common/RealtimeLog.vue:492
#: src/views/apps/clickhouse/IndexView.vue:77
#: src/views/apps/mongodb/IndexView.vue:77
#: src/views/apps/mysql/MysqlIndex.vue:112
@@ -724,27 +724,27 @@ msgstr "連接失敗,正在重試..."
msgid "Copied successfully"
msgstr "複製成功"
#: src/components/common/RealtimeLog.vue:487
#: src/components/common/RealtimeLog.vue:531
msgid "Not found"
msgstr "未找到"
#: src/components/common/RealtimeLog.vue:570
#: src/components/common/RealtimeLog.vue:614
msgid "Pause Auto-scroll"
msgstr "暫停自動捲動"
#: src/components/common/RealtimeLog.vue:570
#: src/components/common/RealtimeLog.vue:614
msgid "Resume Auto-scroll"
msgstr "恢復自動捲動"
#: src/components/common/RealtimeLog.vue:576
#: src/components/common/RealtimeLog.vue:620
msgid "Jump to Top"
msgstr "跳至頂部"
#: src/components/common/RealtimeLog.vue:579
#: src/components/common/RealtimeLog.vue:623
msgid "Jump to Bottom"
msgstr "跳至底部"
#: src/components/common/RealtimeLog.vue:584
#: src/components/common/RealtimeLog.vue:628
#: src/components/file-editor/EditorToolbar.vue:190
#: src/components/file-editor/FileTree.vue:710
#: src/views/app/AppView.vue:237
@@ -759,65 +759,65 @@ msgstr "跳至底部"
msgid "Search"
msgstr "搜尋"
#: src/components/common/RealtimeLog.vue:593
#: src/components/common/RealtimeLog.vue:637
msgid "Enter keyword and press Enter"
msgstr "輸入關鍵字並按 Enter"
#: src/components/common/RealtimeLog.vue:596
#: src/components/common/RealtimeLog.vue:640
#: src/views/app/TemplateDeployModal.vue:615
msgid "Previous"
msgstr "返回"
#: src/components/common/RealtimeLog.vue:599
#: src/components/common/RealtimeLog.vue:643
#: src/views/app/TemplateDeployModal.vue:624
#: src/views/app/TemplateDeployModal.vue:627
msgid "Next"
msgstr "下一步"
#: src/components/common/RealtimeLog.vue:604
#: src/components/common/RealtimeLog.vue:648
msgid "Only loaded logs are searched"
msgstr "僅搜尋已載入的日誌"
#: src/components/common/RealtimeLog.vue:613
#: src/components/common/RealtimeLog.vue:657
msgid "Disable Line Wrap"
msgstr "禁用自動換行"
#: src/components/common/RealtimeLog.vue:613
#: src/components/common/RealtimeLog.vue:657
msgid "Enable Line Wrap"
msgstr "啟用自動換行"
#: src/components/common/RealtimeLog.vue:618
#: src/components/common/RealtimeLog.vue:662
msgid "Copy All"
msgstr "全部複製"
#: src/components/common/RealtimeLog.vue:622
#: src/components/common/RealtimeLog.vue:666
msgid "Decrease Font Size"
msgstr "縮小字體"
#: src/components/common/RealtimeLog.vue:625
#: src/components/common/RealtimeLog.vue:669
msgid "Increase Font Size"
msgstr "放大字體"
#: src/components/common/RealtimeLog.vue:631
#: src/components/common/RealtimeLog.vue:675
#: src/views/ssh/IndexView.vue:550
msgid "Exit Fullscreen"
msgstr "結束全螢幕"
#: src/components/common/RealtimeLog.vue:631
#: src/components/common/RealtimeLog.vue:675
#: src/views/ssh/IndexView.vue:550
msgid "Fullscreen"
msgstr "全螢幕"
#: src/components/common/RealtimeLog.vue:641
#: src/components/common/RealtimeLog.vue:685
msgid "No more logs"
msgstr "沒有更多日誌"
#: src/components/common/RealtimeLog.vue:655
#: src/components/common/RealtimeLog.vue:682
#: src/components/common/RealtimeLog.vue:699
#: src/components/common/RealtimeLog.vue:726
msgid "No logs available"
msgstr "暫無日誌資料"
#: src/components/common/RealtimeLog.vue:675
#: src/components/common/RealtimeLog.vue:719
msgid "%{ count } new line"
msgid_plural "%{ count } new lines"
msgstr[0] "%{ count } 行新日誌"
@@ -958,7 +958,7 @@ msgstr "自啟動已成功禁用"
#: src/views/apps/codeserver/IndexView.vue:37
#: src/views/apps/docker/IndexView.vue:167
#: src/views/apps/elasticsearch/IndexView.vue:62
#: src/views/apps/fail2ban/IndexView.vue:271
#: src/views/apps/fail2ban/IndexView.vue:273
#: src/views/apps/frp/IndexView.vue:77
#: src/views/apps/frp/IndexView.vue:129
#: src/views/apps/gitea/IndexView.vue:35
@@ -1192,7 +1192,7 @@ msgstr "放棄"
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:97
#: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:132
#: src/views/apps/elasticsearch/IndexView.vue:82
#: src/views/apps/fail2ban/IndexView.vue:483
#: src/views/apps/fail2ban/IndexView.vue:485
#: src/views/apps/frp/FrpcConfigTuneView.vue:115
#: src/views/apps/frp/FrpcConfigTuneView.vue:145
#: src/views/apps/frp/FrpcConfigTuneView.vue:221
@@ -1743,7 +1743,7 @@ msgstr "重新命名"
#: src/components/file-editor/FileTree.vue:595
#: src/components/system/composables/useConfirm.ts:32
#: src/components/system/ConfirmDialog.vue:54
#: src/views/apps/fail2ban/IndexView.vue:125
#: src/views/apps/fail2ban/IndexView.vue:127
#: src/views/apps/frp/FrpProxyView.vue:105
#: src/views/apps/frp/FrpVisitorView.vue:94
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:127
@@ -1838,7 +1838,7 @@ msgid "Are you sure you want to delete %{ name }?"
msgstr "您確定要刪除 %{ name } 嗎?"
#: src/components/file-editor/FileTree.vue:600
#: src/views/apps/fail2ban/IndexView.vue:219
#: src/views/apps/fail2ban/IndexView.vue:221
#: src/views/apps/frp/FrpProxyView.vue:125
#: src/views/apps/frp/FrpVisitorView.vue:114
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:185
@@ -2224,7 +2224,7 @@ msgstr "在主頁顯示"
#: src/views/app/InstalledView.vue:74
#: src/views/app/InstalledView.vue:176
#: src/views/apps/fail2ban/IndexView.vue:74
#: src/views/apps/fail2ban/IndexView.vue:141
#: src/views/apps/fail2ban/IndexView.vue:143
#: src/views/apps/frp/FrpProxyView.vue:73
#: src/views/apps/frp/FrpVisitorView.vue:62
#: src/views/apps/grafana/GrafanaDataSourcesView.vue:99
@@ -2927,7 +2927,7 @@ msgstr "負載狀態"
#: src/views/apps/codeserver/IndexView.vue:62
#: src/views/apps/docker/IndexView.vue:453
#: src/views/apps/elasticsearch/IndexView.vue:100
#: src/views/apps/fail2ban/IndexView.vue:329
#: src/views/apps/fail2ban/IndexView.vue:331
#: src/views/apps/frp/IndexView.vue:122
#: src/views/apps/frp/IndexView.vue:180
#: src/views/apps/gitea/IndexView.vue:60
@@ -3395,31 +3395,31 @@ msgid "This modifies the ElasticSearch main configuration file. If you do not un
msgstr "這將修改 ElasticSearch 主設定檔。如果您不了解各項參數的含義,請勿隨意修改!"
#: src/views/apps/fail2ban/IndexView.vue:70
#: src/views/apps/fail2ban/IndexView.vue:405
#: src/views/apps/fail2ban/IndexView.vue:451
#: src/views/apps/fail2ban/IndexView.vue:407
#: src/views/apps/fail2ban/IndexView.vue:453
msgid "Max Retries"
msgstr "最大重試次數"
#: src/views/apps/fail2ban/IndexView.vue:71
#: src/views/apps/fail2ban/IndexView.vue:411
#: src/views/apps/fail2ban/IndexView.vue:467
#: src/views/apps/fail2ban/IndexView.vue:413
#: src/views/apps/fail2ban/IndexView.vue:469
msgid "Ban Time"
msgstr "封禁時間"
#: src/views/apps/fail2ban/IndexView.vue:72
#: src/views/apps/fail2ban/IndexView.vue:408
#: src/views/apps/fail2ban/IndexView.vue:459
#: src/views/apps/fail2ban/IndexView.vue:410
#: src/views/apps/fail2ban/IndexView.vue:461
msgid "Find Time"
msgstr "查找時間"
#: src/views/apps/fail2ban/IndexView.vue:91
#: src/views/apps/fail2ban/IndexView.vue:93
#: src/views/cert/CertView.vue:344
#: src/views/database/ElasticsearchDataView.vue:186
#: src/views/database/RedisDataView.vue:141
msgid "View"
msgstr "查看"
#: src/views/apps/fail2ban/IndexView.vue:109
#: src/views/apps/fail2ban/IndexView.vue:111
#: src/views/apps/frp/FrpProxyView.vue:89
#: src/views/apps/frp/FrpVisitorView.vue:78
#: src/views/apps/rsync/IndexView.vue:95
@@ -3428,20 +3428,20 @@ msgstr "查看"
msgid "Configure"
msgstr "配置"
#: src/views/apps/fail2ban/IndexView.vue:118
#: src/views/apps/fail2ban/IndexView.vue:120
msgid "Are you sure you want to delete rule %{ name }?"
msgstr "您確定要刪除規則 %{ name } 嗎?"
#: src/views/apps/fail2ban/IndexView.vue:153
#: src/views/apps/fail2ban/IndexView.vue:155
msgid "Are you sure you want to unban %{ ip }?"
msgstr "您確定要解封 %{ ip } 嗎?"
#: src/views/apps/fail2ban/IndexView.vue:154
#: src/views/apps/fail2ban/IndexView.vue:159
#: src/views/apps/fail2ban/IndexView.vue:156
#: src/views/apps/fail2ban/IndexView.vue:161
msgid "Unban"
msgstr "解封"
#: src/views/apps/fail2ban/IndexView.vue:208
#: src/views/apps/fail2ban/IndexView.vue:210
#: src/views/apps/pureftpd/IndexView.vue:130
#: src/views/apps/rsync/IndexView.vue:160
#: src/views/apps/s3fs/IndexView.vue:77
@@ -3450,34 +3450,34 @@ msgstr "解封"
msgid "Added successfully"
msgstr "新增成功"
#: src/views/apps/fail2ban/IndexView.vue:252
#: src/views/apps/fail2ban/IndexView.vue:254
msgid "Unbanned successfully"
msgstr "解封成功"
#: src/views/apps/fail2ban/IndexView.vue:274
#: src/views/apps/fail2ban/IndexView.vue:276
#: src/views/firewall/SettingView.vue:130
msgid "IP Whitelist"
msgstr "IP 白名單"
#: src/views/apps/fail2ban/IndexView.vue:279
#: src/views/apps/fail2ban/IndexView.vue:281
msgid "IP whitelist, separated by commas"
msgstr "IP 白名單,以逗號分隔"
#: src/views/apps/fail2ban/IndexView.vue:289
#: src/views/apps/fail2ban/IndexView.vue:291
msgid "Save Whitelist"
msgstr "儲存白名單"
#: src/views/apps/fail2ban/IndexView.vue:294
#: src/views/apps/fail2ban/IndexView.vue:296
msgid "Rule Management"
msgstr "規則管理"
#: src/views/apps/fail2ban/IndexView.vue:296
#: src/views/apps/fail2ban/IndexView.vue:298
msgid "Rule List"
msgstr "規則列表"
#: src/views/apps/fail2ban/IndexView.vue:324
#: src/views/apps/fail2ban/IndexView.vue:334
#: src/views/apps/fail2ban/IndexView.vue:338
#: src/views/apps/fail2ban/IndexView.vue:326
#: src/views/apps/fail2ban/IndexView.vue:336
#: src/views/apps/fail2ban/IndexView.vue:340
#: src/views/monitor/AlertRuleModal.vue:129
#: src/views/monitor/AlertView.vue:202
#: src/views/tamper/RuleModal.vue:89
@@ -3486,15 +3486,15 @@ msgstr "規則列表"
msgid "Add Rule"
msgstr "新增規則"
#: src/views/apps/fail2ban/IndexView.vue:344
#: src/views/apps/fail2ban/IndexView.vue:346
msgid "If an IP exceeds the maximum retries within the find time (seconds), it will be banned for the ban time (seconds)"
msgstr "如果一個 IP 在偵測時間(秒)內超過最大重試次數,將被封鎖指定的封鎖時間(秒)"
#: src/views/apps/fail2ban/IndexView.vue:351
#: src/views/apps/fail2ban/IndexView.vue:353
msgid "Protected ports are automatically obtained. If you modify the port corresponding to a rule, please delete and re-add the rule, otherwise protection may not be effective"
msgstr "受保護的連接埠會自動取得。如果您修改了某個規則對應的連接埠,請刪除並重新新增該規則,否則保護可能無效"
#: src/views/apps/fail2ban/IndexView.vue:358
#: src/views/apps/fail2ban/IndexView.vue:360
#: src/views/apps/frp/FrpProxyModal.vue:263
#: src/views/apps/frp/FrpProxyView.vue:29
#: src/views/apps/frp/FrpVisitorModal.vue:130
@@ -3523,24 +3523,24 @@ msgstr "受保護的連接埠會自動取得。如果您修改了某個規則對
msgid "Type"
msgstr "類型"
#: src/views/apps/fail2ban/IndexView.vue:363
#: src/views/apps/fail2ban/IndexView.vue:394
#: src/views/apps/fail2ban/IndexView.vue:365
#: src/views/apps/fail2ban/IndexView.vue:396
msgid "Service"
msgstr "服務"
#: src/views/apps/fail2ban/IndexView.vue:368
#: src/views/apps/fail2ban/IndexView.vue:372
#: src/views/apps/fail2ban/IndexView.vue:370
#: src/views/apps/fail2ban/IndexView.vue:374
#: src/views/task/CreateModal.vue:480
#: src/views/task/CreateModal.vue:486
msgid "Select Website"
msgstr "選擇網站"
#: src/views/apps/fail2ban/IndexView.vue:375
#: src/views/apps/fail2ban/IndexView.vue:377
#: src/views/tamper/TamperView.vue:251
msgid "Protection Mode"
msgstr "保護模式"
#: src/views/apps/fail2ban/IndexView.vue:380
#: src/views/apps/fail2ban/IndexView.vue:382
#: src/views/apps/pureftpd/IndexView.vue:46
#: src/views/backup/StorageView.vue:277
#: src/views/backup/StorageView.vue:331
@@ -3553,12 +3553,12 @@ msgstr "保護模式"
msgid "Path"
msgstr "路徑"
#: src/views/apps/fail2ban/IndexView.vue:387
#: src/views/apps/fail2ban/IndexView.vue:391
#: src/views/apps/fail2ban/IndexView.vue:389
#: src/views/apps/fail2ban/IndexView.vue:393
msgid "Protection Path"
msgstr "保護路徑"
#: src/views/apps/fail2ban/IndexView.vue:422
#: src/views/apps/fail2ban/IndexView.vue:424
#: src/views/apps/frp/FrpProxyModal.vue:582
#: src/views/apps/frp/FrpVisitorModal.vue:241
#: src/views/apps/nginx/NginxIndex.vue:690
@@ -3611,15 +3611,15 @@ msgstr "保護路徑"
msgid "Submit"
msgstr "提交"
#: src/views/apps/fail2ban/IndexView.vue:430
#: src/views/apps/fail2ban/IndexView.vue:432
msgid "Rule Configuration"
msgstr "規則配置"
#: src/views/apps/fail2ban/IndexView.vue:439
#: src/views/apps/fail2ban/IndexView.vue:441
msgid "The protected port, filter and log path are derived when the rule is created and are kept as-is here. To change them, delete and re-add the rule."
msgstr "受保護連接埠、過濾條件和日誌路徑在建立規則時確定,此處保持不變。如需更改,請刪除規則後重新新增。"
#: src/views/apps/fail2ban/IndexView.vue:448
#: src/views/apps/fail2ban/IndexView.vue:450
#: src/views/apps/frp/FrpProxyModal.vue:266
#: src/views/apps/frp/FrpProxyView.vue:43
#: src/views/apps/frp/FrpVisitorModal.vue:133
@@ -3637,24 +3637,24 @@ msgstr "受保護連接埠、過濾條件和日誌路徑在建立規則時確定
msgid "Enabled"
msgstr "已啟用"
#: src/views/apps/fail2ban/IndexView.vue:487
#: src/views/apps/fail2ban/IndexView.vue:491
#: src/views/apps/fail2ban/IndexView.vue:489
#: src/views/apps/fail2ban/IndexView.vue:493
msgid "View Rule"
msgstr "查看規則"
#: src/views/apps/fail2ban/IndexView.vue:495
#: src/views/apps/fail2ban/IndexView.vue:497
msgid "Rule Information"
msgstr "規則資訊"
#: src/views/apps/fail2ban/IndexView.vue:498
#: src/views/apps/fail2ban/IndexView.vue:500
msgid "Currently Banned"
msgstr "當前已封禁"
#: src/views/apps/fail2ban/IndexView.vue:502
#: src/views/apps/fail2ban/IndexView.vue:504
msgid "Total Bans"
msgstr "總封禁次數"
#: src/views/apps/fail2ban/IndexView.vue:507
#: src/views/apps/fail2ban/IndexView.vue:509
msgid "Ban List"
msgstr "封禁列表"