本文整理汇总了Golang中github.com/c-darwin/dcoin-go/packages/utils.CheckInputData函数的典型用法代码示例。如果您正苦于以下问题:Golang CheckInputData函数的具体用法?Golang CheckInputData怎么用?Golang CheckInputData使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CheckInputData函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: ChangePrimaryKeyFront
func (p *Parser) ChangePrimaryKeyFront() error {
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
if !utils.CheckInputData(p.newPublicKeysHex[0], "public_key") {
return p.ErrInfo("public_key")
}
if len(p.newPublicKeysHex[1]) > 0 && !utils.CheckInputData(p.newPublicKeysHex[1], "public_key") {
return p.ErrInfo("public_key 1")
}
if len(p.newPublicKeysHex[2]) > 0 && !utils.CheckInputData(p.newPublicKeysHex[2], "public_key") {
return p.ErrInfo("public_key 2")
}
forSign := fmt.Sprintf("%s,%s,%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.newPublicKeysHex[0], p.newPublicKeysHex[1], p.newPublicKeysHex[2])
CheckSignResult, err := utils.CheckSign(p.PublicKeys, forSign, p.TxMap["sign"], false)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return p.ErrInfo("incorrect sign")
}
err = p.limitRequest(p.Variables.Int64["limit_primary_key"], "primary_key", p.Variables.Int64["limit_primary_key_period"])
if err != nil {
return p.ErrInfo(err)
}
return nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:32,代码来源:change_primary_key.go
示例2: ChangeCaFront
func (p *Parser) ChangeCaFront() error {
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
if !utils.CheckInputData(p.TxMaps.String["ca1"], "ca_url") && p.TxMaps.String["ca1"] != "0" {
return fmt.Errorf("incorrect ca1")
}
if !utils.CheckInputData(p.TxMaps.String["ca2"], "ca_url") && p.TxMaps.String["ca2"] != "0" {
return fmt.Errorf("incorrect ca2")
}
if !utils.CheckInputData(p.TxMaps.String["ca3"], "ca_url") && p.TxMaps.String["ca3"] != "0" {
return fmt.Errorf("incorrect ca3")
}
forSign := fmt.Sprintf("%s,%s,%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["ca1"], p.TxMap["ca2"], p.TxMap["ca3"])
CheckSignResult, err := utils.CheckSign(p.PublicKeys, forSign, p.TxMap["sign"], false)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return p.ErrInfo("incorrect sign")
}
err = p.limitRequest(consts.LIMIT_CHANGE_CA, "change_ca", consts.LIMIT_CHANGE_CA_PERIOD)
if err != nil {
return p.ErrInfo(err)
}
return nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:32,代码来源:change_ca.go
示例3: SaveHost
func (c *Controller) SaveHost() (string, error) {
if c.SessRestricted != 0 {
return "", utils.ErrInfo(errors.New("Permission denied"))
}
c.r.ParseForm()
http_host := c.r.FormValue("http_host")
if len(http_host) > 0 && http_host[len(http_host)-1:] != "/" {
http_host += "/"
}
tcp_host := c.r.FormValue("tcp_host")
if !utils.CheckInputData(http_host, "http_host") {
return `{"error":"1"}`, nil
}
if !utils.CheckInputData(tcp_host, "tcp_host") {
return `{"error":"1"}`, nil
}
err := c.ExecSql("UPDATE "+c.MyPrefix+"my_table SET http_host = ?, tcp_host = ?", http_host, tcp_host)
if err != nil {
return "", utils.ErrInfo(err)
}
return `{"error":"0"}`, nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:27,代码来源:save_host.go
示例4: VotesNodeNewMinerFront
func (p *Parser) VotesNodeNewMinerFront() error {
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
// является ли данный юзер майнером
err = p.checkMiner(p.TxUserID)
if err != nil {
return err
}
if !utils.CheckInputData(p.TxMap["result"], "vote") {
return utils.ErrInfoFmt("incorrect vote")
}
// получим public_key
p.nodePublicKey, err = p.GetNodePublicKey(p.TxUserID)
if len(p.nodePublicKey) == 0 {
return utils.ErrInfoFmt("incorrect user_id len(nodePublicKey) = 0")
}
if !utils.CheckInputData(p.TxMap["vote_id"], "bigint") {
return utils.ErrInfoFmt("incorrect bigint")
}
forSign := fmt.Sprintf("%s,%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["vote_id"], p.TxMap["result"])
CheckSignResult, err := utils.CheckSign([][]byte{p.nodePublicKey}, forSign, p.TxMap["sign"], true)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return utils.ErrInfoFmt("incorrect sign")
}
// проверим, верно ли указан ID и не закончилось ли голосование
id, err := p.Single("SELECT id FROM votes_miners WHERE id = ? AND type = 'node_voting' AND votes_end = 0", p.TxMaps.Int64["vote_id"]).Int64()
if err != nil {
return p.ErrInfo(err)
}
if id == 0 {
return p.ErrInfo(fmt.Errorf("voting is over"))
}
// проверим, не повторное ли это голосование данного юзера
num, err := p.Single("SELECT count(user_id) FROM log_votes WHERE user_id = ? AND voting_id = ? AND type = 'votes_miners'", p.TxMaps.Int64["user_id"], p.TxMaps.Int64["vote_id"]).Int64()
if err != nil {
return p.ErrInfo(err)
}
if num > 0 {
return utils.ErrInfoFmt("double voting")
}
// нод не должен голосовать более X раз за сутки, чтобы не было доса
err = p.limitRequest(p.Variables.Int64["node_voting"], "votes_nodes", p.Variables.Int64["node_voting_period"])
if err != nil {
return p.ErrInfo(err)
}
return nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:59,代码来源:votes_node_new_miner.go
示例5: VotesMinerFront
func (p *Parser) VotesMinerFront() error {
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
if !utils.CheckInputData(p.TxMap["vote_id"], "bigint") {
return p.ErrInfo("incorrect vote_id")
}
if !utils.CheckInputData(p.TxMap["result"], "vote") {
return p.ErrInfo("incorrect vote_id")
}
if !utils.CheckInputData(p.TxMap["comment"], "votes_comment") {
return p.ErrInfo("incorrect comment")
}
// является ли данный юзер майнером
err = p.checkMiner(p.TxUserID)
if err != nil {
return p.ErrInfo(err)
}
// проверим, верно ли указан ID и не закончилось ли голосование
id, err := p.Single("SELECT id FROM votes_miners WHERE id = ? AND type = 'user_voting' AND votes_end = 0", p.TxMaps.Int64["vote_id"]).Int()
if err != nil {
return p.ErrInfo(err)
}
if id == 0 {
return p.ErrInfo("voting is over")
}
// проверим, не повторное ли это голосование данного юзера
num, err := p.Single("SELECT count(user_id) FROM log_votes WHERE user_id = ? AND voting_id = ? AND type = 'votes_miners'", p.TxMaps.Int64["user_id"], p.TxMaps.Int64["vote_id"]).Int()
if err != nil {
return p.ErrInfo("double voting")
}
if num > 0 {
return p.ErrInfo("double voting")
}
forSign := fmt.Sprintf("%s,%s,%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["vote_id"], p.TxMap["result"], p.TxMap["comment"])
CheckSignResult, err := utils.CheckSign(p.PublicKeys, forSign, p.TxMap["sign"], false)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return p.ErrInfo("incorrect sign")
}
// защита от доса
err = p.maxDayVotes()
if err != nil {
return p.ErrInfo(err)
}
return nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:57,代码来源:votes_miner.go
示例6: RewritePrimaryKeySave
func (c *Controller) RewritePrimaryKeySave() (string, error) {
if !c.NodeAdmin || c.SessRestricted != 0 {
return "", utils.ErrInfo(errors.New("Permission denied"))
}
if len(c.r.FormValue("n")) > 0 {
c.r.ParseForm()
n := []byte(c.r.FormValue("n"))
e := []byte(c.r.FormValue("e"))
if !utils.CheckInputData(n, "hex") {
return "", utils.ErrInfo(errors.New("incorrect n"))
}
if !utils.CheckInputData(e, "hex") {
return "", utils.ErrInfo(errors.New("incorrect e"))
}
publicKey := utils.MakeAsn1(n, e)
// проверим, есть ли вообще такой публичный ключ
userId, err := c.Single("SELECT user_id FROM users WHERE hex(public_key_0) = ?", publicKey).Int64()
if err != nil {
return "", utils.ErrInfo(err)
}
if userId == 0 {
return "", utils.ErrInfo(errors.New("incorrect public_key"))
}
// может быть юзер уже майнер?
minerId, err := c.GetMinerId(userId)
if err != nil {
return "", utils.ErrInfo(err)
}
status := ""
if minerId > 0 {
status = "miner"
} else {
status = "user"
}
err = c.ExecSql(`DELETE FROM my_keys`)
if err != nil {
return "", utils.ErrInfo(err)
}
err = c.ExecSql(`INSERT INTO `+c.MyPrefix+`my_keys (public_key, status) VALUES ([hex], ?)`, publicKey, "approved")
if err != nil {
return "", utils.ErrInfo(err)
}
err = c.ExecSql(`UPDATE `+c.MyPrefix+`my_table SET user_id = ?, miner_id = ?, status = ?`, userId, minerId, status)
if err != nil {
return "", utils.ErrInfo(err)
}
}
return `{"success":"success"}`, nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:57,代码来源:rewrite_primary_key_save.go
示例7: EWithdraw
func (c *Controller) EWithdraw() (string, error) {
if c.SessUserId == 0 {
return "", errors.New(c.Lang["sign_up_please"])
}
c.r.ParseForm()
currencyId := utils.StrToInt64(c.r.FormValue("currency_id"))
if !utils.CheckInputData(c.r.FormValue("amount"), "amount") {
return "", fmt.Errorf("incorrect amount")
}
method := c.r.FormValue("method")
if !utils.CheckInputData(method, "method") {
return "", fmt.Errorf("incorrect method")
}
account := c.r.FormValue("account")
if !utils.CheckInputData(account, "account") {
return "", fmt.Errorf("incorrect account")
}
amount := utils.StrToFloat64(c.r.FormValue("amount"))
curTime := utils.Time()
// нужно проверить, есть ли нужная сумма на счету юзера
userAmount := utils.EUserAmountAndProfit(c.SessUserId, currencyId)
if userAmount < amount {
return "", fmt.Errorf("%s (%f<%f)", c.Lang["not_enough_money"], userAmount, amount)
}
if method != "Dcoin" && currencyId < 1000 {
return "", fmt.Errorf("incorrect method")
}
err := userLock(c.SessUserId)
if err != nil {
return "", utils.ErrInfo(err)
}
err = c.ExecSql(`UPDATE e_wallets SET amount = ?, last_update = ? WHERE user_id = ? AND currency_id = ?`, userAmount-amount, curTime, c.SessUserId, currencyId)
if err != nil {
return "", utils.ErrInfo(err)
}
var commission float64
if method == "Dcoin" {
commission = utils.StrToFloat64(c.EConfig["dc_commission"])
} else if method == "Perfect-money" {
commission = utils.StrToFloat64(c.EConfig["pm_commission"])
}
wdAmount := utils.ClearNull(utils.Float64ToStr(amount*(1-commission/100)), 2)
err = c.ExecSql(`INSERT INTO e_withdraw (open_time, user_id, currency_id, account, amount, wd_amount, method) VALUES (?, ?, ?, ?, ?, ?, ?)`, curTime, c.SessUserId, currencyId, account, amount, wdAmount, method)
if err != nil {
return "", utils.ErrInfo(err)
}
userUnlock(c.SessUserId)
return utils.JsonAnswer(c.Lang["request_is_created"], "success").String(), nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:56,代码来源:e_withdraw.go
示例8: EPages
func (c *Controller) EPages() (string, error) {
var err error
var title, text string
if len(c.Parameters["page"]) > 0 {
if !utils.CheckInputData(c.Parameters["page"], "string") {
return "", utils.ErrInfo(err)
}
data, err := c.OneRow(`SELECT title, text from e_pages WHERE name = ? AND lang = ?`, c.Parameters["page"], c.LangInt).String()
if err != nil {
return "", utils.ErrInfo(err)
}
title = data["title"]
text = data["text"]
}
TemplateStr, err := makeTemplate("e_pages", "ePages", &ePages{
Lang: c.Lang,
Title: title,
Text: text})
if err != nil {
return "", utils.ErrInfo(err)
}
return TemplateStr, nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:26,代码来源:e_pages.go
示例9: ERedirect
func (c *Controller) ERedirect() (string, error) {
c.r.ParseForm()
token := c.r.FormValue("FormToken")
amount := c.r.FormValue("FormExAmount")
buyCurrencyId := utils.StrToInt64(c.r.FormValue("FormDC"))
if !utils.CheckInputData(token, "string") {
return "", errors.New("incorrect data")
}
// order_id занесем когда поуступят деньги в платежной системе
err := c.ExecSql(`UPDATE e_tokens SET buy_currency_id = ?, amount_fiat = ? WHERE token = ?`, buyCurrencyId, utils.StrToFloat64(c.r.FormValue("FormExAmount")), token)
if err != nil {
return "", utils.ErrInfo(err)
}
tokenId, err := c.Single(`SELECT id FROM e_tokens WHERE token = ?`, token).String()
if err != nil {
return "", utils.ErrInfo(err)
}
TemplateStr, err := makeTemplate("e_redirect", "eRedirect", &ERedirectPage{
Lang: c.Lang,
EConfig: c.EConfig,
TokenId: tokenId,
EURL: c.EURL,
MDesc: base64.StdEncoding.EncodeToString([]byte("token-" + tokenId)),
Amount: amount})
if err != nil {
return "", utils.ErrInfo(err)
}
return TemplateStr, nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:34,代码来源:e_redirect.go
示例10: UserAvatarFront
func (p *Parser) UserAvatarFront() error {
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
verifyData := map[string]string{"name": "user_name"}
err = p.CheckInputData(verifyData)
if err != nil {
return p.ErrInfo(err)
}
if !utils.CheckInputData(p.TxMaps.String["avatar"], "img_url") && p.TxMaps.String["avatar"] != "0" {
return fmt.Errorf("incorrect avatar")
}
forSign := fmt.Sprintf("%s,%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["name"], p.TxMap["avatar"])
CheckSignResult, err := utils.CheckSign(p.PublicKeys, forSign, p.TxMap["sign"], false)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return p.ErrInfo("incorrect sign")
}
err = p.limitRequest(consts.LIMIT_USER_AVATAR, "user_avatar", consts.LIMIT_USER_AVATAR_PERIOD)
if err != nil {
return p.ErrInfo(err)
}
return nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:31,代码来源:user_avatar.go
示例11: CheckCfCurrency
func (c *Controller) CheckCfCurrency() (string, error) {
if c.SessRestricted != 0 {
return "", utils.ErrInfo(errors.New("Permission denied"))
}
c.r.ParseForm()
projectCurrencyName := c.r.FormValue("project_currency_name")
if !utils.CheckInputData(projectCurrencyName, "cf_currency_name") {
return "", errors.New("incorrect project_currency_name")
}
// проверим, не занято ли имя валюты
currency, err := c.Single("SELECT id FROM cf_projects WHERE project_currency_name = ? AND close_block_id = 0 AND del_block_id = 0", projectCurrencyName).Int64()
if err != nil {
return "", utils.ErrInfo(err)
}
if currency > 0 {
return `{"error":"` + c.Lang["currency_name_busy"] + `"}`, nil
}
// проверим, не занято ли имя валюты
currency, err = c.Single("SELECT id FROM cf_currency WHERE name = ?", projectCurrencyName).Int64()
if err != nil {
return "", utils.ErrInfo(err)
}
if currency > 0 {
return `{"error":"` + c.Lang["currency_name_busy"] + `"}`, nil
}
return `{"success":"` + c.Lang["name_is_not_occupied"] + `"}`, nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:32,代码来源:check_cf_currency.go
示例12: NewUserFront
func (p *Parser) NewUserFront() error {
log.Debug("NewUserFront")
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
// является ли данный юзер майнером
err = p.checkMiner(p.TxUserID)
if err != nil {
return p.ErrInfo(err)
}
// прошло ли 30 дней с момента регистрации майнера
err = p.checkMinerNewbie()
if err != nil {
return p.ErrInfo(err)
}
// чтобы не записали слишком мелкий или слишком крупный ключ
if !utils.CheckInputData(p.TxMap["public_key_hex"], "public_key") {
return utils.ErrInfo(fmt.Errorf("incorrect public_key %s", p.TxMap["public_key_hex"]))
}
// публичный ключ должен быть без паролей
if ok, _ := regexp.MatchString("DEK-Info: (.+),(.+)", string(p.TxMap["public_key"])); ok {
return p.ErrInfo("incorrect public_key")
}
forSign := fmt.Sprintf("%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["public_key_hex"])
CheckSignResult, err := utils.CheckSign(p.PublicKeys, forSign, p.TxMap["sign"], false)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return p.ErrInfo("incorrect sign")
}
// один ключ не может быть у двух юзеров
num, err := p.DCDB.Single("SELECT count(user_id) FROM users WHERE hex(public_key_0) = ? OR hex(public_key_1) = ? OR hex(public_key_2) = ?",
p.TxMap["public_key_hex"], p.TxMap["public_key_hex"], p.TxMap["public_key_hex"]).Int()
if num > 0 {
return p.ErrInfo("exists public_key")
}
err = p.getAdminUserId()
if err != nil {
return p.ErrInfo(err)
}
if utils.BytesToInt64(p.TxMap["user_id"]) == p.AdminUserId {
err = p.limitRequest(1000, "new_user", 86400)
} else {
err = p.limitRequest(p.Variables.Int64["limit_new_user"], "new_user", p.Variables.Int64["limit_new_user_period"])
}
if err != nil {
return p.ErrInfo(err)
}
return nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:60,代码来源:new_user.go
示例13: AbusesFront
func (p *Parser) AbusesFront() error {
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
var abuses map[string]string
err = json.Unmarshal(p.TxMap["abuses"], &abuses)
if err != nil {
return p.ErrInfo(err)
}
if len(abuses) > 100 {
return fmt.Errorf(">100")
}
for userId, comment := range abuses {
if !utils.CheckInputData(userId, "user_id") {
return fmt.Errorf("incorrect abuses user_id")
}
if !utils.CheckInputData(comment, "abuse_comment") {
return fmt.Errorf("incorrect abuse_comment")
}
// является ли данный юзер майнером
err = p.checkMiner(utils.StrToInt64(userId))
if err != nil {
return p.ErrInfo(err)
}
}
forSign := fmt.Sprintf("%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["abuses"])
CheckSignResult, err := utils.CheckSign(p.PublicKeys, forSign, p.TxMap["sign"], false)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return p.ErrInfo("incorrect sign")
}
err = p.limitRequest(p.Variables.Int64["limit_abuses"], "abuses", p.Variables.Int64["limit_abuses_period"])
if err != nil {
return p.ErrInfo(err)
}
return nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:44,代码来源:abuses.go
示例14: AdminSpotsFront
func (p *Parser) AdminSpotsFront() error {
err := p.generalCheckAdmin()
if err != nil {
return p.ErrInfo(err)
}
if !utils.CheckInputData(p.TxMap["compatibility"], "compatibility") {
return p.ErrInfo("incorrect compatibility")
}
exampleSpots := new(exampleSpotsType)
if err := json.Unmarshal([]byte(p.TxMap["example_spots"]), &exampleSpots); err != nil {
return p.ErrInfo("incorrect example_spots")
}
if exampleSpots.Face == nil || exampleSpots.Profile == nil {
return p.ErrInfo("incorrect example_spots")
}
segments := new(exampleSpotsType)
if err := json.Unmarshal([]byte(p.TxMap["segments"]), &segments); err != nil {
return p.ErrInfo("incorrect segments")
}
if segments.Face == nil || segments.Profile == nil {
return p.ErrInfo("incorrect segments")
}
tolerances := new(tolerancesType)
if err := json.Unmarshal([]byte(p.TxMap["tolerances"]), &tolerances); err != nil {
return p.ErrInfo("incorrect tolerances")
}
if tolerances.Face == nil || tolerances.Profile == nil {
return p.ErrInfo("incorrect tolerances")
}
forSign := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["example_spots"], p.TxMap["segments"], p.TxMap["tolerances"], p.TxMap["compatibility"])
CheckSignResult, err := utils.CheckSign(p.PublicKeys, forSign, p.TxMap["sign"], false)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return p.ErrInfo("incorrect sign")
}
return nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:41,代码来源:admin_spots.go
示例15: EInfo
func (c *Controller) EInfo() (string, error) {
c.w.Header().Set("Access-Control-Allow-Origin", "*")
c.r.ParseForm()
token := c.r.FormValue("token")
if !utils.CheckInputData(token, "string") {
return "", errors.New("incorrect token")
}
tokenMap, err := c.OneRow(`SELECT * FROM e_tokens WHERE token = ?`, token).String()
if err != nil {
return "", utils.ErrInfo(err)
}
wallets, err := c.GetAll(`SELECT * FROM e_wallets WHERE user_id = ?`, 100, tokenMap["user_id"])
if err != nil {
return "", utils.ErrInfo(err)
}
orders, err := c.GetAll(`SELECT * FROM e_orders WHERE user_id = ? ORDER BY time DESC LIMIT 10`, 100, tokenMap["user_id"])
if err != nil {
return "", utils.ErrInfo(err)
}
withdraw, err := c.GetAll(`SELECT * FROM e_withdraw WHERE user_id = ? ORDER BY open_time DESC LIMIT 10`, 100, tokenMap["user_id"])
if err != nil {
return "", utils.ErrInfo(err)
}
m := EInfoResult{
Token: tokenMap,
Wallets: wallets,
Orders: orders,
Withdraw: withdraw,
}
jsonData, err := json.Marshal(m)
if err != nil {
return "", utils.ErrInfo(err)
}
return string(jsonData), nil
}
开发者ID:dzyk,项目名称:dcoin-go,代码行数:38,代码来源:e_info.go
示例16: CfPagePreview
func (c *Controller) CfPagePreview() (string, error) {
var err error
txType := "CfComment"
txTypeId := utils.TypeInt(txType)
timeNow := time.Now().Unix()
cfUrl, err := c.GetCfUrl()
if err != nil {
return "", utils.ErrInfo(err)
}
showHeaders := false
if len(c.r.FormValue("blurb_img")) > 0 {
showHeaders = true
}
page := c.Parameters["page"]
if len(page) > 0 {
if ok, _ := regexp.MatchString(`^(?i)[a-z]{0,10}$`, page); !ok {
return "", errors.New("incorrect page")
}
}
cfCurrencyName := c.Parameters["onlyCfCurrencyName"]
if len(page) == 0 {
page = "home"
}
langId := int64(utils.StrToFloat64(c.Parameters["lang_id"]))
projectId := int64(utils.StrToFloat64(c.Parameters["onlyProjectId"]))
log.Debug("projectId:", projectId)
var blurbImg, headImg, descriptionImg, picture, videoType, videoUrlId, newsImg string
imgBlank := cfUrl + "static/img/blank.png"
var links [][]string
if projectId > 0 || len(cfCurrencyName) > 0 {
if projectId == 0 {
projectId, err = c.Single("SELECT id FROM cf_projects WHERE project_currency_name = ?", cfCurrencyName).Int64()
if err != nil {
return "", utils.ErrInfo(err)
}
}
data := make(map[string]string)
if langId > 0 {
data, err = c.OneRow("SELECT * FROM cf_projects_data WHERE project_id = ? AND lang_id = ?", projectId, langId).String()
if err != nil {
return "", utils.ErrInfo(err)
}
} else { // Если язык не указан, то просто берем первое добавленное описание
data, err = c.OneRow("SELECT * FROM cf_projects_data WHERE project_id = ? ORDER BY id ASC", projectId).String()
if err != nil {
return "", utils.ErrInfo(err)
}
langId = utils.StrToInt64(data["lang_id"])
}
blurbImg = data["blurb_img"]
headImg = data["head_img"]
descriptionImg = data["description_img"]
picture = data["picture"]
videoType = data["video_type"]
videoUrlId = data["video_url_id"]
newsImg = data["news_img"]
if len(data["links"]) > 0 && data["links"] != "0" {
var links_ [][]interface{}
err = json.Unmarshal([]byte(data["links"]), &links_)
if err != nil {
log.Debug("data links:", data["links"])
return "", utils.ErrInfo(err)
}
for _, v := range links_ {
var l []string
for _, v2 := range v {
str := utils.InterfaceToStr(v2)
if len(str) == 0 {
return "", utils.ErrInfo(errors.New("Incorrect links"))
}
l = append(l, str)
}
links = append(links, l)
}
}
} else {
log.Debug("FormValue", c.r.Form)
blurbImg = c.r.FormValue("blurb_img")
headImg = c.r.FormValue("head_img")
descriptionImg = c.r.FormValue("description_img")
picture = c.r.FormValue("blurb_img")
videoType = c.r.FormValue("video_type")
videoUrlId = c.r.FormValue("video_url_id")
newsImg = c.r.FormValue("news_img")
if !utils.CheckInputData(c.r.FormValue("project_id"), "int") {
return "", errors.New("Incorrect project_id")
}
if !utils.CheckInputData(blurbImg, "img_url") {
blurbImg = imgBlank
}
if !utils.CheckInputData(headImg, "img_url") {
//.........这里部分代码省略.........
开发者ID:dzyk,项目名称:dcoin-go,代码行数:101,代码来源:cf_page_preview.go
示例17: NewMinerFront
func (p *Parser) NewMinerFront() error {
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
// получим кол-во точек для face и profile
exampleSpots_, err := p.DCDB.Single("SELECT example_spots FROM spots_compatibility").String()
if err != nil {
return p.ErrInfo(err)
}
exampleSpots := new(exampleSpots)
err = json.Unmarshal([]byte(exampleSpots_), &exampleSpots)
if err != nil {
return p.ErrInfo(err)
}
if !utils.CheckInputData(p.TxMap["race"], "race") {
return utils.ErrInfoFmt("race")
}
if !utils.CheckInputData(p.TxMap["country"], "country") {
return utils.ErrInfoFmt("country")
}
if !utils.CheckInputData(p.TxMap["latitude"], "coordinate") {
return utils.ErrInfoFmt("latitude")
}
if !utils.CheckInputData(p.TxMap["longitude"], "coordinate") {
return utils.ErrInfoFmt("longitude")
}
if !utils.CheckInputData(p.TxMap["http_host"], "http_host") {
return utils.ErrInfoFmt("http_host")
}
if p.BlockData == nil || p.BlockData.BlockId > 250900 {
if !utils.CheckInputData(p.TxMap["tcp_host"], "tcp_host") {
return utils.ErrInfoFmt("tcp_host")
}
}
if !utils.CheckInputData_(p.TxMap["face_coords"], "coords", utils.IntToStr(len(exampleSpots.Face)-1)) {
return utils.ErrInfoFmt("face_coords")
}
if !utils.CheckInputData_(p.TxMap["profile_coords"], "coords", utils.IntToStr(len(exampleSpots.Profile)-1)) {
return utils.ErrInfoFmt("profile_coords")
}
if !utils.CheckInputData(p.TxMap["face_hash"], "photo_hash") {
return utils.ErrInfoFmt("face_hash")
}
if !utils.CheckInputData(p.TxMap["profile_hash"], "photo_hash") {
return utils.ErrInfoFmt("profile_hash")
}
if !utils.CheckInputData(p.TxMap["video_type"], "video_type") {
return utils.ErrInfoFmt("video_type")
}
if !utils.CheckInputData(p.TxMap["video_url_id"], "video_url_id") {
return utils.ErrInfoFmt("video_url_id %s", p.TxMap["video_url_id"])
}
if !utils.CheckInputData(p.TxMap["node_public_key"], "public_key") {
return utils.ErrInfoFmt("node_public_key")
}
forSign := ""
if p.BlockData != nil && p.BlockData.BlockId < 250900 {
forSign = fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["race"], p.TxMap["country"], p.TxMap["latitude"], p.TxMap["longitude"], p.TxMap["http_host"], p.TxMap["face_hash"], p.TxMap["profile_hash"], p.TxMap["face_coords"], p.TxMap["profile_coords"], p.TxMap["video_type"], p.TxMap["video_url_id"], p.TxMap["node_public_key"])
} else {
forSign = fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["race"], p.TxMap["country"], p.TxMap["latitude"], p.TxMap["longitude"], p.TxMap["http_host"], p.TxMap["tcp_host"], p.TxMap["face_hash"], p.TxMap["profile_hash"], p.TxMap["face_coords"], p.TxMap["profile_coords"], p.TxMap["video_type"], p.TxMap["video_url_id"], p.TxMap["node_public_key"])
}
CheckSignResult, err := utils.CheckSign(p.PublicKeys, forSign, p.TxMap["sign"], false)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return utils.ErrInfoFmt("incorrect sign")
}
// проверим, не кончились ли попытки стать майнером у данного юзера
count, err := p.CountMinerAttempt(p.TxUserID, "user_voting")
if count >= p.Variables.Int64["miner_votes_attempt"] {
return utils.ErrInfoFmt("miner_votes_attempt")
}
if err != nil {
return p.ErrInfo(err)
}
// на всякий случай не даем начать нодовское, если идет юзерское голосование
userVoting, err := p.DCDB.Single("SELECT id FROM votes_miners WHERE user_id = ? AND type = 'user_voting' AND votes_end = 0", p.TxUserID).String()
if err != nil {
return p.ErrInfo(err)
}
if len(userVoting) > 0 {
return utils.ErrInfoFmt("existing $user_voting")
}
// проверим, не является ли юзер майнером и не разжалованный ли это бывший майнер
minerStatus, err := p.DCDB.Single("SELECT status FROM miners_data WHERE user_id = ? AND status IN ('miner','passive_miner','suspended_miner')", p.TxUserID).String()
if err != nil {
return p.ErrInfo(err)
}
if len(minerStatus) > 0 {
return utils.ErrInfoFmt("incorrect miner status")
}
// разрешен 1 запрос за сутки
//.........这里部分代码省略.........
开发者ID:dzyk,项目名称:dcoin-go,代码行数:101,代码来源:new_miner.go
示例18: NewMaxOtherCurrenciesFront
func (p *Parser) NewMaxOtherCurrenciesFront() error {
err := p.generalCheck()
if err != nil {
return p.ErrInfo(err)
}
// является ли данный юзер майнером
err = p.checkMiner(p.TxUserID)
if err != nil {
return p.ErrInfo(err)
}
nodePublicKey, err := p.GetNodePublicKey(p.TxUserID)
if err != nil {
return p.ErrInfo(err)
}
if len(nodePublicKey) == 0 {
return p.ErrInfo("incorrect user_id")
}
totalCountCurrencies, err := p.GetCountCurrencies()
if err != nil {
return p.ErrInfo(err)
}
// проверим, верно ли указаны ID валют
currencyList := make(map[string]int64)
err = json.Unmarshal(p.TxMap["new_max_other_currencies"], ¤cyList)
if err != nil {
return p.ErrInfo(err)
}
currencyIdsSql := ""
var countCurrency int64
for currencyId, count := range currencyList {
if !utils.CheckInputData(currencyId, "int") {
return p.ErrInfo("currencyId")
}
currencyIdsSql += currencyId + ","
countCurrency++
if count > totalCountCurrencies {
return p.ErrInfo("count > totalCountCurrencies")
}
}
currencyIdsSql = currencyIdsSql[0 : len(currencyIdsSql)-1]
if countCurrency == 0 {
return p.ErrInfo("countCurrency")
}
count, err := p.Single("SELECT count(id) FROM currency WHERE id IN (" + currencyIdsSql + ")").Int64()
if err != nil {
return p.ErrInfo(err)
}
if count != countCurrency {
return p.ErrInfo("count != countCurrency")
}
forSign := fmt.Sprintf("%s,%s,%s,%s", p.TxMap["type"], p.TxMap["time"], p.TxMap["user_id"], p.TxMap["new_max_other_currencies"])
CheckSignResult, err := utils.CheckSign([][]byte{nodePublicKey}, forSign, p.TxMap["sign"], true)
if err != nil {
return p.ErrInfo(err)
}
if !CheckSignResult {
return p.ErrInfo("incorrect sign")
}
// проверим, прошло ли 2 недели с момента последнего обновления
pctTime, err := p.Single("SELECT max(time) FROM max_other_currencies_time").Int64()
if err != nil {
return p.ErrInfo(err)
}
if p.TxTime-pctTime <= p.Variables.Int64["new_max_other_currencies"] {
return p.ErrInfo("14 day error")
}
// берем все голоса
maxOtherCurrenciesVotes := make(map[int64][]map[int64]int64)
rows, err := p.Query("SELECT currency_id, count, count(user_id) as votes FROM votes_max_other_currencies GROUP BY currency_id, count ORDER BY currency_id, count ASC")
if err != nil {
return p.ErrInfo(err)
}
defer rows.Close()
for rows.Next() {
var currency_id, count, votes int64
err = rows.Scan(¤cy_id, &count, &votes)
if err != nil {
return p.ErrInfo(err)
}
maxOtherCurrenciesVotes[currency_id] = append(maxOtherCurrenciesVotes[currency_id], map[int64]int64{count: votes})
//fmt.Println("currency_id", currency_id)
}
//fmt.Println("maxOtherCurrenciesVotes", maxOtherCurrenciesVotes)
newMaxOtherCurrenciesVotes := make(map[string]int64)
for currencyId, countAndVotes := range maxOtherCurrenciesVotes {
newMaxOtherCurrenciesVotes[utils.Int64ToStr(currencyId)] = utils.GetMaxVote(countAndVotes, 0, totalCountCurrencies, 10)
}
jsonData, err := json.Marshal(newMaxOtherCurrenciesVotes)
if err != nil {
return p.ErrInfo(err)
//.........这里部分代码省略.........
开发者ID:dzyk,项目名称:dcoin-go,代码行数:101,代码来源:new_max_other_currencies.go
示例19: ParseDataGate
/**
Обработка данных (блоков или транзакций), пришедших с гейта. Только проверка.
*/
func (p *Parser) ParseDataGate(onlyTx bool) error {
var err error
p.dataPre()
p.TxIds = []string{}
p.Variables, err = p.GetAllVariables()
if err != nil {
return utils.ErrInfo(err)
}
transactionBinaryData := p.BinaryData
var transactionBinaryDataFull []byte
// если это транзакции (type>0), а не блок (type==0)
if p.dataType > 0 {
// проверим, есть ли такой тип тр-ий
if len(consts.TxTypes[p.dataType]) == 0 {
return p.ErrInfo("Incorrect tx type " + utils.IntToStr(p.dataType))
}
log.Debug("p.dataType %v", p.dataType)
transactionBinaryData = append(utils.DecToBin(int64(p.dataType), 1), transactionBinaryData...)
transactionBinaryDataFull = transactionBinaryData
// нет ли хэша этой тр-ии у нас в БД?
err = p.CheckLogTx(transactionBinaryDataFull)
if err != nil {
return p.ErrInfo(err)
}
p.TxHash = utils.Md5(transactionBinaryData)
// преобразуем бинарные данные транзакции в массив
p.TxSlice, err = p.ParseTransaction(&transactionBinaryData)
if err != nil {
return p.ErrInfo(err)
}
log.Debug("p.TxSlice", p.TxSlice)
if len(p.TxSlice) < 3 {
return p.ErrInfo(errors.New("len(p.TxSlice) < 3"))
}
// время транзакции может быть немного больше, чем время на ноде.
// у нода может быть просто не настроено время.
// время транзакции используется только для борьбы с атаками вчерашними транзакциями.
// А т.к. мы храним хэши в log_transaction за 36 часов, то боятся нечего.
curTime := utils.Time()
if utils.BytesToInt64(p.TxSlice[2])-consts.MAX_TX_FORW > curTime || utils.BytesToInt64(p.TxSlice[2]) < curTime-consts.MAX_TX_BACK {
return p.ErrInfo(errors.New("incorrect tx time"))
}
// $this->transaction_array[3] могут подсунуть пустой
if !utils.CheckInputData(p.TxSlice[3], "bigint") {
return p.ErrInfo(errors.New("incorrect user id"))
}
}
// если это блок
if p.dataType == 0 {
txCounter := make(map[int64]int64)
// если есть $only_tx=true, то значит идет восстановление уже проверенного блока и заголовок не требуется
if !onlyTx {
err = p.ParseBlock()
if err != nil {
return p.ErrInfo(err)
}
// проверим данные, указанные в заголовке блока
err = p.CheckBlockHeader()
if err != nil {
return p.ErrInfo(err)
}
}
log.Debug("onlyTx", only
|
请发表评论