|
22 | 22 | import haveno.common.config.Config;
|
23 | 23 | import haveno.core.api.CoreContext;
|
24 | 24 | import haveno.daemon.grpc.interceptor.PasswordAuthInterceptor;
|
25 |
| -import io.grpc.Server; |
26 |
| -import io.grpc.ServerBuilder; |
27 | 25 | import static io.grpc.ServerInterceptors.interceptForward;
|
28 | 26 | import java.io.IOException;
|
29 | 27 | import java.io.UncheckedIOException;
|
| 28 | +import io.grpc.Metadata; |
| 29 | +import io.grpc.ServerCall; |
| 30 | +import io.grpc.ServerCallHandler; |
| 31 | +import io.grpc.ServerInterceptor; |
| 32 | +import io.grpc.Server; |
| 33 | +import io.grpc.ServerBuilder; |
30 | 34 | import lombok.extern.slf4j.Slf4j;
|
31 | 35 |
|
32 | 36 | @Singleton
|
@@ -55,26 +59,41 @@ public GrpcServer(CoreContext coreContext,
|
55 | 59 | GrpcXmrConnectionService moneroConnectionsService,
|
56 | 60 | GrpcXmrNodeService moneroNodeService) {
|
57 | 61 | this.server = ServerBuilder.forPort(config.apiPort)
|
58 |
| - .addService(interceptForward(accountService, accountService.interceptors())) |
59 |
| - .addService(interceptForward(disputeAgentsService, disputeAgentsService.interceptors())) |
60 |
| - .addService(interceptForward(disputesService, disputesService.interceptors())) |
61 |
| - .addService(interceptForward(helpService, helpService.interceptors())) |
62 |
| - .addService(interceptForward(offersService, offersService.interceptors())) |
63 |
| - .addService(interceptForward(paymentAccountsService, paymentAccountsService.interceptors())) |
64 |
| - .addService(interceptForward(priceService, priceService.interceptors())) |
65 | 62 | .addService(shutdownService)
|
66 |
| - .addService(interceptForward(tradeStatisticsService, tradeStatisticsService.interceptors())) |
67 |
| - .addService(interceptForward(tradesService, tradesService.interceptors())) |
68 |
| - .addService(interceptForward(versionService, versionService.interceptors())) |
69 |
| - .addService(interceptForward(walletsService, walletsService.interceptors())) |
70 |
| - .addService(interceptForward(notificationsService, notificationsService.interceptors())) |
71 |
| - .addService(interceptForward(moneroConnectionsService, moneroConnectionsService.interceptors())) |
72 |
| - .addService(interceptForward(moneroNodeService, moneroNodeService.interceptors())) |
73 | 63 | .intercept(passwordAuthInterceptor)
|
| 64 | + .addService(interceptForward(accountService, config.disableRateLimits ? interceptors() : accountService.interceptors())) |
| 65 | + .addService(interceptForward(disputeAgentsService, config.disableRateLimits ? interceptors() : disputeAgentsService.interceptors())) |
| 66 | + .addService(interceptForward(disputesService, config.disableRateLimits ? interceptors() : disputesService.interceptors())) |
| 67 | + .addService(interceptForward(helpService, config.disableRateLimits ? interceptors() : helpService.interceptors())) |
| 68 | + .addService(interceptForward(offersService, config.disableRateLimits ? interceptors() : offersService.interceptors())) |
| 69 | + .addService(interceptForward(paymentAccountsService, config.disableRateLimits ? interceptors() : paymentAccountsService.interceptors())) |
| 70 | + .addService(interceptForward(priceService, config.disableRateLimits ? interceptors() : priceService.interceptors())) |
| 71 | + .addService(interceptForward(tradeStatisticsService, config.disableRateLimits ? interceptors() : tradeStatisticsService.interceptors())) |
| 72 | + .addService(interceptForward(tradesService, config.disableRateLimits ? interceptors() : tradesService.interceptors())) |
| 73 | + .addService(interceptForward(versionService, config.disableRateLimits ? interceptors() : versionService.interceptors())) |
| 74 | + .addService(interceptForward(walletsService, config.disableRateLimits ? interceptors() : walletsService.interceptors())) |
| 75 | + .addService(interceptForward(notificationsService, config.disableRateLimits ? interceptors() : notificationsService.interceptors())) |
| 76 | + .addService(interceptForward(moneroConnectionsService, config.disableRateLimits ? interceptors() : moneroConnectionsService.interceptors())) |
| 77 | + .addService(interceptForward(moneroNodeService, config.disableRateLimits ? interceptors() : moneroNodeService.interceptors())) |
74 | 78 | .build();
|
| 79 | + |
75 | 80 | coreContext.setApiUser(true);
|
76 | 81 | }
|
77 | 82 |
|
| 83 | + private ServerInterceptor[] interceptors() { |
| 84 | + return new ServerInterceptor[]{callLoggingInterceptor()}; |
| 85 | + } |
| 86 | + |
| 87 | + private ServerInterceptor callLoggingInterceptor() { |
| 88 | + return new ServerInterceptor() { |
| 89 | + @Override |
| 90 | + public <RequestT, ResponseT> ServerCall.Listener<RequestT> interceptCall(ServerCall<RequestT, ResponseT> call, Metadata headers, ServerCallHandler<RequestT, ResponseT> next) { |
| 91 | + log.debug("GRPC endpoint called: " + call.getMethodDescriptor().getFullMethodName()); |
| 92 | + return next.startCall(call, headers); |
| 93 | + } |
| 94 | + }; |
| 95 | + } |
| 96 | + |
78 | 97 | public void start() {
|
79 | 98 | try {
|
80 | 99 | server.start();
|
|
0 commit comments