代码拉取完成,页面将自动刷新
同步操作将从 ShirDon-廖显东/go验证码合集包 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//++++++++++++++++++++++++++++++++++++++++
//Fighting for great,share generate value!
//Build the best soft by golang,let's go!
//++++++++++++++++++++++++++++++++++++++++
//Author:ShirDon <http://www.shirdon.com>
//Email:hcbsts@163.com; 823923263@qq.com
//++++++++++++++++++++++++++++++++++++++++
package captchas_with_go
import (
"errors"
"strings"
"time"
"gitee.com/shirdonl/configs_with_go"
)
const (
DEFAULT_LIFE_TIME = time.Minute * 5
DEFAULT_FONT_SIZE = 26
DEFAULT_WIDTH = 120
DEFAULT_HEIGHT = 40
DEFAULT_GC_PROBABILITY = 1
DEFAULT_GC_DIVISOR = 100
)
func loadConfigFromFile(configFile string) (error, string, *CaptchaConfig, *ImageConfig, *FilterConfig, *StoreConfig) {
var retErr error
c, err := config.ReadDefault(configFile)
//wordDict
wordDict, err := c.String("captcha", "word_dict")
if nil != err {
retErr = errors.New("loadConfigFromFile Fail,Get word_dict options failed:" + err.Error())
}
//captchaConfig
captchaConfig := new(CaptchaConfig)
var lifeTime time.Duration
cfgLifeTime, err := c.String("captcha", "life_time")
if nil == err {
lifeTime, err = time.ParseDuration(cfgLifeTime)
if nil != err {
lifeTime = DEFAULT_LIFE_TIME
}
} else {
lifeTime = DEFAULT_LIFE_TIME
}
captchaConfig.LifeTime = lifeTime
cfgChangeTextOnRefresh, err := c.Bool("captcha", "change_text_on_refresh")
if nil != err {
cfgChangeTextOnRefresh = false
}
captchaConfig.ChangeTextOnRefresh = cfgChangeTextOnRefresh
//imageConfig
imageConfig := new(ImageConfig)
var fontFiles []string
cfgFontFiles, err := c.StringMuti("image", "font_files")
if nil != err {
retErr = errors.New("loadConfigFromFile Fail,font_files options failed:" + err.Error())
} else {
fontFiles = cfgFontFiles
}
imageConfig.FontFiles = fontFiles
var fontSize float64
cfgFontSize, err := c.Int("image", "font_size")
if nil != err {
fontSize = DEFAULT_FONT_SIZE
} else {
fontSize = float64(cfgFontSize)
}
imageConfig.FontSize = fontSize
var width int
cfgWidth, err := c.Int("image", "width")
if nil != err {
width = DEFAULT_WIDTH
} else {
width = int(cfgWidth)
}
imageConfig.Width = width
var height int
cfgHeight, err := c.Int("image", "height")
if nil != err {
height = DEFAULT_HEIGHT
} else {
height = int(cfgHeight)
}
imageConfig.Height = height
//filterConfig
filterConfig := new(FilterConfig)
filterConfig.Init()
cfgOpenFilter, err := c.StringMuti("filter", "open_filter")
if nil == err {
filterConfig.Filters = cfgOpenFilter
} else {
filterConfig.Filters = []string{}
}
for _, section := range c.Sections() {
if strings.HasPrefix(section, "ImageFilter") {
filterConfigGroup := new(FilterConfigGroup)
filterConfigGroup.Init()
options, err := c.Options(section)
if nil == err {
for _, option := range options {
v, err := c.String(section, option)
if nil == err {
filterConfigGroup.SetItem(option, v)
}
}
}
filterConfig.SetGroup(section, filterConfigGroup)
}
}
//storeConfig
storeConfig := new(StoreConfig)
storeConfig.CaptchaConfig = *captchaConfig
engine, err := c.String("store", "engine")
if nil != err {
retErr = errors.New("loadConfigFromFile Fail,engine options failed" + err.Error())
} else {
storeConfig.Engine = engine
}
servers, err := c.StringMuti("store", "servers")
if nil != err {
storeConfig.Servers = []string{}
} else {
storeConfig.Servers = servers
}
gcProbability, err := c.Int("store", "gc_probability")
if nil != err {
storeConfig.GcProbability = gcProbability
} else {
storeConfig.GcProbability = DEFAULT_GC_PROBABILITY
}
gcDivisor, err := c.Int("store", "gc_divisor")
if nil != err {
storeConfig.GcDivisor = gcDivisor
} else {
storeConfig.GcDivisor = DEFAULT_GC_DIVISOR
}
if nil != err && nil == retErr {
retErr = err
}
return retErr, wordDict, captchaConfig, imageConfig, filterConfig, storeConfig
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。