mirror of
https://github.com/IceWhaleTech/CasaOS.git
synced 2025-11-07 15:19:44 +00:00
Add find function
This commit is contained in:
parent
00d3382ab4
commit
7d27f8cbd0
2
go.mod
2
go.mod
@ -40,6 +40,7 @@ require (
|
|||||||
go.uber.org/goleak v1.2.1
|
go.uber.org/goleak v1.2.1
|
||||||
go.uber.org/zap v1.24.0
|
go.uber.org/zap v1.24.0
|
||||||
golang.org/x/crypto v0.8.0
|
golang.org/x/crypto v0.8.0
|
||||||
|
golang.org/x/net v0.9.0
|
||||||
golang.org/x/oauth2 v0.6.0
|
golang.org/x/oauth2 v0.6.0
|
||||||
golang.org/x/sync v0.1.0
|
golang.org/x/sync v0.1.0
|
||||||
gorm.io/gorm v1.24.6
|
gorm.io/gorm v1.24.6
|
||||||
@ -119,7 +120,6 @@ require (
|
|||||||
golang.org/x/arch v0.3.0 // indirect
|
golang.org/x/arch v0.3.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect
|
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect
|
||||||
golang.org/x/image v0.6.0 // indirect
|
golang.org/x/image v0.6.0 // indirect
|
||||||
golang.org/x/net v0.9.0 // indirect
|
|
||||||
golang.org/x/sys v0.7.0 // indirect
|
golang.org/x/sys v0.7.0 // indirect
|
||||||
golang.org/x/text v0.9.0 // indirect
|
golang.org/x/text v0.9.0 // indirect
|
||||||
golang.org/x/time v0.3.0 // indirect
|
golang.org/x/time v0.3.0 // indirect
|
||||||
|
|||||||
50
main.go
50
main.go
@ -5,22 +5,27 @@ package main
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
_ "embed"
|
_ "embed"
|
||||||
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/IceWhaleTech/CasaOS-Common/model"
|
"github.com/IceWhaleTech/CasaOS-Common/model"
|
||||||
"github.com/IceWhaleTech/CasaOS-Common/utils/constants"
|
"github.com/IceWhaleTech/CasaOS-Common/utils/constants"
|
||||||
"github.com/IceWhaleTech/CasaOS-Common/utils/logger"
|
"github.com/IceWhaleTech/CasaOS-Common/utils/logger"
|
||||||
|
"github.com/tidwall/gjson"
|
||||||
|
"golang.org/x/net/websocket"
|
||||||
|
|
||||||
util_http "github.com/IceWhaleTech/CasaOS-Common/utils/http"
|
util_http "github.com/IceWhaleTech/CasaOS-Common/utils/http"
|
||||||
|
|
||||||
"github.com/IceWhaleTech/CasaOS/codegen/message_bus"
|
"github.com/IceWhaleTech/CasaOS/codegen/message_bus"
|
||||||
"github.com/IceWhaleTech/CasaOS/common"
|
"github.com/IceWhaleTech/CasaOS/common"
|
||||||
|
model2 "github.com/IceWhaleTech/CasaOS/model"
|
||||||
"github.com/IceWhaleTech/CasaOS/pkg/cache"
|
"github.com/IceWhaleTech/CasaOS/pkg/cache"
|
||||||
"github.com/IceWhaleTech/CasaOS/pkg/config"
|
"github.com/IceWhaleTech/CasaOS/pkg/config"
|
||||||
"github.com/IceWhaleTech/CasaOS/pkg/sqlite"
|
"github.com/IceWhaleTech/CasaOS/pkg/sqlite"
|
||||||
@ -81,6 +86,7 @@ func init() {
|
|||||||
service.GetCPUThermalZone()
|
service.GetCPUThermalZone()
|
||||||
|
|
||||||
route.InitFunction()
|
route.InitFunction()
|
||||||
|
go SendToSocket(service.MyService.System().GetDeviceInfo())
|
||||||
service.MyService.System().GenreateSystemEntry()
|
service.MyService.System().GenreateSystemEntry()
|
||||||
///
|
///
|
||||||
// service.MountLists = make(map[string]*mountlib.MountPoint)
|
// service.MountLists = make(map[string]*mountlib.MountPoint)
|
||||||
@ -231,7 +237,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
func Special(myservice service.Repository) {
|
func Special(myservice service.Repository) {
|
||||||
http.HandleFunc("/v1/icewhale", func(w http.ResponseWriter, r *http.Request) {
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.Header().Set("Access-Control-Allow-Origin", "*")
|
||||||
m := myservice.System().GetDeviceInfo()
|
m := myservice.System().GetDeviceInfo()
|
||||||
jsonData, err := json.Marshal(m)
|
jsonData, err := json.Marshal(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -248,3 +255,44 @@ func Special(myservice service.Repository) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SendToSocket(m model2.DeviceInfo) {
|
||||||
|
if len(m.DeviceSN) == 0 {
|
||||||
|
//TODO:需要更换socket地址,需要放开sn的判断
|
||||||
|
//return
|
||||||
|
}
|
||||||
|
by, _ := json.Marshal(m)
|
||||||
|
base64Str := base64.StdEncoding.EncodeToString(by)
|
||||||
|
var count int = 1
|
||||||
|
for i := 0; i < 10; i++ {
|
||||||
|
wsURL := fmt.Sprintf("ws://%s/server/zima%s", "52.193.63.104:3060", "?device="+base64Str)
|
||||||
|
ws, err := websocket.Dial(wsURL, "", "http://localhost")
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("connect websocket err"+strconv.Itoa(i), zap.Any("error", err))
|
||||||
|
time.Sleep(time.Second * 1)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
defer ws.Close()
|
||||||
|
|
||||||
|
logger.Info("subscribed to", zap.Any("url", wsURL))
|
||||||
|
for {
|
||||||
|
msg := make([]byte, 1024)
|
||||||
|
n, err := ws.Read(msg)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("err", zap.Any("err", err.Error()))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
message := msg[:n]
|
||||||
|
t := gjson.GetBytes(message, "type")
|
||||||
|
if t.Str == "ping" {
|
||||||
|
ws.Write([]byte(`{"type":"pong"}`))
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
if count > 600 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logger.Error("error when try to connect to message bus")
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@ -32,4 +32,5 @@ type DeviceInfo struct {
|
|||||||
DeviceSN string `json:"device_sn"`
|
DeviceSN string `json:"device_sn"`
|
||||||
Initialized bool `json:"initialized"`
|
Initialized bool `json:"initialized"`
|
||||||
OS_Version string `json:"os_version"`
|
OS_Version string `json:"os_version"`
|
||||||
|
Hash string `json:"hash"`
|
||||||
}
|
}
|
||||||
|
|||||||
@ -57,8 +57,8 @@ func GetDeviceAllIP(port string) []string {
|
|||||||
}
|
}
|
||||||
return address
|
return address
|
||||||
}
|
}
|
||||||
func GetDeviceAllIPv4() []string {
|
func GetDeviceAllIPv4() map[string]string {
|
||||||
var address []string
|
address := make(map[string]string)
|
||||||
addrs, err := net.Interfaces()
|
addrs, err := net.Interfaces()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return address
|
return address
|
||||||
@ -74,9 +74,8 @@ func GetDeviceAllIPv4() []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
// 检查 IPv4 地址
|
|
||||||
if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil {
|
if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil {
|
||||||
address = append(address, ipnet.IP.String())
|
address[a.Name] = ipnet.IP.String()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@ -86,12 +87,29 @@ func (c *systemService) GetDeviceInfo() model.DeviceInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
allIpv4 := ip_helper.GetDeviceAllIPv4()
|
||||||
|
ip := []string{}
|
||||||
|
nets := MyService.System().GetNet(true)
|
||||||
|
for _, n := range nets {
|
||||||
|
if v, ok := allIpv4[n]; ok {
|
||||||
|
{
|
||||||
|
ip = append(ip, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m.LanIpv4 = ip_helper.GetDeviceAllIPv4()
|
m.LanIpv4 = ip
|
||||||
h, err := host.Info() /* */
|
h, err := host.Info() /* */
|
||||||
if err == nil {
|
if err == nil {
|
||||||
m.DeviceName = h.Hostname
|
m.DeviceName = h.Hostname
|
||||||
}
|
}
|
||||||
|
mb := model.BaseInfo{}
|
||||||
|
|
||||||
|
err = json.Unmarshal(file.ReadFullFile(config.AppInfo.DBPath+"/baseinfo.conf"), &mb)
|
||||||
|
if err == nil {
|
||||||
|
m.Hash = mb.Hash
|
||||||
|
}
|
||||||
|
|
||||||
osRelease, _ := file.ReadOSRelease()
|
osRelease, _ := file.ReadOSRelease()
|
||||||
m.DeviceModel = osRelease["MODEL"]
|
m.DeviceModel = osRelease["MODEL"]
|
||||||
m.DeviceSN = osRelease["SN"]
|
m.DeviceSN = osRelease["SN"]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user