package wpasupplicant import ( "strings" "github.com/godbus/dbus/v5" ) // Network represents a wpa_supplicant Network configuration object type Network struct { path dbus.ObjectPath conn *dbus.Conn obj dbus.BusObject } // NewNetwork creates a new Network instance func NewNetwork(conn *dbus.Conn, path dbus.ObjectPath) *Network { return &Network{ path: path, conn: conn, obj: conn.Object(Service, path), } } // GetPath returns the D-Bus object path for this network func (n *Network) GetPath() dbus.ObjectPath { return n.path } // GetProperties returns properties of the network configuration func (n *Network) GetProperties() (map[string]dbus.Variant, error) { prop, err := n.obj.GetProperty(NetworkInterface + ".Properties") if err != nil { return nil, err } props, ok := prop.Value().(map[string]dbus.Variant) if !ok { return nil, nil } return props, nil } // GetSSID returns the configured SSID, stripping the wrapping quotes // that wpa_supplicant stores around string-form SSIDs. func (n *Network) GetSSID() (string, error) { props, err := n.GetProperties() if err != nil { return "", err } ssidVariant, ok := props["ssid"] if !ok { return "", nil } ssid, ok := ssidVariant.Value().(string) if !ok { return "", nil } // wpa_supplicant returns quoted SSIDs like "MyNetwork" return strings.Trim(ssid, `"`), nil }