Files
truenas-stacks/localsend-nomad/patches/localsend-cli-doris.patch
Fizzlepoof 0c33bedbae
Some checks failed
secret-guardrails / artifact-secret-scan (push) Has been cancelled
secret-guardrails / gitleaks (push) Has been cancelled
Add Trusted-LAN LocalSend receiver on NOMAD
2026-05-26 02:44:18 +00:00

93 lines
2.2 KiB
Diff

diff --git a/internal/localsend/localsend.go b/internal/localsend/localsend.go
index e30e6f5..c0c2b8e 100644
--- a/internal/localsend/localsend.go
+++ b/internal/localsend/localsend.go
@@ -2,6 +2,7 @@ package localsend
import (
"encoding/json"
+ "fmt"
"net"
"github.com/0w0mewo/localsend-cli/internal/localsend/constants"
@@ -13,41 +14,53 @@ import (
func GetDeviceInfo(ip string, https bool) (models.DeviceInfo, error) {
remoteAddr := net.JoinHostPort(ip, "53317")
- agent := fiber.AcquireAgent()
- defer fiber.ReleaseAgent(agent)
-
scheme := "http"
if https {
scheme = "https"
}
- req := agent.Request()
- req.URI().SetScheme(scheme)
- req.URI().SetHost(remoteAddr)
- req.URI().SetPath(constants.InfoPath)
- req.Header.SetMethod(fiber.MethodGet)
- err := agent.Parse()
- if err != nil {
- return models.DeviceInfo{}, err
- }
+ paths := []string{constants.InfoPath, "/api/localsend/v2/info", constants.InfoPathLegacy}
+ var lastErr error
- status, b, errs := agent.InsecureSkipVerify().Bytes()
- if len(errs) != 0 {
- return models.DeviceInfo{}, errs[0]
- }
- err = constants.ParseError(status)
- if err != nil {
- return models.DeviceInfo{}, err
- }
+ for _, path := range paths {
+ agent := fiber.AcquireAgent()
+ req := agent.Request()
+ req.URI().SetScheme(scheme)
+ req.URI().SetHost(remoteAddr)
+ req.URI().SetPath(path)
+ req.Header.SetMethod(fiber.MethodGet)
+ err := agent.Parse()
+ if err != nil {
+ fiber.ReleaseAgent(agent)
+ return models.DeviceInfo{}, err
+ }
- var res models.DeviceInfo
- err = json.Unmarshal(b, &res)
- if err != nil {
- return models.DeviceInfo{}, err
+ status, b, errs := agent.InsecureSkipVerify().Bytes()
+ fiber.ReleaseAgent(agent)
+ if len(errs) != 0 {
+ lastErr = errs[0]
+ continue
+ }
+ err = constants.ParseError(status)
+ if err != nil {
+ lastErr = err
+ continue
+ }
+
+ var res models.DeviceInfo
+ err = json.Unmarshal(b, &res)
+ if err != nil {
+ lastErr = err
+ continue
+ }
+ res.IP = ip
+ return res, nil
}
- res.IP = ip
- return res, nil
+ if lastErr == nil {
+ lastErr = fmt.Errorf("device info not found on known endpoints")
+ }
+ return models.DeviceInfo{}, lastErr
}
func NewFileSender(useDownloadAPI ...bool) send.FileSender {