mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 19:02:26 -06:00 
			
		
		
		
	* 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
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package passwordvalidator
 | 
						|
 | 
						|
import "strings"
 | 
						|
 | 
						|
const (
 | 
						|
	replaceChars      = `!@$&*`
 | 
						|
	sepChars          = `_-., `
 | 
						|
	otherSpecialChars = `"#%'()+/:;<=>?[\]^{|}~`
 | 
						|
	lowerChars        = `abcdefghijklmnopqrstuvwxyz`
 | 
						|
	upperChars        = `ABCDEFGHIJKLMNOPQRSTUVWXYZ`
 | 
						|
	digitsChars       = `0123456789`
 | 
						|
)
 | 
						|
 | 
						|
func getBase(password string) int {
 | 
						|
	chars := map[rune]struct{}{}
 | 
						|
	for _, c := range password {
 | 
						|
		chars[c] = struct{}{}
 | 
						|
	}
 | 
						|
 | 
						|
	hasReplace := false
 | 
						|
	hasSep := false
 | 
						|
	hasOtherSpecial := false
 | 
						|
	hasLower := false
 | 
						|
	hasUpper := false
 | 
						|
	hasDigits := false
 | 
						|
	base := 0
 | 
						|
 | 
						|
	for c := range chars {
 | 
						|
		if strings.ContainsRune(replaceChars, c) {
 | 
						|
			hasReplace = true
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if strings.ContainsRune(sepChars, c) {
 | 
						|
			hasSep = true
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if strings.ContainsRune(otherSpecialChars, c) {
 | 
						|
			hasOtherSpecial = true
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if strings.ContainsRune(lowerChars, c) {
 | 
						|
			hasLower = true
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if strings.ContainsRune(upperChars, c) {
 | 
						|
			hasUpper = true
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if strings.ContainsRune(digitsChars, c) {
 | 
						|
			hasDigits = true
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		base++
 | 
						|
	}
 | 
						|
 | 
						|
	if hasReplace {
 | 
						|
		base += len(replaceChars)
 | 
						|
	}
 | 
						|
	if hasSep {
 | 
						|
		base += len(sepChars)
 | 
						|
	}
 | 
						|
	if hasOtherSpecial {
 | 
						|
		base += len(otherSpecialChars)
 | 
						|
	}
 | 
						|
	if hasLower {
 | 
						|
		base += len(lowerChars)
 | 
						|
	}
 | 
						|
	if hasUpper {
 | 
						|
		base += len(upperChars)
 | 
						|
	}
 | 
						|
	if hasDigits {
 | 
						|
		base += len(digitsChars)
 | 
						|
	}
 | 
						|
	return base
 | 
						|
}
 |