mirror of https://github.com/hyperledger/besu
Nc 1942 Add account whitelisting and refactor into permissioning package (#460)
* WS sync subscription delay added * WS sync subscription delay added with unit testing * WS sync subscription delay added with unit testing * changed number to a constant in constructor * Use default from websocket class instead of making new one * Removed magic numbers * Added Controller * Refactor permissioning config and account whitelist into permissioning package * Refactor permissioning config and account whitelist into permissioning package * Refactor permissioning config and account whitelist into permissioning package * Merge branch 'master' of https://github.com/PegaSysEng/pantheon into NC-1942 # Conflicts: # consensus/ibft/src/test/java/tech/pegasys/pantheon/consensus/ibft/statemachine/IbftControllerTest.java # docs/Getting-Started/ExplorerBlockDetails.png # docs/Getting-Started/ExplorerSearch.png # docs/Getting-Started/ExplorerSummary.png # ethereum/permissioning/src/main/java/tech/pegasys/pantheon/ethereum/permissioning/PermissioningConfiguration.java # ethereum/permissioning/src/test/java/tech/pegasys/pantheon/ethereum/permissioning/PermissioningConfigurationTest.java # pantheon/src/main/java/tech/pegasys/pantheon/cli/PantheonCommand.java # pantheon/src/test/java/tech/pegasys/pantheon/cli/PantheonCommandTest.java * Merge branch 'master' of https://github.com/PegaSysEng/pantheon into NC-1942 # Conflicts: # consensus/ibft/src/test/java/tech/pegasys/pantheon/consensus/ibft/statemachine/IbftControllerTest.java # docs/Getting-Started/ExplorerBlockDetails.png # docs/Getting-Started/ExplorerSearch.png # docs/Getting-Started/ExplorerSummary.png # ethereum/permissioning/src/main/java/tech/pegasys/pantheon/ethereum/permissioning/PermissioningConfiguration.java # ethereum/permissioning/src/test/java/tech/pegasys/pantheon/ethereum/permissioning/PermissioningConfigurationTest.java # pantheon/src/main/java/tech/pegasys/pantheon/cli/PantheonCommand.java # pantheon/src/test/java/tech/pegasys/pantheon/cli/PantheonCommandTest.java * Iron out merge conflict introduced bugs * Iron out merge conflict introduced bugs * Iron out merge conflict introduced bugs * PR Change request actioned * PR Change request actioned * PR Change request actioned * PR Change request actioned * updated node whitelist acceptance test to conform to refactored permissioning package * text change Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>pull/2/head
parent
882acca983
commit
27c3ad5f78
@ -0,0 +1,33 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2018 ConsenSys AG. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||||
|
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||||
|
* specific language governing permissions and limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
apply plugin: 'java-library' |
||||||
|
|
||||||
|
jar { |
||||||
|
baseName 'pantheon-permissioning' |
||||||
|
manifest { |
||||||
|
attributes( |
||||||
|
'Specification-Title': baseName, |
||||||
|
'Specification-Version': project.version, |
||||||
|
'Implementation-Title': baseName, |
||||||
|
'Implementation-Version': calculateVersion() |
||||||
|
) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
dependencies { |
||||||
|
|
||||||
|
testImplementation 'junit:junit' |
||||||
|
testImplementation 'org.assertj:assertj-core' |
||||||
|
testImplementation 'org.mockito:mockito-core' |
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2018 ConsenSys AG. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||||
|
* the License. You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||||
|
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||||
|
* specific language governing permissions and limitations under the License. |
||||||
|
*/ |
||||||
|
package tech.pegasys.pantheon.ethereum.permissioning; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public class AccountWhitelistController { |
||||||
|
|
||||||
|
private final List<String> accountWhitelist; |
||||||
|
private boolean accountWhitelistSet = false; |
||||||
|
|
||||||
|
public AccountWhitelistController(final PermissioningConfiguration configuration) { |
||||||
|
accountWhitelist = new ArrayList<>(); |
||||||
|
if (configuration != null && configuration.getAccountWhitelist() != null) { |
||||||
|
for (String hexString : configuration.getAccountWhitelist()) { |
||||||
|
accountWhitelist.add(hexString); |
||||||
|
} |
||||||
|
if (configuration.isNodeWhitelistSet()) { |
||||||
|
accountWhitelistSet = true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public boolean addAccount(final String account) { |
||||||
|
accountWhitelistSet = true; |
||||||
|
return accountWhitelist.add(account); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean removeAccount(final String account) { |
||||||
|
return accountWhitelist.remove(account); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean contains(final String account) { |
||||||
|
return (!accountWhitelistSet || (accountWhitelistSet && accountWhitelist.contains(account))); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isAccountWhiteListSet() { |
||||||
|
return accountWhitelistSet; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue