v2.0.0.0000
This commit is contained in:
171
xteve.go
Normal file
171
xteve.go
Normal file
@@ -0,0 +1,171 @@
|
||||
// Copyright 2019 marmei. All rights reserved.
|
||||
// Use of this source code is governed by a MIT license that can be found in the
|
||||
// LICENSE file.
|
||||
// GitHub: https://github.com/xteve-project/xTeVe
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"./src"
|
||||
)
|
||||
|
||||
// GitHubStruct : GitHub Account. Über diesen Account werden die Updates veröffentlicht
|
||||
type GitHubStruct struct {
|
||||
Branch string
|
||||
Repo string
|
||||
Update bool
|
||||
User string
|
||||
}
|
||||
|
||||
// GitHub : GitHub Account
|
||||
// If you want to fork this project, enter your Github account here. This prevents a newer version of xTeVe from updating your version.
|
||||
var GitHub = GitHubStruct{Branch: "master", User: "xteve-project", Repo: "xTeVe-Downloads", Update: true}
|
||||
|
||||
/*
|
||||
Branch: GitHub Branch
|
||||
User: GitHub Username
|
||||
Repo: GitHub Repository
|
||||
Update: Automatic updates from the GitHub repository [true|false]
|
||||
*/
|
||||
|
||||
// Name : Programname
|
||||
const Name = "xTeVe"
|
||||
|
||||
// Version : Version, die Build Nummer wird in der main func geparst.
|
||||
const Version = "2.0.0.0000"
|
||||
|
||||
// APIVersion : API Version
|
||||
const APIVersion = "1.1.0"
|
||||
|
||||
// Dev : Aktiviert den Entwicklungsmodus. Für den Webserver werden dann die lokalen Dateien verwendet.
|
||||
const Dev = false
|
||||
|
||||
var homeDirectory = fmt.Sprintf("%s%s.%s%s", src.GetUserHomeDirectory(), string(os.PathSeparator), strings.ToLower(Name), string(os.PathSeparator))
|
||||
var samplePath = fmt.Sprintf("%spath%sto%sxteve%s", string(os.PathSeparator), string(os.PathSeparator), string(os.PathSeparator), string(os.PathSeparator))
|
||||
|
||||
var configFolder = flag.String("config", "", ": Config Folder ["+samplePath+"] (default: "+homeDirectory+")")
|
||||
var port = flag.String("port", "", ": Server port [34400] (default: 34400)")
|
||||
|
||||
var gitBranch = flag.String("branch", "", ": Git Branch [master|beta] (default: master)")
|
||||
var debug = flag.Int("debug", 0, ": Debug level [0 - 3] (default: 0)")
|
||||
var h = flag.Bool("h", false, ": Show help")
|
||||
|
||||
func main() {
|
||||
|
||||
// Build-Nummer von der Versionsnummer trennen
|
||||
var build = strings.Split(Version, ".")
|
||||
|
||||
var system = &src.System
|
||||
system.APIVersion = APIVersion
|
||||
system.Branch = GitHub.Branch
|
||||
system.Build = build[len(build)-1:][0]
|
||||
system.Dev = Dev
|
||||
system.GitHub = GitHub
|
||||
system.Name = Name
|
||||
system.Version = strings.Join(build[0:len(build)-1], ".")
|
||||
|
||||
// Panic !!!
|
||||
defer func() {
|
||||
|
||||
if r := recover(); r != nil {
|
||||
|
||||
fmt.Println()
|
||||
fmt.Println("* * * * * FATAL ERROR * * * * *")
|
||||
fmt.Println("OS: ", runtime.GOOS)
|
||||
fmt.Println("Arch:", runtime.GOARCH)
|
||||
fmt.Println("Err: ", r)
|
||||
fmt.Println()
|
||||
|
||||
pc := make([]uintptr, 20)
|
||||
runtime.Callers(2, pc)
|
||||
|
||||
for i := range pc {
|
||||
|
||||
if runtime.FuncForPC(pc[i]) != nil {
|
||||
|
||||
f := runtime.FuncForPC(pc[i])
|
||||
file, line := f.FileLine(pc[i])
|
||||
|
||||
if string(file)[0:1] != "?" {
|
||||
fmt.Printf("%s:%d %s\n", filepath.Base(file), line, f.Name())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fmt.Println()
|
||||
fmt.Println("* * * * * * * * * * * * * * * *")
|
||||
|
||||
}
|
||||
|
||||
}()
|
||||
|
||||
flag.Parse()
|
||||
|
||||
if *h {
|
||||
flag.Usage()
|
||||
return
|
||||
}
|
||||
|
||||
// Webserver Port
|
||||
if len(*port) > 0 {
|
||||
system.Flag.Port = *port
|
||||
}
|
||||
|
||||
// Branch
|
||||
system.Flag.Branch = *gitBranch
|
||||
if len(system.Flag.Branch) > 0 {
|
||||
fmt.Println("Git Branch is now:", system.Flag.Branch)
|
||||
}
|
||||
|
||||
// Debug Level
|
||||
system.Flag.Debug = *debug
|
||||
if system.Flag.Debug > 3 {
|
||||
flag.Usage()
|
||||
return
|
||||
}
|
||||
|
||||
// Speicherort für die Konfigurationsdateien
|
||||
if len(*configFolder) > 0 {
|
||||
system.Folder.Config = *configFolder
|
||||
}
|
||||
|
||||
err := src.Init()
|
||||
if err != nil {
|
||||
src.ShowError(err, 0)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
err = src.BinaryUpdate()
|
||||
if err != nil {
|
||||
src.ShowError(err, 0)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
err = src.StartSystem(false)
|
||||
if err != nil {
|
||||
src.ShowError(err, 0)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
err = src.InitMaintenance()
|
||||
if err != nil {
|
||||
src.ShowError(err, 0)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
err = src.StartWebserver()
|
||||
if err != nil {
|
||||
src.ShowError(err, 0)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user