Store & submit spam reporting token from server.

This commit is contained in:
Nicholas
2023-02-02 10:03:56 -05:00
committed by Nicholas Tinsley
parent 6a8e82ef91
commit 72449fd73e
14 changed files with 128 additions and 21 deletions

View File

@@ -759,8 +759,8 @@ public class SignalServiceAccountManager {
return this.pushServiceSocket.getCurrencyConversions();
}
public void reportSpam(ServiceId serviceId, String serverGuid) throws IOException {
this.pushServiceSocket.reportSpam(serviceId, serverGuid);
public void reportSpam(ServiceId serviceId, String serverGuid, String reportingToken) throws IOException {
this.pushServiceSocket.reportSpam(serviceId, serverGuid, reportingToken);
}
/**

View File

@@ -216,7 +216,8 @@ public class SignalServiceMessageReceiver {
entity.getServerUuid(),
entity.getDestinationUuid(),
entity.isUrgent(),
entity.isStory());
entity.isStory(),
entity.getReportingToken());
} else {
envelope = new SignalServiceEnvelope(entity.getType(),
entity.getTimestamp(),
@@ -226,7 +227,8 @@ public class SignalServiceMessageReceiver {
entity.getServerUuid(),
entity.getDestinationUuid(),
entity.isUrgent(),
entity.isStory());
entity.isStory(),
entity.getReportingToken());
}
callback.onMessage(envelope);

View File

@@ -65,7 +65,8 @@ public class SignalServiceEnvelope {
String uuid,
String destinationUuid,
boolean urgent,
boolean story)
boolean story,
byte[] reportingToken)
{
Envelope.Builder builder = Envelope.newBuilder()
.setType(Envelope.Type.valueOf(type))
@@ -88,6 +89,10 @@ public class SignalServiceEnvelope {
builder.setContent(ByteString.copyFrom(content));
}
if (reportingToken != null) {
builder.setReportingToken(ByteString.copyFrom(reportingToken));
}
this.envelope = builder.build();
this.serverDeliveredTimestamp = serverDeliveredTimestamp;
}
@@ -100,7 +105,8 @@ public class SignalServiceEnvelope {
String uuid,
String destinationUuid,
boolean urgent,
boolean story)
boolean story,
byte[] reportingToken)
{
Envelope.Builder builder = Envelope.newBuilder()
.setType(Envelope.Type.valueOf(type))
@@ -118,6 +124,10 @@ public class SignalServiceEnvelope {
builder.setContent(ByteString.copyFrom(content));
}
if (reportingToken != null) {
builder.setReportingToken(ByteString.copyFrom(reportingToken));
}
this.envelope = builder.build();
this.serverDeliveredTimestamp = serverDeliveredTimestamp;
}
@@ -253,6 +263,14 @@ public class SignalServiceEnvelope {
return envelope.getStory();
}
public boolean hasReportingToken() {
return envelope.hasReportingToken();
}
public byte[] getReportingToken() {
return envelope.getReportingToken().toByteArray();
}
private SignalServiceEnvelopeProto.Builder serializeToProto() {
SignalServiceEnvelopeProto.Builder builder = SignalServiceEnvelopeProto.newBuilder()
.setType(getType())
@@ -279,6 +297,10 @@ public class SignalServiceEnvelope {
builder.setDestinationUuid(getDestinationUuid());
}
if (hasReportingToken()) {
builder.setReportingToken(ByteString.copyFrom(getReportingToken()));
}
return builder;
}
@@ -308,6 +330,7 @@ public class SignalServiceEnvelope {
proto.getServerGuid(),
proto.getDestinationUuid(),
proto.getUrgent(),
proto.getStory());
proto.getStory(),
proto.getReportingToken().toByteArray());
}
}

View File

@@ -2487,10 +2487,10 @@ public class PushServiceSocket {
}
}
public void reportSpam(ServiceId serviceId, String serverGuid)
public void reportSpam(ServiceId serviceId, String serverGuid, String reportingToken)
throws NonSuccessfulResponseCodeException, MalformedResponseException, PushNetworkException
{
makeServiceRequest(String.format(REPORT_SPAM, serviceId.toString(), serverGuid), "POST", "");
makeServiceRequest(String.format(REPORT_SPAM, serviceId.toString(), serverGuid), "POST", JsonUtil.toJson(new SpamTokenMessage(reportingToken)));
}
private static class VerificationCodeResponseHandler implements ResponseCodeHandler {

View File

@@ -43,6 +43,9 @@ public class SignalServiceEnvelopeEntity {
@JsonProperty
private Boolean story;
@JsonProperty
private byte[] reportingToken;
public SignalServiceEnvelopeEntity() {}
public int getType() {
@@ -100,4 +103,8 @@ public class SignalServiceEnvelopeEntity {
public boolean isStory() {
return story != null && story;
}
public byte[] getReportingToken() {
return reportingToken;
}
}

View File

@@ -0,0 +1,5 @@
package org.whispersystems.signalservice.internal.push
import com.fasterxml.jackson.annotation.JsonProperty
data class SpamTokenMessage(@JsonProperty val token: String)

View File

@@ -35,6 +35,7 @@ message SignalServiceEnvelopeProto {
optional string destinationUuid = 11;
optional bool urgent = 12 [default = true];
optional bool story = 13;
optional bytes reportingToken = 14;
}
message MetadataProto {

View File

@@ -36,7 +36,8 @@ message Envelope {
optional bool urgent = 14 [default = true];
reserved /*updatedPni*/ 15; // Not used presently, may be used in the future
optional bool story = 16;
// NEXT ID: 17
optional bytes reporting_token = 17;
// NEXT ID: 18
}
message Content {