Merge pull request #832 from hasuniea/master

Resolved wso2/product-iots#1428
revert-dabc3590
Harshan Liyanage 7 years ago committed by GitHub
commit 08eff44c40

@ -352,11 +352,10 @@ public final class PluginConstants {
private WindowsEnrollmentProperties() { private WindowsEnrollmentProperties() {
throw new AssertionError(); throw new AssertionError();
} }
public static final String DEVICE_NAME = "DeviceName"; public static final String DEVICE_NAME = "DeviceName";
public static final String DEVICE_VERSION = "OSVersion"; public static final String DEVICE_VERSION = "OSVersion";
public static final String DEVICE_ID = "DeviceID"; public static final String DEVICE_ID = "DeviceID";
public static final String IMEI = "MobileEquipmentId"; public static final String IMEI = "MobileEquipmentId";
public static final String TYPE = "DeviceType";
} }
} }

@ -38,9 +38,9 @@ public class ChallengeTag {
public void buildChallengeElement(Document doc, Element rootElement) { public void buildChallengeElement(Document doc, Element rootElement) {
Element challenge = doc.createElement(Constants.CHALLENGE); Element challenge = doc.createElement(Constants.CHALLENGE);
rootElement.appendChild(challenge);
if (getMeta() != null) { if (getMeta() != null) {
getMeta().buildMetaElement(doc, challenge); getMeta().buildMetaElement(doc, challenge);
} }
rootElement.appendChild(challenge);
} }
} }

@ -44,6 +44,17 @@ public class StatusTag {
this.data = data; this.data = data;
} }
public StatusTag(int commandId, int messageReference, int commandReference, String command,
ChallengeTag challengeTag, String targetReference, String data) {
this.commandId = commandId;
this.messageReference = messageReference;
this.commandReference = commandReference;
this.command = command;
this.challenge = challengeTag;
this.targetReference = targetReference;
this.data = data;
}
public StatusTag() { public StatusTag() {
} }
@ -140,5 +151,4 @@ public class StatusTag {
status.appendChild(data); status.appendChild(data);
} }
} }
} }

@ -87,6 +87,7 @@ public class Constants {
public final class SyncMLResponseCodes { public final class SyncMLResponseCodes {
public static final String AUTHENTICATION_ACCEPTED = "212"; public static final String AUTHENTICATION_ACCEPTED = "212";
public static final String ACCEPTED = "200"; public static final String ACCEPTED = "200";
public static final String UNAUTHORIZED = "401";
public static final String ACCEPTED_FOR_PROCESSING = "202"; public static final String ACCEPTED_FOR_PROCESSING = "202";
public static final String PIN_NOTFOUND = "405"; public static final String PIN_NOTFOUND = "405";
public static final String LOCK_RESET_NOTIFICATION = "Error occurred in Device Lock Operation. " + public static final String LOCK_RESET_NOTIFICATION = "Error occurred in Device Lock Operation. " +

@ -22,7 +22,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo; import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
@ -32,15 +31,21 @@ import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagement
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService; import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; 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.operation.mgt.OperationManagementException;
import org.wso2.carbon.device.mgt.common.policy.mgt.ProfileFeature;
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.ComplianceFeature;
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException; import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException;
import org.wso2.carbon.device.mgt.mobile.windows.api.common.PluginConstants; import org.wso2.carbon.device.mgt.mobile.windows.api.common.PluginConstants;
import org.wso2.carbon.device.mgt.mobile.windows.api.common.util.WindowsAPIUtils; import org.wso2.carbon.device.mgt.mobile.windows.api.common.util.WindowsAPIUtils;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.StatusTag;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.SyncmlDocument;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.SyncmlHeader;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.ItemTag;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.WindowsOperationException;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.ResultsTag;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.SyncmlBody;
import org.wso2.carbon.device.mgt.mobile.windows.api.services.syncml.beans.Profile; import org.wso2.carbon.device.mgt.mobile.windows.api.services.syncml.beans.Profile;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.*;
import org.wso2.carbon.policy.mgt.common.PolicyManagementException; import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
import org.wso2.carbon.device.mgt.common.policy.mgt.ProfileFeature;
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.ComplianceFeature;
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -226,6 +231,20 @@ public class OperationHandler {
} }
} }
public void updateDisenrollOperationStatus(DeviceIdentifier deviceIdentifier) throws OperationManagementException {
List<? extends Operation> pendingDeviceInfoOperations;
try {
pendingDeviceInfoOperations = WindowsAPIUtils.getPendingOperations(deviceIdentifier);
} catch (DeviceManagementException e) {
throw new OperationManagementException("Error occurred while getting pending operations.");
}
for (Operation operation : pendingDeviceInfoOperations) {
if (PluginConstants.OperationCodes.DISENROLL.equals(operation.getCode())) {
operation.setStatus(Operation.Status.COMPLETED);
updateStatus(deviceIdentifier.getId(), pendingDeviceInfoOperations);
}
}
}
public void updateDeviceInfoStatus(DeviceIdentifier deviceIdentifier) throws OperationManagementException { public void updateDeviceInfoStatus(DeviceIdentifier deviceIdentifier) throws OperationManagementException {
List<? extends Operation> pendingDeviceInfoOperations; List<? extends Operation> pendingDeviceInfoOperations;
@ -294,6 +313,9 @@ public class OperationHandler {
if (OperationCode.Command.TOTAL_RAM.getCode().equals(itemTag.getSource().getLocURI())) { if (OperationCode.Command.TOTAL_RAM.getCode().equals(itemTag.getSource().getLocURI())) {
updateDeviceInfo(syncmlDocument); updateDeviceInfo(syncmlDocument);
} }
if (OperationCode.Command.BATTERY_CHARGE_REMAINING.equals(itemTag.getSource().getLocURI())) {
updateDeviceInfo(syncmlDocument);
}
} }
} }
UpdateUriOperations(syncmlDocument); UpdateUriOperations(syncmlDocument);
@ -562,6 +584,7 @@ public class OperationHandler {
String totalRAM; String totalRAM;
String deviceID = null; String deviceID = null;
String totalStorage; String totalStorage;
Double battery;
List<ItemTag> deviceInformations = syncmlDocument.getBody().getResults().getItem(); List<ItemTag> deviceInformations = syncmlDocument.getBody().getResults().getItem();
DeviceInfo deviceInfo = new DeviceInfo(); DeviceInfo deviceInfo = new DeviceInfo();
@ -598,6 +621,10 @@ public class OperationHandler {
if (OperationCode.Info.DEV_ID.getCode().equals(source)) { if (OperationCode.Info.DEV_ID.getCode().equals(source)) {
deviceID = item.getData(); deviceID = item.getData();
} }
if (OperationCode.Info.BATTERY_CHARGE_REMAINING.getCode().equals(source)) {
battery = Double.valueOf(item.getData());
deviceInfo.setBatteryLevel(battery);
}
} }
DeviceIdentifier deviceIdentifier = convertToDeviceIdentifierObject(deviceID); DeviceIdentifier deviceIdentifier = convertToDeviceIdentifierObject(deviceID);
try { try {
@ -636,6 +663,16 @@ public class OperationHandler {
} catch (OperationManagementException e) { } catch (OperationManagementException e) {
throw new WindowsOperationException("Error occurred while updating Device Location operation status."); throw new WindowsOperationException("Error occurred while updating Device Location operation status.");
} }
}
public void checkForDeviceWipe(List<? extends Operation> pendingDeviceInfoOperations
, DeviceIdentifier deviceIdentifier) throws OperationManagementException {
for (Operation operation : pendingDeviceInfoOperations) {
if (PluginConstants.OperationCodes.WIPE_DATA.equals(operation.getCode())) {
operation.setStatus(Operation.Status.COMPLETED);
updateStatus(deviceIdentifier.getId(), pendingDeviceInfoOperations);
}
}
} }
} }

@ -21,6 +21,8 @@ package org.wso2.carbon.device.mgt.mobile.windows.api.operations.util;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
import org.wso2.carbon.device.mgt.mobile.windows.api.common.PluginConstants; import org.wso2.carbon.device.mgt.mobile.windows.api.common.PluginConstants;
@ -162,22 +164,27 @@ public class OperationReply {
SyncmlBody sourceSyncmlBody = syncmlDocument.getBody(); SyncmlBody sourceSyncmlBody = syncmlDocument.getBody();
SyncmlHeader sourceHeader = syncmlDocument.getHeader(); SyncmlHeader sourceHeader = syncmlDocument.getHeader();
StatusTag headerStatus; StatusTag headerStatus;
ChallengeTag challengeTag = new ChallengeTag();
MetaTag metaTag = new MetaTag();
metaTag.setFormat(Constants.CRED_FORMAT);
metaTag.setType(Constants.CRED_TYPE);
metaTag.setNextNonce(Constants.INITIAL_NONCE);
challengeTag.setMeta(metaTag);
SyncmlBody syncmlBodyReply = new SyncmlBody(); SyncmlBody syncmlBodyReply = new SyncmlBody();
List<StatusTag> statuses = new ArrayList<>(); List<StatusTag> statuses = new ArrayList<>();
List<StatusTag> sourceStatuses = sourceSyncmlBody.getStatus(); List<StatusTag> sourceStatuses = sourceSyncmlBody.getStatus();
if (sourceStatuses.isEmpty()) { if (sourceStatuses.isEmpty()) {
headerStatus = headerStatus =
new StatusTag(headerCommandId, sourceHeader.getMsgID(), HEADER_STATUS_ID, new StatusTag(headerCommandId, sourceHeader.getMsgID(), HEADER_STATUS_ID,
HEADER_COMMAND_TEXT, sourceHeader.getSource().getLocURI(), HEADER_COMMAND_TEXT, challengeTag,sourceHeader.getSource().getLocURI(),
String.valueOf(Constants.SyncMLResponseCodes.AUTHENTICATION_ACCEPTED)); String.valueOf(Constants.SyncMLResponseCodes.UNAUTHORIZED));
statuses.add(headerStatus); statuses.add(headerStatus);
} else { } else {
for (StatusTag sourceStatus : sourceStatuses) { for (StatusTag sourceStatus : sourceStatuses) {
if (sourceStatus.getChallenge() != null && HEADER_COMMAND_TEXT.equals(sourceStatus.getCommand())) { if (sourceStatus.getChallenge() != null && HEADER_COMMAND_TEXT.equals(sourceStatus.getCommand())) {
headerStatus = headerStatus =
new StatusTag(headerCommandId, sourceHeader.getMsgID(), HEADER_STATUS_ID, new StatusTag(headerCommandId, sourceHeader.getMsgID(), HEADER_STATUS_ID,
HEADER_COMMAND_TEXT, sourceHeader.getSource().getLocURI(), HEADER_COMMAND_TEXT, challengeTag, sourceHeader.getSource().getLocURI(),
String.valueOf(Constants.SyncMLResponseCodes.AUTHENTICATION_ACCEPTED)); String.valueOf(Constants.SyncMLResponseCodes.AUTHENTICATION_ACCEPTED));
statuses.add(headerStatus); statuses.add(headerStatus);
} }
@ -230,7 +237,6 @@ public class OperationReply {
private void appendOperations(SyncmlBody syncmlBody) throws PolicyManagementException, private void appendOperations(SyncmlBody syncmlBody) throws PolicyManagementException,
FeatureManagementException, JSONException, SyncmlOperationException { FeatureManagementException, JSONException, SyncmlOperationException {
GetTag getElement = new GetTag(); GetTag getElement = new GetTag();
List<ItemTag> getElements = new ArrayList<>(); List<ItemTag> getElements = new ArrayList<>();
List<ExecuteTag> executeElements = new ArrayList<>(); List<ExecuteTag> executeElements = new ArrayList<>();

@ -18,6 +18,7 @@
package org.wso2.carbon.device.mgt.mobile.windows.api.services.enrollment.impl; package org.wso2.carbon.device.mgt.mobile.windows.api.services.enrollment.impl;
import com.google.gson.Gson;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -40,6 +41,7 @@ import org.wso2.carbon.device.mgt.mobile.windows.api.common.exceptions.WAPProvis
import org.wso2.carbon.device.mgt.mobile.windows.api.common.exceptions.WindowsDeviceEnrolmentException; import org.wso2.carbon.device.mgt.mobile.windows.api.common.exceptions.WindowsDeviceEnrolmentException;
import org.wso2.carbon.device.mgt.mobile.windows.api.common.util.DeviceUtil; import org.wso2.carbon.device.mgt.mobile.windows.api.common.util.DeviceUtil;
import org.wso2.carbon.device.mgt.mobile.windows.api.common.util.WindowsAPIUtils; import org.wso2.carbon.device.mgt.mobile.windows.api.common.util.WindowsAPIUtils;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.util.DeviceInfo;
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.util.SyncmlCredentialUtil; import org.wso2.carbon.device.mgt.mobile.windows.api.operations.util.SyncmlCredentialUtil;
import org.wso2.carbon.device.mgt.mobile.windows.api.services.enrollment.EnrollmentService; import org.wso2.carbon.device.mgt.mobile.windows.api.services.enrollment.EnrollmentService;
import org.wso2.carbon.device.mgt.mobile.windows.api.services.enrollment.beans.*; import org.wso2.carbon.device.mgt.mobile.windows.api.services.enrollment.beans.*;
@ -98,7 +100,6 @@ public class EnrollmentServiceImpl implements EnrollmentService {
AdditionalContext additionalContext, AdditionalContext additionalContext,
Holder<RequestSecurityTokenResponse> response) Holder<RequestSecurityTokenResponse> response)
throws WindowsDeviceEnrolmentException, UnsupportedEncodingException, WAPProvisioningException { throws WindowsDeviceEnrolmentException, UnsupportedEncodingException, WAPProvisioningException {
String headerBinarySecurityToken = null; String headerBinarySecurityToken = null;
String headerTo = null; String headerTo = null;
String encodedWap; String encodedWap;
@ -199,7 +200,6 @@ public class EnrollmentServiceImpl implements EnrollmentService {
TransformerFactory transformerFactory = TransformerFactory.newInstance(); TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(); Transformer transformer = transformerFactory.newTransformer();
transformer.transform(DOMSource, streamResult); transformer.transform(DOMSource, streamResult);
return stringWriter.toString(); return stringWriter.toString();
} }
@ -220,14 +220,12 @@ public class EnrollmentServiceImpl implements EnrollmentService {
String signedCertEncodedString; String signedCertEncodedString;
X509Certificate signedCertificate; X509Certificate signedCertificate;
String provisioningXmlString; String provisioningXmlString;
CertificateManagementServiceImpl certMgtServiceImpl = CertificateManagementServiceImpl.getInstance(); CertificateManagementServiceImpl certMgtServiceImpl = CertificateManagementServiceImpl.getInstance();
Base64 base64Encoder = new Base64(); Base64 base64Encoder = new Base64();
try { try {
X509Certificate rootCACertificate = (X509Certificate) certMgtServiceImpl.getCACertificate(); X509Certificate rootCACertificate = (X509Certificate) certMgtServiceImpl.getCACertificate();
rootCertEncodedString = base64Encoder.encodeAsString(rootCACertificate.getEncoded()); rootCertEncodedString = base64Encoder.encodeAsString(rootCACertificate.getEncoded());
signedCertificate = certMgtServiceImpl.getSignedCertificateFromCSR(binarySecurityToken); signedCertificate = certMgtServiceImpl.getSignedCertificateFromCSR(binarySecurityToken);
signedCertEncodedString = base64Encoder.encodeAsString(signedCertificate.getEncoded()); signedCertEncodedString = base64Encoder.encodeAsString(signedCertificate.getEncoded());
@ -312,7 +310,6 @@ public class EnrollmentServiceImpl implements EnrollmentService {
Node pollValue = pollingAttributes.getNamedItem(PluginConstants.CertificateEnrolment.VALUE); Node pollValue = pollingAttributes.getNamedItem(PluginConstants.CertificateEnrolment.VALUE);
pollValue.setTextContent(pollingFrequency); pollValue.setTextContent(pollingFrequency);
provisioningXmlString = convertDocumentToString(document); provisioningXmlString = convertDocumentToString(document);
} catch (ParserConfigurationException e) { } catch (ParserConfigurationException e) {
throw new WAPProvisioningException("Problem occurred while creating configuration request", e); throw new WAPProvisioningException("Problem occurred while creating configuration request", e);
} catch (CertificateEncodingException e) { } catch (CertificateEncodingException e) {
@ -368,7 +365,7 @@ public class EnrollmentServiceImpl implements EnrollmentService {
* @return Value added Device. * @return Value added Device.
*/ */
private Device generateDevice(WindowsDevice windowsDevice) { private Device generateDevice(WindowsDevice windowsDevice) {
Gson gson = new Gson();
Device generatedDevice = new Device(); Device generatedDevice = new Device();
Device.Property OSVersionProperty = new Device.Property(); Device.Property OSVersionProperty = new Device.Property();
@ -383,10 +380,20 @@ public class EnrollmentServiceImpl implements EnrollmentService {
IMEIProperty.setName(PluginConstants.SyncML.IMEI); IMEIProperty.setName(PluginConstants.SyncML.IMEI);
IMEIProperty.setValue(windowsDevice.getImei()); IMEIProperty.setValue(windowsDevice.getImei());
Device.Property deviceInfoProperties = new Device.Property();
deviceInfoProperties.setName(PluginConstants.WindowsEnrollmentProperties.TYPE);
deviceInfoProperties.setValue(windowsDevice.getWindowsType());
String deviceInfo = gson.toJson(deviceInfoProperties);
Device.Property winDeviceType = new Device.Property();
winDeviceType.setName(PluginConstants.SyncML.DEVICE_INFO);
winDeviceType.setValue(deviceInfo);
List<Device.Property> propertyList = new ArrayList<>(); List<Device.Property> propertyList = new ArrayList<>();
propertyList.add(OSVersionProperty); propertyList.add(OSVersionProperty);
propertyList.add(IMSEIProperty); propertyList.add(IMSEIProperty);
propertyList.add(IMEIProperty); propertyList.add(IMEIProperty);
propertyList.add(winDeviceType);
EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); EnrolmentInfo enrolmentInfo = new EnrolmentInfo();
enrolmentInfo.setOwner(windowsDevice.getUser()); enrolmentInfo.setOwner(windowsDevice.getUser());
@ -430,6 +437,9 @@ public class EnrollmentServiceImpl implements EnrollmentService {
if (PluginConstants.WindowsEnrollmentProperties.DEVICE_VERSION.equals(contextItem.getName())) { if (PluginConstants.WindowsEnrollmentProperties.DEVICE_VERSION.equals(contextItem.getName())) {
windowsDevice.setOsVersion(contextItem.getValue()); windowsDevice.setOsVersion(contextItem.getValue());
} }
if (PluginConstants.WindowsEnrollmentProperties.TYPE.equals(contextItem.getName())) {
windowsDevice.setWindowsType(contextItem.getValue());
}
} }
Device device = generateDevice(windowsDevice); Device device = generateDevice(windowsDevice);
WindowsAPIUtils.getDeviceManagementService().enrollDevice(device); WindowsAPIUtils.getDeviceManagementService().enrollDevice(device);

@ -87,16 +87,16 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
if ((PluginConstants.SyncML.SYNCML_FIRST_MESSAGE_ID == msgId) && if ((PluginConstants.SyncML.SYNCML_FIRST_MESSAGE_ID == msgId) &&
(PluginConstants.SyncML.SYNCML_FIRST_SESSION_ID == sessionId)) { (PluginConstants.SyncML.SYNCML_FIRST_SESSION_ID == sessionId)) {
if (syncmlHeader.getCredential() != null) {
token = syncmlHeader.getCredential().getData(); token = syncmlHeader.getCredential().getData();
MobileCacheEntry cacheToken = DeviceUtil.getTokenEntry(token); MobileCacheEntry cacheToken = DeviceUtil.getTokenEntry(token);
DeviceUtil.persistChallengeToken(token, deviceIdentifier.getId(), user); DeviceUtil.persistChallengeToken(token, deviceIdentifier.getId(), user);
PrivilegedCarbonContext carbonCtx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); PrivilegedCarbonContext carbonCtx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
carbonCtx.setTenantId(cacheToken.getTenanatID(), true); carbonCtx.setTenantId(cacheToken.getTenanatID(), true);
if ((cacheToken.getUsername() != null) && (cacheToken.getUsername().equals(user))) { if ((cacheToken.getUsername() != null) && (cacheToken.getUsername().equals(user))) {
if (modifyEnrollWithMoreDetail(request, cacheToken.getTenantDomain(), cacheToken.getTenanatID())) { if (modifyEnrollWithMoreDetail(request, cacheToken.getTenantDomain(), cacheToken.getTenanatID())) {
pendingOperations = operationHandler.getPendingOperations(syncmlDocument); pendingOperations = operationHandler.getPendingOperations(syncmlDocument);
operationHandler.checkForDeviceWipe(pendingOperations, deviceIdentifier);
response = operationReply.generateReply(syncmlDocument, pendingOperations); response = operationReply.generateReply(syncmlDocument, pendingOperations);
return Response.status(Response.Status.OK).entity(response).build(); return Response.status(Response.Status.OK).entity(response).build();
} else { } else {
@ -109,17 +109,32 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
log.error(msg); log.error(msg);
return Response.status(Response.Status.UNAUTHORIZED).entity(msg).build(); return Response.status(Response.Status.UNAUTHORIZED).entity(msg).build();
} }
} else {
return Response.ok().entity(operationReply.generateReply(syncmlDocument, null)).build();
}
} else {
if (DeviceUtil.getTokenEntryFromDeviceId(deviceIdentifier.getId()) == null) {
if (syncmlHeader.getCredential() != null) {
token = syncmlHeader.getCredential().getData();
MobileCacheEntry cacheToken = DeviceUtil.getTokenEntry(token);
DeviceUtil.persistChallengeToken(token, deviceIdentifier.getId(), user);
PrivilegedCarbonContext carbonCtx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
carbonCtx.setTenantId(cacheToken.getTenanatID(), true);
}
} else { } else {
MobileCacheEntry cacheToken = DeviceUtil.getTokenEntryFromDeviceId(deviceIdentifier.getId()); MobileCacheEntry cacheToken = DeviceUtil.getTokenEntryFromDeviceId(deviceIdentifier.getId());
PrivilegedCarbonContext carbonCtx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); PrivilegedCarbonContext carbonCtx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
carbonCtx.setTenantId(cacheToken.getTenanatID()); carbonCtx.setTenantId(cacheToken.getTenanatID());
}
if ((syncmlDocument.getBody().getAlert() != null)) { if ((syncmlDocument.getBody().getAlert() != null)) {
if (!syncmlDocument.getBody().getAlert().getData().equals(Constants.DISENROLL_ALERT_DATA)) { if (!syncmlDocument.getBody().getAlert().getData().equals(Constants.DISENROLL_ALERT_DATA)) {
pendingOperations = operationHandler.getPendingOperations(syncmlDocument); pendingOperations = operationHandler.getPendingOperations(syncmlDocument);
operationHandler.checkForDeviceWipe(pendingOperations, deviceIdentifier);
return Response.ok().entity(operationReply.generateReply( return Response.ok().entity(operationReply.generateReply(
syncmlDocument, pendingOperations)).build(); syncmlDocument, pendingOperations)).build();
} else { } else {
if (WindowsAPIUtils.getDeviceManagementService().getDevice(deviceIdentifier, false) != null) { if (WindowsAPIUtils.getDeviceManagementService().getDevice(deviceIdentifier, false) != null) {
operationHandler.updateDisenrollOperationStatus(deviceIdentifier);
WindowsAPIUtils.getDeviceManagementService().disenrollDevice(deviceIdentifier); WindowsAPIUtils.getDeviceManagementService().disenrollDevice(deviceIdentifier);
return Response.ok().entity(operationReply.generateReply(syncmlDocument, null)).build(); return Response.ok().entity(operationReply.generateReply(syncmlDocument, null)).build();
} else { } else {
@ -130,6 +145,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
} }
} else { } else {
pendingOperations = operationHandler.getPendingOperations(syncmlDocument); pendingOperations = operationHandler.getPendingOperations(syncmlDocument);
operationHandler.checkForDeviceWipe(pendingOperations, deviceIdentifier);
return Response.ok().entity(operationReply.generateReply( return Response.ok().entity(operationReply.generateReply(
syncmlDocument, pendingOperations)).build(); syncmlDocument, pendingOperations)).build();
} }
@ -171,7 +187,6 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
boolean status = false; boolean status = false;
String user; String user;
SyncmlDocument syncmlDocument; SyncmlDocument syncmlDocument;
try { try {
syncmlDocument = SyncmlParser.parseSyncmlPayload(request); syncmlDocument = SyncmlParser.parseSyncmlPayload(request);
ReplaceTag replace = syncmlDocument.getBody().getReplace(); ReplaceTag replace = syncmlDocument.getBody().getReplace();

@ -32,6 +32,15 @@ public class WindowsDevice {
private String model; private String model;
private String user; private String user;
private String deviceName; private String deviceName;
private String windowsType;
public String getWindowsType() {
return windowsType;
}
public void setWindowsType(String windowsType) {
this.windowsType = windowsType;
}
public String getImei() { public String getImei() {
return imei; return imei;

@ -29,7 +29,7 @@
</characteristic> </characteristic>
<characteristic type="APPLICATION"> <characteristic type="APPLICATION">
<parm name="APPID" value="w7"/> <parm name="APPID" value="w7"/>
<parm name="PROVIDER-ID" value="TestMDMServer"/> <parm name="PROVIDER-ID" value="MobiCDMServer"/>
<parm name="NAME" value="Microsoft"/> <parm name="NAME" value="Microsoft"/>
<parm name="ADDR" value="https://DM.contoso.com:443/omadm/Windows.ashx"/> <parm name="ADDR" value="https://DM.contoso.com:443/omadm/Windows.ashx"/>
<parm name="CONNRETRYFREQ" value="6" /> <parm name="CONNRETRYFREQ" value="6" />
@ -42,8 +42,8 @@
<characteristic type="APPAUTH"> <characteristic type="APPAUTH">
<parm name="AAUTHLEVEL" value="CLIENT"/> <parm name="AAUTHLEVEL" value="CLIENT"/>
<parm name="AAUTHTYPE" value="DIGEST"/> <parm name="AAUTHTYPE" value="DIGEST"/>
<parm name="AAUTHSECRET" value="password1"/> <parm name="AAUTHSECRET" value="dummy"/>
<parm name="AAUTHDATA" value="B64encodedBinaryNonceInsertedHere"/> <parm name="AAUTHDATA" value="ZHVtbXk="/>
</characteristic> </characteristic>
<characteristic type="APPAUTH"> <characteristic type="APPAUTH">
<parm name="AAUTHLEVEL" value="APPSRV"/> <parm name="AAUTHLEVEL" value="APPSRV"/>

Loading…
Cancel
Save