1 Star 1 Fork 0

wulala乌啦啦/hwpack

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
modifyConnection.go 1.95 KB
一键复制 编辑 原始数据 按行查看 历史
wulala乌啦啦 提交于 2021-09-06 16:18 +08:00 . 1、修改nmcli的依赖
package nmcli
import (
"fmt"
"os/exec"
"strings"
)
// OvpnConnectionDefaults settings to apply to an existing NetworkManager connection
type OvpnConnectionDefaults struct {
DNS string
AuthSettings Auth
IgnoreIPV6 bool
}
// Auth holds authentication details for setting up a connection
type Auth struct {
Mode string
User string
Pass string
}
// ModifyConnection modifies the specified connection using settings provided
func ModifyConnection(connectionID string, settings OvpnConnectionDefaults) ([]string, error) {
if err := checkHasNmcli(); err != nil {
return nil, err
}
execCmd := []string{"connection", "modify", connectionID,
"ipv4.dns-priority -1", // prevents DNS leak in /etc/resolv.conf
fmt.Sprintf("ipv4.dns %s", settings.DNS),
"ipv4.ignore-auto-dns true",
}
if settings.AuthSettings.Mode == "non_encrypted" {
passwordCmd := []string{
"+vpn.data password-flags=0",
fmt.Sprintf("+vpn.data username=%s", settings.AuthSettings.User),
fmt.Sprintf("vpn.secrets password=%s", settings.AuthSettings.Pass),
}
execCmd = append(execCmd, passwordCmd...)
}
if settings.IgnoreIPV6 {
execCmd = append(execCmd, "ipv6.method ignore")
}
var cmdFields []string
for key, cmd := range execCmd {
if key == 2 {
cmdFields = append(cmdFields, cmd)
} else {
cmdFields = append(cmdFields, strings.Fields(cmd)...)
}
}
//loglog.Handler.Info("running nmcli %v", cmdFields)
cmd := exec.Command("nmcli", cmdFields...)
stdout, err := cmd.StdoutPipe()
if err != nil {
//loglog.Handler.Warn("cmd out pipe produced err")
return nil, err
}
stderr, err := cmd.StderrPipe()
if err != nil {
//loglog.Handler.Warn("cmd out err produced")
return nil, err
}
err = cmd.Start()
if err != nil {
//loglog.Handler.Warn("cmd failed to start")
return nil, err
}
data := GetStdoutText(stdout)
if errOut := GetStdoutText(stderr); errOut != nil {
return nil, fmt.Errorf(strings.Join(errOut, " "))
}
cmd.Wait()
return data, err
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wulalade/hwpack.git
git@gitee.com:wulalade/hwpack.git
wulalade
hwpack
hwpack
4a210dae89ef

搜索帮助