Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 30e530de6d | |||
| a15b442e64 | |||
| ed3bd2bd80 |
6
go.mod
6
go.mod
@@ -4,4 +4,8 @@ go 1.24.3
|
|||||||
|
|
||||||
require golang.org/x/net v0.43.0
|
require golang.org/x/net v0.43.0
|
||||||
|
|
||||||
require golang.org/x/text v0.28.0 // indirect
|
require (
|
||||||
|
go.uber.org/multierr v1.10.0 // indirect
|
||||||
|
go.uber.org/zap v1.27.0 // indirect
|
||||||
|
golang.org/x/text v0.28.0 // indirect
|
||||||
|
)
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -1,3 +1,7 @@
|
|||||||
|
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
|
||||||
|
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||||
|
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||||
|
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||||
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
||||||
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
||||||
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
||||||
|
|||||||
@@ -5,16 +5,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var device *Device
|
|
||||||
|
|
||||||
// 获取设备相关RPC类
|
|
||||||
func GetDevice() *Device {
|
|
||||||
if device == nil {
|
|
||||||
device = &Device{}
|
|
||||||
}
|
|
||||||
return device
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设备相关RPC
|
// 设备相关RPC
|
||||||
type Device struct{}
|
type Device struct{}
|
||||||
|
|
||||||
@@ -176,3 +166,13 @@ func (d *Device) SaveUpgradeResult(upgradeTaskId uint32, status uint8, finishTim
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var device *Device
|
||||||
|
|
||||||
|
// 获取设备相关RPC类
|
||||||
|
func GetDevice() *Device {
|
||||||
|
if device == nil {
|
||||||
|
device = &Device{}
|
||||||
|
}
|
||||||
|
return device
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"go.uber.org/zap"
|
||||||
"golang.org/x/net/http2"
|
"golang.org/x/net/http2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -24,6 +25,7 @@ type Request struct {
|
|||||||
port uint16
|
port uint16
|
||||||
rootCertPath string
|
rootCertPath string
|
||||||
client *http.Client
|
client *http.Client
|
||||||
|
logger *zap.SugaredLogger
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送请求
|
// 发送请求
|
||||||
@@ -58,11 +60,19 @@ func (r *Request) Send(methodName string, body any, responseBody any) error {
|
|||||||
return fmt.Errorf("response body json unmarshal fail: %v", err)
|
return fmt.Errorf("response body json unmarshal fail: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if r.logger != nil {
|
||||||
|
r.logger.Debugf("method: %s, request: %s, response: %s",
|
||||||
|
methodName,
|
||||||
|
string(bodyByte),
|
||||||
|
string(responseBodyByte),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
func Initiate(host string, port uint16, rootCertPath string) error {
|
func Initiate(host string, port uint16, rootCertPath string, logger *zap.SugaredLogger) error {
|
||||||
rootCert, err := os.ReadFile(rootCertPath)
|
rootCert, err := os.ReadFile(rootCertPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cert file read fail")
|
return fmt.Errorf("cert file read fail")
|
||||||
@@ -70,6 +80,7 @@ func Initiate(host string, port uint16, rootCertPath string) error {
|
|||||||
defaultRequest.host = host
|
defaultRequest.host = host
|
||||||
defaultRequest.port = port
|
defaultRequest.port = port
|
||||||
defaultRequest.rootCertPath = rootCertPath
|
defaultRequest.rootCertPath = rootCertPath
|
||||||
|
defaultRequest.logger = logger
|
||||||
|
|
||||||
certPool := x509.NewCertPool()
|
certPool := x509.NewCertPool()
|
||||||
certPool.AppendCertsFromPEM(rootCert)
|
certPool.AppendCertsFromPEM(rootCert)
|
||||||
|
|||||||
46
pkg/rpc/server.go
Normal file
46
pkg/rpc/server.go
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
package rpc
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
// 服务相关RPC
|
||||||
|
type Server struct{}
|
||||||
|
|
||||||
|
// 获取Websocket签名信息
|
||||||
|
func (s *Server) GetWebsocketSignData(sign string) (*WebsocketSignData, error) {
|
||||||
|
body := map[string]any{
|
||||||
|
"sign": sign,
|
||||||
|
}
|
||||||
|
result := &Result[WebsocketSignData]{}
|
||||||
|
if err := GetRequest().Send("server.get_websocket_sign", body, result); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if result.Code != 0 {
|
||||||
|
return nil, fmt.Errorf("%s", result.Message)
|
||||||
|
}
|
||||||
|
return &result.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除Websocket签名
|
||||||
|
func (s *Server) DeleteWebsocketSign(sign string) error {
|
||||||
|
body := map[string]any{
|
||||||
|
"sign": sign,
|
||||||
|
}
|
||||||
|
result := &Result[WebsocketSignData]{}
|
||||||
|
if err := GetRequest().Send("server.get_websocket_sign", body, result); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if result.Code != 0 {
|
||||||
|
return fmt.Errorf("%s", result.Message)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var server *Server
|
||||||
|
|
||||||
|
// 获取服务相关RPC类
|
||||||
|
func GetServer() *Server {
|
||||||
|
if server == nil {
|
||||||
|
server = &Server{}
|
||||||
|
}
|
||||||
|
return server
|
||||||
|
}
|
||||||
@@ -66,3 +66,9 @@ type DeviceAttributeOption struct {
|
|||||||
Max *uint32 `json:"max,omitempty"`
|
Max *uint32 `json:"max,omitempty"`
|
||||||
} `json:"attribute"`
|
} `json:"attribute"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Websocket签名数据
|
||||||
|
type WebsocketSignData struct {
|
||||||
|
UserId uint32 `json:"user_id"`
|
||||||
|
Platform string `json:"platform"`
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user