|
package main
import (
"path"
"fmt"
"os"
"git.swzry.com/NSMCServerLauncher/Logger"
"git.swzry.com/NSMCServerLauncher/Utils"
"git.swzry.com/NSMCServerLauncher/SSHServer"
"git.swzry.com/NSMCServerLauncher/Commands"
)
var CurrentPath string
var MainThreadBlockChan chan byte
func main(){
cp,err := Utils.GetCurrentDirectory()
if(err != nil){
fmt.Println("[StdOutLog][Fatal Error] Failed Get PWD: ",err)
return
}
CurrentPath = cp
if r,err := Utils.PathExists(path.Join(CurrentPath,"sysfiles")); ((!r) || (err != nil)) {
fmt.Println("[StdOutLog][Fatal Error] System File Dir './sysfiles/' Not Exist! ")
return
}
isinit := false
if r,err := Utils.PathExists(path.Join(CurrentPath,"data")); ((!r) || (err != nil)) {
fmt.Println("[StdOutLog][WARNING] Dir './data/' Not Exist! Will Create One.")
isinit = true
if err := os.MkdirAll(path.Join(CurrentPath,"data"),0777);err != nil {
fmt.Println("[StdOutLog][Fatal Error] Failed Create Dir './data/' : ",err)
return
}
}
if r,err := Utils.PathExists(path.Join(CurrentPath,"data","conf")); ((!r) || (err != nil)) {
fmt.Println("[StdOutLog][WARNING] Config Dir './data/conf/' Not Exist! Will Create One.")
isinit = true
if err := os.MkdirAll(path.Join(CurrentPath,"data","conf"),0777);err != nil {
fmt.Println("[StdOutLog][Fatal Error] Failed Create Dir './data/conf/' : ",err)
return
}
}
if r,err := Utils.PathExists(path.Join(CurrentPath,"data","conf", "logger.conf")); ((!r) || (err != nil)) {
fmt.Println("[StdOutLog][WARNING] Config File './data/conf/logger.conf' Not Exist! Will Create A Template Config File..")
isinit = true
if _,err := Utils.CopyFile(path.Join(CurrentPath,"data","conf", "logger.conf"),path.Join(CurrentPath,"sysfiles","conftpl", "logger.conf"));err != nil {
fmt.Println("[StdOutLog][Fatal Error] Failed Copy Template Config File './data/conf/logger.conf' : ",err)
return
}
}
if r,err := Utils.PathExists(path.Join(CurrentPath,"data","conf", "sshd.conf")); ((!r) || (err != nil)) {
fmt.Println("[StdOutLog][WARNING] Config File './data/conf/sshd.conf' Not Exist! Will Create A Template Config File..")
isinit = true
if _,err := Utils.CopyFile(path.Join(CurrentPath,"data","conf", "sshd.conf"),path.Join(CurrentPath,"sysfiles","conftpl", "sshd.conf"));err != nil {
fmt.Println("[StdOutLog][Fatal Error] Failed Copy Template Config File './data/conf/sshd.conf' : ",err)
return
}
}
// TODO: Other Config File Process Code Here
if(isinit){
fmt.Println("[StdOutLog][WARNING] At this time, we had created template config files for you, you should edit them and restart this server..")
fmt.Println("[StdOutLog][INFO] Server Exit.")
return
}
if Logger.LoadLoggerConfig(path.Join(CurrentPath,"data","conf", "logger.conf")) != nil{
return
}
if Logger.InitLogger() != nil {
return
}
fmt.Fprintln(&Logger.Log.SysInfo,"NSMC Server Launcher System Start.")
if err := Utils.MkDirIfNotExist(path.Join(CurrentPath,"data","keys")); err != nil {
fmt.Println("[StdOutLog][Fatal Error] Failed Create Dir '",path.Join(CurrentPath,"data","keys"),"' : ",err)
return
}
if SSHServer.LoadSSHConfig(path.Join(CurrentPath,"data","conf", "sshd.conf")) != nil{
return
}
fmt.Fprintln(&Logger.Log.SysInfo,"Regist Commands....")
Commands.RegistAllCommands()
fmt.Fprintln(&Logger.Log.SysInfo,"Start SSH Server...")
go SSHServer.StartSSHServer(MainThreadBlockChan)
<-MainThreadBlockChan
}
|