committed by
GitHub
7 changed files with 129 additions and 3 deletions
@ -0,0 +1,83 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2021 The Thingsboard Authors |
||||
|
* |
||||
|
* 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 org.thingsboard.server.transport.lwm2m.bootstrap.store; |
||||
|
|
||||
|
import org.eclipse.leshan.server.bootstrap.BootstrapConfig; |
||||
|
import org.eclipse.leshan.server.bootstrap.ConfigurationChecker; |
||||
|
import org.eclipse.leshan.server.bootstrap.InvalidConfigurationException; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
public class LwM2MConfigurationChecker extends ConfigurationChecker { |
||||
|
|
||||
|
@Override |
||||
|
public void verify(BootstrapConfig config) throws InvalidConfigurationException { |
||||
|
// check security configurations
|
||||
|
for (Map.Entry<Integer, BootstrapConfig.ServerSecurity> e : config.security.entrySet()) { |
||||
|
BootstrapConfig.ServerSecurity sec = e.getValue(); |
||||
|
|
||||
|
// checks security config
|
||||
|
switch (sec.securityMode) { |
||||
|
case NO_SEC: |
||||
|
checkNoSec(sec); |
||||
|
break; |
||||
|
case PSK: |
||||
|
checkPSK(sec); |
||||
|
break; |
||||
|
case RPK: |
||||
|
checkRPK(sec); |
||||
|
break; |
||||
|
case X509: |
||||
|
checkX509(sec); |
||||
|
break; |
||||
|
case EST: |
||||
|
throw new InvalidConfigurationException("EST is not currently supported.", e); |
||||
|
} |
||||
|
|
||||
|
validateMandatoryField(sec); |
||||
|
} |
||||
|
|
||||
|
// does each server have a corresponding security entry?
|
||||
|
validateOneSecurityByServer(config); |
||||
|
} |
||||
|
|
||||
|
protected void validateOneSecurityByServer(BootstrapConfig config) throws InvalidConfigurationException { |
||||
|
for (Map.Entry<Integer, BootstrapConfig.ServerConfig> e : config.servers.entrySet()) { |
||||
|
BootstrapConfig.ServerConfig srvCfg = e.getValue(); |
||||
|
|
||||
|
// shortId checks
|
||||
|
if (srvCfg.shortId == 0) { |
||||
|
throw new InvalidConfigurationException("short ID must not be 0"); |
||||
|
} |
||||
|
|
||||
|
// look for security entry
|
||||
|
BootstrapConfig.ServerSecurity security = getSecurityEntry(config, srvCfg.shortId); |
||||
|
|
||||
|
if (security == null) { |
||||
|
throw new InvalidConfigurationException("no security entry for server instance: " + e.getKey()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
protected static BootstrapConfig.ServerSecurity getSecurityEntry(BootstrapConfig config, int shortId) { |
||||
|
for (Map.Entry<Integer, BootstrapConfig.ServerSecurity> es : config.security.entrySet()) { |
||||
|
if (es.getValue().serverId == shortId) { |
||||
|
return es.getValue(); |
||||
|
} |
||||
|
} |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
} |
||||
Loading…
Reference in new issue