network

package
v2.0.0-...-6c2cc9d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 24, 2022 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultAddress string = "(Description=(Address=(Protocol=tcp)(IP=loopback)(port=1521))(CONNECT_DATA=(SID="
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AcceptPacket

type AcceptPacket struct {
	// contains filtered or unexported fields
}

type AcceptPacket Packet

type AddressResolution

type AddressResolution struct {
	InstanceName string
	TNSAddress   string
}

type AdvNegoSeviceInfo

type AdvNegoSeviceInfo struct {
	AuthService []string
}

type BindError

type BindError struct {
	// contains filtered or unexported fields
}

type ClientInfo

type ClientInfo struct {
	ProgramPath string
	ProgramName string
	UserName    string
	Password    string
	HostName    string
	DomainName  string
	DriverName  string
	PID         int
}

type ConnectPacket

type ConnectPacket struct {
	// contains filtered or unexported fields
}

type ConnectPacket Packet

type ConnectionOption

type ConnectionOption struct {
	ClientInfo
	DatabaseInfo
	SessionInfo
	AdvNegoSeviceInfo
	Tracer       trace.Tracer
	PrefetchRows int
}

func (*ConnectionOption) AddServer

func (op *ConnectionOption) AddServer(server ServerAddr)

func (*ConnectionOption) ConnectionData

func (op *ConnectionOption) ConnectionData() string

func (*ConnectionOption) GetActiveServer

func (op *ConnectionOption) GetActiveServer(jump bool) *ServerAddr

func (*ConnectionOption) UpdateDatabaseInfo

func (op *ConnectionOption) UpdateDatabaseInfo(connStr string) error

type Data

type Data interface {
	Write(session *Session) error
	Read(session *Session) error
}

type DataPacket

type DataPacket struct {
	Packet
	// contains filtered or unexported fields
}

type DatabaseInfo

type DatabaseInfo struct {
	UserID  string
	Servers []ServerAddr

	SID             string
	ProxyClientName string
	ServiceName     string
	InstanceName    string
	DBName          string
	AuthType        int
	// contains filtered or unexported fields
}

type DialerContext

type DialerContext interface {
	DialContext(ctx context.Context, network, address string) (net.Conn, error)
}

type MarkerPacket

type MarkerPacket struct {
	// contains filtered or unexported fields
}

type OracleError

type OracleError struct {
	ErrCode int
	ErrMsg  string
}

func (*OracleError) Error

func (err *OracleError) Error() string

type Packet

type Packet struct {
	// contains filtered or unexported fields
}

type PacketInterface

type PacketInterface interface {
	// contains filtered or unexported methods
}

type PacketType

type PacketType uint8
const (
	CONNECT  PacketType = 1
	ACCEPT   PacketType = 2
	ACK      PacketType = 3
	REFUSE   PacketType = 4
	REDIRECT PacketType = 5
	DATA     PacketType = 6
	NULL     PacketType = 7
	ABORT    PacketType = 9
	RESEND   PacketType = 11
	MARKER   PacketType = 12
	ATTN     PacketType = 13
	CTRL     PacketType = 14
	HIGHEST  PacketType = 19
)

type RedirectPacket

type RedirectPacket struct {
	// contains filtered or unexported fields
}

type RefusePacket

type RefusePacket struct {

	//dataOffset uint16
	//Len uint16
	//packetType PacketType
	//Flag uint8
	Err          OracleError
	SystemReason uint8
	UserReason   uint8
	// contains filtered or unexported fields
}

type ServerAddr

type ServerAddr struct {
	Protocol string
	Addr     string
	Port     int
}

func (*ServerAddr) IsEqual

func (serv *ServerAddr) IsEqual(input *ServerAddr) bool

type Session

type Session struct {

	//connOption        ConnectionOption
	Context *SessionContext

	TimeZone          []byte
	TTCVersion        uint8
	HasEOSCapability  bool
	HasFSAPCapability bool
	Summary           *SummaryObject

	StrConv         converters.IStringConverter
	UseBigClrChunks bool
	UseBigScn       bool
	ClrChunkSize    int
	SSL             struct {
		CertificateRequest []*x509.CertificateRequest
		PrivateKeys        []*rsa.PrivateKey
		Certificates       []*x509.Certificate
		// contains filtered or unexported fields
	}
	// contains filtered or unexported fields
}

func NewSession

func NewSession(connOption *ConnectionOption) *Session

func NewSessionWithInputBufferForDebug

func NewSessionWithInputBufferForDebug(input []byte) *Session

func (*Session) Connect

func (session *Session) Connect(ctx context.Context) error

Connect perform network connection on address:port check if the client need to use SSL then send connect packet to the server and receive either accept, redirect or refuse packet

func (*Session) Disconnect

func (session *Session) Disconnect()

Disconnect close the network and release resources

func (*Session) EndContext

func (session *Session) EndContext()

func (*Session) GetByte

func (session *Session) GetByte() (uint8, error)

GetByte read one uint8 from input buffer

func (*Session) GetBytes

func (session *Session) GetBytes(length int) ([]byte, error)

GetBytes read specified number of bytes from input buffer

func (*Session) GetClr

func (session *Session) GetClr() (output []byte, err error)

GetClr reed variable length bytearray from input buffer

func (*Session) GetDlc

func (session *Session) GetDlc() (output []byte, err error)

GetDlc read variable length bytearray from input buffer

func (*Session) GetError

func (session *Session) GetError() *OracleError

GetError Return the error in form or OracleError

func (*Session) GetInt

func (session *Session) GetInt(size int, compress bool, bigEndian bool) (int, error)

GetInt read int number from input buffer. you should specify the size of the int and either compress or not and stored as big endian or not

func (*Session) GetInt64

func (session *Session) GetInt64(size int, compress bool, bigEndian bool) (int64, error)

GetInt64 read int64 number from input buffer.

you should specify the size of the int and either compress or not and stored as big endian or not

func (*Session) GetKeyVal

func (session *Session) GetKeyVal() (key []byte, val []byte, num int, err error)

GetKeyVal read key, value (in form of bytearray), a number flag from input buffer

func (*Session) GetNullTermString

func (session *Session) GetNullTermString(maxSize int) (result string, err error)

GetNullTermString read a null terminated string from input buffer

func (*Session) GetString

func (session *Session) GetString(length int) (string, error)

GetString read a string data from input buffer

func (*Session) HasError

func (session *Session) HasError() bool

HasError Check if the session has error or not

func (*Session) LoadSSLData

func (session *Session) LoadSSLData(certs, keys, certRequests [][]byte) error

LoadSSLData load data required for SSL connection like certificate, private keys and certificate requests

func (*Session) LoadState

func (session *Session) LoadState() (oldState *SessionState)

LoadState load last saved session state and return the current state if this is the only session state available set session state memory to nil

func (*Session) PutBytes

func (session *Session) PutBytes(data ...byte)

PutBytes write bytes of data to output buffer

func (*Session) PutClr

func (session *Session) PutClr(data []byte)

PutClr write variable length bytearray to output buffer

func (*Session) PutInt

func (session *Session) PutInt(number interface{}, size uint8, bigEndian bool, compress bool)

PutInt write int number with size entered either use bigEndian or not and use compression or not to

func (*Session) PutKeyVal

func (session *Session) PutKeyVal(key []byte, val []byte, num uint8)

PutKeyVal write key, val (in form of bytearray) and flag number to output buffer

func (*Session) PutKeyValString

func (session *Session) PutKeyValString(key string, val string, num uint8)

PutKeyValString write key, val (in form of string) and flag number to output buffer

func (*Session) PutString

func (session *Session) PutString(data string)

PutString write a string data to output buffer

func (*Session) PutUint

func (session *Session) PutUint(number interface{}, size uint8, bigEndian, compress bool)

PutUint write uint number with size entered either use bigEndian or not and use compression or not to

func (*Session) ResetBuffer

func (session *Session) ResetBuffer()

ResetBuffer empty in and out buffer and set read index to 0

func (*Session) SaveState

func (session *Session) SaveState(newState *SessionState)

SaveState save current session state and accept new state if new state is nil the session will be resetted

func (*Session) StartContext

func (session *Session) StartContext(ctx context.Context)

func (*Session) Write

func (session *Session) Write() error
func (session *Session) Debug() {
	//if session.index > 350 && session.index < 370 {
	fmt.Println("index: ", session.index)
	fmt.Printf("data buffer: %#v\n", session.InBuffer[session.index:session.index+30])
	//oldIndex := session.index
	//fmt.Println(session.GetClr())
	//session.index = oldIndex
	//}
}
func (session *Session) DumpIn() {
	log.Printf("%#v\n", session.InBuffer)
}
func (session *Session) DumpOut() {
	log.Printf("%#v\n", session.OutBuffer)
}

Write send data store in output buffer through network

if data bigger than SessionDataUnit it should be divided into segment and each segment sent in data packet

func (*Session) WriteBytes

func (session *Session) WriteBytes(buffer *bytes.Buffer, data ...byte)

func (*Session) WriteClr

func (session *Session) WriteClr(buffer *bytes.Buffer, data []byte)

func (*Session) WriteInt

func (session *Session) WriteInt(buffer *bytes.Buffer, number interface{}, size uint8, bigEndian, compress bool)

WriteInt write int data to external buffer

func (*Session) WriteKeyVal

func (session *Session) WriteKeyVal(buffer *bytes.Buffer, key []byte, val []byte, num uint8)

WriteKeyVal write key, val, flag number to external buffer

func (*Session) WriteKeyValString

func (session *Session) WriteKeyValString(buffer *bytes.Buffer, key string, val string, num uint8)

WriteKeyValString write key, val (in form of string) and flag number to external buffer

func (*Session) WriteUint

func (session *Session) WriteUint(buffer *bytes.Buffer, number interface{}, size uint8, bigEndian, compress bool)

WriteUint write uint data to external buffer

type SessionContext

type SessionContext struct {
	//conn net.Conn
	ConnOption *ConnectionOption
	//PortNo int
	//InstanceName string
	//HostName string
	//IPAddress string
	//Protocol string
	//ServiceName string
	SID []byte
	//ConnectData string
	Version           uint16
	LoVersion         uint16
	Options           uint16
	NegotiatedOptions uint16
	OurOne            uint16
	Histone           uint16
	ReconAddr         string

	ACFL0               uint8
	ACFL1               uint8
	SessionDataUnit     uint32
	TransportDataUnit   uint32
	UsingAsyncReceivers bool
	IsNTConnected       bool
	OnBreakReset        bool
	GotReset            bool
	AdvancedService     struct {
		CryptAlgo  security.OracleNetworkEncryption
		HashAlgo   security.OracleNetworkDataIntegrity
		SessionKey []byte
		IV         []byte
	}
	// contains filtered or unexported fields
}

func NewSessionContext

func NewSessionContext(connOption *ConnectionOption) *SessionContext

type SessionInfo

type SessionInfo struct {
	SSLVersion            string
	Timeout               time.Duration
	UnixAddress           string
	TransportDataUnitSize uint32
	SessionDataUnitSize   uint32
	Protocol              string
	SSL                   bool
	SSLVerify             bool
	Dialer                DialerContext
}

type SessionState

type SessionState struct {
	InBuffer  []byte
	OutBuffer bytes.Buffer
	// contains filtered or unexported fields
}

type SummaryObject

type SummaryObject struct {
	EndOfCallStatus      int // uint32
	EndToEndECIDSequence int // uint16
	CurRowNumber         int // uint32
	RetCode              int // uint16

	CursorID int // uint16

	Flags int // uint16

	ErrorMessage []byte
	// contains filtered or unexported fields
}

func NewSummary

func NewSummary(session *Session) (*SummaryObject, error)

type WarningObject

type WarningObject struct {
	// contains filtered or unexported fields
}

func NewWarningObject

func NewWarningObject(session *Session) (*WarningObject, error)

Directories

Path Synopsis
md4
Package md4 implements the MD4 hash algorithm as defined in RFC 1320.
Package md4 implements the MD4 hash algorithm as defined in RFC 1320.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL