mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
Grand test fixup (#138)
* start fixing up tests * fix up tests + automate with drone * fiddle with linting * messing about with drone.yml * some more fiddling * hmmm * add cache * add vendor directory * verbose * ci updates * update some little things * update sig
This commit is contained in:
94
vendor/github.com/wagslane/go-password-validator/length.go
generated
vendored
Normal file
94
vendor/github.com/wagslane/go-password-validator/length.go
generated
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
package passwordvalidator
|
||||
|
||||
const (
|
||||
seqNums = "0123456789"
|
||||
seqKeyboard0 = "qwertyuiop"
|
||||
seqKeyboard1 = "asdfghjkl"
|
||||
seqKeyboard2 = "zxcvbnm"
|
||||
seqAlphabet = "abcdefghijklmnopqrstuvwxyz"
|
||||
)
|
||||
|
||||
func removeMoreThanTwoFromSequence(s, seq string) string {
|
||||
seqRunes := []rune(seq)
|
||||
runes := []rune(s)
|
||||
matches := 0
|
||||
for i := 0; i < len(runes); i++ {
|
||||
for j := 0; j < len(seqRunes); j++ {
|
||||
if i >= len(runes) {
|
||||
break
|
||||
}
|
||||
r := runes[i]
|
||||
r2 := seqRunes[j]
|
||||
if r != r2 {
|
||||
matches = 0
|
||||
continue
|
||||
}
|
||||
// found a match, advance the counter
|
||||
matches++
|
||||
if matches > 2 {
|
||||
runes = deleteRuneAt(runes, i)
|
||||
} else {
|
||||
i++
|
||||
}
|
||||
}
|
||||
}
|
||||
return string(runes)
|
||||
}
|
||||
|
||||
func deleteRuneAt(runes []rune, i int) []rune {
|
||||
if i >= len(runes) ||
|
||||
i < 0 {
|
||||
return runes
|
||||
}
|
||||
copy(runes[i:], runes[i+1:])
|
||||
runes[len(runes)-1] = 0
|
||||
runes = runes[:len(runes)-1]
|
||||
return runes
|
||||
}
|
||||
|
||||
func getReversedString(s string) string {
|
||||
n := 0
|
||||
rune := make([]rune, len(s))
|
||||
for _, r := range s {
|
||||
rune[n] = r
|
||||
n++
|
||||
}
|
||||
rune = rune[0:n]
|
||||
// Reverse
|
||||
for i := 0; i < n/2; i++ {
|
||||
rune[i], rune[n-1-i] = rune[n-1-i], rune[i]
|
||||
}
|
||||
// Convert back to UTF-8.
|
||||
return string(rune)
|
||||
}
|
||||
|
||||
func removeMoreThanTwoRepeatingChars(s string) string {
|
||||
var prevPrev rune
|
||||
var prev rune
|
||||
runes := []rune(s)
|
||||
for i := 0; i < len(runes); i++ {
|
||||
r := runes[i]
|
||||
if r == prev && r == prevPrev {
|
||||
runes = deleteRuneAt(runes, i)
|
||||
i--
|
||||
}
|
||||
prevPrev = prev
|
||||
prev = r
|
||||
}
|
||||
return string(runes)
|
||||
}
|
||||
|
||||
func getLength(password string) int {
|
||||
password = removeMoreThanTwoRepeatingChars(password)
|
||||
password = removeMoreThanTwoFromSequence(password, seqNums)
|
||||
password = removeMoreThanTwoFromSequence(password, seqKeyboard0)
|
||||
password = removeMoreThanTwoFromSequence(password, seqKeyboard1)
|
||||
password = removeMoreThanTwoFromSequence(password, seqKeyboard2)
|
||||
password = removeMoreThanTwoFromSequence(password, seqAlphabet)
|
||||
password = removeMoreThanTwoFromSequence(password, getReversedString(seqNums))
|
||||
password = removeMoreThanTwoFromSequence(password, getReversedString(seqKeyboard0))
|
||||
password = removeMoreThanTwoFromSequence(password, getReversedString(seqKeyboard1))
|
||||
password = removeMoreThanTwoFromSequence(password, getReversedString(seqKeyboard2))
|
||||
password = removeMoreThanTwoFromSequence(password, getReversedString(seqAlphabet))
|
||||
return len(password)
|
||||
}
|
Reference in New Issue
Block a user