Skip to content

Commit 8843c66

Browse files
committed
2025-06-23 09:30:39
1 parent 580d751 commit 8843c66

File tree

6 files changed

+42
-54
lines changed

6 files changed

+42
-54
lines changed

cmd/daze/main.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -169,46 +169,46 @@ func main() {
169169
switch *flProtoc {
170170
case "ashe":
171171
client := ashe.NewClient(*flServer, *flCipher)
172-
if *flLimits != "" {
173-
n := daze.SizeParser(*flLimits)
174-
doa.Doa(n <= math.MaxInt)
175-
client.Limits = rate.NewLimiter(rate.Limit(n), int(n))
176-
}
177172
locale := daze.NewLocale(*flListen, daze.NewAimbot(client, &daze.AimbotOption{
178173
Type: *flFilter,
179174
Rule: *flRulels,
180175
Cidr: *flCIDRls,
181176
}))
182177
defer locale.Close()
183-
doa.Nil(locale.Run())
184-
case "baboon":
185-
client := baboon.NewClient(*flServer, *flCipher)
186178
if *flLimits != "" {
187179
n := daze.SizeParser(*flLimits)
188180
doa.Doa(n <= math.MaxInt)
189-
client.Limits = rate.NewLimiter(rate.Limit(n), int(n))
181+
locale.Limits = rate.NewLimiter(rate.Limit(n), int(n))
190182
}
183+
doa.Nil(locale.Run())
184+
case "baboon":
185+
client := baboon.NewClient(*flServer, *flCipher)
191186
locale := daze.NewLocale(*flListen, daze.NewAimbot(client, &daze.AimbotOption{
192187
Type: *flFilter,
193188
Rule: *flRulels,
194189
Cidr: *flCIDRls,
195190
}))
196191
defer locale.Close()
197-
doa.Nil(locale.Run())
198-
case "czar":
199-
client := czar.NewClient(*flServer, *flCipher)
200-
defer client.Close()
201192
if *flLimits != "" {
202193
n := daze.SizeParser(*flLimits)
203194
doa.Doa(n <= math.MaxInt)
204-
client.Limits = rate.NewLimiter(rate.Limit(n), int(n))
195+
locale.Limits = rate.NewLimiter(rate.Limit(n), int(n))
205196
}
197+
doa.Nil(locale.Run())
198+
case "czar":
199+
client := czar.NewClient(*flServer, *flCipher)
200+
defer client.Close()
206201
locale := daze.NewLocale(*flListen, daze.NewAimbot(client, &daze.AimbotOption{
207202
Type: *flFilter,
208203
Rule: *flRulels,
209204
Cidr: *flCIDRls,
210205
}))
211206
defer locale.Close()
207+
if *flLimits != "" {
208+
n := daze.SizeParser(*flLimits)
209+
doa.Doa(n <= math.MaxInt)
210+
locale.Limits = rate.NewLimiter(rate.Limit(n), int(n))
211+
}
212212
doa.Nil(locale.Run())
213213
case "dahlia":
214214
client := dahlia.NewClient(*flListen, *flServer, *flCipher)

daze.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,10 @@ func (d *Direct) Dial(ctx *Context, network string, address string) (io.ReadWrit
190190

191191
// Locale is the main process of daze. In most cases, it is usually deployed as a daemon on a local machine.
192192
type Locale struct {
193-
Listen string
194-
Dialer Dialer
195193
Closer io.Closer
194+
Dialer Dialer
195+
Limits *rate.Limiter
196+
Listen string
196197
}
197198

198199
// ServeProxy serves traffic in HTTP Proxy/Tunnel format.
@@ -551,6 +552,10 @@ func (l *Locale) Serve(ctx *Context, cli io.ReadWriteCloser) error {
551552
buf = make([]byte, 1)
552553
err error
553554
)
555+
cli = &RateConn{
556+
Conn: cli,
557+
Rate: l.Limits,
558+
}
554559
_, err = io.ReadFull(cli, buf)
555560
if err != nil {
556561
// There are some clients that will establish a link in advance without sending any messages so that they can
@@ -621,8 +626,9 @@ func (l *Locale) Run() error {
621626
// NewLocale returns a Locale.
622627
func NewLocale(listen string, dialer Dialer) *Locale {
623628
return &Locale{
624-
Listen: listen,
625629
Dialer: dialer,
630+
Limits: rate.NewLimiter(rate.Inf, 0),
631+
Listen: listen,
626632
}
627633
}
628634

protocol/ashe/engine.go

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -223,16 +223,16 @@ func (s *Server) Run() error {
223223
}
224224
break
225225
}
226-
rwc := &daze.RateConn{
227-
Conn: cli,
228-
Rate: s.Limits,
229-
}
230226
idx++
231227
ctx := &daze.Context{Cid: idx}
232228
log.Printf("conn: %08x accept remote=%s", ctx.Cid, cli.RemoteAddr())
229+
rtc := &daze.RateConn{
230+
Conn: cli,
231+
Rate: s.Limits,
232+
}
233233
go func() {
234-
defer cli.Close()
235-
if err := s.Serve(ctx, rwc); err != nil {
234+
defer rtc.Close()
235+
if err := s.Serve(ctx, rtc); err != nil {
236236
log.Printf("conn: %08x error %s", ctx.Cid, err)
237237
}
238238
log.Printf("conn: %08x closed", ctx.Cid)
@@ -256,7 +256,6 @@ func NewServer(listen string, cipher string) *Server {
256256
type Client struct {
257257
// Cipher is a pre-shared key.
258258
Cipher []byte
259-
Limits *rate.Limiter
260259
Server string
261260
}
262261

@@ -345,11 +344,7 @@ func (c *Client) Dial(ctx *daze.Context, network string, address string) (io.Rea
345344
if err != nil {
346345
return nil, err
347346
}
348-
rwc := &daze.RateConn{
349-
Conn: srv,
350-
Rate: c.Limits,
351-
}
352-
con, err := c.Estab(ctx, rwc, network, address)
347+
con, err := c.Estab(ctx, srv, network, address)
353348
if err != nil {
354349
srv.Close()
355350
}
@@ -360,7 +355,6 @@ func (c *Client) Dial(ctx *daze.Context, network string, address string) (io.Rea
360355
func NewClient(server, cipher string) *Client {
361356
return &Client{
362357
Cipher: daze.Salt(cipher),
363-
Limits: rate.NewLimiter(rate.Inf, 0),
364358
Server: server,
365359
}
366360
}

protocol/baboon/engine.go

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,14 @@ func (s *Server) ServeDaze(w http.ResponseWriter, r *http.Request) {
7676
Writer: cc,
7777
Closer: cc,
7878
}
79-
rwc := &daze.RateConn{
80-
Conn: cli,
81-
Rate: s.Limits,
82-
}
8379
spy := &ashe.Server{Cipher: s.Cipher}
8480
ctx := &daze.Context{Cid: atomic.AddUint32(&s.NextID, 1)}
8581
log.Printf("conn: %08x accept remote=%s", ctx.Cid, cc.RemoteAddr())
86-
if err := spy.Serve(ctx, rwc); err != nil {
82+
rtc := &daze.RateConn{
83+
Conn: cli,
84+
Rate: s.Limits,
85+
}
86+
if err := spy.Serve(ctx, rtc); err != nil {
8787
log.Printf("conn: %08x error %s", ctx.Cid, err)
8888
}
8989
log.Printf("conn: %08x closed", ctx.Cid)
@@ -159,7 +159,6 @@ func NewServer(listen string, cipher string) *Server {
159159
// Client implemented the baboon protocol.
160160
type Client struct {
161161
Cipher []byte
162-
Limits *rate.Limiter
163162
Server string
164163
}
165164

@@ -175,10 +174,6 @@ func (c *Client) Dial(ctx *daze.Context, network string, address string) (io.Rea
175174
if err != nil {
176175
return nil, err
177176
}
178-
srv = &daze.RateConn{
179-
Conn: srv,
180-
Rate: c.Limits,
181-
}
182177
buf = make([]byte, 32)
183178
io.ReadFull(&daze.RandomReader{}, buf[:16])
184179
copy(buf[16:], c.Cipher[:16])
@@ -202,7 +197,6 @@ func (c *Client) Dial(ctx *daze.Context, network string, address string) (io.Rea
202197
func NewClient(server string, cipher string) *Client {
203198
return &Client{
204199
Cipher: daze.Salt(cipher),
205-
Limits: rate.NewLimiter(rate.Inf, 0),
206200
Server: server,
207201
}
208202
}

protocol/czar/engine.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,11 @@ func (s *Server) Run() error {
9696
}
9797
break
9898
}
99-
rwc := &daze.RateConn{
99+
rtc := &daze.RateConn{
100100
Conn: cli,
101101
Rate: s.Limits,
102102
}
103-
mux := NewMuxServer(rwc)
103+
mux := NewMuxServer(rtc)
104104
go func() {
105105
defer mux.Close()
106106
for con := range mux.Accept() {
@@ -135,7 +135,6 @@ func NewServer(listen string, cipher string) *Server {
135135
type Client struct {
136136
Cancel chan struct{}
137137
Cipher []byte
138-
Limits *rate.Limiter
139138
Mux chan *Mux
140139
Server string
141140
}
@@ -156,13 +155,9 @@ func (c *Client) Dial(ctx *daze.Context, network string, address string) (io.Rea
156155
}
157156
log.Printf("czar: mux slot stream id=0x%02x", srv.idx)
158157
spy := &ashe.Client{Cipher: c.Cipher}
159-
rwc := &daze.RateConn{
160-
Conn: srv,
161-
Rate: c.Limits,
162-
}
163-
con, err := spy.Estab(ctx, rwc, network, address)
158+
con, err := spy.Estab(ctx, srv, network, address)
164159
if err != nil {
165-
rwc.Close()
160+
srv.Close()
166161
}
167162
return con, err
168163
case <-time.After(daze.Conf.DialerTimeout):
@@ -233,7 +228,6 @@ func NewClient(server, cipher string) *Client {
233228
client := &Client{
234229
Cancel: make(chan struct{}),
235230
Cipher: daze.Salt(cipher),
236-
Limits: rate.NewLimiter(rate.Inf, 0),
237231
Mux: make(chan *Mux),
238232
Server: server,
239233
}

protocol/dahlia/engine.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,16 +147,16 @@ func (c *Client) Run() error {
147147
}
148148
break
149149
}
150-
rwc := &daze.RateConn{
150+
rtc := &daze.RateConn{
151151
Conn: cli,
152152
Rate: c.Limits,
153153
}
154154
idx++
155155
ctx := &daze.Context{Cid: idx}
156156
log.Printf("conn: %08x accept remote=%s", ctx.Cid, cli.RemoteAddr())
157157
go func() {
158-
defer cli.Close()
159-
if err := c.Serve(ctx, rwc); err != nil {
158+
defer rtc.Close()
159+
if err := c.Serve(ctx, rtc); err != nil {
160160
log.Printf("conn: %08x error %s", ctx.Cid, err)
161161
}
162162
log.Printf("conn: %08x closed", ctx.Cid)

0 commit comments

Comments
 (0)