From 95c195baf42e8a74680a74acdc20c00bab7660eb Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 18 Jun 2016 06:19:16 -0400 Subject: go back to using plain strings --- go/parabola_hackers/nslcd_backend/db_config.go | 2 +- go/parabola_hackers/nslcd_backend/db_group.go | 35 +++++++++------------- go/parabola_hackers/nslcd_backend/db_pam.go | 40 +++++++++++++------------- go/parabola_hackers/nslcd_backend/db_passwd.go | 8 +++--- go/parabola_hackers/nslcd_backend/db_shadow.go | 2 +- go/parabola_hackers/nslcd_backend/hackers.go | 9 +++--- go/parabola_hackers/users.go.in | 12 ++++---- go/parabola_hackers/util.go | 2 +- 8 files changed, 50 insertions(+), 60 deletions(-) (limited to 'go/parabola_hackers') diff --git a/go/parabola_hackers/nslcd_backend/db_config.go b/go/parabola_hackers/nslcd_backend/db_config.go index 281b058..e78643b 100644 --- a/go/parabola_hackers/nslcd_backend/db_config.go +++ b/go/parabola_hackers/nslcd_backend/db_config.go @@ -32,7 +32,7 @@ func (o *Hackers) Config_Get(cred s.Ucred, req p.Request_Config_Get) <-chan p.Co switch req.Key { case p.NSLCD_CONFIG_PAM_PASSWORD_PROHIBIT_MESSAGE: if o.cfg.Pam_password_prohibit_message != "" { - ret <- p.Config{Value: p.String(o.cfg.Pam_password_prohibit_message)} + ret <- p.Config{Value: o.cfg.Pam_password_prohibit_message} } } }() diff --git a/go/parabola_hackers/nslcd_backend/db_group.go b/go/parabola_hackers/nslcd_backend/db_group.go index caced21..18e54b1 100644 --- a/go/parabola_hackers/nslcd_backend/db_group.go +++ b/go/parabola_hackers/nslcd_backend/db_group.go @@ -17,21 +17,12 @@ package hackers_nslcd_backend import ( + "parabola_hackers" s "syscall" p "lukeshu.com/git/go/libnslcd.git/proto" ) -func set2list(set map[string]bool) []p.String { - list := make([]p.String, len(set)) - i := uint(0) - for item, _ := range set { - list[i] = p.String(item) - i++ - } - return list -} - func (o *Hackers) groupByName(name string, users bool) p.Group { members_set, found := o.groups[name] if !found { @@ -41,15 +32,15 @@ func (o *Hackers) groupByName(name string, users bool) p.Group { if gid < 0 { return p.Group{ID: -1} } - var members_list []p.String + var members_list []string if users { - members_list = set2list(members_set) + members_list = parabola_hackers.Set2list(members_set) } else { - members_list = make([]p.String, 0) + members_list = make([]string, 0) } return p.Group{ - Name: p.String(name), - PwHash: p.String("x"), + Name: name, + PwHash: "x", ID: gid, Members: members_list, } @@ -64,15 +55,15 @@ func (o *Hackers) groupByGid(gid int32, users bool) p.Group { if !found { return p.Group{ID: -1} } - var members_list []p.String + var members_list []string if users { - members_list = set2list(members_set) + members_list = parabola_hackers.Set2list(members_set) } else { - members_list = make([]p.String, 0) + members_list = make([]string, 0) } return p.Group{ - Name: p.String(name), - PwHash: p.String("x"), + Name: name, + PwHash: "x", ID: gid, Members: members_list, } @@ -85,7 +76,7 @@ func (o *Hackers) Group_ByName(cred s.Ucred, req p.Request_Group_ByName) <-chan defer o.lock.RUnlock() defer close(ret) - group := o.groupByName(string(req.Name), true) + group := o.groupByName(req.Name, true) if group.ID < 0 { return } @@ -118,7 +109,7 @@ func (o *Hackers) Group_ByMember(cred s.Ucred, req p.Request_Group_ByMember) <-c defer o.lock.RUnlock() defer close(ret) - uid := o.name2uid(string(req.Member)) + uid := o.name2uid(req.Member) if uid < 0 { return } diff --git a/go/parabola_hackers/nslcd_backend/db_pam.go b/go/parabola_hackers/nslcd_backend/db_pam.go index a0c390f..f770cc1 100644 --- a/go/parabola_hackers/nslcd_backend/db_pam.go +++ b/go/parabola_hackers/nslcd_backend/db_pam.go @@ -27,12 +27,12 @@ import ( "lukeshu.com/git/go/libsystemd.git/sd_daemon/logger" ) -func checkPassword(password p.String, hash p.String) bool { - return crypt.Crypt(string(password), string(hash)) == string(hash) +func checkPassword(password string, hash string) bool { + return crypt.Crypt(password, hash) == hash } -func hashPassword(newPassword p.String, oldHash p.String) p.String { - salt := string(oldHash) +func hashPassword(newPassword string, oldHash string) string { + salt := oldHash if salt == "!" { str, err := parabola_hackers.RandomString(crypt.SaltAlphabet, 8) if err != nil { @@ -41,7 +41,7 @@ func hashPassword(newPassword p.String, oldHash p.String) p.String { } salt = "$6$" + str + "$" } - return p.String(crypt.Crypt(string(newPassword), salt)) + return crypt.Crypt(newPassword, salt) } func dirExists(path string) bool { @@ -62,14 +62,14 @@ func (o *Hackers) PAM_Authentication(cred s.Ucred, req p.Request_PAM_Authenticat if len(req.UserName) == 0 && len(req.Password) == 0 && cred.Uid == 0 { ret <- p.PAM_Authentication{ AuthenticationResult: p.NSLCD_PAM_SUCCESS, - UserName: p.String(""), + UserName: "", AuthorizationResult: p.NSLCD_PAM_SUCCESS, - AuthorizationError: p.String(""), + AuthorizationError: "", } return } - uid := o.name2uid(string(req.UserName)) + uid := o.name2uid(req.UserName) if uid < 0 { return } @@ -77,9 +77,9 @@ func (o *Hackers) PAM_Authentication(cred s.Ucred, req p.Request_PAM_Authenticat user := o.users[uid] obj := p.PAM_Authentication{ AuthenticationResult: p.NSLCD_PAM_AUTH_ERR, - UserName: p.String(""), + UserName: "", AuthorizationResult: p.NSLCD_PAM_AUTH_ERR, - AuthorizationError: p.String(""), + AuthorizationError: "", } if checkPassword(req.Password, user.Passwd.PwHash) { obj.AuthenticationResult = p.NSLCD_PAM_SUCCESS @@ -98,13 +98,13 @@ func (o *Hackers) PAM_Authorization(cred s.Ucred, req p.Request_PAM_Authorizatio defer o.lock.RUnlock() defer close(ret) - uid := o.name2uid(string(req.UserName)) + uid := o.name2uid(req.UserName) if uid < 0 { return } ret <- p.PAM_Authorization{ Result: p.NSLCD_PAM_SUCCESS, - Error: p.String(""), + Error: "", } }() return ret @@ -121,7 +121,7 @@ func (o *Hackers) PAM_SessionOpen(cred s.Ucred, req p.Request_PAM_SessionOpen) < if err != nil { return } - ret <- p.PAM_SessionOpen{SessionID: p.String(sessionid)} + ret <- p.PAM_SessionOpen{SessionID: sessionid} }() return ret } @@ -139,7 +139,7 @@ func (o *Hackers) PAM_PwMod(cred s.Ucred, req p.Request_PAM_PwMod) <-chan p.PAM_ defer close(ret) defer o.lock.Unlock() - uid := o.name2uid(string(req.UserName)) + uid := o.name2uid(req.UserName) if uid < 0 { return } @@ -152,13 +152,13 @@ func (o *Hackers) PAM_PwMod(cred s.Ucred, req p.Request_PAM_PwMod) <-chan p.PAM_ // special hack: if the old password is not // set, but the home directory exists, let the // user set their password - if string(user.Passwd.PwHash) == "!" && dirExists(string(user.Passwd.HomeDir)) { + if user.Passwd.PwHash == "!" && dirExists(user.Passwd.HomeDir) { goto update } if !checkPassword(req.OldPassword, user.Passwd.PwHash) { ret <- p.PAM_PwMod{ Result: p.NSLCD_PAM_PERM_DENIED, - Error: p.String(fmt.Sprintf("password change failed: %s", "Old password did not match")), + Error: fmt.Sprintf("password change failed: %s", "Old password did not match"), } return } @@ -166,7 +166,7 @@ func (o *Hackers) PAM_PwMod(cred s.Ucred, req p.Request_PAM_PwMod) <-chan p.PAM_ if len(req.NewPassword) == 0 { ret <- p.PAM_PwMod{ Result: p.NSLCD_PAM_PERM_DENIED, - Error: p.String("password cannot be empty"), + Error: "password cannot be empty", } return } @@ -181,9 +181,9 @@ func (o *Hackers) PAM_PwMod(cred s.Ucred, req p.Request_PAM_PwMod) <-chan p.PAM_ // Update the PwHash on disk passwords := make(map[string]string, len(o.users)) for _, ouser := range o.users { - passwords[string(ouser.Passwd.Name)] = string(ouser.Passwd.PwHash) + passwords[ouser.Passwd.Name] = ouser.Passwd.PwHash } - passwords[string(user.Passwd.Name)] = string(user.Passwd.PwHash) + passwords[user.Passwd.Name] = user.Passwd.PwHash err := parabola_hackers.SaveAllPasswords(passwords) if err != nil { logger.Err("Writing passwords to disk: %v", err) @@ -194,7 +194,7 @@ func (o *Hackers) PAM_PwMod(cred s.Ucred, req p.Request_PAM_PwMod) <-chan p.PAM_ o.users[uid] = user ret <- p.PAM_PwMod{ Result: p.NSLCD_PAM_SUCCESS, - Error: p.String(""), + Error: "", } }() return ret diff --git a/go/parabola_hackers/nslcd_backend/db_passwd.go b/go/parabola_hackers/nslcd_backend/db_passwd.go index 7bac808..3f32ddd 100644 --- a/go/parabola_hackers/nslcd_backend/db_passwd.go +++ b/go/parabola_hackers/nslcd_backend/db_passwd.go @@ -36,12 +36,12 @@ func (o *Hackers) Passwd_ByName(cred s.Ucred, req p.Request_Passwd_ByName) <-cha defer o.lock.RUnlock() defer close(ret) - uid := o.name2uid(string(req.Name)) + uid := o.name2uid(req.Name) if uid < 0 { return } passwd := o.users[uid].Passwd - passwd.PwHash = p.String("x") // only put actual hashes in the Shadow DB + passwd.PwHash = "x" // only put actual hashes in the Shadow DB ret <- passwd }() return ret @@ -59,7 +59,7 @@ func (o *Hackers) Passwd_ByUID(cred s.Ucred, req p.Request_Passwd_ByUID) <-chan return } passwd := user.Passwd - passwd.PwHash = p.String("x") // only put actual hashes in the Shadow DB + passwd.PwHash = "x" // only put actual hashes in the Shadow DB ret <- passwd }() return ret @@ -74,7 +74,7 @@ func (o *Hackers) Passwd_All(cred s.Ucred, req p.Request_Passwd_All) <-chan p.Pa for _, user := range o.users { passwd := user.Passwd - passwd.PwHash = p.String("x") // only put actual hashes in the Shadow DB + passwd.PwHash = "x" // only put actual hashes in the Shadow DB ret <- passwd } }() diff --git a/go/parabola_hackers/nslcd_backend/db_shadow.go b/go/parabola_hackers/nslcd_backend/db_shadow.go index db114d8..abfff28 100644 --- a/go/parabola_hackers/nslcd_backend/db_shadow.go +++ b/go/parabola_hackers/nslcd_backend/db_shadow.go @@ -32,7 +32,7 @@ func (o *Hackers) Shadow_ByName(cred s.Ucred, req p.Request_Shadow_ByName) <-cha if cred.Uid != 0 { return } - uid := o.name2uid(string(req.Name)) + uid := o.name2uid(req.Name) user := o.users[uid] ret <- p.Shadow{ Name: user.Passwd.Name, diff --git a/go/parabola_hackers/nslcd_backend/hackers.go b/go/parabola_hackers/nslcd_backend/hackers.go index c436824..bb03862 100644 --- a/go/parabola_hackers/nslcd_backend/hackers.go +++ b/go/parabola_hackers/nslcd_backend/hackers.go @@ -22,7 +22,6 @@ import ( "parabola_hackers" "sync" - p "lukeshu.com/git/go/libnslcd.git/proto" nslcd_server "lukeshu.com/git/go/libnslcd.git/proto/server" nslcd_systemd "lukeshu.com/git/go/libnslcd.git/systemd" "lukeshu.com/git/go/libsystemd.git/sd_daemon/logger" @@ -91,14 +90,14 @@ func (o *Hackers) Reload() error { o.groups = make(map[string]map[string]bool) for uid, user := range o.users { user.Passwd.GID = usersGid - hash, hasHash := passwords[string(user.Passwd.Name)] + hash, hasHash := passwords[user.Passwd.Name] if !hasHash { hash = "!" } - user.Passwd.PwHash = p.String(hash) + user.Passwd.PwHash = hash o.users[uid] = user for _, groupname := range user.Groups { - o.add_user_to_group(string(user.Passwd.Name), groupname) + o.add_user_to_group(user.Passwd.Name, groupname) } } return nil @@ -106,7 +105,7 @@ func (o *Hackers) Reload() error { func (o *Hackers) name2uid(name string) int32 { for uid, data := range o.users { - if string(data.Passwd.Name) == name { + if data.Passwd.Name == name { return uid } } diff --git a/go/parabola_hackers/users.go.in b/go/parabola_hackers/users.go.in index edd8a59..e54de01 100644 --- a/go/parabola_hackers/users.go.in +++ b/go/parabola_hackers/users.go.in @@ -89,8 +89,8 @@ func parseUser(_data interface{}) (ret User, err error) { } else if str, isTyp := iface.(string); !isTyp { errs = append(errs, "\"username\" is not a string") } else { - ret.Passwd.Name = p.String(str) - ret.Passwd.HomeDir = p.String("/home/" + str) + ret.Passwd.Name = str + ret.Passwd.HomeDir = "/home/" + str } if iface, isSet := data["fullname"]; !isSet { @@ -98,7 +98,7 @@ func parseUser(_data interface{}) (ret User, err error) { } else if str, isTyp := iface.(string); !isTyp { errs = append(errs, "\"fullname\" is not a string") } else { - ret.Passwd.GECOS = p.String(str) + ret.Passwd.GECOS = str } if iface, isSet := data["shell"]; !isSet { @@ -106,7 +106,7 @@ func parseUser(_data interface{}) (ret User, err error) { } else if str, isTyp := iface.(string); !isTyp { errs = append(errs, "\"shell\" is not a string") } else { - ret.Passwd.Shell = p.String(str) + ret.Passwd.Shell = str } if iface, isSet := data["groups"]; !isSet { @@ -126,7 +126,7 @@ func parseUser(_data interface{}) (ret User, err error) { } } if !e { - ret.Groups = set2list(groups) + ret.Groups = Set2list(groups) } } } @@ -134,7 +134,7 @@ func parseUser(_data interface{}) (ret User, err error) { err = &yaml.TypeError{Errors: errs} } - ret.Passwd.PwHash = p.String("x") // look in shadow for the password hash + ret.Passwd.PwHash = string("x") // look in shadow for the password hash ret.Passwd.GID = -1 return diff --git a/go/parabola_hackers/util.go b/go/parabola_hackers/util.go index 8dd9374..9a241db 100644 --- a/go/parabola_hackers/util.go +++ b/go/parabola_hackers/util.go @@ -36,7 +36,7 @@ func RandomString(alphabet string, n uint) (str string, err error) { return } -func set2list(set map[string]bool) []string { +func Set2list(set map[string]bool) []string { list := make([]string, len(set)) i := uint(0) for item, _ := range set { -- cgit v1.2.2