Documentation ¶
Overview ¶
Package base64Captcha supports digits, numbers,alphabet, arithmetic, audio and digit-alphabet captcha. base64Captcha is used for fast development of RESTful APIs, web apps and backend services in Go. give a string identifier to the package and it returns with a base64-encoding-png-string
Index ¶
- Constants
- Variables
- func Asset(name string) ([]byte, error)
- func CaptchaWriteToBase64Encoding(cap CaptchaInterface) string
- func CaptchaWriteToFile(cap CaptchaInterface, outputDir, fileName, fileExt string) error
- func SetCustomStore(s Store)
- func VerifyCaptcha(identifier, verifyValue string) bool
- func VerifyCaptchaAndIsClear(identifier, verifyValue string, isClear bool) bool
- type Audio
- type CaptchaImageChar
- type CaptchaImageDigit
- type CaptchaInterface
- type CaptchaItem
- type ConfigAudio
- type ConfigCharacter
- type ConfigDigit
- type Store
Constants ¶
const ( //TxtNumbers chacters for numbers. TxtNumbers = "012346789" //TxtAlphabet characters for alphabet. TxtAlphabet = "ABCDEFGHJKMNOQRSTUVXYZabcdefghjkmnoqrstuvxyz" //TxtSimpleCharaters simple numbers and alphabet TxtSimpleCharaters = "13467ertyiadfhjkxcvbnERTYADFGHJKXCVBN" //MimeTypeCaptchaAudio output base64 mine-type. MimeTypeCaptchaAudio = "audio/wav" //MimeTypeCaptchaImage output base64 mine-type. MimeTypeCaptchaImage = "image/png" //FileExtCaptchaAudio output file extension. FileExtCaptchaAudio = "wav" //FileExtCaptchaImage output file extension. FileExtCaptchaImage = "png" )
const ( //CaptchaComplexLower complex level lower. CaptchaComplexLower = iota //CaptchaComplexMedium complex level medium. CaptchaComplexMedium //CaptchaComplexHigh complex level high. CaptchaComplexHigh )
const ( //CaptchaModeNumber mode number. CaptchaModeNumber = iota //CaptchaModeAlphabet mode alphabet. CaptchaModeAlphabet //CaptchaModeArithmetic mode arithmetic. CaptchaModeArithmetic //CaptchaModeNumberAlphabet mode mix number and alphabet,this is also default mode. CaptchaModeNumberAlphabet )
const ( // DefaultLen Default number of digits in captcha solution. // 默认数字验证长度. DefaultLen = 6 // MaxSkew max absolute skew factor of a single digit. // 图像验证码的最大干扰洗漱. MaxSkew = 0.7 // DotCount Number of background circles. // 图像验证码干扰圆点的数量. DotCount = 20 )
Variables ¶
var ( // GCLimitNumber The number of captchas created that triggers garbage collection used by default store. // 默认图像验证GC清理的上限个数 GCLimitNumber = 10240 // Expiration time of captchas used by default store. // 内存保存验证码的时限 Expiration = 10 * time.Minute )
var GoTestOutputDir = "/Users/ericzhou/go/src/github.com/mojocn/base64Captcha/goTestOutPutPng"
GoTestOutputDir run go test command where the png and wav file output
Functions ¶
func Asset ¶
Asset loads and returns the asset for the given name. It returns an error if the asset could not be found or could not be loaded.
func CaptchaWriteToBase64Encoding ¶
func CaptchaWriteToBase64Encoding(cap CaptchaInterface) string
CaptchaWriteToBase64Encoding converts captcha to base64 encoding string. mimeType is one of "audio/wav" "image/png".
func CaptchaWriteToFile ¶
func CaptchaWriteToFile(cap CaptchaInterface, outputDir, fileName, fileExt string) error
CaptchaWriteToFile output captcha to file. fileExt is one of "png","wav"
func SetCustomStore ¶
func SetCustomStore(s Store)
SetCustomStore sets custom storage for captchas, replacing the default memory store. This function must be called before generating any captchas.
func VerifyCaptcha ¶
VerifyCaptcha by given id key and remove the captcha value in store, return boolean value. 验证图像验证码,返回boolean.
func VerifyCaptchaAndIsClear ¶
VerifyCaptchaAndIsClear verify captcha, return boolean value. identifier is the captcha id, verifyValue is the captcha image value, isClear is whether to clear the value in store. 验证图像验证码,返回boolean.
Types ¶
type Audio ¶
type Audio struct { CaptchaItem // contains filtered or unexported fields }
Audio captcha-audio-engine return type.
func EngineAudioCreate ¶
func EngineAudioCreate(id string, config ConfigAudio) *Audio
EngineAudioCreate create captcha with configAudio.
func (*Audio) BinaryEncodeing ¶
BinaryEncodeing encodes an sound to wave and returns the result as a byte slice.
type CaptchaImageChar ¶
type CaptchaImageChar struct { CaptchaItem Complex int // contains filtered or unexported fields }
CaptchaImageChar captcha-engine-char return type.
func EngineCharCreate ¶
func EngineCharCreate(config ConfigCharacter) *CaptchaImageChar
EngineCharCreate create captcha with config struct.
func (*CaptchaImageChar) BinaryEncodeing ¶
func (captcha *CaptchaImageChar) BinaryEncodeing() []byte
BinaryEncodeing save captcha image to binary. 保存图片到io.
type CaptchaImageDigit ¶
type CaptchaImageDigit struct { CaptchaItem *image.Paletted // contains filtered or unexported fields }
CaptchaImageDigit digits captcha Struct
func EngineDigitsCreate ¶
func EngineDigitsCreate(id string, config ConfigDigit) *CaptchaImageDigit
EngineDigitsCreate create captcha by engine-digits with configuration.
func (*CaptchaImageDigit) BinaryEncodeing ¶
func (m *CaptchaImageDigit) BinaryEncodeing() []byte
BinaryEncodeing encodes an image to PNG and returns the result as a byte slice.
type CaptchaInterface ¶
type CaptchaInterface interface { //BinaryEncodeing covert to bytes BinaryEncodeing() []byte //WriteTo output captcha entity WriteTo(w io.Writer) (n int64, err error) }
CaptchaInterface captcha interface for captcha engine to to write staff
func GenerateCaptcha ¶
func GenerateCaptcha(idKey string, configuration interface{}) (id string, captchaInstance CaptchaInterface)
GenerateCaptcha create captcha by config struct and id. idkey can be an empty string, base64 will create a unique id four you. if idKey is a empty string, the package will generate a random unique identifier for you. configuration struct should be one of those struct ConfigAudio, ConfigCharacter, ConfigDigit.
Example Code
//config struct for digits var configD = base64Captcha.ConfigDigit{ Height: 80, Width: 240, MaxSkew: 0.7, DotCount: 80, CaptchaLen: 5, } //config struct for audio var configA = base64Captcha.ConfigAudio{ CaptchaLen: 6, Language: "zh", } //config struct for Character var configC = base64Captcha.ConfigCharacter{ Height: 60, Width: 240, //const CaptchaModeNumber:数字,CaptchaModeAlphabet:字母,CaptchaModeArithmetic:算术,CaptchaModeNumberAlphabet:数字字母混合. Mode: base64Captcha.CaptchaModeNumber, ComplexOfNoiseText: base64Captcha.CaptchaComplexLower, ComplexOfNoiseDot: base64Captcha.CaptchaComplexLower, IsUseSimpleFont: true, IsShowHollowLine: false, IsShowNoiseDot: false, IsShowNoiseText: false, IsShowSlimeLine: false, IsShowSineLine: false, CaptchaLen: 6, } //create a audio captcha. //GenerateCaptcha first parameter is empty string,so the package will generate a random uuid for you. idKeyA,capA := base64Captcha.GenerateCaptcha("",configA) //write to base64 string. //GenerateCaptcha first parameter is empty string,so the package will generate a random uuid for you. base64stringA := base64Captcha.CaptchaWriteToBase64Encoding(capA) //create a characters captcha. //GenerateCaptcha first parameter is empty string,so the package will generate a random uuid for you. idKeyC,capC := base64Captcha.GenerateCaptcha("",configC) //write to base64 string. base64stringC := base64Captcha.CaptchaWriteToBase64Encoding(capC) //create a digits captcha. idKeyD,capD := base64Captcha.GenerateCaptcha("",configD) //write to base64 string. base64stringD := base64Captcha.CaptchaWriteToBase64Encoding(capD)
type CaptchaItem ¶
type CaptchaItem struct { //Content captcha entity content. Content string //VerifyValue captcha verify value. VerifyValue string //ImageWidth image width pixel. ImageWidth int //ImageHeight image height pixel. ImageHeight int }
CaptchaItem captcha basic information.
type ConfigAudio ¶
type ConfigAudio struct { // CaptchaLen Default number of digits in captcha solution. CaptchaLen int // Language possible values for lang are "en", "ja", "ru", "zh". Language string }
ConfigAudio captcha config for captcha-engine-audio.
type ConfigCharacter ¶
type ConfigCharacter struct { // Height png height in pixel. // 图像验证码的高度像素. Height int // Width Captcha png width in pixel. // 图像验证码的宽度像素 Width int //Mode : base64captcha.CaptchaModeNumber=0, base64captcha.CaptchaModeAlphabet=1, base64captcha.CaptchaModeArithmetic=2, base64captcha.CaptchaModeNumberAlphabet=3. Mode int //IsUseSimpleFont is use simply font(...base64Captcha/fonts/RitaSmith.ttf). IsUseSimpleFont bool //ComplexOfNoiseText text noise count. ComplexOfNoiseText int //ComplexOfNoiseDot dot noise count. ComplexOfNoiseDot int //IsShowHollowLine is show hollow line. IsShowHollowLine bool //IsShowNoiseDot is show noise dot. IsShowNoiseDot bool //IsShowNoiseText is show noise text. IsShowNoiseText bool //IsShowSlimeLine is show slime line. IsShowSlimeLine bool //IsShowSineLine is show sine line. IsShowSineLine bool // CaptchaLen Default number of digits in captcha solution. // 默认数字验证长度6. CaptchaLen int }
ConfigCharacter captcha config for captcha-engine-characters.
type ConfigDigit ¶
type ConfigDigit struct { // Height png height in pixel. // 图像验证码的高度像素. Height int // Width Captcha png width in pixel. // 图像验证码的宽度像素 Width int // DefaultLen Default number of digits in captcha solution. // 默认数字验证长度6. CaptchaLen int // MaxSkew max absolute skew factor of a single digit. // 图像验证码的最大干扰洗漱. MaxSkew float64 // DotCount Number of background circles. // 图像验证码干扰圆点的数量. DotCount int }
ConfigDigit config for captcha-engine-digit.
type Store ¶
type Store interface { // Set sets the digits for the captcha id. Set(id string, value string) // Get returns stored digits for the captcha id. Clear indicates // whether the captcha must be deleted from the store. Get(id string, clear bool) string }
Store An object implementing Store interface can be registered with SetCustomStore function to handle storage and retrieval of captcha ids and solutions for them, replacing the default memory store.
It is the responsibility of an object to delete expired and used captchas when necessary (for example, the default memory store collects them in Set method after the certain amount of captchas has been stored.)
func NewMemoryStore ¶
NewMemoryStore returns a new standard memory store for captchas with the given collection threshold and expiration time (duration). The returned store must be registered with SetCustomStore to replace the default one.