1/*2Maddy Mail Server - Composable all-in-one email server.3Copyright © 2019-2020 Max Mazurov <fox.cpp@disroot.org>, Maddy Mail Server contributors45This program is free software: you can redistribute it and/or modify6it under the terms of the GNU General Public License as published by7the Free Software Foundation, either version 3 of the License, or8(at your option) any later version.910This program is distributed in the hope that it will be useful,11but WITHOUT ANY WARRANTY; without even the implied warranty of12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13GNU General Public License for more details.1415You should have received a copy of the GNU General Public License16along with this program. If not, see <https://www.gnu.org/licenses/>.17*/1819package main2021import (22 "bufio"23 "errors"24 "fmt"25 "os"2627 "github.com/foxcpp/maddy/internal/auth/shadow"28)2930func main() {31 scnr := bufio.NewScanner(os.Stdin)3233 if !scnr.Scan() {34 fmt.Fprintln(os.Stderr, scnr.Err())35 os.Exit(2)36 }37 username := scnr.Text()3839 if !scnr.Scan() {40 fmt.Fprintln(os.Stderr, scnr.Err())41 os.Exit(2)42 }43 password := scnr.Text()4445 ent, err := shadow.Lookup(username)46 if err != nil {47 if errors.Is(err, shadow.ErrNoSuchUser) {48 os.Exit(1)49 }50 fmt.Fprintln(os.Stderr, err)51 os.Exit(2)52 }5354 if !ent.IsAccountValid() {55 fmt.Fprintln(os.Stderr, "account is expired")56 os.Exit(1)57 }5859 if !ent.IsPasswordValid() {60 fmt.Fprintln(os.Stderr, "password is expired")61 os.Exit(1)62 }6364 if err := ent.VerifyPassword(password); err != nil {65 if errors.Is(err, shadow.ErrWrongPassword) {66 os.Exit(1)67 }68 fmt.Fprintln(os.Stderr, err)69 os.Exit(1)70 }71}