From 863c880b169a788fe74b27187baa2e3f60b72ed2 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期三, 30 十月 2019 15:19:23 +0800
Subject: [PATCH] feat: add reboot

---
 extend/sys/system.go |   58 +++++++++++++++++-----------------------------------------
 1 files changed, 17 insertions(+), 41 deletions(-)

diff --git a/extend/sys/system.go b/extend/sys/system.go
index 526093e..cccba7e 100644
--- a/extend/sys/system.go
+++ b/extend/sys/system.go
@@ -1,11 +1,7 @@
 package sys
 
 import (
-	"encoding/json"
 	"errors"
-	"io/ioutil"
-	"net/http"
-	"net/url"
 	"os"
 	"os/exec"
 	"strconv"
@@ -18,40 +14,11 @@
 	"time"
 )
 
-func execRootCommand(cmd string) (bool, string) {
-	serverPort := config.Server.SysServerPort
-	if serverPort == "" {
-		serverPort = "18081"
-	}
-	sysConfigServer := fmt.Sprintf("http://127.0.0.1:%s/api/v1/command/exec", serverPort)
-	resp, err := http.PostForm(sysConfigServer, url.Values{"command": {cmd}})
+func execRootCommand(cmd string) ([]byte, error) {
+	pwd := config.Server.SudoPassword
+	cmdStr := fmt.Sprintf("echo %s | sudo -S %s", pwd, cmd)
 
-	if err != nil {
-		return false, err.Error()
-	}
-
-	defer resp.Body.Close()
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		return false, err.Error()
-	}
-
-	type response struct {
-		Code    int    `json:"code"`
-		Success bool   `json:"success"`
-		Msg     string `json:"msg"`
-		CMD     string `json:"cmd"`
-		Data    string `json:"data"`
-	}
-
-	var rsp response
-	if err := json.Unmarshal(body, &rsp); err != nil {
-		return false, err.Error()
-	}
-
-	fmt.Println(body)
-	fmt.Println(rsp)
-	return rsp.Success, rsp.Data
+	return exec.Command("/bin/sh", "-c", cmdStr).Output()
 }
 
 // 妫�鏌� root鏉冮檺
@@ -132,8 +99,9 @@
 	}
 	// # netconfig enp59s0f0 192.168.1.2 255.255.255.0 192.168.1.1 192.168.100.1
 	cmdStr := fmt.Sprintf("%s %s %s %s %s %s", networkConfigScript, ifname, ipv4, netmask, gateway, dns)
-	// return exec.Command("/bin/sh", "-c", cmdStr).Run() == nil
-	return execRootCommand(cmdStr)
+	stdout, err := execRootCommand(cmdStr)
+
+	return err == nil, string(stdout)
 }
 
 // 閰嶇疆鏃跺尯
@@ -192,8 +160,10 @@
 		return false
 	}
 
-	args := []string{"-s", newTime}
-	exec.Command("date", args...).Run()
+	// args := []string{"-s", newTime}
+	// exec.Command("date", args...).Run()
+	dateCMD := fmt.Sprintf("date -s \"%s\"", newTime)
+	execRootCommand(dateCMD)
 	stopNTPCron()
 
 	return true
@@ -227,3 +197,9 @@
 	ntpdate := fmt.Sprintf("/usr/sbin/ntpdate %s", server)
 	return true, exec.Command("/bin/sh", "-c", ntpdate).Run()
 }
+
+func Reboot() (bool, string) {
+	stdout, err := execRootCommand("reboot")
+
+	return err == nil, string(stdout)
+}

--
Gitblit v1.8.0