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 AssetDir(name string) ([]string, error)
- func AssetNames() []string
- func CaptchaWriteToBase64Encoding(cap CaptchaInterface) string
- func CaptchaWriteToFile(cap CaptchaInterface, outputDir, fileName, fileExt string) error
- func SetCustomStore(s store.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
Constants ¶
const ( //TxtNumbers chacters for numbers. TxtNumbers = "012346789" //TxtAlphabet characters for alphabet. TxtAlphabet = "ABCDEFGHJKMNOQRSTUVXYZabcdefghjkmnoqrstuvxyz" //TxtSimpleCharaters simple numbers and alphabet TxtSimpleCharaters = "13467ertyiadfhjkxcvbnERTYADFGHJKXCVBN" //TxtChineseCharaters makes characters in chinese TxtChineseCharaters = "的一是在不了有和人这中大为上个国我以要他" + "时来用们生到作地于出就分对成会可主发年动" + "同工也能下过子说产种面而方后多定行学法所" + "民得经十三之进着等部度家电力里如水化高自" + "二理起小物现实加量都两体制机当使点从业本" + "去把性好应开它合还因由其些然前外天政四日" + "那社义事平形相全表间样与关各重新线内数正" + "心反你明看原又么利比或但质气第向道命此变" + "条只没结解问意建月公无系军很情者最立代想" + "已通并提直题党程展五果料象员革位入常文总" + "次品式活设及管特件长求老头基资边流路级少" + "图山统接知较将组见计别她手角期根论运农指" + "几九区强放决西被干做必战先回则任取据处队" + "南给色光门即保治北造百规热领七海口东导器" + "压志世金增争济阶油思术极交受联什认六共权" + "收证改清己美再采转更单风切打白教速花带安" + "场身车例真务具万每目至达走积示议声报斗完" + "类八离华名确才科张信马节话米整空元况今集" + "温传土许步群广石记需段研界拉林律叫且究观" + "越织装影算低持音众书布复容儿须际商非验连" + "断深难近矿千周委素技备半办青省列习响约支" + "般史感劳便团往酸历市克何除消构府称太准精" + "值号率族维划选标写存候毛亲快效斯院查江型" + "眼王按格养易置派层片始却专状育厂京识适属" + "圆包火住调满县局照参红细引听该铁价严龙飞" //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 //CaptchaModeChinese made chinese captcha . CaptchaModeChinese //CaptchaModeUseSequencedCharacters uses Sequenced Characters. CaptchaModeUseSequencedCharacters )
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 )
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 AssetDir ¶
AssetDir returns the file names below a certain directory embedded in the file by go-bindata. For example if you run go-bindata on data/... and data contains the following hierarchy:
data/ foo.txt img/ a.png b.png
then AssetDir("data") would return []string{"foo.txt", "img"} AssetDir("data/img") would return []string{"a.png", "b.png"} AssetDir("foo.txt") and AssetDir("notexist") would return an error AssetDir("") will return []string{"data"}.
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 ¶
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) BinaryEncoding ¶
BinaryEncoding 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) BinaryEncoding ¶
func (captcha *CaptchaImageChar) BinaryEncoding() []byte
BinaryEncoding 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) BinaryEncoding ¶
func (m *CaptchaImageDigit) BinaryEncoding() []byte
BinaryEncoding encodes an image to PNG and returns the result as a byte slice.
type CaptchaInterface ¶
type CaptchaInterface interface { // BinaryEncoding covert to bytes BinaryEncoding() []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, val 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, // base64captcha.CaptchaModeChinese=4, // base64captcha.CaptchaModeUseSequencedCharacters=5 Mode int //IsUseSimpleFont is use simply font(...base64Captcha/fonts/RitaSmith.ttf). IsUseSimpleFont bool //ComplexOfNoiseText text noise count. // CaptchaComplexLower / CaptchaComplexMedium / CaptchaComplexHigh 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 //CaptchaRunePairs make a list of rune for Captcha random selection. // 随机字符串可选内容 ChineseCharacterSource string // SequencedCharacters make a list of sequenced runes for Captcha random selection // Choose Mode base64captcha.CaptchaModeUseSequencedCharacters // 随机字符串可选内容,词组内部保证顺序,使用模式CaptchaModeUseSequencedCharacters 使用 SequencedCharacters []string //UseCJKFonts: ask if shell uses CJKFonts (now including 文泉驿微米黑) // 是否使用CJK字体 UseCJKFonts bool // CaptchaLen Default number of digits in captcha solution. // 默认数字验证长度6. CaptchaLen int //BgHashColor image background hash string color eg: #fff BgHashColor string //BgColor captcha image background color (optional) //背景颜色 BgColor *color.RGBA }
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.