mirror of
https://github.com/hamster1963/HomeDash-Backend.git
synced 2025-06-19 21:51:21 +08:00
update: 初始化代码提交
This commit is contained in:
5
internal/controller/data_core/data_core.go
Normal file
5
internal/controller/data_core/data_core.go
Normal file
@ -0,0 +1,5 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package data_core
|
15
internal/controller/data_core/data_core_new.go
Normal file
15
internal/controller/data_core/data_core_new.go
Normal file
@ -0,0 +1,15 @@
|
||||
// =================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// =================================================================================
|
||||
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"home-network-watcher/api/data_core"
|
||||
)
|
||||
|
||||
type ControllerV1 struct{}
|
||||
|
||||
func NewV1() data_core.IDataCoreV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gcache"
|
||||
"home-network-watcher/manifest"
|
||||
"time"
|
||||
|
||||
"home-network-watcher/api/data_core/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) GetDockerMonitorSSE(ctx context.Context, _ *v1.GetDockerMonitorSSEReq) (res *v1.GetDockerMonitorSSERes, err error) {
|
||||
request := g.RequestFromCtx(ctx)
|
||||
request.Response.Header().Set("Content-Type", "text/event-stream")
|
||||
request.Response.Header().Set("Cache-Control", "no-cache")
|
||||
request.Response.Header().Set("Connection", "keep-alive")
|
||||
request.Response.Header().Set("Access-Control-Allow-Origin", "*")
|
||||
request.Response.Header().Set("X-Accel-Buffering", "no")
|
||||
|
||||
for {
|
||||
// 从缓存中获取数据
|
||||
dockerData, err := gcache.Get(ctx, manifest.DockerMonitorCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res = &v1.GetDockerMonitorSSERes{DockerData: dockerData}
|
||||
// 发送数据
|
||||
request.Response.Writefln("data: " + gjson.New(res).MustToJsonString() + "\n")
|
||||
request.Response.Flush()
|
||||
|
||||
// 等待10秒或者上下文取消
|
||||
select {
|
||||
case <-time.After(10 * time.Second):
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gcache"
|
||||
"home-network-watcher/api/data_core/v1"
|
||||
"home-network-watcher/manifest"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) GetHomeDataSSE(ctx context.Context, _ *v1.GetHomeDataSSEReq) (res *v1.GetHomeDataSSERes, err error) {
|
||||
request := g.RequestFromCtx(ctx)
|
||||
request.Response.Header().Set("Content-Type", "text/event-stream")
|
||||
request.Response.Header().Set("Cache-Control", "no-cache")
|
||||
request.Response.Header().Set("Connection", "keep-alive")
|
||||
request.Response.Header().Set("Access-Control-Allow-Origin", "*")
|
||||
request.Response.Header().Set("X-Accel-Buffering", "no")
|
||||
|
||||
for {
|
||||
// 从缓存中获取数据
|
||||
homeData, err := gcache.Get(ctx, manifest.HaEntitiesCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res = &v1.GetHomeDataSSERes{HomeData: homeData}
|
||||
// 发送数据
|
||||
request.Response.Writefln("data: " + gjson.New(res).MustToJsonString() + "\n")
|
||||
request.Response.Flush()
|
||||
|
||||
// 等待1秒或者上下文取消
|
||||
select {
|
||||
case <-time.After(1 * time.Second):
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gcache"
|
||||
"home-network-watcher/manifest"
|
||||
"time"
|
||||
|
||||
"home-network-watcher/api/data_core/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) GetNetworkDataSSE(ctx context.Context, _ *v1.GetNetworkDataSSEReq) (res *v1.GetNetworkDataSSERes, err error) {
|
||||
request := g.RequestFromCtx(ctx)
|
||||
request.Response.Header().Set("Content-Type", "text/event-stream")
|
||||
request.Response.Header().Set("Cache-Control", "no-cache")
|
||||
request.Response.Header().Set("Connection", "keep-alive")
|
||||
request.Response.Header().Set("Access-Control-Allow-Origin", "*")
|
||||
request.Response.Header().Set("X-Accel-Buffering", "no")
|
||||
|
||||
for {
|
||||
// 从缓存中获取数据
|
||||
nodeInfo, err := gcache.Get(ctx, manifest.ProxyNodeCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
homeNetwork, err := gcache.Get(ctx, manifest.HomeNetworkCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
proxyNetwork, err := gcache.Get(ctx, manifest.ProxyNetworkCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
coffeeInfo, err := gcache.Get(ctx, manifest.ProxySubscribeCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
serverInfo, err := gcache.Get(ctx, manifest.ServerDataCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res = &v1.GetNetworkDataSSERes{
|
||||
NodeInfo: nodeInfo,
|
||||
HomeNetwork: homeNetwork,
|
||||
ProxyNetwork: proxyNetwork,
|
||||
CoffeeInfo: coffeeInfo,
|
||||
ServerInfo: serverInfo,
|
||||
}
|
||||
// 发送数据
|
||||
request.Response.Writefln("data: " + gjson.New(res).MustToJsonString() + "\n")
|
||||
request.Response.Flush()
|
||||
|
||||
// 等待1秒或者上下文取消
|
||||
select {
|
||||
case <-time.After(1 * time.Second):
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
24
internal/controller/data_core/data_core_v1_get_task_list.go
Normal file
24
internal/controller/data_core/data_core_v1_get_task_list.go
Normal file
@ -0,0 +1,24 @@
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/os/gcron"
|
||||
|
||||
"home-network-watcher/api/data_core/v1"
|
||||
)
|
||||
|
||||
// GetTaskList 获取任务列表
|
||||
func (c *ControllerV1) GetTaskList(_ context.Context, _ *v1.GetTaskListReq) (res *v1.GetTaskListRes, err error) {
|
||||
var taskList []map[string]interface{}
|
||||
for _, entry := range gcron.Entries() {
|
||||
taskList = append(taskList, map[string]interface{}{
|
||||
"name": entry.Name,
|
||||
"status": entry.Status(),
|
||||
"time": entry.Time,
|
||||
})
|
||||
}
|
||||
res = &v1.GetTaskListRes{
|
||||
TaskList: taskList,
|
||||
}
|
||||
return res, nil
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gcache"
|
||||
"home-network-watcher/api/data_core/v1"
|
||||
"home-network-watcher/manifest"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) GetUptimeDataSSE(ctx context.Context, _ *v1.GetUptimeDataSSEReq) (res *v1.GetUptimeDataSSERes, err error) {
|
||||
request := g.RequestFromCtx(ctx)
|
||||
request.Response.Header().Set("Content-Type", "text/event-stream")
|
||||
request.Response.Header().Set("Cache-Control", "no-cache")
|
||||
request.Response.Header().Set("Connection", "keep-alive")
|
||||
request.Response.Header().Set("Access-Control-Allow-Origin", "*")
|
||||
request.Response.Header().Set("X-Accel-Buffering", "no")
|
||||
|
||||
for {
|
||||
// 从缓存中获取数据
|
||||
uptimeData, err := gcache.Get(ctx, manifest.UptimeCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res = &v1.GetUptimeDataSSERes{UptimeData: uptimeData}
|
||||
// 发送数据
|
||||
request.Response.Writefln("data: " + gjson.New(res).MustToJsonString() + "\n")
|
||||
request.Response.Flush()
|
||||
|
||||
// 等待10秒或者上下文取消
|
||||
select {
|
||||
case <-time.After(10 * time.Second):
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gcache"
|
||||
"home-network-watcher/manifest"
|
||||
"time"
|
||||
|
||||
"home-network-watcher/api/data_core/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) GetXuiDataSSE(ctx context.Context, _ *v1.GetXuiDataSSEReq) (res *v1.GetXuiDataSSERes, err error) {
|
||||
request := g.RequestFromCtx(ctx)
|
||||
request.Response.Header().Set("Content-Type", "text/event-stream")
|
||||
request.Response.Header().Set("Cache-Control", "no-cache")
|
||||
request.Response.Header().Set("Connection", "keep-alive")
|
||||
request.Response.Header().Set("Access-Control-Allow-Origin", "*")
|
||||
request.Response.Header().Set("X-Accel-Buffering", "no")
|
||||
|
||||
for {
|
||||
// 从缓存中获取数据
|
||||
xuiData, err := gcache.Get(context.Background(), manifest.XUIUserListCacheKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res = &v1.GetXuiDataSSERes{XuiData: xuiData}
|
||||
// 发送数据
|
||||
request.Response.Writefln("data: " + gjson.New(res).MustToJsonString() + "\n")
|
||||
request.Response.Flush()
|
||||
time.Sleep(5 * time.Second)
|
||||
}
|
||||
|
||||
}
|
25
internal/controller/data_core/data_core_v1_recover_task.go
Normal file
25
internal/controller/data_core/data_core_v1_recover_task.go
Normal file
@ -0,0 +1,25 @@
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/os/gcron"
|
||||
"home-network-watcher/internal/global/g_functions"
|
||||
|
||||
"home-network-watcher/api/data_core/v1"
|
||||
)
|
||||
|
||||
// RecoverTask 恢复任务
|
||||
func (c *ControllerV1) RecoverTask(_ context.Context, req *v1.RecoverTaskReq) (res *v1.RecoverTaskRes, err error) {
|
||||
var taskMap = make(map[string]int)
|
||||
for _, entry := range gcron.Entries() {
|
||||
taskMap[entry.Name] = entry.Status()
|
||||
}
|
||||
if _, ok := taskMap[req.Name]; !ok {
|
||||
return nil, g_functions.ResErr(400, "任务不存在")
|
||||
}
|
||||
if taskMap[req.Name] == 1 || taskMap[req.Name] == 0 {
|
||||
return nil, g_functions.ResErr(400, "任务已启动")
|
||||
}
|
||||
gcron.Start(req.Name)
|
||||
return
|
||||
}
|
22
internal/controller/data_core/data_core_v1_stop_task.go
Normal file
22
internal/controller/data_core/data_core_v1_stop_task.go
Normal file
@ -0,0 +1,22 @@
|
||||
package data_core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/os/gcron"
|
||||
"home-network-watcher/internal/global/g_functions"
|
||||
|
||||
"home-network-watcher/api/data_core/v1"
|
||||
)
|
||||
|
||||
// StopTask 停止任务
|
||||
func (c *ControllerV1) StopTask(_ context.Context, req *v1.StopTaskReq) (res *v1.StopTaskRes, err error) {
|
||||
var taskMap = make(map[string]string)
|
||||
for _, entry := range gcron.Entries() {
|
||||
taskMap[entry.Name] = entry.Name
|
||||
}
|
||||
if _, ok := taskMap[req.Name]; !ok {
|
||||
return nil, g_functions.ResErr(400, "任务不存在")
|
||||
}
|
||||
gcron.Stop(req.Name)
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user