From 0d69797851ace2a9033e453917eb5944f3473c3f Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sat, 13 Nov 2021 11:12:52 +0000 Subject: [PATCH] Block chat transactions on the local node if its sender owns a name that is blacklisted by the user. --- .../org/qortal/transaction/ChatTransaction.java | 13 +++++++++++++ .../java/org/qortal/transaction/Transaction.java | 1 + .../i18n/TransactionValidity_en.properties | 4 +++- .../i18n/TransactionValidity_fi.properties | 4 +++- .../i18n/TransactionValidity_hu.properties | 4 +++- .../i18n/TransactionValidity_it.properties | 4 +++- .../i18n/TransactionValidity_nl.properties | 4 +++- 7 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/qortal/transaction/ChatTransaction.java b/src/main/java/org/qortal/transaction/ChatTransaction.java index 8371b5b7..3de2122f 100644 --- a/src/main/java/org/qortal/transaction/ChatTransaction.java +++ b/src/main/java/org/qortal/transaction/ChatTransaction.java @@ -8,6 +8,7 @@ import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; import org.qortal.crypto.MemoryPoW; +import org.qortal.data.naming.NameData; import org.qortal.data.transaction.ChatTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.group.Group; @@ -150,6 +151,18 @@ public class ChatTransaction extends Transaction { return ValidationResult.ADDRESS_IN_BLACKLIST; } + // Check for blacklisted author by registered name + List names = this.repository.getNameRepository().getNamesByOwner(this.chatTransactionData.getSender()); + if (names != null && names.size() > 0) { + for (NameData nameData : names) { + if (nameData != null && nameData.getName() != null) { + if (listManager.listContains("blacklist", "names", nameData.getName())) { + return ValidationResult.NAME_IN_BLACKLIST; + } + } + } + } + // If we exist in the repository then we've been imported as unconfirmed, // but we don't want to make it into a block, so return fake non-OK result. if (this.repository.getTransactionRepository().exists(this.chatTransactionData.getSignature())) diff --git a/src/main/java/org/qortal/transaction/Transaction.java b/src/main/java/org/qortal/transaction/Transaction.java index 85158ec0..279f5582 100644 --- a/src/main/java/org/qortal/transaction/Transaction.java +++ b/src/main/java/org/qortal/transaction/Transaction.java @@ -248,6 +248,7 @@ public abstract class Transaction { INCORRECT_NONCE(94), INVALID_TIMESTAMP_SIGNATURE(95), ADDRESS_IN_BLACKLIST(96), + NAME_IN_BLACKLIST(97), INVALID_BUT_OK(999), NOT_YET_RELEASED(1000); diff --git a/src/main/resources/i18n/TransactionValidity_en.properties b/src/main/resources/i18n/TransactionValidity_en.properties index 17a52647..8b30ca3b 100644 --- a/src/main/resources/i18n/TransactionValidity_en.properties +++ b/src/main/resources/i18n/TransactionValidity_en.properties @@ -182,10 +182,12 @@ INVALID_TIMESTAMP_SIGNATURE = invalid timestamp signature ADDRESS_IN_BLACKLIST = this address is in your blacklist +NAME_IN_BLACKLIST = this name is in your blacklist + ADDRESS_ABOVE_RATE_LIMIT = address reached specified rate limit DUPLICATE_MESSAGE = address sent duplicate message INVALID_BUT_OK = invalid but OK -NOT_YET_RELEASED = feature not yet released \ No newline at end of file +NOT_YET_RELEASED = feature not yet released diff --git a/src/main/resources/i18n/TransactionValidity_fi.properties b/src/main/resources/i18n/TransactionValidity_fi.properties index adf7eb35..3db789e3 100644 --- a/src/main/resources/i18n/TransactionValidity_fi.properties +++ b/src/main/resources/i18n/TransactionValidity_fi.properties @@ -182,10 +182,12 @@ TX_GROUP_ID_MISMATCH = transaktion ryhmä-ID:n vastaavuusvirhe ADDRESS_IN_BLACKLIST = this address is in your blacklist +NAME_IN_BLACKLIST = this name is in your blacklist + ADDRESS_ABOVE_RATE_LIMIT = address reached specified rate limit DUPLICATE_MESSAGE = address sent duplicate message INVALID_TIMESTAMP_SIGNATURE = Invalid timestamp signature -INVALID_BUT_OK = Invalid but OK \ No newline at end of file +INVALID_BUT_OK = Invalid but OK diff --git a/src/main/resources/i18n/TransactionValidity_hu.properties b/src/main/resources/i18n/TransactionValidity_hu.properties index 68950971..5d0ef0ec 100644 --- a/src/main/resources/i18n/TransactionValidity_hu.properties +++ b/src/main/resources/i18n/TransactionValidity_hu.properties @@ -184,10 +184,12 @@ INVALID_TIMESTAMP_SIGNATURE = érvénytelen időbélyeg aláírás ADDRESS_IN_BLACKLIST = ez a fiókcím a fekete listádon van +NAME_IN_BLACKLIST = this name is in your blacklist + ADDRESS_ABOVE_RATE_LIMIT = ez a cím elérte a megengedett mérték korlátot DUPLICATE_MESSAGE = ez a cím duplikált üzenetet küldött INVALID_BUT_OK = érvénytelen de elfogadva -NOT_YET_RELEASED = ez a funkció még nem került kiadásra \ No newline at end of file +NOT_YET_RELEASED = ez a funkció még nem került kiadásra diff --git a/src/main/resources/i18n/TransactionValidity_it.properties b/src/main/resources/i18n/TransactionValidity_it.properties index 62d1608b..8bc38754 100644 --- a/src/main/resources/i18n/TransactionValidity_it.properties +++ b/src/main/resources/i18n/TransactionValidity_it.properties @@ -184,10 +184,12 @@ TX_GROUP_ID_MISMATCH = identificazione di gruppo della transazione non corrispon ADDRESS_IN_BLACKLIST = this address is in your blacklist +NAME_IN_BLACKLIST = this name is in your blacklist + ADDRESS_ABOVE_RATE_LIMIT = address reached specified rate limit DUPLICATE_MESSAGE = address sent duplicate message INVALID_TIMESTAMP_SIGNATURE = Invalid timestamp signature -INVALID_BUT_OK = Invalid but OK \ No newline at end of file +INVALID_BUT_OK = Invalid but OK diff --git a/src/main/resources/i18n/TransactionValidity_nl.properties b/src/main/resources/i18n/TransactionValidity_nl.properties index d6191f86..78bfb5b9 100644 --- a/src/main/resources/i18n/TransactionValidity_nl.properties +++ b/src/main/resources/i18n/TransactionValidity_nl.properties @@ -182,10 +182,12 @@ TX_GROUP_ID_MISMATCH = groep-ID van transactie matcht niet ADDRESS_IN_BLACKLIST = this address is in your blacklist +NAME_IN_BLACKLIST = this name is in your blacklist + ADDRESS_ABOVE_RATE_LIMIT = address reached specified rate limit DUPLICATE_MESSAGE = address sent duplicate message INVALID_TIMESTAMP_SIGNATURE = Invalid timestamp signature -INVALID_BUT_OK = Invalid but OK \ No newline at end of file +INVALID_BUT_OK = Invalid but OK