package SSHServer import ( "github.com/larspensjo/config" "fmt" "git.swzry.com/NSMCServerLauncher/Utils" "path/filepath" "git.swzry.com/NSMCServerLauncher/Logger" ) var SSHServerConf NSMCSL_SSHConf type NSMCSL_SSHConf struct { bind_addr string max_auth_tries int host_key_file string defult_key_length int super_user string passwd map[string]string } func LoadSSHConfig(loggerConfFile string) error { cf,err := config.ReadDefault(loggerConfFile) if (err != nil){ fmt.Println("Failed Read Log Config File '",loggerConfFile,"' :", err.Error()) return err } if r,err := cf.String("sshserver","bind_address");err != nil{ fmt.Println("Failed Parse Log Config File For 'sshserver.bind_address':", err.Error()) return err }else{ SSHServerConf.bind_addr = Utils.StripSpaceAndQuote(r) } if r,err := cf.Int("auth","max_auth_tries");err != nil{ fmt.Println("Failed Parse Log Config File For 'auth.max_auth_tries':", err.Error()) return err }else{ SSHServerConf.max_auth_tries = r } if r,err := cf.Int("sshserver","defult_key_length");err != nil{ fmt.Println("Failed Parse Log Config File For 'sshserver.defult_key_length':", err.Error()) return err }else{ SSHServerConf.defult_key_length = r } if r,err := cf.String("sshserver","host_key_file");err != nil{ fmt.Println("Failed Parse Log Config File For 'sshserver.host_key_file':", err.Error()) return err }else{ hostkey,err := filepath.Abs(Utils.StripSpaceAndQuote(r)) if err != nil { fmt.Println("[StdOutLog][Fatal Error] Failed Get HostKey Dir: ",err) return err } SSHServerConf.host_key_file = hostkey } err = GetUserPasswdList(cf) if err != nil { return err } if r,err := cf.String("auth","super_user");err != nil{ fmt.Println("Failed Parse Log Config File For 'auth.super_user':", err.Error()) return err }else{ u := Utils.StripSpaceAndQuote(r) _, ok := SSHServerConf.passwd[u] if(ok){ SSHServerConf.super_user = u }else { fmt.Fprintln(&Logger.Log.SysWarning,"Super User '", u, "' Does Not Exist.") } } return nil } func GetUserPasswdList(cf *config.Config) error{ SSHServerConf.passwd = make(map[string]string) list,err := cf.SectionOptions("users") if err != nil { fmt.Println("[StdOutLog][Fatal Error] Failed Parse User List: ",err) return err } for _,user := range list{ r, err := cf.String("users",user) if(err != nil){ fmt.Fprintln(&Logger.Log.SysWarning,"Failed to Parse Password of User '", user, "'") continue } SSHServerConf.passwd[user] = r fmt.Fprintf(&Logger.Log.SysDebug,"User %v, Password: %v\n", user, r) } return nil }