@@ -2,7 +2,6 @@ package main
2
2
3
3
import (
4
4
"context"
5
- "expvar" // Register the expvar handlers
6
5
"fmt"
7
6
"mime"
8
7
"net"
@@ -17,6 +16,7 @@ import (
17
16
"github.com/ardanlabs/conf"
18
17
"github.com/go-playground/validator"
19
18
"github.com/pkg/errors"
19
+ "github.com/savsgio/gotils/strconv"
20
20
"github.com/sirupsen/logrus"
21
21
"github.com/valyala/fasthttp"
22
22
"github.com/wundergraph/graphql-go-tools/pkg/graphql"
@@ -30,10 +30,9 @@ import (
30
30
"github.com/wallarm/api-firewall/internal/platform/proxy"
31
31
"github.com/wallarm/api-firewall/internal/platform/storage"
32
32
"github.com/wallarm/api-firewall/internal/platform/web"
33
+ "github.com/wallarm/api-firewall/internal/version"
33
34
)
34
35
35
- var build = "develop"
36
-
37
36
const (
38
37
namespace = "apifw"
39
38
logPrefix = "main"
@@ -95,7 +94,7 @@ func runAPIMode(logger *logrus.Logger) error {
95
94
// Configuration
96
95
97
96
var cfg config.APIMode
98
- cfg .Version .SVN = build
97
+ cfg .Version .SVN = version . Version
99
98
cfg .Version .Desc = projectName
100
99
101
100
if err := conf .Parse (os .Args [1 :], namespace , & cfg ); err != nil {
@@ -140,10 +139,7 @@ func runAPIMode(logger *logrus.Logger) error {
140
139
return errors .New ("invalid log level" )
141
140
}
142
141
143
- // print the build version for our logs. Also expose it under /debug/vars
144
- expvar .NewString ("build" ).Set (build )
145
-
146
- logger .Infof ("%s : Started : Application initializing : version %q" , logPrefix , build )
142
+ logger .Infof ("%s : Started : Application initializing : version %q" , logPrefix , version .Version )
147
143
defer logger .Infof ("%s: Completed" , logPrefix )
148
144
149
145
out , err := conf .String (& cfg )
@@ -211,7 +207,6 @@ func runAPIMode(logger *logrus.Logger) error {
211
207
// Start Health API Service
212
208
213
209
healthData := handlersAPI.Health {
214
- Build : build ,
215
210
Logger : logger ,
216
211
OpenAPIDB : specStorage ,
217
212
}
@@ -266,9 +261,25 @@ func runAPIMode(logger *logrus.Logger) error {
266
261
}
267
262
268
263
api := fasthttp.Server {
269
- Handler : requestHandlers ,
270
- ReadTimeout : cfg .ReadTimeout ,
271
- WriteTimeout : cfg .WriteTimeout ,
264
+ Handler : requestHandlers ,
265
+ ReadTimeout : cfg .ReadTimeout ,
266
+ WriteTimeout : cfg .WriteTimeout ,
267
+ ReadBufferSize : cfg .ReadBufferSize ,
268
+ WriteBufferSize : cfg .WriteBufferSize ,
269
+ MaxRequestBodySize : cfg .MaxRequestBodySize ,
270
+ DisableKeepalive : cfg .DisableKeepalive ,
271
+ MaxConnsPerIP : cfg .MaxConnsPerIP ,
272
+ MaxRequestsPerConn : cfg .MaxRequestsPerConn ,
273
+ ErrorHandler : func (ctx * fasthttp.RequestCtx , err error ) {
274
+ logger .WithFields (logrus.Fields {
275
+ "error" : err ,
276
+ "host" : strconv .B2S (ctx .Request .Header .Host ()),
277
+ "path" : strconv .B2S (ctx .Path ()),
278
+ "method" : strconv .B2S (ctx .Request .Header .Method ()),
279
+ }).Error ("request processing error" )
280
+
281
+ ctx .Error ("" , fasthttp .StatusInternalServerError )
282
+ },
272
283
Logger : logger ,
273
284
NoDefaultServerHeader : true ,
274
285
}
@@ -337,7 +348,7 @@ func runGraphQLMode(logger *logrus.Logger) error {
337
348
// Configuration
338
349
339
350
var cfg config.GraphQLMode
340
- cfg .Version .SVN = build
351
+ cfg .Version .SVN = version . Version
341
352
cfg .Version .Desc = projectName
342
353
343
354
if err := conf .Parse (os .Args [1 :], namespace , & cfg ); err != nil {
@@ -382,10 +393,7 @@ func runGraphQLMode(logger *logrus.Logger) error {
382
393
return errors .New ("invalid log level" )
383
394
}
384
395
385
- // Print the build version for our logs. Also expose it under /debug/vars.
386
- expvar .NewString ("build" ).Set (build )
387
-
388
- logger .Infof ("%s : Started : Application initializing : version %q" , logPrefix , build )
396
+ logger .Infof ("%s : Started : Application initializing : version %q" , logPrefix , version .Version )
389
397
defer logger .Infof ("%s: Completed" , logPrefix )
390
398
391
399
out , err := conf .String (& cfg )
@@ -467,6 +475,9 @@ func runGraphQLMode(logger *logrus.Logger) error {
467
475
MaxConnsPerHost : cfg .Server .MaxConnsPerHost ,
468
476
ReadTimeout : cfg .Server .ReadTimeout ,
469
477
WriteTimeout : cfg .Server .WriteTimeout ,
478
+ ReadBufferSize : cfg .Server .ReadBufferSize ,
479
+ WriteBufferSize : cfg .Server .WriteBufferSize ,
480
+ MaxResponseBodySize : cfg .Server .MaxResponseBodySize ,
470
481
DialTimeout : cfg .Server .DialTimeout ,
471
482
}
472
483
pool , err := proxy .NewChanPool (host , & options , nil )
@@ -538,7 +549,6 @@ func runGraphQLMode(logger *logrus.Logger) error {
538
549
// Start Health API Service
539
550
540
551
healthData := handlersProxy.Health {
541
- Build : build ,
542
552
Logger : logger ,
543
553
Pool : pool ,
544
554
}
@@ -593,9 +603,22 @@ func runGraphQLMode(logger *logrus.Logger) error {
593
603
}
594
604
595
605
api := fasthttp.Server {
596
- Handler : requestHandlers ,
597
- ReadTimeout : cfg .ReadTimeout ,
598
- WriteTimeout : cfg .WriteTimeout ,
606
+ Handler : requestHandlers ,
607
+ ReadTimeout : cfg .ReadTimeout ,
608
+ WriteTimeout : cfg .WriteTimeout ,
609
+ ReadBufferSize : cfg .ReadBufferSize ,
610
+ WriteBufferSize : cfg .WriteBufferSize ,
611
+ MaxRequestBodySize : cfg .MaxRequestBodySize ,
612
+ DisableKeepalive : cfg .DisableKeepalive ,
613
+ MaxConnsPerIP : cfg .MaxConnsPerIP ,
614
+ MaxRequestsPerConn : cfg .MaxRequestsPerConn ,
615
+ ErrorHandler : func (ctx * fasthttp.RequestCtx , err error ) {
616
+ logger .WithFields (logrus.Fields {
617
+ "error" : err ,
618
+ }).Error ("request processing error" )
619
+
620
+ ctx .Error ("" , fasthttp .StatusForbidden )
621
+ },
599
622
Logger : logger ,
600
623
NoDefaultServerHeader : true ,
601
624
}
@@ -643,7 +666,7 @@ func runProxyMode(logger *logrus.Logger) error {
643
666
// Configuration
644
667
645
668
var cfg config.ProxyMode
646
- cfg .Version .SVN = build
669
+ cfg .Version .SVN = version . Version
647
670
cfg .Version .Desc = projectName
648
671
649
672
if err := conf .Parse (os .Args [1 :], namespace , & cfg ); err != nil {
@@ -721,10 +744,7 @@ func runProxyMode(logger *logrus.Logger) error {
721
744
// =========================================================================
722
745
// App Starting
723
746
724
- // print the build version for our logs. Also expose it under /debug/vars
725
- expvar .NewString ("build" ).Set (build )
726
-
727
- logger .Infof ("%s : Started : Application initializing : version %q" , logPrefix , build )
747
+ logger .Infof ("%s : Started : Application initializing : version %q" , logPrefix , version .Version )
728
748
defer logger .Infof ("%s: Completed" , logPrefix )
729
749
730
750
out , err := conf .String (& cfg )
@@ -820,6 +840,9 @@ func runProxyMode(logger *logrus.Logger) error {
820
840
MaxConnsPerHost : cfg .Server .MaxConnsPerHost ,
821
841
ReadTimeout : cfg .Server .ReadTimeout ,
822
842
WriteTimeout : cfg .Server .WriteTimeout ,
843
+ ReadBufferSize : cfg .Server .ReadBufferSize ,
844
+ WriteBufferSize : cfg .Server .WriteBufferSize ,
845
+ MaxResponseBodySize : cfg .Server .MaxResponseBodySize ,
823
846
DialTimeout : cfg .Server .DialTimeout ,
824
847
DNSConfig : cfg .DNS ,
825
848
}
@@ -884,7 +907,6 @@ func runProxyMode(logger *logrus.Logger) error {
884
907
// Start Health API Service
885
908
886
909
healthData := handlersProxy.Health {
887
- Build : build ,
888
910
Logger : logger ,
889
911
Pool : pool ,
890
912
}
@@ -939,9 +961,22 @@ func runProxyMode(logger *logrus.Logger) error {
939
961
}
940
962
941
963
api := fasthttp.Server {
942
- Handler : requestHandlers ,
943
- ReadTimeout : cfg .ReadTimeout ,
944
- WriteTimeout : cfg .WriteTimeout ,
964
+ Handler : requestHandlers ,
965
+ ReadTimeout : cfg .ReadTimeout ,
966
+ WriteTimeout : cfg .WriteTimeout ,
967
+ ReadBufferSize : cfg .ReadBufferSize ,
968
+ WriteBufferSize : cfg .WriteBufferSize ,
969
+ MaxRequestBodySize : cfg .MaxRequestBodySize ,
970
+ DisableKeepalive : cfg .DisableKeepalive ,
971
+ MaxConnsPerIP : cfg .MaxConnsPerIP ,
972
+ MaxRequestsPerConn : cfg .MaxRequestsPerConn ,
973
+ ErrorHandler : func (ctx * fasthttp.RequestCtx , err error ) {
974
+ logger .WithFields (logrus.Fields {
975
+ "error" : err ,
976
+ }).Error ("request processing error" )
977
+
978
+ ctx .Error ("" , cfg .CustomBlockStatusCode )
979
+ },
945
980
Logger : logger ,
946
981
NoDefaultServerHeader : true ,
947
982
}
0 commit comments