main.go 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package main
  2. import (
  3. "path"
  4. "fmt"
  5. "os"
  6. "git.swzry.com/NSMCServerLauncher/Logger"
  7. "git.swzry.com/NSMCServerLauncher/Utils"
  8. "git.swzry.com/NSMCServerLauncher/SSHServer"
  9. "git.swzry.com/NSMCServerLauncher/Commands"
  10. )
  11. var CurrentPath string
  12. var MainThreadBlockChan chan byte
  13. func main(){
  14. cp,err := Utils.GetCurrentDirectory()
  15. if(err != nil){
  16. fmt.Println("[StdOutLog][Fatal Error] Failed Get PWD: ",err)
  17. return
  18. }
  19. CurrentPath = cp
  20. if r,err := Utils.PathExists(path.Join(CurrentPath,"sysfiles")); ((!r) || (err != nil)) {
  21. fmt.Println("[StdOutLog][Fatal Error] System File Dir './sysfiles/' Not Exist! ")
  22. return
  23. }
  24. isinit := false
  25. if r,err := Utils.PathExists(path.Join(CurrentPath,"data")); ((!r) || (err != nil)) {
  26. fmt.Println("[StdOutLog][WARNING] Dir './data/' Not Exist! Will Create One.")
  27. isinit = true
  28. if err := os.MkdirAll(path.Join(CurrentPath,"data"),0777);err != nil {
  29. fmt.Println("[StdOutLog][Fatal Error] Failed Create Dir './data/' : ",err)
  30. return
  31. }
  32. }
  33. if r,err := Utils.PathExists(path.Join(CurrentPath,"data","conf")); ((!r) || (err != nil)) {
  34. fmt.Println("[StdOutLog][WARNING] Config Dir './data/conf/' Not Exist! Will Create One.")
  35. isinit = true
  36. if err := os.MkdirAll(path.Join(CurrentPath,"data","conf"),0777);err != nil {
  37. fmt.Println("[StdOutLog][Fatal Error] Failed Create Dir './data/conf/' : ",err)
  38. return
  39. }
  40. }
  41. if r,err := Utils.PathExists(path.Join(CurrentPath,"data","conf", "logger.conf")); ((!r) || (err != nil)) {
  42. fmt.Println("[StdOutLog][WARNING] Config File './data/conf/logger.conf' Not Exist! Will Create A Template Config File..")
  43. isinit = true
  44. if _,err := Utils.CopyFile(path.Join(CurrentPath,"data","conf", "logger.conf"),path.Join(CurrentPath,"sysfiles","conftpl", "logger.conf"));err != nil {
  45. fmt.Println("[StdOutLog][Fatal Error] Failed Copy Template Config File './data/conf/logger.conf' : ",err)
  46. return
  47. }
  48. }
  49. if r,err := Utils.PathExists(path.Join(CurrentPath,"data","conf", "sshd.conf")); ((!r) || (err != nil)) {
  50. fmt.Println("[StdOutLog][WARNING] Config File './data/conf/sshd.conf' Not Exist! Will Create A Template Config File..")
  51. isinit = true
  52. if _,err := Utils.CopyFile(path.Join(CurrentPath,"data","conf", "sshd.conf"),path.Join(CurrentPath,"sysfiles","conftpl", "sshd.conf"));err != nil {
  53. fmt.Println("[StdOutLog][Fatal Error] Failed Copy Template Config File './data/conf/sshd.conf' : ",err)
  54. return
  55. }
  56. }
  57. // TODO: Other Config File Process Code Here
  58. if(isinit){
  59. fmt.Println("[StdOutLog][WARNING] At this time, we had created template config files for you, you should edit them and restart this server..")
  60. fmt.Println("[StdOutLog][INFO] Server Exit.")
  61. return
  62. }
  63. if Logger.LoadLoggerConfig(path.Join(CurrentPath,"data","conf", "logger.conf")) != nil{
  64. return
  65. }
  66. if Logger.InitLogger() != nil {
  67. return
  68. }
  69. fmt.Fprintln(&Logger.Log.SysInfo,"NSMC Server Launcher System Start.")
  70. if err := Utils.MkDirIfNotExist(path.Join(CurrentPath,"data","keys")); err != nil {
  71. fmt.Println("[StdOutLog][Fatal Error] Failed Create Dir '",path.Join(CurrentPath,"data","keys"),"' : ",err)
  72. return
  73. }
  74. if SSHServer.LoadSSHConfig(path.Join(CurrentPath,"data","conf", "sshd.conf")) != nil{
  75. return
  76. }
  77. fmt.Fprintln(&Logger.Log.SysInfo,"Regist Commands....")
  78. Commands.RegistAllCommands()
  79. fmt.Fprintln(&Logger.Log.SysInfo,"Start SSH Server...")
  80. go SSHServer.StartSSHServer(MainThreadBlockChan)
  81. <-MainThreadBlockChan
  82. }