package public
import (
	"os"
	"encoding/json"
	"bytes"
	"strings"
	"net"
	"bufio"
	"io/ioutil"
)
// 获取 环境变量
// 如果空 输出错误

// 获取 消息内容
func ParseJsonHead(b []byte)string{
	//{"msgtype":"report","msgstate":"","username":"zhiweiadserver","computername":"ADSERVER","report":"下班"}
	// 提取第一个冒号后的第二位和第一个逗号的前一位
	// 也就是msgtype的内容
	msgtype := b[bytes.IndexByte(b,':')+2:bytes.IndexByte(b,',')-1]

	return string(msgtype)
}

// 解析Json 并放到变量中
func ParseJsonBody(unmsg []byte,v interface{}){
	// 填写
	if err := json.Unmarshal(unmsg,v) ;err != nil{
		PntError("Parse Json Error ",err)
	}
}

// Jsom 转 Byte
func JsonToByte(v interface{}) []byte{
	textbyte,err := json.Marshal(v)
	if err !=nil {
		PntError("Json to String Error ",v,err)
	}
	return textbyte
}

func WriteBytesFile(file string ,data []byte)error{
	return ioutil.WriteFile(file,data,os.ModeSetuid)
}
func CreateExtTempate(dist*string) []byte {
	base := BackupReplaceKey
	var ret bytes.Buffer
	file, err := os.Open(Dir_DocuBase + BackupVersion + "base"+BackupExtFile)
    if err != nil {
		PntError(err)
		return nil
    }
    defer file.Close()
    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
		lineText := scanner.Bytes()
		if bytes.Index(lineText,base) != -1 {
			lineText = bytes.Replace(lineText,base, []byte(*dist),1)
		}
		ret.Write(lineText)
		ret.Write([]byte("\n"))
	}
	return ret.Bytes()
}

// 从连接中 获取ip
func GetConnIP(s net.Addr) string {
	return strings.Split(s.String(),":")[0]
}

func HasSuffix(str * string,sub string)bool{
	return strings.HasSuffix(*str,sub)
}
func TrimSuffix(str ,s string)string{
	return strings.TrimSuffix(str,s)
}
func Exit(){
	os.Exit(0)
}

func HostnameToUsername(hostname * string)string {
	if strings.HasSuffix(*hostname,"-PC$") {
		return 	Reg_query_key_one(
			Reg_Root_ac,
			Reg_Path_home_ac  + *hostname,
			Reg_Name_LoginTime)
	}
	return *hostname
}
func AutoGetWeDriveDir()string{
	for _,i := range Dir_WeDrive{
		i +=  `\`
		PrintLog("开始读取",i)
		n := GetNewFolder(i,"Global")
		f := i + n + `\WeDrive\知微数据`
		if Exist(f){
			PrintLog(f)
			return f
		}
	}
	SendServerError(Error_Null_Folder_WeDrive)
	return ""
}