WIFI.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package nmcli
  2. import (
  3. "AudioPlayer/nmcli/model"
  4. "context"
  5. nmcli_go "github.com/KunMengcode/nmcli-go"
  6. "github.com/KunMengcode/nmcli-go/connection"
  7. "github.com/KunMengcode/nmcli-go/device"
  8. "net/rpc"
  9. )
  10. type WIFIInterface interface {
  11. CreateHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error
  12. ChangeHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error
  13. OpenHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error
  14. HotspotInfo(Request model.EmptyRequest, Reply *WifiInfo) error
  15. register() error
  16. }
  17. type WIFI struct {
  18. nmcli *nmcli_go.NMCli
  19. }
  20. func NewWIFI(nmcli *nmcli_go.NMCli) WIFIInterface {
  21. return &WIFI{nmcli: nmcli}
  22. }
  23. func (receiver *WIFI) register() error {
  24. return rpc.RegisterName("NetworkManager.WIFI", receiver)
  25. }
  26. func (receiver *WIFI) CreateHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error {
  27. _, err := receiver.nmcli.Device.WiFiHotspotCreate(context.Background(), device.WiFiHotspotCreateOptions{
  28. Ifname: Request.IfName,
  29. Con_name: "hotspot",
  30. SSID: Request.SSID,
  31. Password: Request.Password,
  32. })
  33. if err != nil {
  34. return err
  35. }
  36. return nil
  37. }
  38. func (receiver *WIFI) OpenHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error {
  39. _, err := receiver.nmcli.Connection.Up(context.Background(), "hotspot", connection.UpOptions{})
  40. if err != nil {
  41. return err
  42. }
  43. return nil
  44. }
  45. func (receiver *WIFI) ChangeHotspot(Request model.HotspotInfoRequest, Reply *model.EmptyReply) error {
  46. _, err := receiver.nmcli.Connection.Modify(context.Background(), false, "hotspot", map[string]string{
  47. "802-11-wireless.ssid": Request.SSID,
  48. "802-11-wireless-security.psk": Request.Password,
  49. })
  50. if err != nil {
  51. return err
  52. }
  53. err = receiver.OpenHotspot(Request, Reply)
  54. if err != nil {
  55. return err
  56. }
  57. return nil
  58. }
  59. type WifiInfo struct {
  60. SSID string
  61. Password string
  62. }
  63. func (receiver *WIFI) HotspotInfo(Request model.EmptyRequest, Reply *WifiInfo) error {
  64. show, err := receiver.nmcli.Connection.Show(context.Background(), "hotspot")
  65. if err != nil {
  66. return err
  67. }
  68. *Reply = WifiInfo{
  69. SSID: show["802-11-wireless"][0][0],
  70. Password: show["802-11-wireless-security"][0][14],
  71. }
  72. return nil
  73. }