update: 初始化代码提交

This commit is contained in:
hamster1963
2023-10-03 15:57:52 +08:00
commit 98a96392fa
46 changed files with 2429 additions and 0 deletions

View File

@ -0,0 +1,5 @@
// =================================================================================
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
// =================================================================================
package data_core

View 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{}
}

View File

@ -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()
}
}
}

View File

@ -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()
}
}
}

View File

@ -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()
}
}
}

View 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
}

View File

@ -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()
}
}
}

View File

@ -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)
}
}

View 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
}

View 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
}