forked from seccome/Ehoney
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbait.go
76 lines (67 loc) · 2.39 KB
/
bait.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package models
import (
"decept-defense/controllers/comm"
"decept-defense/pkg/util"
"fmt"
"strings"
)
type Baits struct {
ID int64 `gorm:"primary_key;AUTO_INCREMENT;not null;unique;column:id" json:"id"`
CreateTime string `gorm:"not null"`
Creator string `gorm:"not null;size:256"`
BaitType string `gorm:"not null;size:256" form:"BaitType" binding:"required"`
UploadPath string `gorm:"size:256"`
FileName string `gorm:"size:256"`
BaitName string `gorm:"unique"form:"BaitName" gorm:"unique;size:256" binding:"required"`
BaitData string `form:"BaitData"`
}
func (bait *Baits) CreateBait() error {
if err := db.Create(bait).Error; err != nil {
return err
}
return nil
}
func (bait *Baits) GetBaitsRecord(payload *comm.BaitSelectPayload) (*[]comm.FileBaitSelectResultPayload, int64, error) {
var ret []comm.FileBaitSelectResultPayload
var count int64
if util.CheckInjectionData(payload.Payload) || util.CheckInjectionData(payload.BaitType) {
return nil, 0, nil
}
var p string = "%" + payload.Payload + "%"
var sql = ""
if payload.BaitType != "" {
sql = fmt.Sprintf("select id, bait_type, bait_name, file_name, bait_data, create_time, creator from baits where CONCAT(bait_type, bait_name, bait_data, file_name, create_time, creator) LIKE '%s' AND bait_type = '%s' order by create_time DESC", p, payload.BaitType)
} else {
sql = fmt.Sprintf("select id, bait_type, bait_name, file_name, bait_data, create_time, creator from baits where CONCAT(bait_type, bait_name, bait_data, file_name, create_time, creator) LIKE '%s' order by create_time DESC", p)
}
if err := db.Raw(sql).Scan(&ret).Error; err != nil {
return nil, 0, err
}
count = (int64)(len(ret))
t := fmt.Sprintf("limit %d offset %d", payload.PageSize, (payload.PageNumber-1)*payload.PageSize)
sql = strings.Join([]string{sql, t}, " ")
if err := db.Raw(sql).Scan(&ret).Error; err != nil {
return nil, 0, err
}
return &ret, count, nil
}
func (bait *Baits) GetBaitByID(id int64) (*Baits, error) {
var ret Baits
if err := db.Take(&ret, id).Error; err != nil {
return nil, err
}
return &ret, nil
}
func (bait *Baits) GetBaitByName(name string) (*Baits, error) {
var ret Baits
if err := db.Where("bait_name = ?", name).Take(&ret).Error; err != nil {
return nil, err
}
return &ret, nil
}
func (bait *Baits) DeleteBaitByID(id int64) error {
if err := db.Delete(&Baits{}, id).Error; err != nil {
return err
}
return nil
}