feat: online read access log and error log

This commit is contained in:
0xJacky 2022-09-01 10:48:16 +08:00
parent 28168197b1
commit fea0bc727f
No known key found for this signature in database
GPG key ID: B6E4A6E4A561BAF0
19 changed files with 307 additions and 121 deletions

View file

@ -77,6 +77,7 @@ Nginx 网络管理界面,由 [0xJacky](https://jackyu.cn/) 与 [Hintay](https
- 在线查看服务器 CPU、内存、系统负载、磁盘使用率等指标 - 在线查看服务器 CPU、内存、系统负载、磁盘使用率等指标
- 一键申请和自动续签 Let's encrypt 证书 - 一键申请和自动续签 Let's encrypt 证书
- 在线编辑 Nginx 配置文件,编辑器支持 Nginx 配置语法高亮 - 在线编辑 Nginx 配置文件,编辑器支持 Nginx 配置语法高亮
- 在线查看 Nginx 日志
- 使用 Go 和 Vue 开发,发行版本为单个可执行的二进制文件 - 使用 Go 和 Vue 开发,发行版本为单个可执行的二进制文件
- 保存配置后自动测试配置文件并重载 Nginx - 保存配置后自动测试配置文件并重载 Nginx
- 基于网页浏览器的高级命令行终端 - 基于网页浏览器的高级命令行终端

View file

@ -79,6 +79,7 @@ Nginx 網路管理介面,由 [0xJacky](https://jackyu.cn/) 與 [Hintay](https
- 線上檢視伺服器 CPU、記憶體、系統負載、磁碟使用率等指標 - 線上檢視伺服器 CPU、記憶體、系統負載、磁碟使用率等指標
- 一鍵申請和自動續簽 Let's encrypt 憑證 - 一鍵申請和自動續簽 Let's encrypt 憑證
- 線上編輯 Nginx 配置檔案,編輯器支援 Nginx 配置語法突顯 - 線上編輯 Nginx 配置檔案,編輯器支援 Nginx 配置語法突顯
- 線上查看 Nginx 日誌
- 使用 Go 和 Vue 開發,發行版本為單個可執行檔案 - 使用 Go 和 Vue 開發,發行版本為單個可執行檔案
- 保存配置後自動測試配置檔案並重載 Nginx - 保存配置後自動測試配置檔案並重載 Nginx
- 基於網頁瀏覽器的高級命令行終端 - 基於網頁瀏覽器的高級命令行終端

View file

@ -75,6 +75,7 @@ URL[https://nginxui.jackyu.cn](https://nginxui.jackyu.cn)
- Online view of server CPU, Memory, Load Average, Disk Usage and other indicators. - Online view of server CPU, Memory, Load Average, Disk Usage and other indicators.
- One-click deployment and automatic renewal Let's Encrypt certificates. - One-click deployment and automatic renewal Let's Encrypt certificates.
- Online editing websites configurations with our self-designed **NgxConfigEditor** which is a user-friendly block editor or **Ace Code Editor** which support highlight nginx configuration syntax. - Online editing websites configurations with our self-designed **NgxConfigEditor** which is a user-friendly block editor or **Ace Code Editor** which support highlight nginx configuration syntax.
- Online view Nginx logs
- Written in Go and Vue, distribution is a single executable binary. - Written in Go and Vue, distribution is a single executable binary.
- Automatically test configuration file and reload nginx after saving configuration. - Automatically test configuration file and reload nginx after saving configuration.
- Web Terminal - Web Terminal

View file

@ -4,5 +4,5 @@ CGO_ENABLED=1 GOOS=linux CC=x86_64-unknown-linux-gnu-gcc \
"-X 'github.com/0xJacky/Nginx-UI/server/settings.buildTime=$(date +%s)'" -o nginx-ui -v main.go "-X 'github.com/0xJacky/Nginx-UI/server/settings.buildTime=$(date +%s)'" -o nginx-ui -v main.go
docker build -t nginx-ui . docker build -t nginx-ui .
docker tag nginx-ui uozi/nginx-ui # docker tag nginx-ui uozi/nginx-ui
docker push uozi/nginx-ui # docker push uozi/nginx-ui

View file

@ -9,10 +9,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/routes/index.ts:92 #: src/routes/index.ts:116
msgid "About" msgid "About"
msgstr "About" msgstr "About"
#: src/routes/index.ts:99
msgid "Access Logs"
msgstr ""
#: src/views/config/Config.vue:24 src/views/domain/DomainList.vue:42 #: src/views/config/Config.vue:24 src/views/domain/DomainList.vue:42
#: src/views/user/User.vue:42 #: src/views/user/User.vue:42
msgid "Action" msgid "Action"
@ -29,12 +33,12 @@ msgstr ""
msgid "Add Directive Below" msgid "Add Directive Below"
msgstr "Add Directive Below" msgstr "Add Directive Below"
#: src/views/domain/ngx_conf/LocationEditor.vue:31 #: src/views/domain/ngx_conf/LocationEditor.vue:33
#: src/views/domain/ngx_conf/LocationEditor.vue:46 #: src/views/domain/ngx_conf/LocationEditor.vue:48
msgid "Add Location" msgid "Add Location"
msgstr "Add Location" msgstr "Add Location"
#: src/routes/index.ts:54 src/views/domain/DomainAdd.vue:2 #: src/routes/index.ts:55 src/views/domain/DomainAdd.vue:2
msgid "Add Site" msgid "Add Site"
msgstr "Add Site" msgstr "Add Site"
@ -42,6 +46,10 @@ msgstr "Add Site"
msgid "Advance Mode" msgid "Advance Mode"
msgstr "Advance Mode" msgstr "Advance Mode"
#: src/views/nginx_log/NginxLog.vue:100
msgid "All logs"
msgstr ""
#: src/components/StdDataDisplay/StdTable.vue:41 #: src/components/StdDataDisplay/StdTable.vue:41
#: src/views/domain/DomainList.vue:27 #: src/views/domain/DomainList.vue:27
#, fuzzy #, fuzzy
@ -52,11 +60,15 @@ msgstr "Are you sure you want to remove this directive?"
msgid "Are you sure you want to remove this directive?" msgid "Are you sure you want to remove this directive?"
msgstr "Are you sure you want to remove this directive?" msgstr "Are you sure you want to remove this directive?"
#: src/views/domain/ngx_conf/LocationEditor.vue:17 #: src/views/domain/ngx_conf/LocationEditor.vue:9
#, fuzzy #, fuzzy
msgid "Are you sure you want to remove this location?" msgid "Are you sure you want to remove this location?"
msgstr "Are you sure you want to remove this directive?" msgstr "Are you sure you want to remove this directive?"
#: src/views/nginx_log/NginxLog.vue:4
msgid "Auto Refresh"
msgstr ""
#: src/views/domain/cert/IssueCert.vue:78 #: src/views/domain/cert/IssueCert.vue:78
msgid "Auto-renewal disabled for %{name}" msgid "Auto-renewal disabled for %{name}"
msgstr "Auto-renewal disabled for %{name}" msgstr "Auto-renewal disabled for %{name}"
@ -65,7 +77,7 @@ msgstr "Auto-renewal disabled for %{name}"
msgid "Auto-renewal enabled for %{name}" msgid "Auto-renewal enabled for %{name}"
msgstr "Auto-renewal enabled for %{name}" msgstr "Auto-renewal enabled for %{name}"
#: src/views/domain/DomainEdit.vue:178 #: src/views/domain/DomainEdit.vue:178 src/views/nginx_log/NginxLog.vue:115
msgid "Back" msgid "Back"
msgstr "Back" msgstr "Back"
@ -104,9 +116,9 @@ msgid "Certificate Status"
msgstr "Certificate Status" msgstr "Certificate Status"
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:29 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:29
#: src/views/domain/ngx_conf/LocationEditor.vue:33 #: src/views/domain/ngx_conf/LocationEditor.vue:21
#: src/views/domain/ngx_conf/LocationEditor.vue:7 #: src/views/domain/ngx_conf/LocationEditor.vue:35
#: src/views/domain/ngx_conf/NgxConfigEditor.vue:156 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:161
msgid "Comments" msgid "Comments"
msgstr "Comments" msgstr "Comments"
@ -122,8 +134,8 @@ msgstr "Configurations"
msgid "Configure SSL" msgid "Configure SSL"
msgstr "Configure SSL" msgstr "Configure SSL"
#: src/views/domain/ngx_conf/LocationEditor.vue:13 #: src/views/domain/ngx_conf/LocationEditor.vue:27
#: src/views/domain/ngx_conf/LocationEditor.vue:39 #: src/views/domain/ngx_conf/LocationEditor.vue:41
msgid "Content" msgid "Content"
msgstr "Content" msgstr "Content"
@ -147,7 +159,7 @@ msgstr "Created at"
msgid "Creating client facilitates communication with the CA server" msgid "Creating client facilitates communication with the CA server"
msgstr "" msgstr ""
#: src/routes/index.ts:26 #: src/routes/index.ts:27
msgid "Dashboard" msgid "Dashboard"
msgstr "Dashboard" msgstr "Dashboard"
@ -205,11 +217,11 @@ msgstr "Domain Config Created Successfully"
msgid "Edit %{n}" msgid "Edit %{n}"
msgstr "Edit %{n}" msgstr "Edit %{n}"
#: src/routes/index.ts:76 src/views/config/ConfigEdit.vue:2 #: src/routes/index.ts:77 src/views/config/ConfigEdit.vue:2
msgid "Edit Configuration" msgid "Edit Configuration"
msgstr "Edit Configuration" msgstr "Edit Configuration"
#: src/routes/index.ts:58 #: src/routes/index.ts:59
msgid "Edit Site" msgid "Edit Site"
msgstr "Edit Site" msgstr "Edit Site"
@ -244,6 +256,10 @@ msgstr "Enabled successfully"
msgid "Encrypt website with Let's Encrypt" msgid "Encrypt website with Let's Encrypt"
msgstr "Encrypt website with Let's Encrypt" msgstr "Encrypt website with Let's Encrypt"
#: src/routes/index.ts:103
msgid "Error Logs"
msgstr ""
#: src/views/domain/cert/CertInfo.vue:17 #: src/views/domain/cert/CertInfo.vue:17
msgid "Expiration Date: %{date}" msgid "Expiration Date: %{date}"
msgstr "Expiration Date: %{date}" msgstr "Expiration Date: %{date}"
@ -260,6 +276,10 @@ msgstr "Failed to enable %{msg}"
msgid "Failed to get certificate information" msgid "Failed to get certificate information"
msgstr "" msgstr ""
#: src/views/nginx_log/NginxLog.vue:7
msgid "Fetch"
msgstr ""
#: src/views/other/Error.vue:3 src/views/other/Error.vue:4 #: src/views/other/Error.vue:3 src/views/other/Error.vue:4
msgid "File Not Found" msgid "File Not Found"
msgstr "File Not Found" msgstr "File Not Found"
@ -276,11 +296,11 @@ msgstr ""
msgid "Getting the certificate, please wait..." msgid "Getting the certificate, please wait..."
msgstr "Getting the certificate, please wait..." msgstr "Getting the certificate, please wait..."
#: src/routes/index.ts:19 #: src/routes/index.ts:20
msgid "Home" msgid "Home"
msgstr "Home" msgstr "Home"
#: src/routes/index.ts:102 src/views/other/Install.vue:128 #: src/routes/index.ts:126 src/views/other/Install.vue:128
msgid "Install" msgid "Install"
msgstr "Install" msgstr "Install"
@ -314,7 +334,7 @@ msgstr "Location"
msgid "Locations" msgid "Locations"
msgstr "Locations" msgstr "Locations"
#: src/routes/index.ts:108 src/views/other/Login.vue:103 #: src/routes/index.ts:132 src/views/other/Login.vue:103
msgid "Login" msgid "Login"
msgstr "Login" msgstr "Login"
@ -334,15 +354,15 @@ msgstr ""
"Make sure you have configured a reverse proxy for .well-known directory to " "Make sure you have configured a reverse proxy for .well-known directory to "
"HTTPChallengePort (default: 9180) before getting the certificate." "HTTPChallengePort (default: 9180) before getting the certificate."
#: src/routes/index.ts:67 #: src/routes/index.ts:68
msgid "Manage Configs" msgid "Manage Configs"
msgstr "Manage Configs" msgstr "Manage Configs"
#: src/routes/index.ts:42 src/views/domain/DomainList.vue:2 #: src/routes/index.ts:43 src/views/domain/DomainList.vue:2
msgid "Manage Sites" msgid "Manage Sites"
msgstr "Manage Sites" msgstr "Manage Sites"
#: src/routes/index.ts:34 src/views/user/User.vue:2 #: src/routes/index.ts:35 src/views/user/User.vue:2
msgid "Manage Users" msgid "Manage Users"
msgstr "Manage Users" msgstr "Manage Users"
@ -388,18 +408,26 @@ msgstr "Network Total Receive"
msgid "Network Total Send" msgid "Network Total Send"
msgstr "Network Total Send" msgstr "Network Total Send"
#: src/views/nginx_log/NginxLog.vue:103
msgid "New logs"
msgstr ""
#: src/views/domain/DomainAdd.vue:137 #: src/views/domain/DomainAdd.vue:137
msgid "Next" msgid "Next"
msgstr "Next" msgstr "Next"
#: src/routes/index.ts:93 src/views/nginx_log/NginxLog.vue:2
msgid "Nginx Log"
msgstr ""
#: src/components/StdDataDisplay/StdTable.vue:39 #: src/components/StdDataDisplay/StdTable.vue:39
#: src/views/domain/DomainList.vue:25 #: src/views/domain/DomainList.vue:25
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:17 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:17
#: src/views/domain/ngx_conf/LocationEditor.vue:19 #: src/views/domain/ngx_conf/LocationEditor.vue:11
msgid "No" msgid "No"
msgstr "No" msgstr "No"
#: src/routes/index.ts:114 src/routes/index.ts:116 #: src/routes/index.ts:138 src/routes/index.ts:140
msgid "Not Found" msgid "Not Found"
msgstr "Not Found" msgstr "Not Found"
@ -441,8 +469,8 @@ msgstr "Password"
msgid "Password (*)" msgid "Password (*)"
msgstr "Password (*)" msgstr "Password (*)"
#: src/views/domain/ngx_conf/LocationEditor.vue:10 #: src/views/domain/ngx_conf/LocationEditor.vue:24
#: src/views/domain/ngx_conf/LocationEditor.vue:36 #: src/views/domain/ngx_conf/LocationEditor.vue:38
msgid "Path" msgid "Path"
msgstr "Path" msgstr "Path"
@ -552,7 +580,12 @@ msgstr "server_name parameters more than one"
msgid "Single Directive" msgid "Single Directive"
msgstr "Single Directive" msgstr "Single Directive"
#: src/routes/index.ts:50 #: src/routes/index.ts:107
#, fuzzy
msgid "Site Logs"
msgstr "Sites List"
#: src/routes/index.ts:51
msgid "Sites List" msgid "Sites List"
msgstr "Sites List" msgstr "Sites List"
@ -577,7 +610,7 @@ msgstr "Swap"
msgid "Table" msgid "Table"
msgstr "Enabled" msgstr "Enabled"
#: src/routes/index.ts:84 src/views/pty/Terminal.vue:2 #: src/routes/index.ts:85 src/views/pty/Terminal.vue:2
msgid "Terminal" msgid "Terminal"
msgstr "Terminal" msgstr "Terminal"
@ -636,7 +669,7 @@ msgid "Writing certificate to disk"
msgstr "" msgstr ""
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:16 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:16
#: src/views/domain/ngx_conf/LocationEditor.vue:18 #: src/views/domain/ngx_conf/LocationEditor.vue:10
msgid "Yes" msgid "Yes"
msgstr "Yes" msgstr "Yes"

View file

@ -2,10 +2,14 @@ msgid ""
msgstr "" msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
#: src/routes/index.ts:92 #: src/routes/index.ts:116
msgid "About" msgid "About"
msgstr "" msgstr ""
#: src/routes/index.ts:99
msgid "Access Logs"
msgstr ""
#: src/views/config/Config.vue:24 #: src/views/config/Config.vue:24
#: src/views/domain/DomainList.vue:42 #: src/views/domain/DomainList.vue:42
#: src/views/user/User.vue:42 #: src/views/user/User.vue:42
@ -23,12 +27,12 @@ msgstr ""
msgid "Add Directive Below" msgid "Add Directive Below"
msgstr "" msgstr ""
#: src/views/domain/ngx_conf/LocationEditor.vue:31 #: src/views/domain/ngx_conf/LocationEditor.vue:33
#: src/views/domain/ngx_conf/LocationEditor.vue:46 #: src/views/domain/ngx_conf/LocationEditor.vue:48
msgid "Add Location" msgid "Add Location"
msgstr "" msgstr ""
#: src/routes/index.ts:54 #: src/routes/index.ts:55
#: src/views/domain/DomainAdd.vue:2 #: src/views/domain/DomainAdd.vue:2
msgid "Add Site" msgid "Add Site"
msgstr "" msgstr ""
@ -37,6 +41,10 @@ msgstr ""
msgid "Advance Mode" msgid "Advance Mode"
msgstr "" msgstr ""
#: src/views/nginx_log/NginxLog.vue:100
msgid "All logs"
msgstr ""
#: src/components/StdDataDisplay/StdTable.vue:41 #: src/components/StdDataDisplay/StdTable.vue:41
#: src/views/domain/DomainList.vue:27 #: src/views/domain/DomainList.vue:27
msgid "Are you sure you want to delete ?" msgid "Are you sure you want to delete ?"
@ -46,10 +54,14 @@ msgstr ""
msgid "Are you sure you want to remove this directive?" msgid "Are you sure you want to remove this directive?"
msgstr "" msgstr ""
#: src/views/domain/ngx_conf/LocationEditor.vue:17 #: src/views/domain/ngx_conf/LocationEditor.vue:9
msgid "Are you sure you want to remove this location?" msgid "Are you sure you want to remove this location?"
msgstr "" msgstr ""
#: src/views/nginx_log/NginxLog.vue:4
msgid "Auto Refresh"
msgstr ""
#: src/views/domain/cert/IssueCert.vue:78 #: src/views/domain/cert/IssueCert.vue:78
msgid "Auto-renewal disabled for %{name}" msgid "Auto-renewal disabled for %{name}"
msgstr "" msgstr ""
@ -59,6 +71,7 @@ msgid "Auto-renewal enabled for %{name}"
msgstr "" msgstr ""
#: src/views/domain/DomainEdit.vue:178 #: src/views/domain/DomainEdit.vue:178
#: src/views/nginx_log/NginxLog.vue:115
msgid "Back" msgid "Back"
msgstr "" msgstr ""
@ -96,9 +109,9 @@ msgid "Certificate Status"
msgstr "" msgstr ""
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:29 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:29
#: src/views/domain/ngx_conf/LocationEditor.vue:33 #: src/views/domain/ngx_conf/LocationEditor.vue:21
#: src/views/domain/ngx_conf/LocationEditor.vue:7 #: src/views/domain/ngx_conf/LocationEditor.vue:35
#: src/views/domain/ngx_conf/NgxConfigEditor.vue:156 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:161
msgid "Comments" msgid "Comments"
msgstr "" msgstr ""
@ -114,8 +127,8 @@ msgstr ""
msgid "Configure SSL" msgid "Configure SSL"
msgstr "" msgstr ""
#: src/views/domain/ngx_conf/LocationEditor.vue:13 #: src/views/domain/ngx_conf/LocationEditor.vue:27
#: src/views/domain/ngx_conf/LocationEditor.vue:39 #: src/views/domain/ngx_conf/LocationEditor.vue:41
msgid "Content" msgid "Content"
msgstr "" msgstr ""
@ -139,7 +152,7 @@ msgstr ""
msgid "Creating client facilitates communication with the CA server" msgid "Creating client facilitates communication with the CA server"
msgstr "" msgstr ""
#: src/routes/index.ts:26 #: src/routes/index.ts:27
msgid "Dashboard" msgid "Dashboard"
msgstr "" msgstr ""
@ -200,12 +213,12 @@ msgstr ""
msgid "Edit %{n}" msgid "Edit %{n}"
msgstr "" msgstr ""
#: src/routes/index.ts:76 #: src/routes/index.ts:77
#: src/views/config/ConfigEdit.vue:2 #: src/views/config/ConfigEdit.vue:2
msgid "Edit Configuration" msgid "Edit Configuration"
msgstr "" msgstr ""
#: src/routes/index.ts:58 #: src/routes/index.ts:59
msgid "Edit Site" msgid "Edit Site"
msgstr "" msgstr ""
@ -243,6 +256,10 @@ msgstr ""
msgid "Encrypt website with Let's Encrypt" msgid "Encrypt website with Let's Encrypt"
msgstr "" msgstr ""
#: src/routes/index.ts:103
msgid "Error Logs"
msgstr ""
#: src/views/domain/cert/CertInfo.vue:17 #: src/views/domain/cert/CertInfo.vue:17
msgid "Expiration Date: %{date}" msgid "Expiration Date: %{date}"
msgstr "" msgstr ""
@ -261,6 +278,10 @@ msgstr ""
msgid "Failed to get certificate information" msgid "Failed to get certificate information"
msgstr "" msgstr ""
#: src/views/nginx_log/NginxLog.vue:7
msgid "Fetch"
msgstr ""
#: src/views/other/Error.vue:3 #: src/views/other/Error.vue:3
#: src/views/other/Error.vue:4 #: src/views/other/Error.vue:4
msgid "File Not Found" msgid "File Not Found"
@ -279,11 +300,11 @@ msgstr ""
msgid "Getting the certificate, please wait..." msgid "Getting the certificate, please wait..."
msgstr "" msgstr ""
#: src/routes/index.ts:19 #: src/routes/index.ts:20
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: src/routes/index.ts:102 #: src/routes/index.ts:126
#: src/views/other/Install.vue:128 #: src/views/other/Install.vue:128
msgid "Install" msgid "Install"
msgstr "" msgstr ""
@ -316,7 +337,7 @@ msgstr ""
msgid "Locations" msgid "Locations"
msgstr "" msgstr ""
#: src/routes/index.ts:108 #: src/routes/index.ts:132
#: src/views/other/Login.vue:103 #: src/views/other/Login.vue:103
msgid "Login" msgid "Login"
msgstr "" msgstr ""
@ -333,16 +354,16 @@ msgstr ""
msgid "Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate." msgid "Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort (default: 9180) before getting the certificate."
msgstr "" msgstr ""
#: src/routes/index.ts:67 #: src/routes/index.ts:68
msgid "Manage Configs" msgid "Manage Configs"
msgstr "" msgstr ""
#: src/routes/index.ts:42 #: src/routes/index.ts:43
#: src/views/domain/DomainList.vue:2 #: src/views/domain/DomainList.vue:2
msgid "Manage Sites" msgid "Manage Sites"
msgstr "" msgstr ""
#: src/routes/index.ts:34 #: src/routes/index.ts:35
#: src/views/user/User.vue:2 #: src/views/user/User.vue:2
msgid "Manage Users" msgid "Manage Users"
msgstr "" msgstr ""
@ -389,19 +410,28 @@ msgstr ""
msgid "Network Total Send" msgid "Network Total Send"
msgstr "" msgstr ""
#: src/views/nginx_log/NginxLog.vue:103
msgid "New logs"
msgstr ""
#: src/views/domain/DomainAdd.vue:137 #: src/views/domain/DomainAdd.vue:137
msgid "Next" msgid "Next"
msgstr "" msgstr ""
#: src/routes/index.ts:93
#: src/views/nginx_log/NginxLog.vue:2
msgid "Nginx Log"
msgstr ""
#: src/components/StdDataDisplay/StdTable.vue:39 #: src/components/StdDataDisplay/StdTable.vue:39
#: src/views/domain/DomainList.vue:25 #: src/views/domain/DomainList.vue:25
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:17 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:17
#: src/views/domain/ngx_conf/LocationEditor.vue:19 #: src/views/domain/ngx_conf/LocationEditor.vue:11
msgid "No" msgid "No"
msgstr "" msgstr ""
#: src/routes/index.ts:114 #: src/routes/index.ts:138
#: src/routes/index.ts:116 #: src/routes/index.ts:140
msgid "Not Found" msgid "Not Found"
msgstr "" msgstr ""
@ -441,8 +471,8 @@ msgstr ""
msgid "Password (*)" msgid "Password (*)"
msgstr "" msgstr ""
#: src/views/domain/ngx_conf/LocationEditor.vue:10 #: src/views/domain/ngx_conf/LocationEditor.vue:24
#: src/views/domain/ngx_conf/LocationEditor.vue:36 #: src/views/domain/ngx_conf/LocationEditor.vue:38
msgid "Path" msgid "Path"
msgstr "" msgstr ""
@ -561,7 +591,11 @@ msgstr ""
msgid "Single Directive" msgid "Single Directive"
msgstr "" msgstr ""
#: src/routes/index.ts:50 #: src/routes/index.ts:107
msgid "Site Logs"
msgstr ""
#: src/routes/index.ts:51
msgid "Sites List" msgid "Sites List"
msgstr "" msgstr ""
@ -585,7 +619,7 @@ msgstr ""
msgid "Table" msgid "Table"
msgstr "" msgstr ""
#: src/routes/index.ts:84 #: src/routes/index.ts:85
#: src/views/pty/Terminal.vue:2 #: src/views/pty/Terminal.vue:2
msgid "Terminal" msgid "Terminal"
msgstr "" msgstr ""
@ -645,7 +679,7 @@ msgid "Writing certificate to disk"
msgstr "" msgstr ""
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:16 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:16
#: src/views/domain/ngx_conf/LocationEditor.vue:18 #: src/views/domain/ngx_conf/LocationEditor.vue:10
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -12,10 +12,14 @@ msgstr ""
"Generated-By: easygettext\n" "Generated-By: easygettext\n"
"X-Generator: Poedit 3.1.1\n" "X-Generator: Poedit 3.1.1\n"
#: src/routes/index.ts:92 #: src/routes/index.ts:116
msgid "About" msgid "About"
msgstr "关于" msgstr "关于"
#: src/routes/index.ts:99
msgid "Access Logs"
msgstr "访问日志"
#: src/views/config/Config.vue:24 src/views/domain/DomainList.vue:42 #: src/views/config/Config.vue:24 src/views/domain/DomainList.vue:42
#: src/views/user/User.vue:42 #: src/views/user/User.vue:42
msgid "Action" msgid "Action"
@ -32,12 +36,12 @@ msgstr "添加"
msgid "Add Directive Below" msgid "Add Directive Below"
msgstr "在下面添加指令" msgstr "在下面添加指令"
#: src/views/domain/ngx_conf/LocationEditor.vue:31 #: src/views/domain/ngx_conf/LocationEditor.vue:33
#: src/views/domain/ngx_conf/LocationEditor.vue:46 #: src/views/domain/ngx_conf/LocationEditor.vue:48
msgid "Add Location" msgid "Add Location"
msgstr "添加 Location" msgstr "添加 Location"
#: src/routes/index.ts:54 src/views/domain/DomainAdd.vue:2 #: src/routes/index.ts:55 src/views/domain/DomainAdd.vue:2
msgid "Add Site" msgid "Add Site"
msgstr "添加站点" msgstr "添加站点"
@ -45,6 +49,10 @@ msgstr "添加站点"
msgid "Advance Mode" msgid "Advance Mode"
msgstr "高级模式" msgstr "高级模式"
#: src/views/nginx_log/NginxLog.vue:100
msgid "All logs"
msgstr "所有日志"
#: src/components/StdDataDisplay/StdTable.vue:41 #: src/components/StdDataDisplay/StdTable.vue:41
#: src/views/domain/DomainList.vue:27 #: src/views/domain/DomainList.vue:27
msgid "Are you sure you want to delete ?" msgid "Are you sure you want to delete ?"
@ -54,10 +62,14 @@ msgstr "您确定要删除吗?"
msgid "Are you sure you want to remove this directive?" msgid "Are you sure you want to remove this directive?"
msgstr "您确定要删除这条指令?" msgstr "您确定要删除这条指令?"
#: src/views/domain/ngx_conf/LocationEditor.vue:17 #: src/views/domain/ngx_conf/LocationEditor.vue:9
msgid "Are you sure you want to remove this location?" msgid "Are you sure you want to remove this location?"
msgstr "您确定要删除这个 Location" msgstr "您确定要删除这个 Location"
#: src/views/nginx_log/NginxLog.vue:4
msgid "Auto Refresh"
msgstr "自动刷新"
#: src/views/domain/cert/IssueCert.vue:78 #: src/views/domain/cert/IssueCert.vue:78
msgid "Auto-renewal disabled for %{name}" msgid "Auto-renewal disabled for %{name}"
msgstr "成功关闭 %{name} 自动续签" msgstr "成功关闭 %{name} 自动续签"
@ -66,7 +78,7 @@ msgstr "成功关闭 %{name} 自动续签"
msgid "Auto-renewal enabled for %{name}" msgid "Auto-renewal enabled for %{name}"
msgstr "成功启用 %{name} 自动续签" msgstr "成功启用 %{name} 自动续签"
#: src/views/domain/DomainEdit.vue:178 #: src/views/domain/DomainEdit.vue:178 src/views/nginx_log/NginxLog.vue:115
msgid "Back" msgid "Back"
msgstr "返回" msgstr "返回"
@ -104,9 +116,9 @@ msgid "Certificate Status"
msgstr "证书状态" msgstr "证书状态"
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:29 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:29
#: src/views/domain/ngx_conf/LocationEditor.vue:33 #: src/views/domain/ngx_conf/LocationEditor.vue:21
#: src/views/domain/ngx_conf/LocationEditor.vue:7 #: src/views/domain/ngx_conf/LocationEditor.vue:35
#: src/views/domain/ngx_conf/NgxConfigEditor.vue:156 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:161
msgid "Comments" msgid "Comments"
msgstr "注释" msgstr "注释"
@ -122,8 +134,8 @@ msgstr "配置"
msgid "Configure SSL" msgid "Configure SSL"
msgstr "配置 SSL" msgstr "配置 SSL"
#: src/views/domain/ngx_conf/LocationEditor.vue:13 #: src/views/domain/ngx_conf/LocationEditor.vue:27
#: src/views/domain/ngx_conf/LocationEditor.vue:39 #: src/views/domain/ngx_conf/LocationEditor.vue:41
msgid "Content" msgid "Content"
msgstr "内容" msgstr "内容"
@ -147,7 +159,7 @@ msgstr "创建时间"
msgid "Creating client facilitates communication with the CA server" msgid "Creating client facilitates communication with the CA server"
msgstr "正在创建客户端用于与 CA 服务器通信" msgstr "正在创建客户端用于与 CA 服务器通信"
#: src/routes/index.ts:26 #: src/routes/index.ts:27
msgid "Dashboard" msgid "Dashboard"
msgstr "仪表盘" msgstr "仪表盘"
@ -205,11 +217,11 @@ msgstr "域名配置文件创建成功"
msgid "Edit %{n}" msgid "Edit %{n}"
msgstr "编辑 %{n}" msgstr "编辑 %{n}"
#: src/routes/index.ts:76 src/views/config/ConfigEdit.vue:2 #: src/routes/index.ts:77 src/views/config/ConfigEdit.vue:2
msgid "Edit Configuration" msgid "Edit Configuration"
msgstr "编辑配置" msgstr "编辑配置"
#: src/routes/index.ts:58 #: src/routes/index.ts:59
msgid "Edit Site" msgid "Edit Site"
msgstr "编辑站点" msgstr "编辑站点"
@ -244,6 +256,10 @@ msgstr "启用成功"
msgid "Encrypt website with Let's Encrypt" msgid "Encrypt website with Let's Encrypt"
msgstr "用 Let's Encrypt 对网站进行加密" msgstr "用 Let's Encrypt 对网站进行加密"
#: src/routes/index.ts:103
msgid "Error Logs"
msgstr "错误日志"
#: src/views/domain/cert/CertInfo.vue:17 #: src/views/domain/cert/CertInfo.vue:17
msgid "Expiration Date: %{date}" msgid "Expiration Date: %{date}"
msgstr "过期时间: %{date}" msgstr "过期时间: %{date}"
@ -260,6 +276,10 @@ msgstr "启用失败 %{msg}"
msgid "Failed to get certificate information" msgid "Failed to get certificate information"
msgstr "获取证书信息失败" msgstr "获取证书信息失败"
#: src/views/nginx_log/NginxLog.vue:7
msgid "Fetch"
msgstr "日志范围"
#: src/views/other/Error.vue:3 src/views/other/Error.vue:4 #: src/views/other/Error.vue:3 src/views/other/Error.vue:4
msgid "File Not Found" msgid "File Not Found"
msgstr "未找到文件" msgstr "未找到文件"
@ -276,11 +296,11 @@ msgstr "正在生成私钥用于注册账户"
msgid "Getting the certificate, please wait..." msgid "Getting the certificate, please wait..."
msgstr "正在获取证书,请稍等..." msgstr "正在获取证书,请稍等..."
#: src/routes/index.ts:19 #: src/routes/index.ts:20
msgid "Home" msgid "Home"
msgstr "首页" msgstr "首页"
#: src/routes/index.ts:102 src/views/other/Install.vue:128 #: src/routes/index.ts:126 src/views/other/Install.vue:128
msgid "Install" msgid "Install"
msgstr "安装" msgstr "安装"
@ -312,7 +332,7 @@ msgstr "Location"
msgid "Locations" msgid "Locations"
msgstr "Locations" msgstr "Locations"
#: src/routes/index.ts:108 src/views/other/Login.vue:103 #: src/routes/index.ts:132 src/views/other/Login.vue:103
msgid "Login" msgid "Login"
msgstr "登录" msgstr "登录"
@ -332,15 +352,15 @@ msgstr ""
"在获取签发证书前,请确保配置文件中已将 .well-known 目录反向代理到 " "在获取签发证书前,请确保配置文件中已将 .well-known 目录反向代理到 "
"HTTPChallengePort (默认: 9180)" "HTTPChallengePort (默认: 9180)"
#: src/routes/index.ts:67 #: src/routes/index.ts:68
msgid "Manage Configs" msgid "Manage Configs"
msgstr "配置管理" msgstr "配置管理"
#: src/routes/index.ts:42 src/views/domain/DomainList.vue:2 #: src/routes/index.ts:43 src/views/domain/DomainList.vue:2
msgid "Manage Sites" msgid "Manage Sites"
msgstr "网站管理" msgstr "网站管理"
#: src/routes/index.ts:34 src/views/user/User.vue:2 #: src/routes/index.ts:35 src/views/user/User.vue:2
msgid "Manage Users" msgid "Manage Users"
msgstr "用户管理" msgstr "用户管理"
@ -385,18 +405,26 @@ msgstr "下载流量"
msgid "Network Total Send" msgid "Network Total Send"
msgstr "上传流量" msgstr "上传流量"
#: src/views/nginx_log/NginxLog.vue:103
msgid "New logs"
msgstr "新增日志"
#: src/views/domain/DomainAdd.vue:137 #: src/views/domain/DomainAdd.vue:137
msgid "Next" msgid "Next"
msgstr "下一步" msgstr "下一步"
#: src/routes/index.ts:93 src/views/nginx_log/NginxLog.vue:2
msgid "Nginx Log"
msgstr "Nginx 日志"
#: src/components/StdDataDisplay/StdTable.vue:39 #: src/components/StdDataDisplay/StdTable.vue:39
#: src/views/domain/DomainList.vue:25 #: src/views/domain/DomainList.vue:25
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:17 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:17
#: src/views/domain/ngx_conf/LocationEditor.vue:19 #: src/views/domain/ngx_conf/LocationEditor.vue:11
msgid "No" msgid "No"
msgstr "取消" msgstr "取消"
#: src/routes/index.ts:114 src/routes/index.ts:116 #: src/routes/index.ts:138 src/routes/index.ts:140
msgid "Not Found" msgid "Not Found"
msgstr "找不到页面" msgstr "找不到页面"
@ -436,8 +464,8 @@ msgstr "密码"
msgid "Password (*)" msgid "Password (*)"
msgstr "密码 (*)" msgstr "密码 (*)"
#: src/views/domain/ngx_conf/LocationEditor.vue:10 #: src/views/domain/ngx_conf/LocationEditor.vue:24
#: src/views/domain/ngx_conf/LocationEditor.vue:36 #: src/views/domain/ngx_conf/LocationEditor.vue:38
msgid "Path" msgid "Path"
msgstr "路径" msgstr "路径"
@ -545,7 +573,11 @@ msgstr "server_name 指令包含多个参数"
msgid "Single Directive" msgid "Single Directive"
msgstr "单行指令" msgstr "单行指令"
#: src/routes/index.ts:50 #: src/routes/index.ts:107
msgid "Site Logs"
msgstr "站点列表"
#: src/routes/index.ts:51
msgid "Sites List" msgid "Sites List"
msgstr "站点列表" msgstr "站点列表"
@ -569,7 +601,7 @@ msgstr ""
msgid "Table" msgid "Table"
msgstr "列表" msgstr "列表"
#: src/routes/index.ts:84 src/views/pty/Terminal.vue:2 #: src/routes/index.ts:85 src/views/pty/Terminal.vue:2
msgid "Terminal" msgid "Terminal"
msgstr "终端" msgstr "终端"
@ -627,7 +659,7 @@ msgid "Writing certificate to disk"
msgstr "正在将证书写入磁盘" msgstr "正在将证书写入磁盘"
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:16 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:16
#: src/views/domain/ngx_conf/LocationEditor.vue:18 #: src/views/domain/ngx_conf/LocationEditor.vue:10
msgid "Yes" msgid "Yes"
msgstr "是的" msgstr "是的"

View file

@ -13,10 +13,14 @@ msgstr ""
"Generated-By: easygettext\n" "Generated-By: easygettext\n"
"X-Generator: Poedit 2.2\n" "X-Generator: Poedit 2.2\n"
#: src/routes/index.ts:92 #: src/routes/index.ts:116
msgid "About" msgid "About"
msgstr "關於" msgstr "關於"
#: src/routes/index.ts:99
msgid "Access Logs"
msgstr ""
#: src/views/config/Config.vue:24 src/views/domain/DomainList.vue:42 #: src/views/config/Config.vue:24 src/views/domain/DomainList.vue:42
#: src/views/user/User.vue:42 #: src/views/user/User.vue:42
msgid "Action" msgid "Action"
@ -33,12 +37,12 @@ msgstr ""
msgid "Add Directive Below" msgid "Add Directive Below"
msgstr "在下面新增指令" msgstr "在下面新增指令"
#: src/views/domain/ngx_conf/LocationEditor.vue:31 #: src/views/domain/ngx_conf/LocationEditor.vue:33
#: src/views/domain/ngx_conf/LocationEditor.vue:46 #: src/views/domain/ngx_conf/LocationEditor.vue:48
msgid "Add Location" msgid "Add Location"
msgstr "新增 Location" msgstr "新增 Location"
#: src/routes/index.ts:54 src/views/domain/DomainAdd.vue:2 #: src/routes/index.ts:55 src/views/domain/DomainAdd.vue:2
msgid "Add Site" msgid "Add Site"
msgstr "新增站點" msgstr "新增站點"
@ -46,6 +50,10 @@ msgstr "新增站點"
msgid "Advance Mode" msgid "Advance Mode"
msgstr "高階模式" msgstr "高階模式"
#: src/views/nginx_log/NginxLog.vue:100
msgid "All logs"
msgstr ""
#: src/components/StdDataDisplay/StdTable.vue:41 #: src/components/StdDataDisplay/StdTable.vue:41
#: src/views/domain/DomainList.vue:27 #: src/views/domain/DomainList.vue:27
#, fuzzy #, fuzzy
@ -56,11 +64,15 @@ msgstr "您确定要删除?"
msgid "Are you sure you want to remove this directive?" msgid "Are you sure you want to remove this directive?"
msgstr "您確定要刪除這條指令?" msgstr "您確定要刪除這條指令?"
#: src/views/domain/ngx_conf/LocationEditor.vue:17 #: src/views/domain/ngx_conf/LocationEditor.vue:9
#, fuzzy #, fuzzy
msgid "Are you sure you want to remove this location?" msgid "Are you sure you want to remove this location?"
msgstr "您確定要刪除這條指令?" msgstr "您確定要刪除這條指令?"
#: src/views/nginx_log/NginxLog.vue:4
msgid "Auto Refresh"
msgstr ""
#: src/views/domain/cert/IssueCert.vue:78 #: src/views/domain/cert/IssueCert.vue:78
msgid "Auto-renewal disabled for %{name}" msgid "Auto-renewal disabled for %{name}"
msgstr "已關閉 %{name} 自動續簽" msgstr "已關閉 %{name} 自動續簽"
@ -69,7 +81,7 @@ msgstr "已關閉 %{name} 自動續簽"
msgid "Auto-renewal enabled for %{name}" msgid "Auto-renewal enabled for %{name}"
msgstr "已啟用 %{name} 自動續簽" msgstr "已啟用 %{name} 自動續簽"
#: src/views/domain/DomainEdit.vue:178 #: src/views/domain/DomainEdit.vue:178 src/views/nginx_log/NginxLog.vue:115
msgid "Back" msgid "Back"
msgstr "返回" msgstr "返回"
@ -108,9 +120,9 @@ msgid "Certificate Status"
msgstr "憑證狀態" msgstr "憑證狀態"
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:29 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:29
#: src/views/domain/ngx_conf/LocationEditor.vue:33 #: src/views/domain/ngx_conf/LocationEditor.vue:21
#: src/views/domain/ngx_conf/LocationEditor.vue:7 #: src/views/domain/ngx_conf/LocationEditor.vue:35
#: src/views/domain/ngx_conf/NgxConfigEditor.vue:156 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:161
msgid "Comments" msgid "Comments"
msgstr "註釋" msgstr "註釋"
@ -126,8 +138,8 @@ msgstr "配置"
msgid "Configure SSL" msgid "Configure SSL"
msgstr "配置 SSL" msgstr "配置 SSL"
#: src/views/domain/ngx_conf/LocationEditor.vue:13 #: src/views/domain/ngx_conf/LocationEditor.vue:27
#: src/views/domain/ngx_conf/LocationEditor.vue:39 #: src/views/domain/ngx_conf/LocationEditor.vue:41
msgid "Content" msgid "Content"
msgstr "內容" msgstr "內容"
@ -151,7 +163,7 @@ msgstr "建立時間"
msgid "Creating client facilitates communication with the CA server" msgid "Creating client facilitates communication with the CA server"
msgstr "" msgstr ""
#: src/routes/index.ts:26 #: src/routes/index.ts:27
msgid "Dashboard" msgid "Dashboard"
msgstr "儀表盤" msgstr "儀表盤"
@ -210,11 +222,11 @@ msgstr "域名配置文件創建成功"
msgid "Edit %{n}" msgid "Edit %{n}"
msgstr "編輯 %{n}" msgstr "編輯 %{n}"
#: src/routes/index.ts:76 src/views/config/ConfigEdit.vue:2 #: src/routes/index.ts:77 src/views/config/ConfigEdit.vue:2
msgid "Edit Configuration" msgid "Edit Configuration"
msgstr "編輯配置" msgstr "編輯配置"
#: src/routes/index.ts:58 #: src/routes/index.ts:59
msgid "Edit Site" msgid "Edit Site"
msgstr "編輯站點" msgstr "編輯站點"
@ -249,6 +261,10 @@ msgstr "啟用成功"
msgid "Encrypt website with Let's Encrypt" msgid "Encrypt website with Let's Encrypt"
msgstr "用 Let's Encrypt 對網站進行加密" msgstr "用 Let's Encrypt 對網站進行加密"
#: src/routes/index.ts:103
msgid "Error Logs"
msgstr ""
#: src/views/domain/cert/CertInfo.vue:17 #: src/views/domain/cert/CertInfo.vue:17
msgid "Expiration Date: %{date}" msgid "Expiration Date: %{date}"
msgstr "過期時間: %{date}" msgstr "過期時間: %{date}"
@ -265,6 +281,10 @@ msgstr "啟用失敗 %{msg}"
msgid "Failed to get certificate information" msgid "Failed to get certificate information"
msgstr "" msgstr ""
#: src/views/nginx_log/NginxLog.vue:7
msgid "Fetch"
msgstr ""
#: src/views/other/Error.vue:3 src/views/other/Error.vue:4 #: src/views/other/Error.vue:3 src/views/other/Error.vue:4
msgid "File Not Found" msgid "File Not Found"
msgstr "未找到檔案" msgstr "未找到檔案"
@ -281,11 +301,11 @@ msgstr ""
msgid "Getting the certificate, please wait..." msgid "Getting the certificate, please wait..."
msgstr "正在獲取憑證,請稍等..." msgstr "正在獲取憑證,請稍等..."
#: src/routes/index.ts:19 #: src/routes/index.ts:20
msgid "Home" msgid "Home"
msgstr "首頁" msgstr "首頁"
#: src/routes/index.ts:102 src/views/other/Install.vue:128 #: src/routes/index.ts:126 src/views/other/Install.vue:128
msgid "Install" msgid "Install"
msgstr "安裝" msgstr "安裝"
@ -319,7 +339,7 @@ msgstr "Location"
msgid "Locations" msgid "Locations"
msgstr "Locations" msgstr "Locations"
#: src/routes/index.ts:108 src/views/other/Login.vue:103 #: src/routes/index.ts:132 src/views/other/Login.vue:103
msgid "Login" msgid "Login"
msgstr "登入" msgstr "登入"
@ -340,15 +360,15 @@ msgstr ""
"在獲取憑證前,請確保配置檔案中已將 .well-known 目錄反向代理到 " "在獲取憑證前,請確保配置檔案中已將 .well-known 目錄反向代理到 "
"HTTPChallengePort (預設: 9180)" "HTTPChallengePort (預設: 9180)"
#: src/routes/index.ts:67 #: src/routes/index.ts:68
msgid "Manage Configs" msgid "Manage Configs"
msgstr "配置管理" msgstr "配置管理"
#: src/routes/index.ts:42 src/views/domain/DomainList.vue:2 #: src/routes/index.ts:43 src/views/domain/DomainList.vue:2
msgid "Manage Sites" msgid "Manage Sites"
msgstr "網站管理" msgstr "網站管理"
#: src/routes/index.ts:34 src/views/user/User.vue:2 #: src/routes/index.ts:35 src/views/user/User.vue:2
msgid "Manage Users" msgid "Manage Users"
msgstr "使用者管理" msgstr "使用者管理"
@ -394,18 +414,26 @@ msgstr "下載流量"
msgid "Network Total Send" msgid "Network Total Send"
msgstr "上傳流量" msgstr "上傳流量"
#: src/views/nginx_log/NginxLog.vue:103
msgid "New logs"
msgstr ""
#: src/views/domain/DomainAdd.vue:137 #: src/views/domain/DomainAdd.vue:137
msgid "Next" msgid "Next"
msgstr "下一步" msgstr "下一步"
#: src/routes/index.ts:93 src/views/nginx_log/NginxLog.vue:2
msgid "Nginx Log"
msgstr ""
#: src/components/StdDataDisplay/StdTable.vue:39 #: src/components/StdDataDisplay/StdTable.vue:39
#: src/views/domain/DomainList.vue:25 #: src/views/domain/DomainList.vue:25
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:17 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:17
#: src/views/domain/ngx_conf/LocationEditor.vue:19 #: src/views/domain/ngx_conf/LocationEditor.vue:11
msgid "No" msgid "No"
msgstr "取消" msgstr "取消"
#: src/routes/index.ts:114 src/routes/index.ts:116 #: src/routes/index.ts:138 src/routes/index.ts:140
msgid "Not Found" msgid "Not Found"
msgstr "找不到頁面" msgstr "找不到頁面"
@ -446,8 +474,8 @@ msgstr "密碼"
msgid "Password (*)" msgid "Password (*)"
msgstr "密碼 (*)" msgstr "密碼 (*)"
#: src/views/domain/ngx_conf/LocationEditor.vue:10 #: src/views/domain/ngx_conf/LocationEditor.vue:24
#: src/views/domain/ngx_conf/LocationEditor.vue:36 #: src/views/domain/ngx_conf/LocationEditor.vue:38
msgid "Path" msgid "Path"
msgstr "路徑" msgstr "路徑"
@ -557,7 +585,12 @@ msgstr "server_name 指令包含多個參數"
msgid "Single Directive" msgid "Single Directive"
msgstr "單行指令" msgstr "單行指令"
#: src/routes/index.ts:50 #: src/routes/index.ts:107
#, fuzzy
msgid "Site Logs"
msgstr "站點列表"
#: src/routes/index.ts:51
msgid "Sites List" msgid "Sites List"
msgstr "站點列表" msgstr "站點列表"
@ -582,7 +615,7 @@ msgstr "交換空間"
msgid "Table" msgid "Table"
msgstr "啟用" msgstr "啟用"
#: src/routes/index.ts:84 src/views/pty/Terminal.vue:2 #: src/routes/index.ts:85 src/views/pty/Terminal.vue:2
msgid "Terminal" msgid "Terminal"
msgstr "終端" msgstr "終端"
@ -642,7 +675,7 @@ msgid "Writing certificate to disk"
msgstr "" msgstr ""
#: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:16 #: src/views/domain/ngx_conf/directive/DirectiveEditor.vue:16
#: src/views/domain/ngx_conf/LocationEditor.vue:18 #: src/views/domain/ngx_conf/LocationEditor.vue:10
msgid "Yes" msgid "Yes"
msgstr "是的" msgstr "是的"

View file

@ -1 +1 @@
{"version":"1.5.0","build_id":45,"total_build":115} {"version":"1.5.0","build_id":46,"total_build":116}

View file

@ -61,11 +61,11 @@ function on_click_error_log() {
<a-space style="margin-left: -15px;margin-bottom: 5px" v-if="hasAccessLog||hasErrorLog"> <a-space style="margin-left: -15px;margin-bottom: 5px" v-if="hasAccessLog||hasErrorLog">
<a-button type="link" v-if="hasAccessLog" @click="on_click_access_log"> <a-button type="link" v-if="hasAccessLog" @click="on_click_access_log">
<FileTextOutlined/> <FileTextOutlined/>
Access Logs <translate>Access Logs</translate>
</a-button> </a-button>
<a-button type="link" v-if="hasErrorLog" @click="on_click_error_log"> <a-button type="link" v-if="hasErrorLog" @click="on_click_error_log">
<FileExclamationOutlined/> <FileExclamationOutlined/>
Error Logs <translate>Error Logs</translate>
</a-button> </a-button>
</a-space> </a-space>
</template> </template>

View file

@ -1,8 +1,8 @@
<script setup lang="ts"> <script setup lang="ts">
import DirectiveEditor from '@/views/domain/ngx_conf/directive/DirectiveEditor.vue' import DirectiveEditor from '@/views/domain/ngx_conf/directive/DirectiveEditor.vue'
import LocationEditor from '@/views/domain/ngx_conf/LocationEditor.vue' import LocationEditor from '@/views/domain/ngx_conf/LocationEditor.vue'
import {computed, ref} from 'vue' import {computed, onMounted, ref, watch} from 'vue'
import {useRoute} from 'vue-router' import {useRoute, useRouter} from 'vue-router'
import {useGettext} from 'vue3-gettext' import {useGettext} from 'vue3-gettext'
import Cert from '@/views/domain/cert/Cert.vue' import Cert from '@/views/domain/cert/Cert.vue'
import LogEntry from '@/views/domain/ngx_conf/LogEntry.vue' import LogEntry from '@/views/domain/ngx_conf/LogEntry.vue'
@ -129,6 +129,20 @@ const autoCertRef = computed({
} }
}) })
onMounted(() => {
current_server_index.value = parseInt((route.query?.server_idx ?? 0) as string)
})
const router = useRouter()
watch(current_server_index, () => {
router.push({
query: {
server_idx: current_server_index.value.toString()
}
})
})
</script> </script>
<template> <template>

View file

@ -96,8 +96,12 @@ const router = useRouter()
</a-form-item> </a-form-item>
<a-form-item :label="$gettext('Fetch')"> <a-form-item :label="$gettext('Fetch')">
<a-select v-model:value="control.fetch" style="max-width: 200px"> <a-select v-model:value="control.fetch" style="max-width: 200px">
<a-select-option value="all">All logs</a-select-option> <a-select-option value="all">
<a-select-option value="new">New logs</a-select-option> <translate>All logs</translate>
</a-select-option>
<a-select-option value="new">
<translate>New logs</translate>
</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-form> </a-form>

View file

@ -1 +1 @@
{"version":"1.5.0","build_id":45,"total_build":115} {"version":"1.5.0","build_id":46,"total_build":116}

View file

@ -5,3 +5,7 @@ JwtSecret = 2E1CE615-BB15-44F5-B5BE-6B5DA3581D0F
Email = test@jackyu.cn Email = test@jackyu.cn
HTTPChallengePort = 9180 HTTPChallengePort = 9180
StartCmd = bash StartCmd = bash
[nginx_log]
AccessLogPath = /var/log/nginx/access.local.log
ErrorLogPath = /var/log/nginx/error.local.log

View file

@ -3,6 +3,9 @@ server {
listen [::]:80; listen [::]:80;
server_name ojbk.me; server_name ojbk.me;
access_log /var/log/nginx/ojbk.me.log;
error_log /var/log/nginx/ojbk.me.error.log;
location /.well-known/acme-challenge { location /.well-known/acme-challenge {
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Real_IP $remote_addr;
@ -10,4 +13,4 @@ server {
proxy_pass http://127.0.0.1:9180; proxy_pass http://127.0.0.1:9180;
} }
} }

View file

@ -2,6 +2,7 @@ user nginx;
worker_processes auto; worker_processes auto;
error_log /var/log/nginx/error.log notice; error_log /var/log/nginx/error.log notice;
error_log /var/log/nginx/error.local.log notice;
pid /var/run/nginx.pid; pid /var/run/nginx.pid;
@ -19,6 +20,7 @@ http {
'"$http_user_agent" "$http_x_forwarded_for"'; '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/access.local.log main;
sendfile on; sendfile on;
#tcp_nopush on; #tcp_nopush on;

View file

@ -26,11 +26,12 @@ func tailNginxLog(ws *websocket.Conn, controlChan chan controlStruct, errChan ch
defer func() { defer func() {
if err := recover(); err != nil { if err := recover(); err != nil {
log.Println("tailNginxLog recovery", err) log.Println("tailNginxLog recovery", err)
_ = ws.WriteMessage(websocket.TextMessage, err.([]byte))
return return
} }
}() }()
var control controlStruct control := <-controlChan
for { for {
var seek tail.SeekInfo var seek tail.SeekInfo
@ -52,10 +53,12 @@ func tailNginxLog(ws *websocket.Conn, controlChan chan controlStruct, errChan ch
errChan <- errors.New("serverIdx out of range") errChan <- errors.New("serverIdx out of range")
return return
} }
if control.DirectiveIdx >= len(config.Servers[control.ServerIdx].Directives) { if control.DirectiveIdx >= len(config.Servers[control.ServerIdx].Directives) {
errChan <- errors.New("DirectiveIdx out of range") errChan <- errors.New("DirectiveIdx out of range")
return return
} }
directive := config.Servers[control.ServerIdx].Directives[control.DirectiveIdx] directive := config.Servers[control.ServerIdx].Directives[control.DirectiveIdx]
switch directive.Directive { switch directive.Directive {
@ -66,11 +69,27 @@ func tailNginxLog(ws *websocket.Conn, controlChan chan controlStruct, errChan ch
return return
} }
if directive.Params == "" {
errChan <- errors.New("directive.Params is empty")
return
}
logPath = directive.Params logPath = directive.Params
case "error": case "error":
if settings.NginxLogSettings.ErrorLogPath == "" {
errChan <- errors.New("settings.NginxLogSettings.ErrorLogPath is empty," +
" see https://github.com/0xJacky/nginx-ui/wiki/Nginx-Log-Configuration for more information")
return
}
logPath = settings.NginxLogSettings.ErrorLogPath logPath = settings.NginxLogSettings.ErrorLogPath
default: default:
if settings.NginxLogSettings.AccessLogPath == "" {
errChan <- errors.New("settings.NginxLogSettings.AccessLogPath is empty," +
" see https://github.com/0xJacky/nginx-ui/wiki/Nginx-Log-Configuration for more information\"")
return
}
logPath = settings.NginxLogSettings.AccessLogPath logPath = settings.NginxLogSettings.AccessLogPath
} }
@ -88,6 +107,10 @@ func tailNginxLog(ws *websocket.Conn, controlChan chan controlStruct, errChan ch
select { select {
case line := <-t.Lines: case line := <-t.Lines:
// Print the text of each received line // Print the text of each received line
if line == nil {
continue
}
err = ws.WriteMessage(websocket.TextMessage, []byte(line.Text)) err = ws.WriteMessage(websocket.TextMessage, []byte(line.Text))
if err != nil { if err != nil {
@ -109,6 +132,7 @@ func handleLogControl(ws *websocket.Conn, controlChan chan controlStruct, errCha
defer func() { defer func() {
if err := recover(); err != nil { if err := recover(); err != nil {
log.Println("tailNginxLog recovery", err) log.Println("tailNginxLog recovery", err)
_ = ws.WriteMessage(websocket.TextMessage, err.([]byte))
return return
} }
}() }()