Skip to content

Commit e0d11e3

Browse files
author
Jon Schneider
committed
Support plaintext transmission of scrape payload
1 parent 4afcdf7 commit e0d11e3

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

client/src/main/java/io/micrometer/prometheus/rsocket/PrometheusRSocketClient.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import io.micrometer.core.instrument.Counter;
1919
import io.micrometer.core.instrument.MeterRegistry;
20+
import io.micrometer.core.lang.Nullable;
2021
import io.micrometer.prometheus.PrometheusMeterRegistry;
2122
import io.rsocket.*;
2223
import io.rsocket.transport.ClientTransport;
@@ -30,6 +31,7 @@
3031
import javax.crypto.KeyGenerator;
3132
import javax.crypto.SecretKey;
3233
import java.nio.ByteBuffer;
34+
import java.nio.charset.StandardCharsets;
3335
import java.security.KeyFactory;
3436
import java.security.NoSuchAlgorithmException;
3537
import java.security.PublicKey;
@@ -145,15 +147,21 @@ public void pushAndClose() {
145147
close();
146148
}
147149

148-
private Payload scrapePayload(PublicKey publicKey) {
150+
private Payload scrapePayload(@Nullable PublicKey publicKey) {
151+
String scrape = registryAndScrape.scrape();
152+
153+
if (publicKey == null) {
154+
return DefaultPayload.create(scrape, "plaintext");
155+
}
156+
149157
try {
150158
KeyGenerator generator = KeyGenerator.getInstance("AES");
151159
generator.init(128);
152160
SecretKey secKey = generator.generateKey();
153161

154162
Cipher aesCipher = Cipher.getInstance("AES");
155163
aesCipher.init(Cipher.ENCRYPT_MODE, secKey);
156-
byte[] encryptedMetrics = aesCipher.doFinal(Snappy.compress(registryAndScrape.scrape()));
164+
byte[] encryptedMetrics = aesCipher.doFinal(Snappy.compress(scrape));
157165

158166
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
159167
cipher.init(Cipher.PUBLIC_KEY, publicKey);
@@ -165,10 +173,15 @@ private Payload scrapePayload(PublicKey publicKey) {
165173
}
166174
}
167175

176+
@Nullable
168177
private PublicKey decodePublicKey(ByteBuffer encodedKeyBuffer) {
169178
byte[] encodedKey = new byte[encodedKeyBuffer.capacity()];
170179
encodedKeyBuffer.get(encodedKey);
171180

181+
if ("plaintext".equals(new String(encodedKey, StandardCharsets.UTF_8))) {
182+
return null;
183+
}
184+
172185
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(encodedKey);
173186
try {
174187
KeyFactory keyFactory = KeyFactory.getInstance("RSA");

0 commit comments

Comments
 (0)