76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
package network
|
|
|
|
import (
|
|
"NanoKVM-Server/proto"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
const (
|
|
WiFiExistFile = "/etc/kvm/wifi_exist"
|
|
WiFiSSID = "/etc/kvm/wifi.ssid"
|
|
WiFiPasswd = "/etc/kvm/wifi.pass"
|
|
WiFiConnect = "/kvmapp/kvm/wifi_try_connect"
|
|
WiFiStateFile = "/kvmapp/kvm/wifi_state"
|
|
)
|
|
|
|
func (s *Service) GetWifi(c *gin.Context) {
|
|
var rsp proto.Response
|
|
|
|
data := &proto.GetWifiRsp{}
|
|
|
|
_, err := os.Stat(WiFiExistFile)
|
|
if err != nil {
|
|
rsp.OkRspWithData(c, data)
|
|
return
|
|
}
|
|
|
|
data.Supported = true
|
|
|
|
content, err := os.ReadFile(WiFiStateFile)
|
|
if err != nil {
|
|
rsp.OkRspWithData(c, data)
|
|
return
|
|
}
|
|
|
|
state := strings.ReplaceAll(string(content), "\n", "")
|
|
data.Connected = state == "1"
|
|
|
|
rsp.OkRspWithData(c, data)
|
|
log.Debugf("get wifi state: %s", state)
|
|
}
|
|
|
|
func (s *Service) ConnectWifi(c *gin.Context) {
|
|
var req proto.ConnectWifiReq
|
|
var rsp proto.Response
|
|
|
|
if err := proto.ParseFormRequest(c, &req); err != nil {
|
|
rsp.ErrRsp(c, -1, "invalid parameters")
|
|
return
|
|
}
|
|
|
|
if err := os.WriteFile(WiFiSSID, []byte(req.Ssid), 0o644); err != nil {
|
|
log.Errorf("failed to save wifi ssid: %s", err)
|
|
rsp.ErrRsp(c, -2, "failed to save wifi")
|
|
return
|
|
}
|
|
|
|
if err := os.WriteFile(WiFiPasswd, []byte(req.Password), 0o644); err != nil {
|
|
log.Errorf("failed to save wifi password: %s", err)
|
|
rsp.ErrRsp(c, -3, "failed to save wifi")
|
|
return
|
|
}
|
|
|
|
if err := os.WriteFile(WiFiConnect, nil, 0o644); err != nil {
|
|
log.Errorf("failed to connect wifi: %s", err)
|
|
rsp.ErrRsp(c, -4, "failed to connect wifi")
|
|
return
|
|
}
|
|
|
|
rsp.OkRsp(c)
|
|
log.Debugf("set wifi successfully: %s", req.Ssid)
|
|
}
|