From 4b2955984f0d74308c6c3684e35900645df31630 Mon Sep 17 00:00:00 2001 From: Ace Date: Fri, 17 Nov 2017 14:27:30 +0530 Subject: [PATCH] Resolving conflicts for Remote Control feature on behalf of Waruna --- .../mgt/jaxrs/beans/RemoteSessionInfo.java | 52 +++++++ .../service/api/RemoteSessionService.java | 130 ++++++++++++++++ .../impl/RemoteSessionServiceImpl.java | 68 +++++++++ .../src/main/webapp/WEB-INF/cxf-servlet.xml | 4 +- .../core/config/DeviceManagementConfig.java | 22 +++ .../keymanager/KeyManagerConfigurations.java | 59 ++++++++ .../session/RemoteSessionConfiguration.java | 143 ++++++++++++++++++ .../mgt/dao/impl/ConfigOperationDAOImpl.java | 2 + .../mgt/dao/util/OperationDAOUtil.java | 39 +++-- .../devicemgt/app/conf/config.json | 1 + .../repository/conf/cdm-config.xml | 15 ++ 11 files changed, 519 insertions(+), 16 deletions(-) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/RemoteSessionInfo.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RemoteSessionService.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RemoteSessionServiceImpl.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/keymanager/KeyManagerConfigurations.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/remote/session/RemoteSessionConfiguration.java diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/RemoteSessionInfo.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/RemoteSessionInfo.java new file mode 100644 index 0000000000..34883532f1 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/RemoteSessionInfo.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you 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.wso2.carbon.device.mgt.jaxrs.beans; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; + +import java.util.List; + +@ApiModel(value = "RemoteSessionInfo", description = "Template of the remote session") +public class RemoteSessionInfo { + + @ApiModelProperty(name = "Server Url", value = "Url of the remote session server.", required = true) + private String serverUrl; + + @ApiModelProperty(name = "isEnabled", value = "Is remote session functionality enabled", required = true) + private Boolean isEnabled; + + public String getServerUrl() { + return serverUrl; + } + + public void setServerUrl(String serverUrl) { + this.serverUrl = serverUrl; + } + + public Boolean getEnabled() { + return isEnabled; + } + + public void setEnabled(Boolean enabled) { + isEnabled = enabled; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RemoteSessionService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RemoteSessionService.java new file mode 100644 index 0000000000..52c0eaf7f2 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RemoteSessionService.java @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you 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.wso2.carbon.device.mgt.jaxrs.service.api; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.Extension; +import io.swagger.annotations.ExtensionProperty; +import io.swagger.annotations.Info; +import io.swagger.annotations.ResponseHeader; +import io.swagger.annotations.SwaggerDefinition; +import io.swagger.annotations.Tag; +import org.wso2.carbon.apimgt.annotations.api.Scope; +import org.wso2.carbon.apimgt.annotations.api.Scopes; +import org.wso2.carbon.device.mgt.jaxrs.util.Constants; + +import javax.validation.constraints.Size; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.core.Response; + +@SwaggerDefinition( + info = @Info( + version = "1.0.0", + title = "", + extensions = { + @Extension(properties = { + @ExtensionProperty(name = "name", value = "remote_session_services"), + @ExtensionProperty(name = "context", value = "/api/device-mgt/v1.0/remote-session-services"), + }) + } + ), + tags = { + @Tag(name = "device_management", description = "") + } +) +@Scopes( + scopes = { + @Scope( + name = "Remote Session Connection", + description = "", + key = "perm:remote-session-service:connect", + permissions = {"/device-mgt/devices/owning-device/remote-session"} + ) + } +) +@Path("/remote-session-services") +@Api(value = "Remote Session Service", + description = "This carries all the resources related to the remote session service functionality.") +public interface RemoteSessionService { + /** + * Retrieve Analytics for the device type + */ + @GET + @Path("connection/{deviceType}/{deviceId}") + @ApiOperation( + consumes = "application/json", + produces = "application/json", + httpMethod = "GET", + value = "Retrieve Connection Information for the device type", + notes = "", + response = Response.class, + tags = "Remote Session Service Management", + extensions = { + @Extension(properties = { + @ExtensionProperty(name = Constants.SCOPE, value = "perm:remote-session-service:connect") + }) + } + ) + @ApiResponses(value = { + @ApiResponse( + code = 200, + message = "OK.", + response = Response.class, + responseHeaders = { + @ResponseHeader( + name = "Content-Type", + description = "The content type of the body"), + @ResponseHeader( + name = "Last-Modified", + description = "Date and time the resource was last modified.\n" + + "Used by caches, or in conditional requests."), + }), + @ApiResponse( + code = 400, + message = "Bad Request. \n Invalid Device Identifiers found.", + response = Response.class), + @ApiResponse( + code = 401, + message = "Unauthorized. \n Unauthorized request."), + @ApiResponse( + code = 500, + message = "Internal Server Error. \n Error on retrieving stats", + response = Response.class) + }) + Response getRemoteSessionDeviceConnect( + @ApiParam( + name = "deviceId", + value = "The registered device Id.", + required = true) + @PathParam("deviceId") String deviceId, + @ApiParam( + name = "device-type", + value = "The device type, such as ios, android or windows.", + required = true) + @PathParam("deviceType") + @Size(max = 45) + String deviceType); +} \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RemoteSessionServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RemoteSessionServiceImpl.java new file mode 100644 index 0000000000..a972df9826 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RemoteSessionServiceImpl.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you 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.wso2.carbon.device.mgt.jaxrs.service.impl; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; +import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig; +import org.wso2.carbon.device.mgt.core.config.remote.session.RemoteSessionConfiguration; +import org.wso2.carbon.device.mgt.jaxrs.beans.RemoteSessionInfo; +import org.wso2.carbon.device.mgt.jaxrs.service.api.RemoteSessionService; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Response; + +/** + * The api for + */ +public class RemoteSessionServiceImpl implements RemoteSessionService { + + private static Log log = LogFactory.getLog(RemoteSessionServiceImpl.class); + + @Path("connect/{deviceType}/{deviceId}") + @GET + @Consumes("application/json") + @Produces("application/json") + public Response getRemoteSessionDeviceConnect(@PathParam("deviceId") String deviceId, + @PathParam("deviceType") String deviceType) { + //First, check whether the remote session is enabled. + RemoteSessionInfo sessionInfo = new RemoteSessionInfo(); + sessionInfo.setEnabled(false); + DeviceManagementConfig deviceManagementConfig = DeviceConfigurationManager.getInstance() + .getDeviceManagementConfig(); + if (deviceManagementConfig != null) { + RemoteSessionConfiguration remoteSessionConfiguration = deviceManagementConfig.getRemoteSessionConfiguration(); + if (remoteSessionConfiguration != null) { + boolean isEnabled = remoteSessionConfiguration.isEnabled(); + sessionInfo.setEnabled(isEnabled); + if (isEnabled) { + sessionInfo.setServerUrl(remoteSessionConfiguration.getRemoteSessionServerUrl()); + } + return Response.ok().entity(sessionInfo).build(); + } + } + + return Response.ok().entity(sessionInfo).build(); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml index 572b64922b..e1e2c46e8c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml @@ -38,6 +38,7 @@ + @@ -81,6 +82,7 @@ + @@ -99,4 +101,4 @@ - + \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java index 2c039b0bef..cebde45226 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java @@ -21,10 +21,12 @@ import org.wso2.carbon.device.mgt.core.config.cache.CertificateCacheConfiguratio import org.wso2.carbon.device.mgt.core.config.geo.location.OperationAnalyticsConfiguration; import org.wso2.carbon.device.mgt.core.config.cache.DeviceCacheConfiguration; import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations; +import org.wso2.carbon.device.mgt.core.config.keymanager.KeyManagerConfigurations; import org.wso2.carbon.device.mgt.core.config.pagination.PaginationConfiguration; import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration; import org.wso2.carbon.device.mgt.core.config.pull.notification.PullNotificationConfiguration; import org.wso2.carbon.device.mgt.core.config.push.notification.PushNotificationConfiguration; +import org.wso2.carbon.device.mgt.core.config.remote.session.RemoteSessionConfiguration; import org.wso2.carbon.device.mgt.core.config.status.task.DeviceStatusTaskConfig; import org.wso2.carbon.device.mgt.core.config.task.TaskConfiguration; @@ -41,6 +43,7 @@ public final class DeviceManagementConfig { private DeviceManagementConfigRepository deviceManagementConfigRepository; private TaskConfiguration taskConfiguration; private IdentityConfigurations identityConfigurations; + private KeyManagerConfigurations keyManagerConfigurations; private PolicyConfiguration policyConfiguration; private PaginationConfiguration paginationConfiguration; private PushNotificationConfiguration pushNotificationConfiguration; @@ -50,6 +53,8 @@ public final class DeviceManagementConfig { private CertificateCacheConfiguration certificateCacheConfiguration; private OperationAnalyticsConfiguration operationAnalyticsConfiguration; private String defaultGroupsConfiguration; + private RemoteSessionConfiguration remoteSessionConfiguration; + @XmlElement(name = "ManagementRepository", required = true) public DeviceManagementConfigRepository getDeviceManagementConfigRepository() { @@ -70,6 +75,15 @@ public final class DeviceManagementConfig { this.identityConfigurations = identityConfigurations; } + @XmlElement(name = "KeyManagerConfiguration", required = true) + public KeyManagerConfigurations getKeyManagerConfigurations() { + return keyManagerConfigurations; + } + + public void setKeyManagerConfigurations(KeyManagerConfigurations keyManagerConfigurations) { + this.keyManagerConfigurations = keyManagerConfigurations; + } + @XmlElement(name = "PolicyConfiguration", required = true) public PolicyConfiguration getPolicyConfiguration() { return policyConfiguration; @@ -159,5 +173,13 @@ public final class DeviceManagementConfig { public void setDefaultGroupsConfiguration(String defaultGroupsConfiguration) { this.defaultGroupsConfiguration = defaultGroupsConfiguration; } + @XmlElement(name = "RemoteSessionConfiguration", required = true) + public RemoteSessionConfiguration getRemoteSessionConfiguration() { + return remoteSessionConfiguration; + } + + public void setRemoteSessionConfiguration(RemoteSessionConfiguration remoteSessionConfiguration) { + this.remoteSessionConfiguration = remoteSessionConfiguration; + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/keymanager/KeyManagerConfigurations.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/keymanager/KeyManagerConfigurations.java new file mode 100644 index 0000000000..b76f932e5b --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/keymanager/KeyManagerConfigurations.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you 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.wso2.carbon.device.mgt.core.config.keymanager; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Configurations related to key management. + */ +@XmlRootElement(name = "KeyManagerConfiguration") +public class KeyManagerConfigurations { + private String serverUrl; + private String adminUsername; + private String adminPassword; + + @XmlElement(name = "AdminUsername", required = true) + public String getAdminUsername() { + return adminUsername; + } + + public void setAdminUsername(String adminUsername) { + this.adminUsername = adminUsername; + } + + @XmlElement(name = "AdminPassword", required = true) + public String getAdminPassword() { + return adminPassword; + } + + public void setAdminPassword(String adminPassword) { + this.adminPassword = adminPassword; + } + + @XmlElement(name = "ServerUrl", required = true) + public String getServerUrl() { + return serverUrl; + } + + public void setServerUrl(String serverUrl) { + this.serverUrl = serverUrl; + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/remote/session/RemoteSessionConfiguration.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/remote/session/RemoteSessionConfiguration.java new file mode 100644 index 0000000000..426e2db308 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/remote/session/RemoteSessionConfiguration.java @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you 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.wso2.carbon.device.mgt.core.config.remote.session; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * This class represents the information related to Remote Session configuration. + */ +@XmlRootElement(name = "RemoteSessionConfiguration") +public class RemoteSessionConfiguration { + + private String remoteSessionServerUrl; + private boolean enabled; + private int maxHTTPConnectionPerHost; + private int maxTotalHTTPConnections; + private int maxMessagesPerSecond; + private int sessionIdleTimeOut; + private int maxSessionDuration; + private int sessionBufferSize; + + public void setRemoteSessionServerUrl(String remoteSessionServerUrl) { + this.remoteSessionServerUrl = remoteSessionServerUrl; + } + + /** + * Remote session server url + * @return + */ + @XmlElement(name = "RemoteSessionServerUrl", required = true) + public String getRemoteSessionServerUrl() { + return remoteSessionServerUrl; + } + + /** + * Remote session enabled + * @return + */ + @XmlElement(name = "Enabled", required = true) + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + /** + * Maximum connections per host for external http invocations + * @return + */ + @XmlElement(name = "MaximumHTTPConnectionPerHost", required = true, defaultValue = "2") + public int getMaxHTTPConnectionPerHost() { + return maxHTTPConnectionPerHost; + } + + public void setMaxHTTPConnectionPerHost(int maxHTTPConnectionPerHost) { + this.maxHTTPConnectionPerHost = maxHTTPConnectionPerHost; + } + + /** + * Maximum total connections for external http invocation + */ + @XmlElement(name = "MaximumTotalHTTPConnections", required = true, defaultValue = "100") + public int getMaxTotalHTTPConnections() { + return maxTotalHTTPConnections; + } + + public void setMaxTotalHTTPConnections(int maxTotalHTTPConnections) { + this.maxTotalHTTPConnections = maxTotalHTTPConnections; + } + + /** + * This is for protect device from message spamming. Throttling limit in term of messages for device + * @return + */ + @XmlElement(name = "MaximumMessagesPerSecond", required = true, defaultValue = "10") + public int getMaxMessagesPerSession() { + return maxMessagesPerSecond; + } + + public void setMaxMessagesPerSession(int maxMessagesPerSession) { + this.maxMessagesPerSecond = maxMessagesPerSession; + } + + /** + * Maximum idle timeout in minutes + * @return + */ + @XmlElement(name = "SessionIdleTimeOut", required = true, defaultValue = "5") + public int getSessionIdleTimeOut() { + return sessionIdleTimeOut; + } + + public void setSessionIdleTimeOut(int sessionIdleTimeOut) { + this.sessionIdleTimeOut = sessionIdleTimeOut; + } + + /** + * Maximum session duration in minutes + * @return + */ + @XmlElement(name = "MaximumSessionDuration", required = true, defaultValue = "15") + public int getMaxSessionDuration() { + return maxSessionDuration; + } + + public void setMaxSessionDuration(int maxSessionDuration) { + this.maxSessionDuration = maxSessionDuration; + } + + /** + * Maximum session buffer size in kilo bytes + * @return + */ + @XmlElement(name = "SessionBufferSize", required = true, defaultValue = "640") + public int getSessionBufferSize() { + return sessionBufferSize; + } + + public void setSessionBufferSize(int sessionBufferSize) { + this.sessionBufferSize = sessionBufferSize; + } +} + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java index 632d3dec99..6b08254c4d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java @@ -32,6 +32,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; @@ -45,6 +46,7 @@ public class ConfigOperationDAOImpl extends GenericOperationDAOImpl { PreparedStatement stmt = null; try { operationId = super.addOperation(operation); + operation.setCreatedTimeStamp(new Timestamp(new java.util.Date().getTime()).toString()); Connection conn = OperationManagementDAOFactory.getConnection(); stmt = conn.prepareStatement("INSERT INTO DM_CONFIG_OPERATION(OPERATION_ID, OPERATION_CONFIG) VALUES(?, ?)"); stmt.setInt(1, operationId); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java index 5262fe2e2b..ff402f7e97 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java @@ -22,7 +22,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse; import org.wso2.carbon.device.mgt.core.DeviceManagementConstants; -import org.wso2.carbon.device.mgt.core.dto.operation.mgt.*; +import org.wso2.carbon.device.mgt.core.dto.operation.mgt.CommandOperation; +import org.wso2.carbon.device.mgt.core.dto.operation.mgt.ConfigOperation; +import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation; +import org.wso2.carbon.device.mgt.core.dto.operation.mgt.PolicyOperation; +import org.wso2.carbon.device.mgt.core.dto.operation.mgt.ProfileOperation; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -32,6 +36,7 @@ import java.sql.SQLException; public class OperationDAOUtil { private static final Log log = LogFactory.getLog(OperationDAOUtil.class); + public static Operation convertOperation(org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation) { Operation dtoOperation = null; @@ -40,28 +45,28 @@ public class OperationDAOUtil { dtoOperation = new CommandOperation(); } else if (operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.PROFILE)) { dtoOperation = new ProfileOperation(); - }else if(operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.POLICY)){ + } else if (operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.POLICY)) { dtoOperation = new PolicyOperation(); - }else if(operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.CONFIG)) { + } else if (operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.CONFIG)) { dtoOperation = new ConfigOperation(); - }else{ + } else { dtoOperation = new Operation(); } dtoOperation.setEnabled(operation.isEnabled()); dtoOperation.setCode(operation.getCode()); - if (operation.getType() != null){ + if (operation.getType() != null) { dtoOperation.setType(Operation.Type.valueOf(operation.getType().toString())); - }else{ + } else { dtoOperation.setType(null); } dtoOperation.setCreatedTimeStamp(operation.getCreatedTimeStamp()); - if (operation.getStatus() != null){ + if (operation.getStatus() != null) { dtoOperation.setStatus(Operation.Status.valueOf(operation.getStatus().toString())); - }else{ + } else { dtoOperation.setStatus(null); } @@ -70,31 +75,35 @@ public class OperationDAOUtil { dtoOperation.setReceivedTimeStamp(operation.getReceivedTimeStamp()); dtoOperation.setProperties(operation.getProperties()); + if (operation.getControl() != null) { + dtoOperation.setControl(Operation.Control.valueOf(operation.getControl().toString())); + } + return dtoOperation; } - public static org.wso2.carbon.device.mgt.common.operation.mgt.Operation convertOperation(Operation dtoOperation){ + public static org.wso2.carbon.device.mgt.common.operation.mgt.Operation convertOperation(Operation dtoOperation) { org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation = null; - - if (dtoOperation.getType().equals(Operation.Type.COMMAND)){ + + if (dtoOperation.getType().equals(Operation.Type.COMMAND)) { operation = new org.wso2.carbon.device.mgt.core.operation.mgt.CommandOperation(); - }else if(dtoOperation.getType().equals(Operation.Type.PROFILE)){ + } else if (dtoOperation.getType().equals(Operation.Type.PROFILE)) { operation = new org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation(); - }else{ + } else { operation = new org.wso2.carbon.device.mgt.common.operation.mgt.Operation(); } operation.setEnabled(dtoOperation.isEnabled()); operation.setCode(dtoOperation.getCode()); - if(dtoOperation.getType() != null) { + if (dtoOperation.getType() != null) { operation.setType(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.valueOf(dtoOperation .getType().toString())); } operation.setCreatedTimeStamp(dtoOperation.getCreatedTimeStamp()); - if(dtoOperation.getStatus() != null) { + if (dtoOperation.getStatus() != null) { operation.setStatus(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Status.valueOf(dtoOperation .getStatus().toString())); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/conf/config.json b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/conf/config.json index 171e5a7046..8c132ecbde 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/conf/config.json +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/conf/config.json @@ -6,6 +6,7 @@ "httpsURL": "https://%iot.gateway.host%:%iot.gateway.https.port%", "httpURL": "http://%iot.gateway.host%:%iot.gateway.http.port%", "wssURL": "https://%iot.analytics.host%:%iot.analytics.https.port%", + "remoteSessionWSURL": "https://%iot.core.host%:%iot.core.https.port%", "portalURL": "https://%iot.analytics.host%:%iot.analytics.https.port%", "dashboardServerURL": "%https.ip%", "androidEnrollmentDir": "/android-web-agent/enrollment", diff --git a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/src/test/resources/carbon-home/repository/conf/cdm-config.xml b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/src/test/resources/carbon-home/repository/conf/cdm-config.xml index 9097a645cb..18f2ad56ba 100644 --- a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/src/test/resources/carbon-home/repository/conf/cdm-config.xml +++ b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/src/test/resources/carbon-home/repository/conf/cdm-config.xml @@ -46,6 +46,11 @@ admin admin + + https://localhost:9443 + admin + admin + org.wso2.carbon.policy.mgt true @@ -91,6 +96,16 @@ false false + + true + wss://localhost:9443 + 2 + 100 + 20 + 15 + 60 + 640 + BYOD,COPE