feat: Add pcap import, file browser, logging, local capture, and stable call ordering
This commit is contained in:
72
internal/config/loader.go
Normal file
72
internal/config/loader.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
)
|
||||
|
||||
// LoadNetworkMap loads a network map from a JSON file
|
||||
func LoadNetworkMap(path string) (*NetworkMap, error) {
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var nm NetworkMap
|
||||
if err := json.Unmarshal(data, &nm); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &nm, nil
|
||||
}
|
||||
|
||||
// SaveNetworkMap saves a network map to a JSON file
|
||||
func SaveNetworkMap(nm *NetworkMap, path string) error {
|
||||
data, err := json.MarshalIndent(nm, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return os.WriteFile(path, data, 0644)
|
||||
}
|
||||
|
||||
// DefaultNetworkMapPath returns a default path for the network map file
|
||||
func DefaultNetworkMapPath() string {
|
||||
return "network_map.json"
|
||||
}
|
||||
|
||||
// CreateSampleNetworkMap creates a sample network map for testing
|
||||
func CreateSampleNetworkMap() *NetworkMap {
|
||||
nm := NewNetworkMap()
|
||||
|
||||
nm.AddNode(NetworkNode{
|
||||
Name: "Asterisk PBX",
|
||||
IP: "192.168.1.10",
|
||||
Type: NodeTypePBX,
|
||||
Description: "Main PBX server",
|
||||
})
|
||||
|
||||
nm.AddNode(NetworkNode{
|
||||
Name: "Kamailio Proxy",
|
||||
IP: "192.168.1.20",
|
||||
Type: NodeTypeProxy,
|
||||
Aliases: []string{"10.0.0.20"},
|
||||
Description: "SIP proxy/load balancer",
|
||||
})
|
||||
|
||||
nm.AddNode(NetworkNode{
|
||||
Name: "RTPEngine",
|
||||
IP: "192.168.1.30",
|
||||
Type: NodeTypeMediaServer,
|
||||
Description: "Media relay server",
|
||||
})
|
||||
|
||||
nm.AddNode(NetworkNode{
|
||||
Name: "PSTN Gateway",
|
||||
IP: "192.168.1.40",
|
||||
Type: NodeTypeGateway,
|
||||
Description: "Gateway to PSTN",
|
||||
})
|
||||
|
||||
return nm
|
||||
}
|
||||
Reference in New Issue
Block a user