MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / onNewSession

Method onNewSession

internal/bridge/register.go:15–36  ·  view source on GitHub ↗

onNewSession registers a CLIProxyAPI session as a C2 implant session.

(sess *sessions.Session)

Source from the content-addressed store, hash-verified

13
14// onNewSession registers a CLIProxyAPI session as a C2 implant session.
15func (b *Bridge) onNewSession(sess *sessions.Session) {
16 if _, loaded := b.registered.LoadOrStore(sess.ID, true); loaded {
17 return
18 }
19
20 info := parseUserAgentFull(sess.UserAgent)
21 if err := b.registerSessionRPC(sess, info); err != nil {
22 log.Errorf("[bridge] failed to register session %s: %v", sess.ID, err)
23 b.registered.Delete(sess.ID)
24 return
25 }
26
27 // Pin session so the local session manager won't garbage collect it.
28 sessions.Global().PinSession(sess.ID)
29
30 // Notify any goroutines waiting for this session (e.g. modules dispatched
31 // before the session was registered).
32 b.notifySessionReady(sess.ID)
33
34 // Start observing this session's events.
35 go b.observeSession(sess.ID)
36}
37
38func (b *Bridge) registerSessionRPC(sess *sessions.Session, info agentInfo) error {
39 // Use detected agent type as name if available (more accurate than UA parsing).

Calls 7

registerSessionRPCMethod · 0.95
notifySessionReadyMethod · 0.95
observeSessionMethod · 0.95
GlobalFunction · 0.92
parseUserAgentFullFunction · 0.85
PinSessionMethod · 0.80
DeleteMethod · 0.65