base64Captcha

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2020 License: MIT Imports: 25 Imported by: 1

README

base64Captcha

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

View Source
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"
)
View Source
const (
	//CaptchaComplexLower complex level lower.
	CaptchaComplexLower = iota
	//CaptchaComplexMedium complex level medium.
	CaptchaComplexMedium
	//CaptchaComplexHigh complex level high.
	CaptchaComplexHigh
)
View Source
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
)
View Source
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

View Source
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

func Asset(name string) ([]byte, error)

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

func AssetDir(name string) ([]string, error)

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 AssetNames

func AssetNames() []string

AssetNames returns the names of the assets.

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.Store)

SetCustomStore sets custom storage for captchas, replacing the default memory store. This function must be called before generating any captchas.

func VerifyCaptcha

func VerifyCaptcha(identifier, verifyValue string) bool

VerifyCaptcha by given id key and remove the captcha value in store, return boolean value. 验证图像验证码,返回boolean.

func VerifyCaptchaAndIsClear

func VerifyCaptchaAndIsClear(identifier, verifyValue string, isClear bool) bool

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

func (a *Audio) BinaryEncoding() []byte

BinaryEncoding encodes an sound to wave and returns the result as a byte slice.

func (*Audio) WriteTo

func (a *Audio) WriteTo(w io.Writer) (n int64, err error)

WriteTo writes captcha audio in WAVE format into the given io.Writer, and returns the number of bytes written and an error if any.

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.

func (*CaptchaImageChar) WriteTo

func (captcha *CaptchaImageChar) WriteTo(w io.Writer) (int64, error)

WriteTo writes captcha image in PNG format into the given writer.

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.

func (*CaptchaImageDigit) WriteTo

func (m *CaptchaImageDigit) WriteTo(w io.Writer) (int64, error)

WriteTo writes captcha image in PNG format into the given writer.

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.

Directories

Path Synopsis
example of HTTP server that uses the captcha package.
example of HTTP server that uses the captcha package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL