Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
majora-go
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
majora
majora-go
Commits
0e870c80
Commit
0e870c80
authored
Dec 25, 2021
by
Tsaiilin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
d134309b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
8 deletions
+19
-8
client.go
client/client.go
+4
-3
event.go
client/event.go
+15
-5
No files found.
client/client.go
View file @
0e870c80
...
...
@@ -35,9 +35,10 @@ func NewCli(cfg *model.Configure) *Client {
}
}
client
:=
&
Client
{
config
:
cfg
,
localAddr
:
localAddr
,
connStore
:
sync
.
Map
{},
config
:
cfg
,
localAddr
:
localAddr
,
connStore
:
sync
.
Map
{},
sessionStore
:
sync
.
Map
{},
}
return
client
...
...
client/event.go
View file @
0e870c80
...
...
@@ -62,6 +62,15 @@ func (client *Client) handleConnect(packet *protocol.MajoraPacket, session getty
dialer
:=
net
.
Dialer
{
Timeout
:
common
.
UpstreamTimeout
,
LocalAddr
:
client
.
localAddr
,
//Resolver: &net.Resolver{
// PreferGo: true,
// Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
// d := net.Dialer{
// Timeout: 10 * time.Second,
// }
// return d.DialContext(ctx, "udp", "8.8.8.8:53")
// },
//},
}
conn
,
err
:=
dialer
.
Dial
(
common
.
TCP
,
packet
.
Extra
)
...
...
@@ -177,7 +186,7 @@ func (client *Client) handleUpStream(conn *net.TCPConn, packet *protocol.MajoraP
traceRecorder
.
RecordEvent
(
trace
.
UpStreamEvent
,
fmt
.
Sprintf
(
"Ready read from upstream (sn:%d)"
,
packet
.
SerialNumber
))
log
.
Run
()
.
Debugf
(
"[handleUpStream] %d-> handleUpStream start..."
,
packet
.
SerialNumber
)
for
{
buf
:=
make
([]
byte
,
common
.
BufSize
)
// 4k
buf
:=
make
([]
byte
,
common
.
BufSize
)
cnt
,
err
:=
conn
.
Read
(
buf
)
if
err
!=
nil
{
opErr
,
ok
:=
err
.
(
*
net
.
OpError
)
...
...
@@ -197,9 +206,9 @@ func (client *Client) handleUpStream(conn *net.TCPConn, packet *protocol.MajoraP
traceRecorder
.
RecordEvent
(
trace
.
UpStreamEvent
,
fmt
.
Sprintf
(
"read count: %d (sn:%d)"
,
cnt
,
packet
.
SerialNumber
))
traceRecorder
.
RecordEvent
(
trace
.
UpStreamEvent
,
fmt
.
Sprintf
(
"Start
transfer data
to natServer (sn:%d)"
,
packet
.
SerialNumber
))
traceRecorder
.
RecordEvent
(
trace
.
UpStreamEvent
,
fmt
.
Sprintf
(
"Start
write
to natServer (sn:%d)"
,
packet
.
SerialNumber
))
pack
:=
protocol
.
TypeTransfer
.
CreatePacket
()
pack
.
Data
=
buf
[
:
cnt
]
pack
.
Data
=
buf
[
0
:
cnt
]
pack
.
SerialNumber
=
packet
.
SerialNumber
if
_
,
_
,
err
:=
session
.
WritePkg
(
pack
,
0
);
err
!=
nil
{
log
.
Error
()
.
Errorf
(
"[handleUpStream] %d-> write to server fail %+v"
,
packet
.
SerialNumber
,
err
.
Error
())
...
...
@@ -222,7 +231,7 @@ func (client *Client) handleDisconnectMessage(session getty.Session, packet *pro
log
.
Run
()
.
Debugf
(
"[handleDisconnectMessage] %d->session closed %v extra:%s"
,
packet
.
SerialNumber
,
session
.
IsClosed
())
if
conn
,
ok
:=
client
.
connStore
.
Load
(
packet
.
SerialNumber
);
ok
{
upstreamConn
:=
conn
.
(
*
net
.
TCPConn
)
readDeadLine
:=
time
.
Now
()
.
Add
(
3
*
time
.
S
econd
)
readDeadLine
:=
time
.
Now
()
.
Add
(
10
*
time
.
Millis
econd
)
traceRecorder
.
RecordEvent
(
trace
.
DisconnectEvent
,
fmt
.
Sprintf
(
"Set upstream read deadline:%s (sn:%d)"
,
readDeadLine
.
Format
(
"2006-01-02 15:04:05.000000"
),
packet
.
SerialNumber
))
err
:=
upstreamConn
.
SetReadDeadline
(
readDeadLine
)
...
...
@@ -231,6 +240,7 @@ func (client *Client) handleDisconnectMessage(session getty.Session, packet *pro
fmt
.
Sprintf
(
"Set upstream read deadline failed (sn:%d)"
,
packet
.
SerialNumber
),
err
)
client
.
OnClose
(
session
,
upstreamConn
,
packet
.
SerialNumber
)
}
}
else
{
traceRecorder
.
RecordEvent
(
trace
.
DisconnectEvent
,
fmt
.
Sprintf
(
"The upstream connection is closed, do nothing (sn:%d)"
,
packet
.
SerialNumber
))
}
...
...
@@ -256,7 +266,7 @@ func (client *Client) AddSession(packet *protocol.MajoraPacket, session *trace.S
func
(
client
*
Client
)
GetRecorderFromSession
(
sn
int64
)
trace
.
Recorder
{
session
,
ok
:=
client
.
sessionStore
.
Load
(
sn
)
if
!
ok
{
log
.
Error
()
.
Errorf
(
"[GetSession] get session failed, has one
"
,
sn
)
log
.
Run
()
.
Warnf
(
"[GetRecorderFromSession] get session failed, maybe already closed (%d)
"
,
sn
)
session
=
trace
.
NewSession
(
""
)
}
traceSession
:=
session
.
(
*
trace
.
Session
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment