hmac problems.
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -30,11 +31,10 @@ func StartLoop() {
|
||||
}()
|
||||
}
|
||||
|
||||
func doReport() {
|
||||
func BuildReport() (*models.Report, models.SystemData, error) {
|
||||
data, err := network.GatherSystemData()
|
||||
if err != nil {
|
||||
log.Printf("reporter: gather error: %v", err)
|
||||
return
|
||||
return nil, data, fmt.Errorf("gather error: %v", err)
|
||||
}
|
||||
|
||||
tickCounter++
|
||||
@@ -53,14 +53,62 @@ func doReport() {
|
||||
}
|
||||
|
||||
report.HMAC = security.SignPayload(report.Data)
|
||||
return &report, data, nil
|
||||
}
|
||||
|
||||
err = pushToManager(report)
|
||||
func doReport() {
|
||||
report, data, err := BuildReport()
|
||||
if err != nil {
|
||||
log.Printf("reporter: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = pushToManager(*report)
|
||||
if err != nil {
|
||||
log.Printf("reporter: direct push failed (%v). Attempting relay scan...", err)
|
||||
tryRelay(report, data)
|
||||
tryRelay(*report, data)
|
||||
}
|
||||
}
|
||||
|
||||
func ExportReportToFile(filepath string) error {
|
||||
report, _, err := BuildReport()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
encoded, err := json.MarshalIndent(report, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return os.WriteFile(filepath, encoded, 0644)
|
||||
}
|
||||
|
||||
func DiscoverPeers() ([]string, error) {
|
||||
data, err := network.GatherSystemData()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var discovered []string
|
||||
for _, wg := range data.WGPeers {
|
||||
for _, allowedRaw := range wg.AllowedIPs {
|
||||
ip, _, err := net.ParseCIDR(allowedRaw)
|
||||
if err != nil {
|
||||
ip = net.ParseIP(allowedRaw)
|
||||
}
|
||||
if ip != nil {
|
||||
ipTarget := ip.String()
|
||||
log.Printf("reporter: Checking potential peer at %s...", ipTarget)
|
||||
if pingPeer(ipTarget) {
|
||||
log.Printf("reporter: Found active Kattila peer at %s", ipTarget)
|
||||
discovered = append(discovered, ipTarget)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return discovered, nil
|
||||
}
|
||||
|
||||
|
||||
func pushToManager(report models.Report) error {
|
||||
body, _ := json.Marshal(report)
|
||||
url := strings.TrimRight(config.Cfg.ManagerURL, "/") + "/status/updates"
|
||||
|
||||
Reference in New Issue
Block a user