v2.0.0.0000

This commit is contained in:
marmei
2019-08-02 20:12:09 +02:00
parent e396af91cb
commit e001b06b62
85 changed files with 22786 additions and 2 deletions

356
src/toolchain.go Normal file
View File

@@ -0,0 +1,356 @@
package src
import (
"bytes"
"crypto/md5"
"crypto/rand"
"encoding/hex"
"encoding/json"
"fmt"
"io/ioutil"
"net"
"os"
"os/user"
"path/filepath"
"text/template"
)
// --- System Tools ---
// Prüft ob der Ordner existiert, falls nicht, wir der Ordner erstellt
func checkFolder(path string) (err error) {
var debug string
_, err = os.Stat(filepath.Dir(path))
if os.IsNotExist(err) {
// Ordner existiert nicht, wird jetzt erstellt
err = os.MkdirAll(getPlatformPath(path), 0755)
if err == nil {
debug = fmt.Sprintf("Create Folder:%s", path)
showDebug(debug, 1)
} else {
return err
}
return nil
}
return nil
}
// Prüft ob die datei im Dateisystem existiert
func checkFile(filename string) (err error) {
var file = getPlatformFile(filename)
if _, err = os.Stat(file); os.IsNotExist(err) {
return
}
return
}
// GetUserHomeDirectory : Benutzer Homer Verzeichnis
func GetUserHomeDirectory() (userHomeDirectory string) {
usr, err := user.Current()
if err != nil {
for _, name := range []string{"HOME", "USERPROFILE"} {
if dir := os.Getenv(name); dir != "" {
userHomeDirectory = dir
break
}
}
} else {
userHomeDirectory = usr.HomeDir
}
return
}
func checkFilePermission(dir string) (err error) {
var filename = dir + "permission.test"
err = ioutil.WriteFile(filename, []byte(""), 0644)
if err == nil {
err = os.RemoveAll(filename)
}
return
}
// Ordnerpfad für das laufende OS generieren
func getPlatformPath(path string) string {
return filepath.Dir(path) + string(os.PathSeparator)
}
// Dateipfad für das laufende OS generieren
func getPlatformFile(filename string) (osFilePath string) {
path, file := filepath.Split(filename)
var newPath = filepath.Dir(path)
osFilePath = newPath + string(os.PathSeparator) + file
return
}
// Dateinamen aus dem Dateipfad ausgeben
func getFilenameFromPath(path string) (file string) {
return filepath.Base(path)
}
// Nicht mehr verwendete Systemdaten löschen
func removeOldSystemData() {
// Temporären Ordner löschen
os.RemoveAll(System.Folder.Temp)
}
//
func removeChildItems(dir string) error {
files, err := filepath.Glob(filepath.Join(dir, "*"))
if err != nil {
return err
}
for _, file := range files {
err = os.RemoveAll(file)
if err != nil {
return err
}
}
return nil
}
// JSON
func mapToJSON(tmpMap interface{}) string {
jsonString, err := json.MarshalIndent(tmpMap, "", " ")
if err != nil {
return "{}"
}
return string(jsonString)
}
func jsonToMap(content string) map[string]interface{} {
var tmpMap = make(map[string]interface{})
json.Unmarshal([]byte(content), &tmpMap)
return (tmpMap)
}
func jsonToMapInt64(content string) map[int64]interface{} {
var tmpMap = make(map[int64]interface{})
json.Unmarshal([]byte(content), &tmpMap)
return (tmpMap)
}
func jsonToInterface(content string) (tmpMap interface{}, err error) {
err = json.Unmarshal([]byte(content), &tmpMap)
return
}
func saveMapToJSONFile(file string, tmpMap interface{}) error {
var filename = getPlatformFile(file)
jsonString, err := json.MarshalIndent(tmpMap, "", " ")
if err != nil {
return err
}
err = ioutil.WriteFile(filename, []byte(jsonString), 0644)
if err != nil {
return err
}
return nil
}
func loadJSONFileToMap(file string) (tmpMap map[string]interface{}, err error) {
f, err := os.Open(getPlatformFile(file))
defer f.Close()
content, err := ioutil.ReadAll(f)
if err == nil {
err = json.Unmarshal([]byte(content), &tmpMap)
}
f.Close()
return
}
// Binary
func readByteFromFile(file string) (content []byte, err error) {
f, err := os.Open(getPlatformFile(file))
defer f.Close()
content, err = ioutil.ReadAll(f)
f.Close()
return
}
func writeByteToFile(file string, data []byte) (err error) {
var filename = getPlatformFile(file)
err = ioutil.WriteFile(filename, data, 0644)
return
}
func readStringFromFile(file string) (str string, err error) {
var content []byte
var filename = getPlatformFile(file)
err = checkFile(filename)
if err != nil {
return
}
content, err = ioutil.ReadFile(filename)
if err != nil {
ShowError(err, 0)
return
}
str = string(content)
return
}
// Netzwerk
func resolveHostIP() (err error) {
netInterfaceAddresses, err := net.InterfaceAddrs()
if err != nil {
return
}
for _, netInterfaceAddress := range netInterfaceAddresses {
networkIP, ok := netInterfaceAddress.(*net.IPNet)
System.IPAddressesList = append(System.IPAddressesList, networkIP.IP.String())
if ok {
var ip = networkIP.IP.String()
if networkIP.IP.To4() != nil {
System.IPAddressesV4 = append(System.IPAddressesV4, ip)
if !networkIP.IP.IsLoopback() && ip[0:7] != "169.254" {
System.IPAddress = ip
}
} else {
System.IPAddressesV6 = append(System.IPAddressesV6, ip)
}
}
}
System.Hostname, err = os.Hostname()
if err != nil {
return
}
return
}
// Sonstiges
func randomString(n int) string {
const alphanum = "AB1CD2EF3GH4IJ5KL6MN7OP8QR9ST0UVWXYZ"
var bytes = make([]byte, n)
rand.Read(bytes)
for i, b := range bytes {
bytes[i] = alphanum[b%byte(len(alphanum))]
}
return string(bytes)
}
func parseTemplate(content string, tmpMap map[string]interface{}) (result string) {
t := template.Must(template.New("template").Parse(content))
var tpl bytes.Buffer
if err := t.Execute(&tpl, tmpMap); err != nil {
ShowError(err, 0)
}
result = tpl.String()
return
}
func indexOfString(element string, data []string) int {
for k, v := range data {
if element == v {
return k
}
}
return -1
}
func indexOfFloat64(element float64, data []float64) int {
for k, v := range data {
if element == v {
return (k)
}
}
return -1
}
func indexOfInt(element int, data []int) int {
for k, v := range data {
if element == v {
return (k)
}
}
return -1
}
func getMD5(str string) string {
md5Hasher := md5.New()
md5Hasher.Write([]byte(str))
return hex.EncodeToString(md5Hasher.Sum(nil))
}