1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package nmcli
- import (
- "AudioPlayer/nmcli/model"
- "context"
- nmcli_go "github.com/KunMengcode/nmcli-go"
- "github.com/KunMengcode/nmcli-go/connection"
- "github.com/KunMengcode/nmcli-go/device"
- "net/rpc"
- )
- type WIFIInterface interface {
- CreateHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error
- ChangeHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error
- OpenHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error
- HotspotInfo(Request model.EmptyRequest, Reply *WifiInfo) error
- register() error
- }
- type WIFI struct {
- nmcli *nmcli_go.NMCli
- }
- func NewWIFI(nmcli *nmcli_go.NMCli) WIFIInterface {
- return &WIFI{nmcli: nmcli}
- }
- func (receiver *WIFI) register() error {
- return rpc.RegisterName("NetworkManager.WIFI", receiver)
- }
- func (receiver *WIFI) CreateHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error {
- _, err := receiver.nmcli.Device.WiFiHotspotCreate(context.Background(), device.WiFiHotspotCreateOptions{
- Ifname: Request.IfName,
- Con_name: "hotspot",
- SSID: Request.SSID,
- Password: Request.Password,
- })
- if err != nil {
- return err
- }
- return nil
- }
- func (receiver *WIFI) OpenHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error {
- _, err := receiver.nmcli.Connection.Up(context.Background(), "hotspot", connection.UpOptions{})
- if err != nil {
- return err
- }
- return nil
- }
- func (receiver *WIFI) ChangeHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error {
- _, err := receiver.nmcli.Connection.Modify(context.Background(), false, "hotspot", map[string]string{
- "802-11-wireless.ssid": Request.SSID,
- "802-11-wireless-security.psk": Request.Password,
- })
- if err != nil {
- return err
- }
- err = receiver.OpenHotspot(Request, Reply)
- if err != nil {
- return err
- }
- return nil
- }
- type WifiInfo struct {
- SSID string
- Password string
- }
- func (receiver *WIFI) HotspotInfo(Request model.EmptyRequest, Reply *WifiInfo) error {
- show, err := receiver.nmcli.Connection.Show(context.Background(), "hotspot")
- if err != nil {
- return err
- }
- *Reply = WifiInfo{
- SSID: show["802-11-wireless"][0][0],
- Password: show["802-11-wireless-security"][0][14],
- }
- return nil
- }
|