SSHConfParser.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package SSHServer
  2. import (
  3. "github.com/larspensjo/config"
  4. "fmt"
  5. "git.swzry.com/NSMCServerLauncher/Utils"
  6. "path/filepath"
  7. "git.swzry.com/NSMCServerLauncher/Logger"
  8. )
  9. var SSHServerConf NSMCSL_SSHConf
  10. type NSMCSL_SSHConf struct {
  11. bind_addr string
  12. max_auth_tries int
  13. host_key_file string
  14. defult_key_length int
  15. super_user string
  16. passwd map[string]string
  17. }
  18. func LoadSSHConfig(loggerConfFile string) error {
  19. cf,err := config.ReadDefault(loggerConfFile)
  20. if (err != nil){
  21. fmt.Println("Failed Read Log Config File '",loggerConfFile,"' :", err.Error())
  22. return err
  23. }
  24. if r,err := cf.String("sshserver","bind_address");err != nil{
  25. fmt.Println("Failed Parse Log Config File For 'sshserver.bind_address':", err.Error())
  26. return err
  27. }else{
  28. SSHServerConf.bind_addr = Utils.StripSpaceAndQuote(r)
  29. }
  30. if r,err := cf.Int("auth","max_auth_tries");err != nil{
  31. fmt.Println("Failed Parse Log Config File For 'auth.max_auth_tries':", err.Error())
  32. return err
  33. }else{
  34. SSHServerConf.max_auth_tries = r
  35. }
  36. if r,err := cf.Int("sshserver","defult_key_length");err != nil{
  37. fmt.Println("Failed Parse Log Config File For 'sshserver.defult_key_length':", err.Error())
  38. return err
  39. }else{
  40. SSHServerConf.defult_key_length = r
  41. }
  42. if r,err := cf.String("sshserver","host_key_file");err != nil{
  43. fmt.Println("Failed Parse Log Config File For 'sshserver.host_key_file':", err.Error())
  44. return err
  45. }else{
  46. hostkey,err := filepath.Abs(Utils.StripSpaceAndQuote(r))
  47. if err != nil {
  48. fmt.Println("[StdOutLog][Fatal Error] Failed Get HostKey Dir: ",err)
  49. return err
  50. }
  51. SSHServerConf.host_key_file = hostkey
  52. }
  53. err = GetUserPasswdList(cf)
  54. if err != nil {
  55. return err
  56. }
  57. if r,err := cf.String("auth","super_user");err != nil{
  58. fmt.Println("Failed Parse Log Config File For 'auth.super_user':", err.Error())
  59. return err
  60. }else{
  61. u := Utils.StripSpaceAndQuote(r)
  62. _, ok := SSHServerConf.passwd[u]
  63. if(ok){
  64. SSHServerConf.super_user = u
  65. }else {
  66. fmt.Fprintln(&Logger.Log.SysWarning,"Super User '", u, "' Does Not Exist.")
  67. }
  68. }
  69. return nil
  70. }
  71. func GetUserPasswdList(cf *config.Config) error{
  72. SSHServerConf.passwd = make(map[string]string)
  73. list,err := cf.SectionOptions("users")
  74. if err != nil {
  75. fmt.Println("[StdOutLog][Fatal Error] Failed Parse User List: ",err)
  76. return err
  77. }
  78. for _,user := range list{
  79. r, err := cf.String("users",user)
  80. if(err != nil){
  81. fmt.Fprintln(&Logger.Log.SysWarning,"Failed to Parse Password of User '", user, "'")
  82. continue
  83. }
  84. SSHServerConf.passwd[user] = r
  85. fmt.Fprintf(&Logger.Log.SysDebug,"User %v, Password: %v\n", user, r)
  86. }
  87. return nil
  88. }