Skip to content

Bring v2 up-to-date #270

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 101 commits into
base: v2
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
e33b758
Add new ocpp-v2 sub-project with OCPP 2.0.1 types
robert-s-ubi Mar 14, 2023
b1b07ce
Add OCPP 2.0.1 and multiple protocol versions support
robert-s-ubi Mar 14, 2023
feb51ab
Implement OCPP 2.0.1 RPC Framework Error Codes
robert-s-ubi May 16, 2023
ff4618b
Add option to disable the transactionQueue
decroc-shell Mar 30, 2023
c552d62
Add an option for non-blocking OCPP-J connects
robert-s-ubi May 16, 2023
df71015
Bump all versions and dependencies to 1.2[.0]
robert-s-ubi May 16, 2023
0ce7c80
add stricter validation for Metervalues as described in #241
mmauksch Aug 16, 2023
c3e438c
validate via test and use suggested fix from #231
mmauksch Aug 17, 2023
62353f4
Merge pull request #243 from mmauksch/issue231-StopTransaction-valida…
TVolden Aug 18, 2023
2e1fcd8
Fix missing array string length validation in OCPP 2.0.1 classes
robert-s-ubi Sep 29, 2023
4859ecd
Merge pull request #239 from ubitricity/master
TVolden Sep 30, 2023
76fa4fa
Update README.md
TVolden Sep 30, 2023
9d08ab9
Bump GH Actions versions and add Dependabot to monitor our dependencies.
slachiewicz Oct 2, 2023
65e0e16
Merge pull request #245 from slachiewicz/gha-refresh
TVolden Oct 2, 2023
326182c
Bump org.jacoco:jacoco-maven-plugin from 0.8.5 to 0.8.10
dependabot[bot] Oct 2, 2023
d3d8890
Bump org.java-websocket:Java-WebSocket from 1.5.3 to 1.5.4
dependabot[bot] Oct 2, 2023
8574a3d
Bump github/codeql-action from 1 to 2
dependabot[bot] Oct 2, 2023
64f2190
Bump org.codehaus.gmavenplus:gmavenplus-plugin from 1.13.1 to 3.0.2
dependabot[bot] Oct 2, 2023
c2a0365
Bump junit:junit from 4.13.1 to 4.13.2
dependabot[bot] Oct 2, 2023
ffc259b
Merge pull request #247 from ChargeTimeEU/dependabot/maven/org.java-w…
TVolden Oct 2, 2023
8025e3a
Merge pull request #250 from ChargeTimeEU/dependabot/maven/junit-juni…
TVolden Oct 2, 2023
52e7416
Merge pull request #248 from ChargeTimeEU/dependabot/github_actions/g…
TVolden Oct 2, 2023
df8e549
Merge pull request #246 from ChargeTimeEU/dependabot/maven/org.jacoco…
TVolden Oct 2, 2023
3df7c2a
Merge pull request #249 from ChargeTimeEU/dependabot/maven/org.codeha…
TVolden Oct 2, 2023
c3af38f
Bump org.apache.maven.plugins:maven-javadoc-plugin from 2.9.1 to 3.6.0
dependabot[bot] Oct 3, 2023
42fbf0e
Bump com.google.code.findbugs:jsr305 from 3.0.1 to 3.0.2
dependabot[bot] Oct 3, 2023
f46b8c4
Bump ch.qos.logback:logback-classic from 1.2.0 to 1.4.11
dependabot[bot] Oct 3, 2023
8700991
Bump org.apache.maven.plugins:maven-compiler-plugin from 3.5.1 to 3.11.0
dependabot[bot] Oct 3, 2023
173a46c
Bump org.slf4j:slf4j-api from 1.7.25 to 2.0.9
dependabot[bot] Oct 3, 2023
4fa1928
Merge pull request #252 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Oct 5, 2023
60e404f
Merge pull request #253 from ChargeTimeEU/dependabot/maven/com.google…
TVolden Oct 5, 2023
9740269
Merge pull request #254 from ChargeTimeEU/dependabot/maven/ch.qos.log…
TVolden Oct 5, 2023
87540fc
Merge pull request #255 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Oct 5, 2023
5bcac1d
Merge pull request #256 from ChargeTimeEU/dependabot/maven/org.slf4j-…
TVolden Oct 5, 2023
72dad07
Bump org.spockframework:spock-core from 1.0-groovy-2.4 to 2.3-groovy-4.0
dependabot[bot] Oct 5, 2023
20d6716
Bump org.sonatype.plugins:nexus-staging-maven-plugin
dependabot[bot] Oct 5, 2023
547806a
Bump ch.qos.logback:logback-core from 1.2.9 to 1.4.11
dependabot[bot] Oct 5, 2023
42deb1a
Bump org.hamcrest:hamcrest-core from 1.3 to 2.2
dependabot[bot] Oct 5, 2023
1ba760b
Bump javax.xml.bind:jaxb-api from 2.1 to 2.3.1
dependabot[bot] Oct 5, 2023
ac347dc
Merge pull request #258 from ChargeTimeEU/dependabot/maven/org.sonaty…
TVolden Oct 13, 2023
ebcfdae
Merge pull request #259 from ChargeTimeEU/dependabot/maven/ch.qos.log…
TVolden Oct 13, 2023
c9550c4
Bump com.google.code.gson:gson from 2.8.9 to 2.10.1
dependabot[bot] Oct 13, 2023
f8b6802
Merge pull request #261 from ChargeTimeEU/dependabot/maven/javax.xml.…
TVolden Oct 15, 2023
42e25aa
Merge pull request #262 from ChargeTimeEU/dependabot/maven/com.google…
TVolden Oct 15, 2023
7b4cfdc
Merge pull request #260 from ChargeTimeEU/dependabot/maven/org.hamcre…
TVolden Oct 16, 2023
c6cf180
Merge pull request #257 from ChargeTimeEU/dependabot/maven/org.spockf…
TVolden Oct 16, 2023
622bdb6
Move Tests to Mockito4
slachiewicz Oct 15, 2023
4f12030
Update also Gradle build used by CodeQL GHA
slachiewicz Oct 15, 2023
0d014bc
Revert not necessary for Mockito code cleanups
slachiewicz Oct 16, 2023
6860d7c
Bump org.apache.maven.plugins:maven-gpg-plugin from 1.5 to 3.1.0
dependabot[bot] Oct 16, 2023
1b30cbc
Bump org.apache.maven.plugins:maven-source-plugin from 2.2.1 to 3.3.0
dependabot[bot] Oct 16, 2023
5d7c319
Bump org.slf4j:jul-to-slf4j from 1.7.10 to 2.0.9
dependabot[bot] Oct 16, 2023
8019ac7
Bump org.apache.maven.plugins:maven-surefire-plugin from 2.22.2 to 3.1.2
dependabot[bot] Oct 16, 2023
552436d
Merge pull request #264 from slachiewicz/mockito4
TVolden Oct 16, 2023
d492687
Merge pull request #266 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Oct 17, 2023
917c304
Merge pull request #267 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Oct 17, 2023
b14120a
Merge pull request #268 from ChargeTimeEU/dependabot/maven/org.slf4j-…
TVolden Oct 17, 2023
f56fc87
Merge pull request #269 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Oct 17, 2023
3cf541c
Bump org.jacoco:jacoco-maven-plugin from 0.8.10 to 0.8.11
dependabot[bot] Oct 17, 2023
b742417
Merge pull request #271 from ChargeTimeEU/dependabot/maven/org.jacoco…
TVolden Oct 19, 2023
e936bbe
Bump org.apache.maven.plugins:maven-surefire-plugin from 3.1.2 to 3.2.1
dependabot[bot] Oct 24, 2023
875b7cf
Merge pull request #272 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Oct 26, 2023
cd6fe53
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.0 to 3.6.2
dependabot[bot] Nov 7, 2023
e0685b0
Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.1 to 3.2.2
dependabot[bot] Nov 7, 2023
3912f91
Merge pull request #273 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Nov 8, 2023
e4b211a
Merge pull request #274 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Nov 8, 2023
1f9c549
Bump ch.qos.logback:logback-classic from 1.4.11 to 1.4.13
dependabot[bot] Nov 29, 2023
855543b
Bump ch.qos.logback:logback-core in /ocpp-v2_0-test
dependabot[bot] Nov 29, 2023
2e4d258
Bump ch.qos.logback:logback-core in /ocpp-v1_6-test
dependabot[bot] Nov 29, 2023
5a9e147
Bump ch.qos.logback:logback-core from 1.4.11 to 1.4.12 in /ocpp-v2-test
dependabot[bot] Nov 29, 2023
27d5240
Merge pull request #279 from ChargeTimeEU/dependabot/maven/ch.qos.log…
TVolden Nov 30, 2023
be5bb24
Merge pull request #281 from ChargeTimeEU/dependabot/maven/ocpp-v2_0-…
TVolden Nov 30, 2023
4cb9b57
Merge pull request #282 from ChargeTimeEU/dependabot/maven/ocpp-v1_6-…
TVolden Nov 30, 2023
1d6c141
Merge pull request #283 from ChargeTimeEU/dependabot/maven/ocpp-v2-te…
TVolden Nov 30, 2023
f63e917
Bump ch.qos.logback:logback-core from 1.4.11 to 1.4.13
dependabot[bot] Nov 30, 2023
8112c85
Merge pull request #280 from ChargeTimeEU/dependabot/maven/ch.qos.log…
TVolden Nov 30, 2023
68f55e6
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.2 to 3.6.3
dependabot[bot] Dec 4, 2023
cf6d479
Bump ch.qos.logback:logback-core in /ocpp-v1_6-test
dependabot[bot] Dec 8, 2023
f344348
Bump ch.qos.logback:logback-core from 1.4.13 to 1.4.14 in /ocpp-v2-test
dependabot[bot] Dec 8, 2023
d292437
Bump ch.qos.logback:logback-core in /ocpp-v2_0-test
dependabot[bot] Dec 8, 2023
0aef7cb
Bump github/codeql-action from 2 to 3
dependabot[bot] Dec 14, 2023
12712cb
Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.2 to 3.2.5
dependabot[bot] Jan 10, 2024
ac7638c
Revert "GitHub Actions: Downgrade maven workflow to 11.0.16+8"
bantu Jan 23, 2024
01ba01e
Merge pull request #306 from InnoCharge/revert-github-221
TVolden Jan 23, 2024
6060237
Allow configuration of allowed password string length
Jan 25, 2024
0293ce1
Merge pull request #308 from Joo200/feat/configure_pw_length
TVolden Jan 31, 2024
88e0a34
Merge pull request #296 from ChargeTimeEU/dependabot/maven/ocpp-v1_6-…
TVolden Feb 22, 2024
e9c68df
Merge pull request #294 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Feb 22, 2024
3dce708
Merge pull request #297 from ChargeTimeEU/dependabot/maven/ocpp-v2-te…
TVolden Feb 22, 2024
28b4598
Merge pull request #298 from ChargeTimeEU/dependabot/maven/ocpp-v2_0-…
TVolden Feb 22, 2024
355aee0
Bump org.slf4j:jul-to-slf4j from 2.0.9 to 2.0.12
dependabot[bot] Feb 22, 2024
2348f9f
Merge pull request #301 from ChargeTimeEU/dependabot/github_actions/g…
TVolden Feb 22, 2024
caf3bb6
Merge pull request #242 from mmauksch/validateMeterValues
TVolden Mar 4, 2024
53937d9
Merge pull request #302 from ChargeTimeEU/dependabot/maven/org.apache…
TVolden Mar 4, 2024
6c636a2
Merge pull request #321 from ChargeTimeEU/dependabot/maven/org.slf4j-…
TVolden Mar 4, 2024
14d60bc
Update gson due to reported vulnerability.
Apr 20, 2024
953f50b
A single instace, otherwise a static get() method makes no sense.
Apr 24, 2024
f7b92a3
Recommended by 1.6 spec is a 20 byte (40 chars) key.
Apr 24, 2024
cf20205
Fix password decoding.
Apr 24, 2024
fb5d0fb
More password fixes.
Apr 24, 2024
088b78c
Merge pull request #345 from rpseng/master
TVolden Apr 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 14 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "daily"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
8 changes: 4 additions & 4 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -53,7 +53,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@v3

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
Expand All @@ -67,4 +67,4 @@ jobs:
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v3
14 changes: 4 additions & 10 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,19 @@

name: Java CI with Maven

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
on: [push, pull_request]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v2
uses: actions/setup-java@v3
with:
# TODO: Revert to '11'.
# See https://github.com/ChargeTimeEU/Java-OCA-OCPP/pull/223#issuecomment-1328048028
java-version: '11.0.16+8'
java-version: '11'
distribution: 'temurin'
cache: maven
- name: Build with Maven
Expand Down
6 changes: 3 additions & 3 deletions OCPP-J/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

dependencies {
compile project(':common')
compile 'com.google.code.gson:gson:2.8.0'
compile 'com.google.code.gson:gson:2.8.9'
compile 'org.java-websocket:Java-WebSocket:1.5.3'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'junit:junit:4.13.2'
testCompile 'org.mockito:mockito-core:4.11.0'
testCompile 'org.hamcrest:hamcrest-core:1.3'
}

Expand Down
26 changes: 13 additions & 13 deletions OCPP-J/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>eu.chargetime.ocpp</groupId>
<artifactId>OCPP-J</artifactId>
<version>1.0.2</version>
<version>1.2.0</version>
<packaging>jar</packaging>

<name>Java-OCA-OCPP OCPP-J</name>
Expand Down Expand Up @@ -50,41 +50,41 @@
<dependency>
<groupId>eu.chargetime.ocpp</groupId>
<artifactId>common</artifactId>
<version>1.0.2</version>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
<version>2.10.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.5.3</version>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.10.19</version>
<version>4.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<version>1.4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand All @@ -98,12 +98,12 @@
<source>1.8</source>
<target>1.8</target>
</configuration>
<version>3.5.1</version>
<version>3.11.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<version>3.3.0</version>
<executions>
<execution>
<id>attach-sources</id>
Expand All @@ -117,7 +117,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<version>3.6.3</version>
<executions>
<execution>
<id>attach-javadocs</id>
Expand All @@ -130,7 +130,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<version>3.1.0</version>
<executions>
<execution>
<id>sign-artifacts</id>
Expand All @@ -144,7 +144,7 @@
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<version>1.6.13</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
Expand Down
81 changes: 50 additions & 31 deletions OCPP-J/src/main/java/eu/chargetime/ocpp/JSONCommunicator.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
import eu.chargetime.ocpp.model.CallErrorMessage;
import eu.chargetime.ocpp.model.CallMessage;
import eu.chargetime.ocpp.model.CallResultMessage;
import eu.chargetime.ocpp.model.Message;
import eu.chargetime.ocpp.model.Exclude;

import eu.chargetime.ocpp.model.Message;
import java.lang.reflect.Type;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
Expand Down Expand Up @@ -79,6 +78,16 @@ public JSONCommunicator(Radio radio) {
super(radio);
}

/**
* Handle required injections.
*
* @param radio instance of the {@link Radio}.
* @param enableTransactionQueue true if transaction queue should be enabled.
*/
public JSONCommunicator(Radio radio, boolean enableTransactionQueue) {
super(radio, enableTransactionQueue);
}

private static class ZonedDateTimeSerializer
implements JsonSerializer<ZonedDateTime>, JsonDeserializer<ZonedDateTime> {

Expand All @@ -101,17 +110,18 @@ public ZonedDateTime deserialize(
static {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(ZonedDateTime.class, new ZonedDateTimeSerializer());
builder.addSerializationExclusionStrategy(new ExclusionStrategy() {
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}

@Override
public boolean shouldSkipField(FieldAttributes field) {
return field.getAnnotation(Exclude.class) != null;
}
});
builder.addSerializationExclusionStrategy(
new ExclusionStrategy() {
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}

@Override
public boolean shouldSkipField(FieldAttributes field) {
return field.getAnnotation(Exclude.class) != null;
}
});

gson = builder.disableHtmlEscaping().create();
}
Expand Down Expand Up @@ -147,26 +157,35 @@ protected Message parse(Object json) {
Message message;
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(json.toString()).getAsJsonArray();

if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALL) {
message = new CallMessage();
message.setAction(array.get(INDEX_CALL_ACTION).getAsString());
message.setPayload(array.get(INDEX_CALL_PAYLOAD).toString());
} else if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALLRESULT) {
message = new CallResultMessage();
message.setPayload(array.get(INDEX_CALLRESULT_PAYLOAD).toString());
} else if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALLERROR) {
message = new CallErrorMessage();
((CallErrorMessage) message).setErrorCode(array.get(INDEX_CALLERROR_ERRORCODE).getAsString());
((CallErrorMessage) message)
.setErrorDescription(array.get(INDEX_CALLERROR_DESCRIPTION).getAsString());
((CallErrorMessage) message).setRawPayload(array.get(INDEX_CALLERROR_PAYLOAD).toString());
} else {
logger.error("Unknown message type of message: {}", json.toString());
throw new IllegalArgumentException("Unknown message type");
String messageId = "-1";

try {
messageId = array.get(INDEX_UNIQUEID).getAsString();
if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALL) {
message = new CallMessage();
message.setAction(array.get(INDEX_CALL_ACTION).getAsString());
message.setPayload(array.get(INDEX_CALL_PAYLOAD).toString());
} else if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALLRESULT) {
message = new CallResultMessage();
message.setPayload(array.get(INDEX_CALLRESULT_PAYLOAD).toString());
} else if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALLERROR) {
message = new CallErrorMessage();
((CallErrorMessage) message).setErrorCode(array.get(INDEX_CALLERROR_ERRORCODE).getAsString());
((CallErrorMessage) message)
.setErrorDescription(array.get(INDEX_CALLERROR_DESCRIPTION).getAsString());
((CallErrorMessage) message).setRawPayload(array.get(INDEX_CALLERROR_PAYLOAD).toString());
} else {
logger.error("Unknown message type of message: {}", json.toString());
sendCallError(messageId, null, "MessageTypeNotSupported", null);
return null;
}
} catch (Exception e) {
logger.error("Exception while parsing message: {}", json.toString());
sendCallError(messageId, null, "RpcFrameworkError", e.getMessage());
return null;
}

message.setId(array.get(INDEX_UNIQUEID).getAsString());
message.setId(messageId);

return message;
}
Expand Down
10 changes: 9 additions & 1 deletion OCPP-J/src/main/java/eu/chargetime/ocpp/JSONConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,23 @@ public class JSONConfiguration {
public static final String PING_INTERVAL_PARAMETER = "PING_INTERVAL";
public static final String USERNAME_PARAMETER = "USERNAME";
public static final String PASSWORD_PARAMETER = "PASSWORD";
public static final String CONNECT_NON_BLOCKING_PARAMETER = "CONNECT_NON_BLOCKING";
public static final String CONNECT_TIMEOUT_IN_MS_PARAMETER = "CONNECT_TIMEOUT_IN_MS";
public static final String WEBSOCKET_WORKER_COUNT = "WEBSOCKET_WORKER_COUNT";
public static final String HTTP_HEALTH_CHECK_ENABLED = "HTTP_HEALTH_CHECK_ENABLED";
public static final String OCPPJ_CP_MIN_PASSWORD_LENGTH = "OCPPJ_CP_MIN_PASSWORD_LENGTH";
public static final String OCPPJ_CP_MAX_PASSWORD_LENGTH = "OCPPJ_CP_MAX_PASSWORD_LENGTH";
public static final String OCPP2J_CP_MIN_PASSWORD_LENGTH = "OCPP2J_CP_MIN_PASSWORD_LENGTH";
public static final String OCPP2J_CP_MAX_PASSWORD_LENGTH = "OCPP2J_CP_MAX_PASSWORD_LENGTH";

private final HashMap<String, Object> parameters = new HashMap<>();

private JSONConfiguration() {}

private static final JSONConfiguration instance = new JSONConfiguration();

public static JSONConfiguration get() {
return new JSONConfiguration();
return instance;
}

public <T> JSONConfiguration setParameter(String name, T value) {
Expand Down
10 changes: 5 additions & 5 deletions OCPP-J/src/main/java/eu/chargetime/ocpp/WebSocketListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public class WebSocketListener implements Listener {
private static final int TIMEOUT_IN_MILLIS = 10000;

private static final int OCPPJ_CP_MIN_PASSWORD_LENGTH = 16;
private static final int OCPPJ_CP_MAX_PASSWORD_LENGTH = 20;
private static final int OCPPJ_CP_MAX_PASSWORD_LENGTH = 40;

private static final String HTTP_HEADER_PROXIED_ADDRESS = "X-Forwarded-For";

Expand Down Expand Up @@ -146,7 +146,7 @@ public ServerHandshakeBuilder onWebsocketHandshakeReceivedAsServer(
.build();

String username = null;
byte[] password = null;
String password = null;
if (clientHandshake.hasFieldValue("Authorization")) {
String authorization = clientHandshake.getFieldValue("Authorization");
if (authorization != null && authorization.toLowerCase().startsWith("basic")) {
Expand All @@ -159,15 +159,15 @@ public ServerHandshakeBuilder onWebsocketHandshakeReceivedAsServer(
username =
new String(Arrays.copyOfRange(credDecoded, 0, i), StandardCharsets.UTF_8);
if (i + 1 < credDecoded.length) {
password = Arrays.copyOfRange(credDecoded, i + 1, credDecoded.length);
password = new String(Arrays.copyOfRange(credDecoded, i + 1, credDecoded.length));
}
break;
}
}
}
if (password == null
|| password.length < OCPPJ_CP_MIN_PASSWORD_LENGTH
|| password.length > OCPPJ_CP_MAX_PASSWORD_LENGTH)
|| password.length() < configuration.getParameter(JSONConfiguration.OCPPJ_CP_MIN_PASSWORD_LENGTH, OCPPJ_CP_MIN_PASSWORD_LENGTH)
|| password.length() > configuration.getParameter(JSONConfiguration.OCPPJ_CP_MAX_PASSWORD_LENGTH, OCPPJ_CP_MAX_PASSWORD_LENGTH))
throw new InvalidDataException(401, "Invalid password length");
}

Expand Down
Loading
Loading