@@ -76,14 +76,15 @@ func (m *HttpProxyMiddleware) OnProcess(session *rpc.Session) error {
76
76
if ctx , ok := session .RequestCtx .(* fasthttp.RequestCtx ); ok {
77
77
log .Debug ("relay rpc -> " + session .RpcMethod (), "sid" , session .SId (), "node" , session .NodeName , "isTx" , session .IsWriteRpcMethod , "tries" , session .Tries )
78
78
79
+ var node * aggregator.Node
79
80
if _ , ok := m .disableEndpoints .Get (session .NodeName ); ok {
80
81
log .Debug ("disabled endpoint" , "node" , session .NodeName )
81
82
retries := 3
82
83
for {
83
84
if retries == 0 {
84
85
return aggregator .ErrServerError
85
86
}
86
- node : = loadbalance .NextNode (session .Chain )
87
+ node = loadbalance .NextNode (session .Chain )
87
88
if node != nil {
88
89
session .NodeName = node .Name
89
90
ctx .Request .SetRequestURI (node .Endpoint )
@@ -114,13 +115,16 @@ func (m *HttpProxyMiddleware) OnProcess(session *rpc.Session) error {
114
115
}, policies ... )
115
116
116
117
// TODO: add response headers
117
- //if ctx, ok := session.RequestCtx.(*fasthttp.RequestCtx); ok {
118
- // ctx.Response.Header.Set("Access-Control-Max-Age", "86400")
119
- // ctx.Response.Header.Set("Access-Control-Allow-Origin", "*")
120
- // ctx.Response.Header.Set("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS")
121
- // ctx.Response.Header.Set("Access-Control-Allow-Credentials", "true")
122
- // ctx.Response.Header.Set("X-Do-Node", session.NodeName)
123
- //}
118
+ if node != nil && strings .Contains (node .Endpoint , "coin98.com" ) {
119
+ if ctx , ok := session .RequestCtx .(* fasthttp.RequestCtx ); ok {
120
+ ctx .Response .Header .Set ("origin" , "https://dex.saros.xyz" )
121
+ // ctx.Response.Header.Set("Access-Control-Max-Age", "86400")
122
+ // ctx.Response.Header.Set("Access-Control-Allow-Origin", "*")
123
+ // ctx.Response.Header.Set("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS")
124
+ // ctx.Response.Header.Set("Access-Control-Allow-Credentials", "true")
125
+ // ctx.Response.Header.Set("X-Do-Node", session.NodeName)
126
+ }
127
+ }
124
128
125
129
var shouldDisableEndpoint = false
126
130
// alert if error
@@ -177,7 +181,13 @@ func (m *HttpProxyMiddleware) OnProcess(session *rpc.Session) error {
177
181
178
182
// check response body
179
183
var response map [string ]interface {}
180
- if err1 := json .Unmarshal (ctx .Response .Body (), & response ); err1 == nil {
184
+ if strings .Contains (string (ctx .Response .Body ()), "error status code 429" ) {
185
+ log .Error ("error response" , "node" , session .NodeName , "response" , string (ctx .Response .Body ()))
186
+ err = fmt .Errorf ("error response %s" , string (ctx .Response .Body ()))
187
+ shouldDisableEndpoint = true
188
+ ctx .SetStatusCode (429 )
189
+ return err
190
+ } else if err1 := json .Unmarshal (ctx .Response .Body (), & response ); err1 == nil {
181
191
if _ , ok := response ["error" ]; ok {
182
192
log .Error ("error response" , "node" , session .NodeName , "response" , string (ctx .Response .Body ()))
183
193
err = fmt .Errorf ("error response %s" , string (ctx .Response .Body ()))
0 commit comments