github.com/qiwihui/DBShield@v0.0.0-20171107092910-fb8553bed8ef/dbshield/training/training.go (about) 1 package training 2 3 import ( 4 "github.com/qiwihui/DBShield/dbshield/config" 5 "github.com/qiwihui/DBShield/dbshield/sql" 6 ) 7 8 //AddToTrainingSet records query context in local database 9 func AddToTrainingSet(context sql.QueryContext) error { 10 pattern := sql.Pattern(context.Query) 11 return config.Config.LocalDB.AddPattern(pattern, context) 12 } 13 14 //CheckQuery pattern, returns true if it finds the pattern 15 //We should keep it as fast as possible 16 func CheckQuery(context sql.QueryContext) bool { 17 hasQuery := config.Config.LocalDB.CheckQuery(context, config.Config.CheckUser, config.Config.CheckSource) 18 if !hasQuery { 19 // pattern := sql.Pattern(context.Query) 20 config.Config.LocalDB.RecordAbnormal(context, "pattern") 21 return false 22 } 23 return true 24 } 25 26 // CheckPermission if has statement permission 27 func CheckPermission(context sql.QueryContext) bool { 28 hasPermission := config.Config.LocalDB.CheckPermission(context, true, true) 29 if !hasPermission { 30 // pattern := sql.Pattern(context.Query) 31 config.Config.LocalDB.RecordAbnormal(context, "permission") 32 return false 33 } 34 return true 35 }