Mercurial > go > multipass
view mp-checkpassword/checkpassword.go @ 19:58fe867c9ecf
Reorganize commands to more standard go layout.
- Unify multipass user commands under one 'multipass' binary
- Move multipass checkpassword command to mp-checkpassword.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sun, 01 Nov 2015 12:42:02 -0500 |
parents | cmds/multipass-checkpassword/checkpassword.go@342f63116bfd |
children |
line wrap: on
line source
package main import ( "bufio" "os" "os/user" "syscall" "pfish.zone/go/multipass/file" ) const ( InternalError = 111 Failed = 1 ) func main() { infile := os.NewFile(3, "") reader := bufio.NewReader(infile) username, err := reader.ReadString(0) if err != nil { os.Exit(InternalError) } username = username[:len(username)-1] pass, err := reader.ReadString(0) if err != nil { os.Exit(InternalError) } pass = pass[:len(pass)-1] infile.Close() passfile, err := file.ForUser(username) if err != nil { os.Exit(Failed) } success, _ := passfile.Authenticate(pass) if !success { os.Exit(Failed) } user, err := user.Lookup(username) if err != nil { os.Exit(Failed) } os.Setenv("USER", user.Username) os.Setenv("HOME", user.HomeDir) os.Setenv("userdb_uid", user.Uid) os.Setenv("userdb_gid", user.Gid) os.Setenv("EXTRA", "userdb_uid userdb_gid") syscall.Exec(os.Args[1], os.Args[1:], os.Environ()) }