mirror of
https://github.com/Li4n0/revsuit.git
synced 2026-09-26 00:21:54 +08:00
feat: complete basic functions
Support http,dns and mysql connection. Support custom http, dns response. Support dns rebinding. Support mysql load local files and jdbc deserialize exploit.
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
Copyright 2017 Google 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 vmysql
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
|
||||
"vitess.io/vitess/go/vt/sqlparser"
|
||||
)
|
||||
|
||||
// SQLError is the error structure returned from calling a db library function
|
||||
type SQLError struct {
|
||||
Num int
|
||||
State string
|
||||
Message string
|
||||
Query string
|
||||
}
|
||||
|
||||
// NewSQLError creates a new SQLError.
|
||||
// If sqlState is left empty, it will default to "HY000" (general error).
|
||||
// TODO: Should be aligned with vterrors, stack traces and wrapping
|
||||
func NewSQLError(number int, sqlState string, format string, args ...interface{}) *SQLError {
|
||||
if sqlState == "" {
|
||||
sqlState = SSUnknownSQLState
|
||||
}
|
||||
return &SQLError{
|
||||
Num: number,
|
||||
State: sqlState,
|
||||
Message: fmt.Sprintf(format, args...),
|
||||
}
|
||||
}
|
||||
|
||||
// Error implements the error interface
|
||||
func (se *SQLError) Error() string {
|
||||
buf := &bytes.Buffer{}
|
||||
buf.WriteString(se.Message)
|
||||
|
||||
// Add MySQL errno and SQLSTATE in a format that we can later parse.
|
||||
// There's no avoiding string parsing because all errors
|
||||
// are converted to strings anyway at RPC boundaries.
|
||||
// See NewSQLErrorFromError.
|
||||
fmt.Fprintf(buf, " (errno %v) (sqlstate %v)", se.Num, se.State)
|
||||
|
||||
if se.Query != "" {
|
||||
fmt.Fprintf(buf, " during query: %s", sqlparser.TruncateForLog(se.Query))
|
||||
}
|
||||
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
// Number returns the internal MySQL error code.
|
||||
func (se *SQLError) Number() int {
|
||||
return se.Num
|
||||
}
|
||||
|
||||
// SQLState returns the SQLSTATE value.
|
||||
func (se *SQLError) SQLState() string {
|
||||
return se.State
|
||||
}
|
||||
Reference in New Issue
Block a user