Add support of EventDomainFronting event

This commit is contained in:
9seconds
2021-03-29 11:56:05 +03:00
parent 36d695118e
commit bef14bd009
17 changed files with 317 additions and 53 deletions
+14 -2
View File
@@ -215,7 +215,7 @@ func (p *Proxy) doTelegramCall(ctx *streamContext) error {
}
ctx.telegramConn = obfuscated2.Conn{
Conn: connTelegramTraffic{
Conn: connTraffic{
Conn: conn,
connID: ctx.connID,
stream: p.eventStream,
@@ -235,7 +235,12 @@ func (p *Proxy) doTelegramCall(ctx *streamContext) error {
return nil
}
func (p *Proxy) doDomainFronting(ctx context.Context, conn *connRewind) {
func (p *Proxy) doDomainFronting(ctx *streamContext, conn *connRewind) {
p.eventStream.Send(p.ctx, EventDomainFronting{
CreatedAt: time.Now(),
ConnID: ctx.connID,
})
conn.Rewind()
frontConn, err := p.network.DialContext(ctx, "tcp", p.domainFrontAddress)
@@ -245,6 +250,13 @@ func (p *Proxy) doDomainFronting(ctx context.Context, conn *connRewind) {
return
}
frontConn = connTraffic{
Conn: frontConn,
ctx: ctx,
connID: ctx.connID,
stream: p.eventStream,
}
rel := relay.AcquireRelay(ctx,
p.logger.Named("domain-fronting"), p.bufferSize, p.idleTimeout)
defer relay.ReleaseRelay(rel)