Search in sources :

Example 1 with ServerSecurity

use of org.eclipse.leshan.server.bootstrap.BootstrapConfig.ServerSecurity in project leshan by eclipse.

the class BootstrapIntegrationTestHelper method createBootstrapServer.

public void createBootstrapServer(BootstrapSecurityStore securityStore) {
    BootstrapStore bsStore = new BootstrapStore() {

        @Override
        public BootstrapConfig getBootstrap(String endpoint) {
            BootstrapConfig bsConfig = new BootstrapConfig();
            // security for BS server
            ServerSecurity bsSecurity = new ServerSecurity();
            bsSecurity.serverId = 1111;
            bsSecurity.bootstrapServer = true;
            bsSecurity.uri = "coap://" + bootstrapServer.getUnsecuredAddress().getHostString() + ":" + bootstrapServer.getUnsecuredAddress().getPort();
            bsSecurity.securityMode = SecurityMode.NO_SEC;
            bsConfig.security.put(0, bsSecurity);
            // security for DM server
            ServerSecurity dmSecurity = new ServerSecurity();
            dmSecurity.uri = "coap://" + server.getUnsecuredAddress().getHostString() + ":" + server.getUnsecuredAddress().getPort();
            dmSecurity.serverId = 2222;
            dmSecurity.securityMode = SecurityMode.NO_SEC;
            bsConfig.security.put(1, dmSecurity);
            // DM server
            ServerConfig dmConfig = new ServerConfig();
            dmConfig.shortId = 2222;
            bsConfig.servers.put(0, dmConfig);
            return bsConfig;
        }
    };
    if (securityStore == null) {
        securityStore = dummyBsSecurityStore();
    }
    LeshanBootstrapServerBuilder builder = new LeshanBootstrapServerBuilder();
    builder.setConfigStore(bsStore);
    builder.setSecurityStore(securityStore);
    builder.setLocalAddress(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0));
    builder.setLocalSecureAddress(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0));
    bootstrapServer = builder.build();
}
Also used : ServerConfig(org.eclipse.leshan.server.bootstrap.BootstrapConfig.ServerConfig) LeshanBootstrapServerBuilder(org.eclipse.leshan.server.californium.LeshanBootstrapServerBuilder) InetSocketAddress(java.net.InetSocketAddress) BootstrapConfig(org.eclipse.leshan.server.bootstrap.BootstrapConfig) ServerSecurity(org.eclipse.leshan.server.bootstrap.BootstrapConfig.ServerSecurity) BootstrapStore(org.eclipse.leshan.server.bootstrap.BootstrapStore)

Example 2 with ServerSecurity

use of org.eclipse.leshan.server.bootstrap.BootstrapConfig.ServerSecurity in project leshan by eclipse.

the class BootstrapHandler method sendBootstrap.

private void sendBootstrap(final BootstrapSession session, final BootstrapConfig cfg, final List<Integer> toSend) {
    if (!toSend.isEmpty()) {
        // 1st encode them into a juicy TLV binary
        Integer key = toSend.remove(0);
        ServerSecurity securityConfig = cfg.security.get(key);
        // extract write request parameters
        LwM2mPath path = new LwM2mPath(0, key);
        final LwM2mNode securityInstance = convertToSecurityInstance(key, securityConfig);
        final BootstrapWriteRequest writeBootstrapRequest = new BootstrapWriteRequest(path, securityInstance, session.getContentFormat());
        send(session, writeBootstrapRequest, new ResponseCallback<BootstrapWriteResponse>() {

            @Override
            public void onResponse(BootstrapWriteResponse response) {
                LOG.trace("Bootstrap write {} return code {}", session.getEndpoint(), response.getCode());
                // recursive call until toSend is empty
                sendBootstrap(session, cfg, toSend);
            }
        }, new ErrorCallback() {

            @Override
            public void onError(Exception e) {
                LOG.debug(String.format("Error during bootstrap write of security instance %s on %s", securityInstance, session.getEndpoint()), e);
                sessionManager.failed(session, WRITE_SECURITY_FAILED, writeBootstrapRequest);
            }
        });
    } else {
        // we are done, send the servers
        List<Integer> serversToSend = new ArrayList<>(cfg.servers.keySet());
        sendServers(session, cfg, serversToSend);
    }
}
Also used : BootstrapWriteResponse(org.eclipse.leshan.core.response.BootstrapWriteResponse) LwM2mPath(org.eclipse.leshan.core.node.LwM2mPath) ErrorCallback(org.eclipse.leshan.core.response.ErrorCallback) ArrayList(java.util.ArrayList) LwM2mNode(org.eclipse.leshan.core.node.LwM2mNode) BootstrapWriteRequest(org.eclipse.leshan.core.request.BootstrapWriteRequest) ServerSecurity(org.eclipse.leshan.server.bootstrap.BootstrapConfig.ServerSecurity)

Aggregations

ServerSecurity (org.eclipse.leshan.server.bootstrap.BootstrapConfig.ServerSecurity)2 InetSocketAddress (java.net.InetSocketAddress)1 ArrayList (java.util.ArrayList)1 LwM2mNode (org.eclipse.leshan.core.node.LwM2mNode)1 LwM2mPath (org.eclipse.leshan.core.node.LwM2mPath)1 BootstrapWriteRequest (org.eclipse.leshan.core.request.BootstrapWriteRequest)1 BootstrapWriteResponse (org.eclipse.leshan.core.response.BootstrapWriteResponse)1 ErrorCallback (org.eclipse.leshan.core.response.ErrorCallback)1 BootstrapConfig (org.eclipse.leshan.server.bootstrap.BootstrapConfig)1 ServerConfig (org.eclipse.leshan.server.bootstrap.BootstrapConfig.ServerConfig)1 BootstrapStore (org.eclipse.leshan.server.bootstrap.BootstrapStore)1 LeshanBootstrapServerBuilder (org.eclipse.leshan.server.californium.LeshanBootstrapServerBuilder)1