mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Refactor event logger setting into function call
See also: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/67#note_2770482
This commit is contained in:
parent
55bf117d1a
commit
657aaa6ba8
2 changed files with 14 additions and 10 deletions
|
@ -71,6 +71,10 @@ func (addr dummyAddr) String() string { return "dummy" }
|
||||||
// https://github.com/Pluggable-Transports/Pluggable-Transports-spec/blob/master/releases/PTSpecV2.1/Pluggable%20Transport%20Specification%20v2.1%20-%20Go%20Transport%20API.pdf
|
// https://github.com/Pluggable-Transports/Pluggable-Transports-spec/blob/master/releases/PTSpecV2.1/Pluggable%20Transport%20Specification%20v2.1%20-%20Go%20Transport%20API.pdf
|
||||||
type Transport struct {
|
type Transport struct {
|
||||||
dialer *WebRTCDialer
|
dialer *WebRTCDialer
|
||||||
|
|
||||||
|
// EventDispatcher is the event bus for snowflake events.
|
||||||
|
// When an important event happens, it will be distributed here.
|
||||||
|
eventDispatcher event.SnowflakeEventDispatcher
|
||||||
}
|
}
|
||||||
|
|
||||||
// ClientConfig defines how the SnowflakeClient will connect to the broker and Snowflake proxies.
|
// ClientConfig defines how the SnowflakeClient will connect to the broker and Snowflake proxies.
|
||||||
|
@ -93,9 +97,6 @@ type ClientConfig struct {
|
||||||
// Max is the maximum number of snowflake proxy peers that the client should attempt to
|
// Max is the maximum number of snowflake proxy peers that the client should attempt to
|
||||||
// connect to. Defaults to 1.
|
// connect to. Defaults to 1.
|
||||||
Max int
|
Max int
|
||||||
// EventDispatcher is the event bus for snowflake events.
|
|
||||||
// When an important event happens, it will be distributed here.
|
|
||||||
EventDispatcher event.SnowflakeEventDispatcher
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewSnowflakeClient creates a new Snowflake transport client that can spawn multiple
|
// NewSnowflakeClient creates a new Snowflake transport client that can spawn multiple
|
||||||
|
@ -135,7 +136,8 @@ func NewSnowflakeClient(config ClientConfig) (*Transport, error) {
|
||||||
if config.Max > max {
|
if config.Max > max {
|
||||||
max = config.Max
|
max = config.Max
|
||||||
}
|
}
|
||||||
transport := &Transport{dialer: NewWebRTCDialer4E(broker, iceServers, max, config.EventDispatcher)}
|
eventsLogger := event.NewSnowflakeEventDispatcher()
|
||||||
|
transport := &Transport{dialer: NewWebRTCDialer4E(broker, iceServers, max, eventsLogger), eventDispatcher: eventsLogger}
|
||||||
|
|
||||||
return transport, nil
|
return transport, nil
|
||||||
}
|
}
|
||||||
|
@ -191,6 +193,13 @@ func (t *Transport) Dial() (net.Conn, error) {
|
||||||
cleanup = nil
|
cleanup = nil
|
||||||
return &SnowflakeConn{Stream: stream, sess: sess, pconn: pconn, snowflakes: snowflakes}, nil
|
return &SnowflakeConn{Stream: stream, sess: sess, pconn: pconn, snowflakes: snowflakes}, nil
|
||||||
}
|
}
|
||||||
|
func (t *Transport) AddSnowflakeEventListener(receiver event.SnowflakeEventReceiver) {
|
||||||
|
t.eventDispatcher.AddSnowflakeEventListener(receiver)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Transport) RemoveSnowflakeEventListener(receiver event.SnowflakeEventReceiver) {
|
||||||
|
t.eventDispatcher.RemoveSnowflakeEventListener(receiver)
|
||||||
|
}
|
||||||
|
|
||||||
// SetRendezvousMethod sets the rendezvous method to the Snowflake broker.
|
// SetRendezvousMethod sets the rendezvous method to the Snowflake broker.
|
||||||
func (t *Transport) SetRendezvousMethod(r RendezvousMethod) {
|
func (t *Transport) SetRendezvousMethod(r RendezvousMethod) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ import (
|
||||||
|
|
||||||
pt "git.torproject.org/pluggable-transports/goptlib.git"
|
pt "git.torproject.org/pluggable-transports/goptlib.git"
|
||||||
sf "git.torproject.org/pluggable-transports/snowflake.git/v2/client/lib"
|
sf "git.torproject.org/pluggable-transports/snowflake.git/v2/client/lib"
|
||||||
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/event"
|
|
||||||
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/safelog"
|
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/safelog"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -91,6 +90,7 @@ func socksAcceptLoop(ln *pt.SocksListener, config sf.ClientConfig, shutdown chan
|
||||||
log.Println("Failed to start snowflake transport: ", err)
|
log.Println("Failed to start snowflake transport: ", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
transport.AddSnowflakeEventListener(sf.NewPTEventLogger())
|
||||||
err = conn.Grant(&net.TCPAddr{IP: net.IPv4zero, Port: 0})
|
err = conn.Grant(&net.TCPAddr{IP: net.IPv4zero, Port: 0})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("conn.Grant error: %s", err)
|
log.Printf("conn.Grant error: %s", err)
|
||||||
|
@ -171,10 +171,6 @@ func main() {
|
||||||
|
|
||||||
iceAddresses := strings.Split(strings.TrimSpace(*iceServersCommas), ",")
|
iceAddresses := strings.Split(strings.TrimSpace(*iceServersCommas), ",")
|
||||||
|
|
||||||
eventLogger := event.NewSnowflakeEventDispatcher()
|
|
||||||
|
|
||||||
eventLogger.AddSnowflakeEventListener(sf.NewPTEventLogger())
|
|
||||||
|
|
||||||
config := sf.ClientConfig{
|
config := sf.ClientConfig{
|
||||||
BrokerURL: *brokerURL,
|
BrokerURL: *brokerURL,
|
||||||
AmpCacheURL: *ampCacheURL,
|
AmpCacheURL: *ampCacheURL,
|
||||||
|
@ -182,7 +178,6 @@ func main() {
|
||||||
ICEAddresses: iceAddresses,
|
ICEAddresses: iceAddresses,
|
||||||
KeepLocalAddresses: *keepLocalAddresses || *oldKeepLocalAddresses,
|
KeepLocalAddresses: *keepLocalAddresses || *oldKeepLocalAddresses,
|
||||||
Max: *max,
|
Max: *max,
|
||||||
EventDispatcher: eventLogger,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Begin goptlib client process.
|
// Begin goptlib client process.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue