Files
Mark D Horn 59302346d6 linter: enable whitespace
Signed-off-by: Mark D Horn <mark.d.horn@intel.com>
2020-04-24 14:53:17 -07:00

47 lines
1.3 KiB
Go

// Copyright © 2020 Intel Corporation
//
// SPDX-License-Identifier: GPL-3.0-only
package cmd
import (
"bytes"
"strings"
"github.com/clearlinux/clr-installer/log"
"github.com/clearlinux/clr-installer/utils"
)
// Path to the cracklib-check exe
const crackLibPath = "/usr/bin/cracklib-check"
// CracklibCheck runs the cracklib-check executable piping password to stdin of cmd
// and writing stdoutput to byte buffer
// stringtype is used to inform kind of information we are checking: password or passphrase
func CracklibCheck(texttoinpsect string, stringtype string) (bool, string) {
defaultprefix := "Password"
if stringtype != "" {
defaultprefix = stringtype
}
cmdArgs := []string{crackLibPath}
var out bytes.Buffer
if err := PipeRunAndPipeOut(texttoinpsect, &out, cmdArgs...); err != nil {
log.Error("Error running cracklib-check, %q", err)
log.Error("Cracklib-check check will be skipped")
return true, ""
}
stringout := string(out.Bytes())
if index := strings.Index(stringout, ":"); index > -1 {
parsedString := strings.Trim(stringout[index+1:], " \n")
if strings.ToUpper(parsedString) != "OK" {
parsedString = strings.Replace(parsedString, "it", defaultprefix, 1)
return false, utils.Locale.Get(parsedString)
}
}
return true, ""
}