zhangzengfei
2023-09-12 9314ec141b15996dc0e6a71785efbf491eec8493
system-service/sys/system.go
@@ -11,6 +11,7 @@
   "strconv"
   "vamicro/config"
   "vamicro/extend/util"
   "vamicro/system-service/iwlist"
   "vamicro/system-service/models"
   sysVo "vamicro/system-service/vo"
@@ -141,7 +142,7 @@
   return info, err
}
//获取网卡信息
// 获取网卡信息
func GetNetWorkCards() ([]sysVo.NetWorkCard, error) {
   interfaces, err := net.Interfaces()
   if nil != err {
@@ -184,7 +185,7 @@
   return data, nil
}
//修改IP发布消息
// 修改IP发布消息
func IpChangePublish(newIp string) bool {
   //修改国标ip
   tmpResourceConf := models.ResourceConfig{}
@@ -213,7 +214,8 @@
   return false
}
/**
/*
*
更新配置
@param serverName 服务名称
@param newIp 服务Ip
@@ -491,7 +493,7 @@
   return err == nil
}
//设置语言
// 设置语言
func SetLang(lang string, language string) error {
   // set env
   envCMD := exec.Command("/bin/sh", "-c", "LANG=%s", lang)
@@ -525,7 +527,7 @@
   return err
}
//获取当前语言
// 获取当前语言
func GetLang() (string, error) {
   content, err := execRootCommand("cat /etc/default/locale|grep LANG")
   if nil == err {
@@ -541,7 +543,7 @@
   return "", err
}
//获取默认键盘布局
// 获取默认键盘布局
func GetDefKeyboard() (string, error) {
   content, err := execRootCommand("cat /etc/default/keyboard|grep XKBLAYOUT")
   if nil == err {
@@ -557,7 +559,7 @@
   return "", err
}
//获取键盘布局
// 获取键盘布局
func GetKeyboardLayouts() (map[string]string, []sysVo.KeyBoardLayout, error) {
   output, err := execRootCommand("man -P cat xkeyboard-config")
   if nil != err {
@@ -615,7 +617,7 @@
   return keyBoardLayoutMap, keyBoardLayouts, nil
}
//设置键盘布局
// 设置键盘布局
func SetKeyboardLayout(layout string) error {
   cmdStr := fmt.Sprintf("sed -i 's/XKBLAYOUT=.*/XKBLAYOUT=\"%s\"/' /etc/default/keyboard", layout)
   _, err := execRootCommand(cmdStr)
@@ -623,7 +625,7 @@
   return err
}
//关闭网络
// 关闭网络
func DownNetCard(networkAdapter string) error {
   cmdStr := fmt.Sprintf("ip link set %s down", networkAdapter)
   _, err := execRootCommand(cmdStr)
@@ -631,7 +633,7 @@
   return err
}
//开启网络
// 开启网络
func UpNetCard(networkAdapter string) error {
   _, _, err := GetLocalIP(networkAdapter)
   if err != nil {
@@ -643,7 +645,7 @@
   return err
}
//获取无线网卡
// 获取无线网卡
func GetIwDev() ([]string, error) {
   content, err := execRootCommand("iw dev")
   if nil == err {
@@ -664,76 +666,74 @@
   return nil, errors.New("iw dev not found")
}
//获取wifi网络
func GetWifi(netcard string) ([]sysVo.WiFi, error) {
   reg, err := regexp.Compile(`Quality=(\d+)/70[^\n]+\n\s+Encryption key:([^\n]+)\n\s+ESSID:\"([^\"]+)\"`)
   if nil == err {
      var wifiList = make([]sysVo.WiFi, 0)
      info, err := execRootCommand(fmt.Sprintf("iwlist %s scan", netcard))
      if nil == err {
         res := reg.FindAllStringSubmatch(string(info), -1)
         for _, item := range res {
            if len(item) >= 4 {
               wifi := sysVo.WiFi{item[3], item[1], item[2]}
               wifiList = append(wifiList, wifi)
            }
         }
         return wifiList, nil
      }
   }
   return nil, err
// 获取wifi网络
func ScanWifiList(netcard string) ([]iwlist.Cell, error) {
   return iwlist.Scan(netcard)
}
//连接WIFI
func ConnectWifi(fname, passwd, ssid string) error {
   content, err := execRootCommand(fmt.Sprintf("wpa_cli -i %s add_network", fname))
   if nil != err {
// 连接WIFI
func ConnectWifi(fname, ssid, passwd string) error {
   networkConfigScript := "/opt/vasystem/script/wlanconfig"
   // 检查文件是否存在
   if _, err := os.Stat(networkConfigScript); err != nil {
      return err
   }
   newid := strings.TrimSpace(string(content))
   reg, err := regexp.Compile(`^(\d+)$`)
   if nil == err {
      b := reg.MatchString(newid)
      if !b {
         return errors.New("WIFI加入失败")
      }
      ret, err := execRootCommand(fmt.Sprintf("wpa_cli -i %s set_network %s ssid '\"%s\"'", fname, newid, ssid))
      if nil != err {
         return err
      }
      if strings.TrimSpace(string(ret)) != "OK" {
         return errors.New(string(ret))
      }
      ret, err = execRootCommand(fmt.Sprintf("wpa_cli -i %s set_network %s psk '\"%s\"'", fname, newid, passwd))
      if nil != err {
         return err
      }
      if strings.TrimSpace(string(ret)) != "OK" {
         return errors.New(string(ret))
      }
      ret, err = execRootCommand(fmt.Sprintf("wpa_cli -i %s disconnect", fname))
      if nil != err {
         return err
      }
      if strings.TrimSpace(string(ret)) != "OK" {
         return errors.New(string(ret))
      }
      ret, err = execRootCommand(fmt.Sprintf("wpa_cli -i %s select_network %s", fname, newid))
      if nil != err {
         return err
      }
      if strings.TrimSpace(string(ret)) != "OK" {
         return errors.New(string(ret))
      }
      _, err = execRootCommand(fmt.Sprintf("udhcpc -i %s -q -n", fname))
      if nil != err {
         return errors.New("密码好像不对哦")
      }
      _, err = execRootCommand(fmt.Sprintf("wpa_cli -i %s save_config", fname))
      return nil
   } else {
      return err
   }
   // # wlanconfig wlan0 Basic Basic2019
   cmdStr := fmt.Sprintf("%s %s %s %s", networkConfigScript, fname, ssid, passwd)
   _, err := execRootCommand(cmdStr)
   return err
   //content, err := execRootCommand(fmt.Sprintf("wpa_cli -i %s add_network", fname))
   //if nil != err {
   //   return err
   //}
   //newid := strings.TrimSpace(string(content))
   //reg, err := regexp.Compile(`^(\d+)$`)
   //if nil == err {
   //   b := reg.MatchString(newid)
   //   if !b {
   //      return errors.New("WIFI加入失败")
   //   }
   //   ret, err := execRootCommand(fmt.Sprintf("wpa_cli -i %s set_network %s ssid '\"%s\"'", fname, newid, ssid))
   //   if nil != err {
   //      return err
   //   }
   //   if strings.TrimSpace(string(ret)) != "OK" {
   //      return errors.New(string(ret))
   //   }
   //   ret, err = execRootCommand(fmt.Sprintf("wpa_cli -i %s set_network %s psk '\"%s\"'", fname, newid, passwd))
   //   if nil != err {
   //      return err
   //   }
   //   if strings.TrimSpace(string(ret)) != "OK" {
   //      return errors.New(string(ret))
   //   }
   //   ret, err = execRootCommand(fmt.Sprintf("wpa_cli -i %s disconnect", fname))
   //   if nil != err {
   //      return err
   //   }
   //   if strings.TrimSpace(string(ret)) != "OK" {
   //      return errors.New(string(ret))
   //   }
   //   ret, err = execRootCommand(fmt.Sprintf("wpa_cli -i %s select_network %s", fname, newid))
   //   if nil != err {
   //      return err
   //   }
   //   if strings.TrimSpace(string(ret)) != "OK" {
   //      return errors.New(string(ret))
   //   }
   //   _, err = execRootCommand(fmt.Sprintf("udhcpc -i %s -q -n", fname))
   //   if nil != err {
   //      return errors.New("密码好像不对哦")
   //   }
   //   _, err = execRootCommand(fmt.Sprintf("wpa_cli -i %s save_config", fname))
   //   return nil
   //} else {
   //   return err
   //}
}
func ExistService(name string) string {
@@ -744,7 +744,7 @@
   return string(b)
}
//配置mqtt
// 配置mqtt
func SetMqttConf(conf *sysVo.MqttConf) error {
   etcPath := "/etc/mosquitto/mosquitto.conf"
   pwfile := "/etc/mosquitto/pwfile"