package main
import (
"bufio"
"encoding/json"
"fmt"
"io/ioutil"
"net"
"net/http"
"os"
"os/exec"
"strconv"
"time"
"gopkg.in/ini.v1"
)
func floattostr(input_num float64) string {
return strconv.FormatFloat(input_num, 'g', -1, 64)
}
func getTime() string {
t := time.Now()
timestamp := t.Unix()
tm := time.Unix(timestamp, 0)
s_tm := tm.Format("2006-01-02 15:04:05")
return s_tm
}
func writeip(s string) {
filePath := "./ip.log"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
fmt.Printf("打开文件错误= %v \n", err)
return
}
defer file.Close()
ip := getTime() + " " + s + "\n"
writer := bufio.NewWriter(file)
writer.WriteString(ip)
writer.Flush()
}
func getIpInfo() string {
var vmidIpAddr string
var ipArr [6]string
var innerIp = ""
var outIp = ""
addrs, err := net.InterfaceAddrs()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
j := 0
for _, address := range addrs {
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
fmt.Println(ipnet.IP.String())
ipArr[j] = ipnet.IP.String()
fmt.Println(j)
j++
}
}
}
innerIp = ipArr[0]
outIp = ipArr[1]
fmt.Println(innerIp)
fmt.Println(outIp)
vmidIpAddr = "inner_ip=" + innerIp + "&outer_ip=" + outIp
writeip(vmidIpAddr)
vmidIpAddr = "inner_ip=192.168.10.146&outer_ip=192.168.10.146"
return vmidIpAddr
}
func main() {
var CacherIp = ""
var vmid = ""
var smb_user = ""
var smb_password = ""
var ipInfo = ""
cfg, err := ini.Load("cloudgame_mount.ini")
if err != nil {
fmt.Printf("Fail to read file: %v", err)
os.Exit(1)
}
CacherIp = cfg.Section("").Key("CacherIp").String()
smb_user = cfg.Section("").Key("smb_user").String()
smb_password = cfg.Section("").Key("smb_password").String()
ipInfo = getIpInfo()
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
var vminfo map[string]interface{}
err1 := json.Unmarshal([]byte(string(body)), &vminfo)
if err1 != nil {
fmt.Println(err1)
}
vmid = floattostr(vminfo["vmid"].(float64))
mountstr := "net use w: \\\\" + CacherIp + "\\area_vm_data_" + vmid + " " + smb_password + " " + "/user:" + smb_user
fmt.Println(mountstr)
c := exec.Command("cmd", "/C", mountstr)
if err := c.Start(); err != nil {
fmt.Println("Error: ", err)
}