diff --git a/internal/web/actions/default/servers/logs/init.go b/internal/web/actions/default/servers/logs/init.go
index f6f40c24..e504e224 100644
--- a/internal/web/actions/default/servers/logs/init.go
+++ b/internal/web/actions/default/servers/logs/init.go
@@ -16,6 +16,7 @@ func init() {
Data("teaSubMenu", "log").
Prefix("/servers/logs").
Get("", new(IndexAction)).
+ GetPost("/settings", new(SettingsAction)).
EndAll()
})
}
diff --git a/internal/web/actions/default/servers/logs/settings.go b/internal/web/actions/default/servers/logs/settings.go
new file mode 100644
index 00000000..c646c70c
--- /dev/null
+++ b/internal/web/actions/default/servers/logs/settings.go
@@ -0,0 +1,94 @@
+// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
+
+package logs
+
+import (
+ "encoding/json"
+ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
+ "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
+ "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
+ "github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs"
+ "github.com/iwind/TeaGo/actions"
+)
+
+type SettingsAction struct {
+ actionutils.ParentAction
+}
+
+func (this *SettingsAction) Init() {
+ this.Nav("", "", "settings")
+}
+
+func (this *SettingsAction) RunGet(params struct{}) {
+ settingsResp, err := this.RPC().SysSettingRPC().ReadSysSetting(this.AdminContext(), &pb.ReadSysSettingRequest{Code: systemconfigs.SettingCodeAccessLogQueue})
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+
+ var config = &serverconfigs.AccessLogQueueConfig{
+ MaxLength: 0,
+ CountPerSecond: 0,
+ Percent: 100,
+ }
+ if len(settingsResp.ValueJSON) > 0 {
+ err = json.Unmarshal(settingsResp.ValueJSON, config)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ } else {
+ configJSON, err := json.Marshal(config)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ _, err = this.RPC().SysSettingRPC().UpdateSysSetting(this.AdminContext(), &pb.UpdateSysSettingRequest{
+ Code: systemconfigs.SettingCodeAccessLogQueue,
+ ValueJSON: configJSON,
+ })
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
+ this.Data["config"] = config
+
+ this.Show()
+}
+
+func (this *SettingsAction) RunPost(params struct {
+ Percent int
+ CountPerSecond int
+ MaxLength int
+
+ Must *actions.Must
+ CSRF *actionutils.CSRF
+}) {
+ params.Must.
+ Field("percent", params.Percent).
+ Gte(0, "请输入大于0的整数").
+ Lte(100, "请输入小于100的整数")
+
+ var config = &serverconfigs.AccessLogQueueConfig{
+ MaxLength: params.MaxLength,
+ CountPerSecond: params.CountPerSecond,
+ Percent: params.Percent,
+ }
+ configJSON, err := json.Marshal(config)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ _, err = this.RPC().SysSettingRPC().UpdateSysSetting(this.AdminContext(), &pb.UpdateSysSettingRequest{
+ Code: systemconfigs.SettingCodeAccessLogQueue,
+ ValueJSON: configJSON,
+ })
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+
+ this.Success()
+}
diff --git a/web/views/@default/servers/logs/index.html b/web/views/@default/servers/logs/index.html
index 8300cb41..5c462a63 100644
--- a/web/views/@default/servers/logs/index.html
+++ b/web/views/@default/servers/logs/index.html
@@ -5,6 +5,7 @@