This commit is contained in:
cdle
2023-06-14 17:05:19 +08:00
parent da24a7ab97
commit bb8bee8ad4
14 changed files with 145 additions and 62 deletions
+1 -1
View File
@@ -8,6 +8,6 @@
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
<script src="/admin/umi.14fdd3e9.js"></script> <script src="/admin/umi.dd41d0dd.js"></script>
</body></html> </body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+72 -18
View File
@@ -1,11 +1,11 @@
package core package core
import ( import (
"errors"
"fmt" "fmt"
"strconv" "strconv"
"strings" "strings"
"sync" "sync"
"time"
"github.com/cdle/sillyplus/core/logs" "github.com/cdle/sillyplus/core/logs"
"github.com/cdle/sillyplus/core/storage" "github.com/cdle/sillyplus/core/storage"
@@ -19,33 +19,86 @@ var bkt storage.Bucket
var HttpPort string var HttpPort string
var sillyGirl = MakeBucket("sillyGirl") var sillyGirl = MakeBucket("sillyGirl")
var Get = func(key string) string { // var Get = func(key string) string {
return "" // return ""
} // }
var Set = func(key, value string, expiration time.Duration) error { // var Set = func(key, value string, expiration time.Duration) error {
return nil // return nil
} // }
var MakeBucketlocker sync.Mutex var MakeBucketlocker sync.Mutex
var app storage.Bucket
func MakeBucket(name string) storage.Bucket { func MakeBucket(name string) storage.Bucket {
MakeBucketlocker.Lock() MakeBucketlocker.Lock()
defer MakeBucketlocker.Unlock() defer MakeBucketlocker.Unlock()
if bkt == nil { if bkt == nil {
// utils.ReadYaml(utils.ExecPath+"/conf/", &Config, "https://raw.githubusercontent.com/cdle/sillyplus/main/conf/demo_config.yaml") // utils.ReadYaml(utils.ExecPath+"/conf/", &Config, "https://raw.githubusercontent.com/cdle/sillyplus/main/conf/demo_config.yaml")
utils.SlaveMode = Config.SlaveMode // if !Config.EnableRedis {
HttpPort = Config.HttpPort
if !Config.EnableRedis {
bkt = boltdb.Initsillyplus() bkt = boltdb.Initsillyplus()
Get = boltdb.Get // Get = boltdb.Get
Set = boltdb.Set // Set = boltdb.Set
logs.Info("默认使用boltdb进行数据存储") // logs.Info("默认使用boltdb进行数据存储")
} else { // } else {
bkt = redis.Initsillyplus(Config.RedisAddr, Config.RedisPassword) // bkt = redis.Initsillyplus(Config.RedisAddr, Config.RedisPassword)
Get = redis.Get // Get = redis.Get
Set = redis.Set // Set = redis.Set
logs.Info("已使用redis进行数据存储") // logs.Info("已使用redis进行数据存储")
// }
app = bkt
if def := bkt.GetString("storage"); def == "redis" {
func() {
defer func() {
err := recover()
if err != nil {
// console.Warn("redis异常,已默认启用boltdb进行数据存储")
bkt = app
} }
}()
bkt = redis.Initsillyplus(app.GetString("redis_addr"), app.GetString("redis_password"))
bkt.Set("storage", "redis")
}()
} else {
if def != "boltdb" {
bkt.Set("storage", "boltdb")
}
logs.Info("默认使用boltdb进行数据存储")
}
storage.Watch(app, "storage", func(old, new, _ string) *storage.Final {
if new != "redis" {
return nil
}
message := "Redis连接成功,重启生效!"
err := redis.Try(app.GetString("redis_addr"), app.GetString("redis_password"))
if err != nil {
message = "Redis连接失败,操作无效:" + err.Error()
}
return &storage.Final{
Error: errors.New(message),
}
})
storage.Watch(app, "redis_addr", func(old, new, _ string) *storage.Final {
message := "Redis连接成功,重启生效!"
err := redis.Try(app.GetString("redis_addr"), app.GetString("redis_password"))
if err != nil {
message = "Redis连接失败:" + err.Error()
}
return &storage.Final{
Message: message,
}
})
storage.Watch(app, "redis_password", func(old, new, _ string) *storage.Final {
message := "Redis连接成功,重启生效!"
err := redis.Try(app.GetString("redis_addr"), app.GetString("redis_password"))
if err != nil {
message = "Redis连接失败:" + err.Error()
}
return &storage.Final{
Message: message,
}
})
for _, name := range bkt.Buckets() { for _, name := range bkt.Buckets() {
b := bkt.Copy(name) b := bkt.Copy(name)
keys, err := b.Keys() keys, err := b.Keys()
@@ -53,6 +106,7 @@ func MakeBucket(name string) storage.Bucket {
b.Delete() b.Delete()
} }
} }
} }
if name == "" { if name == "" {
name = "sillyGirl" name = "sillyGirl"
-11
View File
@@ -1,11 +0,0 @@
package core
type Yaml struct {
EnableRedis bool `yaml:"enable_redis"`
RedisAddr string `yaml:"redis_addr"`
RedisPassword string `yaml:"redis_password"`
SlaveMode bool `yaml:"slave_mode"`
HttpPort string `yaml:"http_port"`
}
var Config Yaml
-1
View File
@@ -18,7 +18,6 @@ import (
var DataHome = utils.GetDataHome() var DataHome = utils.GetDataHome()
func Init() { func Init() {
sillyGirl = MakeBucket("sillyGirl") sillyGirl = MakeBucket("sillyGirl")
_, err := os.Stat(DataHome) _, err := os.Stat(DataHome)
if err != nil { if err != nil {
+29 -8
View File
@@ -23,6 +23,7 @@ type RequestPluginResult struct {
Total int `json:"total"` Total int `json:"total"`
Tab1 int `json:"tab1"` Tab1 int `json:"tab1"`
Tab2 int `json:"tab2"` Tab2 int `json:"tab2"`
Tab3 int `json:"tab3"`
Time time.Time `json:"time"` Time time.Time `json:"time"`
} }
@@ -145,30 +146,50 @@ func initWebPluginList() {
rr.Total = len(list) rr.Total = len(list)
tab1 := []*common.Function{} tab1 := []*common.Function{}
tab2 := []*common.Function{} tab2 := []*common.Function{}
tab3 := []*common.Function{}
fc := []*common.Function{} fc := []*common.Function{}
fc = append(fc, Functions...) fc = append(fc, Functions...)
for i := range list { for i := range list {
ded := false ded := false
for j := range fc { for j := range fc {
if list[i].UUID == fc[j].UUID { if list[i].UUID == fc[j].UUID {
// v1, err1 := version.NewVersion(list[i].Version)
// v2, err2 := version.NewVersion(fc[j].Version)
// if err1 == nil && err2 == nil {
// if v2.Compare(v1) > 0 {
// tab3 = append(tab3, list[i])
// }
// } else if err1 != nil && err2 != nil {
// tab3 = append(tab3, list[i])
// }
if list[i].Version != fc[j].Version {
tab3 = append(tab3, list[i])
}
ded = true ded = true
break break
} }
} }
if ded { if ded {
tab1 = append(tab1, list[i]) tab1 = append(tab1, list[i]) //已安装
} else { } else {
tab2 = append(tab2, list[i]) tab2 = append(tab2, list[i])
} }
} }
if activeKey != "tab2" { if activeKey == "tab2" {
list = tab1
rr.Tab1 = len(list)
rr.Tab2 = rr.Total - len(list)
} else {
list = tab2 list = tab2
rr.Tab2 = len(list) rr.Tab1 = len(tab1)
rr.Tab1 = rr.Total - len(list) rr.Tab2 = len(tab2)
rr.Tab3 = len(tab3)
} else if activeKey == "tab3" {
list = tab3
rr.Tab1 = len(tab1)
rr.Tab2 = len(tab2)
rr.Tab3 = len(tab3)
} else {
list = tab1
rr.Tab1 = len(tab1)
rr.Tab2 = len(tab2)
rr.Tab3 = len(tab3)
} }
rr.Total = len(list) rr.Total = len(list)
begin := (current - 1) * pageSize begin := (current - 1) * pageSize
+1 -1
View File
@@ -72,7 +72,7 @@ func Initsillyplus() storage.Bucket {
} }
v := &Bucket{ v := &Bucket{
name: "sillyplus", name: "sillyGirl",
} }
return v return v
} }
+23 -3
View File
@@ -13,6 +13,7 @@ import (
"github.com/beego/beego/v2/client/httplib" "github.com/beego/beego/v2/client/httplib"
"github.com/buger/jsonparser" "github.com/buger/jsonparser"
"github.com/cdle/sillyplus/core/logs"
"github.com/cdle/sillyplus/core/storage" "github.com/cdle/sillyplus/core/storage"
"github.com/cdle/sillyplus/utils" "github.com/cdle/sillyplus/utils"
@@ -69,18 +70,37 @@ func (bucket *Bucket) Type() string {
return "redis" return "redis"
} }
func Try(RedisAddr, RedisPassword string) error {
db := redis.NewClient(&redis.Options{
Addr: RedisAddr,
Password: RedisPassword, // no password set
DB: 0, // use default DB
DialTimeout: time.Second * 5,
})
err := db.Get(context.Background(), "666").Err()
if err == nil {
db.Close()
}
return err
}
func Initsillyplus(RedisAddr, RedisPassword string) storage.Bucket { func Initsillyplus(RedisAddr, RedisPassword string) storage.Bucket {
db = redis.NewClient(&redis.Options{ db = redis.NewClient(&redis.Options{
Addr: RedisAddr, Addr: RedisAddr,
Password: RedisPassword, // no password set Password: RedisPassword, // no password set
DB: 0, // use default DB DB: 0, // use default DB
DialTimeout: time.Second * 5,
}) })
if db == nil {
panic("redis is not ok") err := db.Get(context.Background(), "666").Err()
if err != nil {
logs.Error("redis错误", err)
panic(err)
} }
sillyplus = &Bucket{ sillyplus = &Bucket{
name: "sillyplus", name: "sillyGirl",
} }
port := sillyplus.GetString("port", "8080") port := sillyplus.GetString("port", "8080")
if utils.SlaveMode { if utils.SlaveMode {
is, _ := db.ConfigGet(ctx, "slaveof").Result() is, _ := db.ConfigGet(ctx, "slaveof").Result()