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  }