-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathaccesspoint.go
More file actions
116 lines (88 loc) · 2.08 KB
/
Copy pathaccesspoint.go
File metadata and controls
116 lines (88 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package nm
import (
"launchpad.net/~jamesh/go-dbus/trunk"
)
type AccessPoint struct {
*dbus.ObjectProxy
*dbus.Properties
cli *Client
dev *Device
}
const APSecured = 0x01
func (cli *Client) newAccessPoint(device *Device, path dbus.ObjectPath) *AccessPoint {
if path == dbus.ObjectPath("/") {
// fmt.Printf("Access Point is / -- Returning Nil.")
return nil
}
obj := cli.conn.Object(NM_UNIQ_NAME, path)
return &AccessPoint{
ObjectProxy: obj,
Properties: &dbus.Properties{obj},
cli: cli,
dev: device,
}
}
func (ap *AccessPoint) Name() (string, error) {
ret, err := ap.Get(NM_AP_IFACE, "Ssid")
if err != nil {
return "", err
}
return bytesToString(ret.([]interface{})), nil
/*tmp := ret.([]interface{})
buff := make([]byte, 0, len(tmp))
for _, c := range tmp {
buff = append(buff, c.(byte))
}
return string(buff), nil*/
}
func (ap *AccessPoint) Strength() (byte, error) {
ret, err := ap.Get(NM_AP_IFACE, "Strength")
if err != nil {
return 255, err
}
return ret.(byte), nil
}
func (ap *AccessPoint) Mac() (string, error) {
ret, err := ap.Get(NM_AP_IFACE, "HwAddress")
if err != nil {
return "", err
}
return ret.(string), nil
}
func (ap *AccessPoint) Flags() (uint32, error) {
ret, err := ap.Get(NM_AP_IFACE, "Flags")
if err != nil {
return 0, err
}
return ret.(uint32), err
}
func (ap *AccessPoint) WpaFlags() (uint32, error) {
ret, err := ap.Get(NM_AP_IFACE, "WpaFlags")
if err != nil {
return 0, err
}
return ret.(uint32), err
}
func (ap *AccessPoint) RsnFlags() (uint32, error) {
ret, err := ap.Get(NM_AP_IFACE, "RsnFlags")
if err != nil {
return 0, err
}
return ret.(uint32), err
}
func (ap *AccessPoint) Connect() error {
conns, err := ap.dev.AvailConnections()
if err != nil {
return err
}
name, err := ap.Name()
if err != nil {
return err
}
for _, conn := range conns {
if bytesToString(conn.Data["802-11-wireless"]["ssid"].Value.([]interface{})) == name {
return ap.cli.ActivateConnection(conn, ap.dev, ap.ObjectPath())
}
}
return ap.cli.AddAndActivateConnection(nil, ap.dev, ap.ObjectPath())
}