From 9314ec141b15996dc0e6a71785efbf491eec8493 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期二, 12 九月 2023 15:07:54 +0800
Subject: [PATCH] 修改wifi配置

---
 system-service/sys/system.go |  156 ++++++++++++++++++++++++++--------------------------
 1 files changed, 78 insertions(+), 78 deletions(-)

diff --git a/system-service/sys/system.go b/system-service/sys/system.go
index 41d6e46..c79d6f0 100644
--- a/system-service/sys/system.go
+++ b/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"

--
Gitblit v1.8.0