tidb audit 源码
tidb audit 代码
文件路径:/plugin/audit.go
// Copyright 2019 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package plugin
import (
"context"
"strings"
"github.com/pingcap/errors"
"github.com/pingcap/tidb/sessionctx/variable"
)
// GeneralEvent presents TiDB generate event.
type GeneralEvent byte
const (
// Starting represents a GeneralEvent that is about to start
Starting GeneralEvent = iota
// Completed represents a GeneralEvent that has completed
Completed
// Error represents a GeneralEvent that has error (and typically couldn't start)
Error
// GeneralEventCount is the count for the general events
// The new events MUST be added before it
GeneralEventCount
)
// GeneralEventFromString gets the `GeneralEvent` from the given string
func GeneralEventFromString(s string) (GeneralEvent, error) {
upperStr := strings.ToUpper(s)
for i := 0; i < int(GeneralEventCount); i++ {
event := GeneralEvent(i)
if event.String() == upperStr {
return event, nil
}
}
return 0, errors.Errorf("Invalid general event: %s", s)
}
// String returns the string for the `GeneralEvent`
func (e GeneralEvent) String() string {
switch e {
case Starting:
return "STARTING"
case Completed:
return "COMPLETED"
case Error:
return "ERROR"
}
return ""
}
// ConnectionEvent presents TiDB connection event.
type ConnectionEvent byte
const (
// Connected represents new connection establish event(finish auth).
Connected ConnectionEvent = iota
// Disconnect represents disconnect event.
Disconnect
// ChangeUser represents change user.
ChangeUser
// PreAuth represents event before start auth.
PreAuth
// Reject represents event reject connection event.
Reject
)
func (c ConnectionEvent) String() string {
switch c {
case Connected:
return "Connected"
case Disconnect:
return "Disconnect"
case ChangeUser:
return "ChangeUser"
case PreAuth:
return "PreAuth"
case Reject:
return "Reject"
}
return ""
}
// ParseEvent presents events happen around parser.
type ParseEvent byte
const (
// PreParse presents event before parse.
PreParse ParseEvent = 1 + iota
// PostParse presents event after parse.
PostParse
)
// AuditManifest presents a sub-manifest that every audit plugin must provide.
type AuditManifest struct {
Manifest
// OnConnectionEvent will be called when TiDB receive or disconnect from client.
// return error will ignore and close current connection.
OnConnectionEvent func(ctx context.Context, event ConnectionEvent, info *variable.ConnectionInfo) error
// OnGeneralEvent will be called during TiDB execution.
OnGeneralEvent func(ctx context.Context, sctx *variable.SessionVars, event GeneralEvent, cmd string)
// OnGlobalVariableEvent will be called when Change GlobalVariable.
OnGlobalVariableEvent func(ctx context.Context, sctx *variable.SessionVars, varName, varValue string)
// OnParseEvent will be called around parse logic.
OnParseEvent func(ctx context.Context, sctx *variable.SessionVars, event ParseEvent) error
}
type (
// RejectReasonCtxValue will be used in OnConnectionEvent to pass RejectReason to plugin.
RejectReasonCtxValue struct{}
)
type execStartTimeCtxKeyType struct{}
// ExecStartTimeCtxKey indicates stmt start execution time.
var ExecStartTimeCtxKey = execStartTimeCtxKeyType{}
相关信息
相关文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦