//TODO parse the blacklist sql file func (s *Server) parseBlackListSqls() error { bs := new(BlacklistSqls) bs.sqls = make(map[string]string) if len(s.cfg.BlsFile) != 0 { file, err := os.Open(s.cfg.BlsFile) if err != nil { return err } defer file.Close() rd := bufio.NewReader(file) for { line, err := rd.ReadString('\n') //end of file if err == io.EOF { break } if err != nil { return err } line = strings.TrimSpace(line) if len(line) != 0 { fingerPrint := mysql.GetFingerprint(line) md5 := mysql.GetMd5(fingerPrint) bs.sqls[md5] = fingerPrint } } } bs.sqlsLen = len(bs.sqls) atomic.StoreInt32(&s.blacklistSqlsIndex, 0) s.blacklistSqls[s.blacklistSqlsIndex] = bs s.blacklistSqls[1] = bs return nil }
func (s *Server) addBlackSql(v string) error { v = strings.TrimSpace(v) fingerPrint := mysql.GetFingerprint(v) md5 := mysql.GetMd5(fingerPrint) if s.blacklistSqlsIndex == 0 { s.blacklistSqls[1] = s.blacklistSqls[0] s.blacklistSqls[1].sqls[md5] = v atomic.StoreInt32(&s.blacklistSqlsIndex, 1) } else { s.blacklistSqls[0] = s.blacklistSqls[1] s.blacklistSqls[0].sqls[md5] = v atomic.StoreInt32(&s.blacklistSqlsIndex, 0) } return nil }