123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- 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
- }
|