mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
Add API to get enrollment QR code payload
This commit is contained in:
parent
0bd33ed3aa
commit
549186eda2
@ -246,4 +246,44 @@ public interface DeviceTypeConfigurationAPI {
|
||||
"Example: Mon, 05 Jan 2014 15:10:00 +0200.")
|
||||
@HeaderParam("If-Modified-Since") String ifModifiedSince);
|
||||
|
||||
@GET
|
||||
@Path("/enrollment-qr-config/{ownershipType}")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting the Enrollment QR config for device type Android",
|
||||
notes = "Use this REST API to retrieve the Enrollment QR Config that is used for the Android device " +
|
||||
"enrollment.",
|
||||
tags = "Android Configuration Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = AndroidConstants.SCOPE, value = "perm:android:enroll")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(
|
||||
code = 400,
|
||||
message = "Bad Request. \n Invalid request."),
|
||||
@ApiResponse(
|
||||
code = 200,
|
||||
message = "OK. \n Successfully fetched Android Enrollment QR configuration.",
|
||||
response = String.class,
|
||||
responseHeaders = {
|
||||
@ResponseHeader(
|
||||
name = "Content-Type",
|
||||
description = "Content type of the body")
|
||||
}),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server Error. \n Server error occurred while fetching the Android Enrollment QR"
|
||||
+ " configuration.")
|
||||
})
|
||||
Response getQRConfig(
|
||||
@ApiParam(
|
||||
name = "ownershipType",
|
||||
value = "The ownership type that device has enrolled.",
|
||||
required = true)
|
||||
@PathParam("ownershipType") String ownershipType);
|
||||
}
|
||||
|
||||
@ -142,18 +142,18 @@ public class DeviceManagementAPIImpl implements DeviceManagementAPI {
|
||||
String msg = "Device identifier is invalid. Device identifier " + id;
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.NOT_FOUND).entity(msg).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while getting pending operations of the device.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(msg).build()).build();
|
||||
} catch (AndroidDeviceMgtPluginException e) {
|
||||
String errorMessage = "Error occured while executing get pending operations";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while getting pending operations of the device.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(msg).build()).build();
|
||||
}
|
||||
}
|
||||
|
||||
@ -198,19 +198,19 @@ public class DeviceManagementAPIImpl implements DeviceManagementAPI {
|
||||
}
|
||||
return Response.status(Integer.parseInt(message.getResponseCode()))
|
||||
.entity(message.getResponseMessage()).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while enrolling the android, which carries the id '" +
|
||||
androidDevice.getDeviceIdentifier() + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(msg).build()).build();
|
||||
} catch (AndroidDeviceMgtPluginException e) {
|
||||
String errorMessage = "Error occured while enrolling device";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while enrolling the android, which carries the id '" + androidDevice
|
||||
.getDeviceIdentifier() + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(msg).build()).build();
|
||||
}
|
||||
}
|
||||
|
||||
@ -251,31 +251,31 @@ public class DeviceManagementAPIImpl implements DeviceManagementAPI {
|
||||
"carries the id '" + id + "' has not been updated");
|
||||
return Response.status(Response.Status.NOT_MODIFIED).entity(responseMessage).build();
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while modifying enrollment of the Android device that carries the id '" +
|
||||
id + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(msg).build()).build();
|
||||
} catch (BadRequestException e) {
|
||||
String errorMessage = "The payload of the android device enrollment is incorrect.";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_BAD_REQUEST)
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_BAD_REQUEST)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
} catch (NotFoundException e) {
|
||||
String errorMessage = "The device to be modified doesn't exist.";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.NOT_FOUND).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_NOT_FOUND)
|
||||
return Response.status(Response.Status.NOT_FOUND)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_NOT_FOUND)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
} catch (AndroidDeviceMgtPluginException e) {
|
||||
String errorMessage = "Error occured while modifying enrollment";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg =
|
||||
"Error occurred while modifying enrollment of the Android device that carries the id '" + id + "'";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(msg).build()).build();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -39,7 +39,9 @@ import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
||||
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.exceptions.InvalidConfigurationException;
|
||||
import org.wso2.carbon.device.mgt.common.license.mgt.License;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceTypeCommonService;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.api.DeviceTypeConfigurationAPI;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.bean.AndroidPlatformConfiguration;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.bean.ErrorResponse;
|
||||
@ -54,9 +56,11 @@ import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HeaderParam;
|
||||
import javax.ws.rs.PUT;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.Map;
|
||||
|
||||
@Path("/configuration")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@ -125,4 +129,35 @@ public class DeviceTypeConfigurationAPIImpl implements DeviceTypeConfigurationAP
|
||||
.setMessage(msg).build()).build();
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/enrollment-qr-config/{ownershipType}")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public Response getQRConfig(
|
||||
@PathParam("ownershipType") String ownershipType) {
|
||||
try {
|
||||
DeviceTypeCommonService deviceTypeCommonService = AndroidAPIUtils.getDeviceTypeCommonService();
|
||||
Map<String, Object> enrollmentQRConfig = deviceTypeCommonService.getEnrollmentQRCode(ownershipType);
|
||||
if (enrollmentQRConfig.isEmpty()) {
|
||||
String msg = "Couldn't find Enrollment QR code config for Android. Please contact administrator.";
|
||||
log.error(msg);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(enrollmentQRConfig).build();
|
||||
} catch (BadRequestException e) {
|
||||
String msg = "Bad Request, trying to get Enrollment QR code for invalid device ownership type "
|
||||
+ ownershipType;
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while retrieving the license configured for Android device enrolment";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
} catch (InvalidConfigurationException e) {
|
||||
String msg = "Platform configuration is not configured properly to generate QR code for the Android "
|
||||
+ "enrollment. Device ownership mode is " + ownershipType;
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,23 +54,23 @@ public class EventReceiverAPIImpl implements EventReceiverAPI {
|
||||
AndroidService androidService = AndroidAPIUtils.getAndroidService();
|
||||
Message message = androidService.publishEvents(eventBeanWrapper);
|
||||
return Response.status(Integer.parseInt(message.getResponseCode())).entity(message.getResponseMessage()).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String errorMessage = "Error occurred while checking Operation Analytics is Enabled.";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
} catch (UnexpectedServerErrorException e) {
|
||||
String errorMessage = "Error occurred while getting the Data publisher Service instance.";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
} catch (AndroidDeviceMgtPluginException e) {
|
||||
String errorMessage = "Error occurred while publishing events.";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String errorMessage = "Error occurred while checking Operation Analytics is Enabled.";
|
||||
log.error(errorMessage, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(new ErrorResponse.ErrorResponseBuilder().setCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR)
|
||||
.setMessage(errorMessage).build()).build();
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,6 +52,8 @@
|
||||
|
||||
package org.wso2.carbon.device.mgt.mobile.android.common;
|
||||
|
||||
import com.sun.org.apache.bcel.internal.generic.ATHROW;
|
||||
|
||||
/**
|
||||
* Defines constants used in Android-REST API bundle.
|
||||
*/
|
||||
@ -227,4 +229,28 @@ public final class AndroidConstants {
|
||||
|
||||
}
|
||||
|
||||
public final class PlatformConfigs {
|
||||
private PlatformConfigs() { throw new AssertionError(); }
|
||||
|
||||
public final class KioskConfigs {
|
||||
private KioskConfigs() { throw new AssertionError(); }
|
||||
|
||||
public static final String ADMIN_COMPONENT_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME";
|
||||
public static final String WIFI_SSID = "android.app.extra.PROVISIONING_WIFI_SSID";
|
||||
public static final String WIFI_PASSWORD = "android.app.extra.PROVISIONING_WIFI_PASSWORD";
|
||||
public static final String WIFI_SECURITY = "android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE";
|
||||
public static final String SKIP_ENCRYPTION = "android.app.extra.PROVISIONING_SKIP_ENCRYPTION";
|
||||
public static final String CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM";
|
||||
public static final String DOWNLOAD_URL = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION";
|
||||
public static final String ANDROID_EXTRA = "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE";
|
||||
}
|
||||
|
||||
public final class DefaultConfigs {
|
||||
private DefaultConfigs() { throw new AssertionError(); }
|
||||
|
||||
public static final String ACCESS_TOKEN = "android.app.extra.token";
|
||||
public static final String DEFAULT_OWNERSHIP = "android.app.extra.defaultOwner";
|
||||
public static final String SERVER_IP = "android.app.extra.serverIp";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,8 +17,9 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.mobile.android.common.exception;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
||||
|
||||
public class AndroidDeviceMgtPluginException extends Exception{
|
||||
public class AndroidDeviceMgtPluginException extends DeviceManagementException {
|
||||
|
||||
private static final long serialVersionUID = -2297311387874900305L;
|
||||
private String errorMessage;
|
||||
|
||||
@ -85,6 +85,7 @@
|
||||
org.wso2.carbon.device.application.mgt.common.*,
|
||||
org.wso2.carbon.user.core.*,
|
||||
org.wso2.carbon.user.api.*,
|
||||
org.wso2.carbon.identity.jwt.client.extension.*,
|
||||
org.apache.commons.httpclient,
|
||||
org.apache.http,
|
||||
org.apache.http.client.methods,
|
||||
|
||||
@ -17,59 +17,217 @@
|
||||
|
||||
package org.wso2.carbon.device.mgt.mobile.android.core.impl;
|
||||
|
||||
import org.wso2.carbon.base.ServerConfiguration;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.AppRegistrationCredentials;
|
||||
import org.wso2.carbon.device.mgt.common.ApplicationRegistrationException;
|
||||
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
|
||||
import org.wso2.carbon.device.mgt.common.MDMAppConstants;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
||||
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.license.mgt.License;
|
||||
import org.wso2.carbon.device.mgt.common.exceptions.InvalidConfigurationException;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceTypeCommonService;
|
||||
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.keymanager.KeyManagerConfigurations;
|
||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.AndroidConstants;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.exception.BadRequestException;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.spi.AndroidService;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.core.util.AndroidAPIUtils;
|
||||
import org.wso2.carbon.identity.jwt.client.extension.dto.AccessTokenInfo;
|
||||
import org.wso2.carbon.identity.jwt.client.extension.exception.JWTClientException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class DeviceTypeCommonServiceImpl implements DeviceTypeCommonService {
|
||||
|
||||
private static final Log log = LogFactory.getLog(DeviceTypeCommonServiceImpl.class);
|
||||
|
||||
@Override
|
||||
public Map<EnrolmentInfo.OwnerShip, String> getEnrollmentQRCode() throws DeviceManagementException {
|
||||
return null;
|
||||
public Map<String, Object> getEnrollmentQRCode(String ownershipType) throws DeviceManagementException {
|
||||
AndroidService androidService = AndroidAPIUtils.getAndroidService();
|
||||
PlatformConfiguration platformConfiguration = androidService.getPlatformConfig();
|
||||
|
||||
Map<String, Object> qrEnrollmentPayload = new HashMap<>();
|
||||
Map<String, Object> defaultQREnrollmentPayload = new HashMap<>();
|
||||
|
||||
if (Arrays.stream(EnrolmentInfo.OwnerShip.values())
|
||||
.noneMatch(ownerShip -> ownerShip.toString().equalsIgnoreCase(ownershipType))) {
|
||||
String msg = "Request to get QR enrollment code for invalid device ownership type " + ownershipType;
|
||||
log.error(msg);
|
||||
throw new BadRequestException(msg);
|
||||
}
|
||||
|
||||
// private void getPlatformConfig() {
|
||||
// PlatformConfiguration platformConfiguration;
|
||||
// List<ConfigurationEntry> configs;
|
||||
// try {
|
||||
// platformConfiguration = AndroidAPIUtils.getDeviceManagementService().
|
||||
// getConfiguration(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
|
||||
// if (platformConfiguration != null) {
|
||||
// configs = platformConfiguration.getConfiguration();
|
||||
// } else {
|
||||
// platformConfiguration = new PlatformConfiguration();
|
||||
// configs = new ArrayList<>();
|
||||
// }
|
||||
// ConfigurationEntry entry = new ConfigurationEntry();
|
||||
// License license = AndroidAPIUtils.getDeviceManagementService().getLicense(
|
||||
// DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID, MDMAppConstants.AndroidConstants.
|
||||
// TenantConfigProperties.LANGUAGE_US);
|
||||
//
|
||||
// if (configs != null) {
|
||||
// ConfigurationEntry versionEntry = new ConfigurationEntry();
|
||||
// versionEntry.setContentType(AndroidConstants.TenantConfigProperties.CONTENT_TYPE_TEXT);
|
||||
// versionEntry.setName(AndroidConstants.TenantConfigProperties.SERVER_VERSION);
|
||||
// versionEntry.setValue(ServerConfiguration.getInstance().getFirstProperty("Version"));
|
||||
// configs.add(versionEntry);
|
||||
// if (license != null) {
|
||||
// entry.setContentType(AndroidConstants.TenantConfigProperties.CONTENT_TYPE_TEXT);
|
||||
// entry.setName(AndroidConstants.TenantConfigProperties.LICENSE_KEY);
|
||||
// entry.setValue(license.getText());
|
||||
// configs.add(entry);
|
||||
// }
|
||||
// platformConfiguration.setConfiguration(configs);
|
||||
// }
|
||||
// }
|
||||
String accessToken = getAccessTokenToEnroll();
|
||||
if (StringUtils.isBlank(accessToken)) {
|
||||
String msg = "Couldn't get a access token for user " + PrivilegedCarbonContext.getThreadLocalCarbonContext()
|
||||
.getUsername();
|
||||
log.error(msg);
|
||||
throw new DeviceManagementException(msg);
|
||||
}
|
||||
|
||||
for (ConfigurationEntry configEntry : platformConfiguration.getConfiguration()) {
|
||||
if (AndroidConstants.PlatformConfigs.DefaultConfigs.DEFAULT_OWNERSHIP.equals(configEntry.getName())) {
|
||||
defaultQREnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.DefaultConfigs.DEFAULT_OWNERSHIP, configEntry.getValue());
|
||||
}
|
||||
if (AndroidConstants.PlatformConfigs.DefaultConfigs.SERVER_IP.equals(configEntry.getName())) {
|
||||
defaultQREnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.DefaultConfigs.SERVER_IP, configEntry.getValue());
|
||||
}
|
||||
|
||||
if (EnrolmentInfo.OwnerShip.COSU.toString().equalsIgnoreCase(ownershipType) || EnrolmentInfo.OwnerShip.COPE
|
||||
.toString().equalsIgnoreCase(ownershipType)) {
|
||||
if (AndroidConstants.PlatformConfigs.KioskConfigs.ADMIN_COMPONENT_NAME.equals(configEntry.getName())) {
|
||||
qrEnrollmentPayload.put(AndroidConstants.PlatformConfigs.KioskConfigs.ADMIN_COMPONENT_NAME,
|
||||
configEntry.getValue());
|
||||
} else if (AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_SSID.equals(configEntry.getName())) {
|
||||
qrEnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_SSID, configEntry.getValue());
|
||||
} else if (AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_PASSWORD.equals(configEntry.getName())) {
|
||||
qrEnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_PASSWORD, configEntry.getValue());
|
||||
} else if (AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_SECURITY.equals(configEntry.getName())) {
|
||||
qrEnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_SECURITY, configEntry.getValue());
|
||||
} else if (AndroidConstants.PlatformConfigs.KioskConfigs.CHECKSUM.equals(configEntry.getName())) {
|
||||
qrEnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.KioskConfigs.CHECKSUM, configEntry.getValue());
|
||||
} else if (AndroidConstants.PlatformConfigs.KioskConfigs.DOWNLOAD_URL.equals(configEntry.getName())) {
|
||||
qrEnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.KioskConfigs.DOWNLOAD_URL, configEntry.getValue());
|
||||
} else if (AndroidConstants.PlatformConfigs.KioskConfigs.SKIP_ENCRYPTION
|
||||
.equals(configEntry.getName())) {
|
||||
qrEnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.KioskConfigs.SKIP_ENCRYPTION, configEntry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
defaultQREnrollmentPayload.put(AndroidConstants.PlatformConfigs.DefaultConfigs.ACCESS_TOKEN, accessToken);
|
||||
qrEnrollmentPayload
|
||||
.put(AndroidConstants.PlatformConfigs.KioskConfigs.ANDROID_EXTRA, defaultQREnrollmentPayload);
|
||||
validateQREnrollmentPayload(qrEnrollmentPayload, ownershipType);
|
||||
return qrEnrollmentPayload;
|
||||
}
|
||||
|
||||
/**
|
||||
* To get Access token for device enroll scope.
|
||||
*
|
||||
* @return Access token
|
||||
* @throws DeviceManagementException if error occurred when trying to get access token for device enroll scope.
|
||||
*/
|
||||
private String getAccessTokenToEnroll() throws DeviceManagementException {
|
||||
DeviceManagementConfig deviceManagementConfig = DeviceConfigurationManager.getInstance()
|
||||
.getDeviceManagementConfig();
|
||||
KeyManagerConfigurations kmConfig = deviceManagementConfig.getKeyManagerConfigurations();
|
||||
try {
|
||||
AppRegistrationCredentials credentials = DeviceManagerUtil.getApplicationRegistrationCredentials(
|
||||
System.getProperty(
|
||||
org.wso2.carbon.device.mgt.core.DeviceManagementConstants.ConfigurationManagement.IOT_GATEWAY_HOST),
|
||||
System.getProperty(
|
||||
org.wso2.carbon.device.mgt.core.DeviceManagementConstants.ConfigurationManagement.IOT_GATEWAY_HTTPS_PORT),
|
||||
kmConfig.getAdminUsername(), kmConfig.getAdminPassword());
|
||||
|
||||
AccessTokenInfo accessTokenForAdmin = DeviceManagerUtil
|
||||
.getAccessTokenForDeviceOwner("perm:device:enroll", credentials.getClient_id(),
|
||||
credentials.getClient_secret(),
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername());
|
||||
return accessTokenForAdmin.getAccessToken();
|
||||
} catch (ApplicationRegistrationException e) {
|
||||
String msg = "Error occurred while registering Application to get access token to create enrollment QR code "
|
||||
+ "payload.";
|
||||
log.error(msg);
|
||||
throw new DeviceManagementException(msg, e);
|
||||
} catch (JWTClientException e) {
|
||||
String msg = "JWT Error occurred while registering Application to get access token to create enrollment "
|
||||
+ "QR code payload.";
|
||||
log.error(msg, e);
|
||||
throw new DeviceManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the QR enrollment payload
|
||||
*
|
||||
* @param payload Configs use to generate Enrollment QR code
|
||||
* @param ownershipType Device enrollment type
|
||||
*/
|
||||
private void validateQREnrollmentPayload(Map<String, Object> payload,
|
||||
String ownershipType) {
|
||||
boolean isInvalidConfig = false;
|
||||
String invalidPlatformConfigs = "";
|
||||
|
||||
if (payload.get(AndroidConstants.PlatformConfigs.KioskConfigs.ANDROID_EXTRA) == null) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.KioskConfigs.ANDROID_EXTRA + ", ";
|
||||
isInvalidConfig = true;
|
||||
} else {
|
||||
Map<String, Object> defaultPayload = (Map<String, Object>) payload
|
||||
.get(AndroidConstants.PlatformConfigs.KioskConfigs.ANDROID_EXTRA);
|
||||
if (StringUtils.isBlank(
|
||||
(String) defaultPayload.get(AndroidConstants.PlatformConfigs.DefaultConfigs.DEFAULT_OWNERSHIP))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.DefaultConfigs.DEFAULT_OWNERSHIP + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
if (StringUtils
|
||||
.isBlank((String) defaultPayload.get(AndroidConstants.PlatformConfigs.DefaultConfigs.SERVER_IP))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.DefaultConfigs.SERVER_IP + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
if (StringUtils.isBlank(
|
||||
(String) defaultPayload.get(AndroidConstants.PlatformConfigs.DefaultConfigs.ACCESS_TOKEN))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.DefaultConfigs.ACCESS_TOKEN + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (EnrolmentInfo.OwnerShip.COSU.toString().equalsIgnoreCase(ownershipType) || EnrolmentInfo.OwnerShip.COPE
|
||||
.toString().equalsIgnoreCase(ownershipType)) {
|
||||
if (StringUtils.isBlank(
|
||||
(String) payload.get(AndroidConstants.PlatformConfigs.KioskConfigs.ADMIN_COMPONENT_NAME))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.KioskConfigs.ADMIN_COMPONENT_NAME + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
if (StringUtils.isBlank((String) payload.get(AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_SSID))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_SSID + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
if (StringUtils
|
||||
.isBlank((String) payload.get(AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_PASSWORD))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_PASSWORD + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
if (StringUtils
|
||||
.isBlank((String) payload.get(AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_SECURITY))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.KioskConfigs.WIFI_SECURITY + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
if (StringUtils.isBlank((String) payload.get(AndroidConstants.PlatformConfigs.KioskConfigs.CHECKSUM))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.KioskConfigs.CHECKSUM + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
if (StringUtils.isBlank((String) payload.get(AndroidConstants.PlatformConfigs.KioskConfigs.DOWNLOAD_URL))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.KioskConfigs.DOWNLOAD_URL + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
if (StringUtils
|
||||
.isBlank((String) payload.get(AndroidConstants.PlatformConfigs.KioskConfigs.SKIP_ENCRYPTION))) {
|
||||
invalidPlatformConfigs += AndroidConstants.PlatformConfigs.KioskConfigs.SKIP_ENCRYPTION + ", ";
|
||||
isInvalidConfig = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isInvalidConfig) {
|
||||
String msg = "Android Platform Configuration is not configured properly. Platform configs [ "
|
||||
+ invalidPlatformConfigs + " ]";
|
||||
log.error(msg);
|
||||
throw new InvalidConfigurationException(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
|
||||
package org.wso2.carbon.device.mgt.mobile.android.core.internal;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceTypeCommonService;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.spi.AndroidGoogleEnterpriseService;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.spi.AndroidService;
|
||||
import org.wso2.carbon.registry.core.service.RegistryService;
|
||||
@ -31,6 +32,8 @@ public class AndroidDeviceManagementDataHolder {
|
||||
private AndroidGoogleEnterpriseService androidDeviceManagementService;
|
||||
private AndroidService androidService;
|
||||
|
||||
private DeviceTypeCommonService deviceTypeCommonService;
|
||||
|
||||
private static AndroidDeviceManagementDataHolder thisInstance = new AndroidDeviceManagementDataHolder();
|
||||
|
||||
private AndroidDeviceManagementDataHolder() {
|
||||
@ -64,4 +67,12 @@ public class AndroidDeviceManagementDataHolder {
|
||||
public void setAndroidService(AndroidService androidService) {
|
||||
this.androidService = androidService;
|
||||
}
|
||||
|
||||
public DeviceTypeCommonService getDeviceTypeCommonService() {
|
||||
return deviceTypeCommonService;
|
||||
}
|
||||
|
||||
public void setDeviceTypeCommonService(DeviceTypeCommonService deviceTypeCommonService) {
|
||||
this.deviceTypeCommonService = deviceTypeCommonService;
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,11 +22,13 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.service.component.ComponentContext;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceTypeCommonService;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.spi.AndroidGoogleEnterpriseService;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.common.spi.AndroidService;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.core.dao.AbstractMobileDeviceManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.core.impl.AndroidGoogleEnterpriseServiceImpl;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.core.impl.AndroidServiceImpl;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.core.impl.DeviceTypeCommonServiceImpl;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.core.util.MobileDeviceManagementUtil;
|
||||
import org.wso2.carbon.ndatasource.core.DataSourceService;
|
||||
import org.wso2.carbon.registry.core.service.RegistryService;
|
||||
@ -69,6 +71,11 @@ public class AndroidPluginServiceComponent {
|
||||
androidService);
|
||||
bundleContext.registerService(AndroidService.class.getName(), androidService, null);
|
||||
|
||||
DeviceTypeCommonService deviceTypeCommonService = new DeviceTypeCommonServiceImpl();
|
||||
AndroidDeviceManagementDataHolder.getInstance().setDeviceTypeCommonService(
|
||||
deviceTypeCommonService);
|
||||
bundleContext.registerService(DeviceTypeCommonService.class.getName(), deviceTypeCommonService, null);
|
||||
|
||||
AndroidGoogleEnterpriseService androidPluginService = new AndroidGoogleEnterpriseServiceImpl();
|
||||
AndroidDeviceManagementDataHolder.getInstance().setAndroidDeviceManagementService(
|
||||
androidPluginService);
|
||||
|
||||
@ -30,6 +30,7 @@ import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagement
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceTypeCommonService;
|
||||
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
|
||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
@ -101,6 +102,18 @@ public class AndroidAPIUtils {
|
||||
return deviceManagementProviderService;
|
||||
}
|
||||
|
||||
public static DeviceTypeCommonService getDeviceTypeCommonService() {
|
||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||
DeviceTypeCommonService deviceTypeCommonService = (DeviceTypeCommonService) ctx
|
||||
.getOSGiService(DeviceTypeCommonService.class, null);
|
||||
if (deviceTypeCommonService == null) {
|
||||
String msg = "Device Type Common service has not initialized.";
|
||||
log.error(msg);
|
||||
throw new IllegalStateException(msg);
|
||||
}
|
||||
return deviceTypeCommonService;
|
||||
}
|
||||
|
||||
public static DeviceInformationManager getDeviceInformationManagerService() {
|
||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||
DeviceInformationManager informationManager =
|
||||
|
||||
Loading…
Reference in New Issue
Block a user