Hasunie 7 years ago
parent bc26d56bb8
commit eb8dad1af7

@ -207,6 +207,7 @@ public final class PluginConstants {
public static final String MANUFACTURER = "MANUFACTURER"; public static final String MANUFACTURER = "MANUFACTURER";
public static final String LANGUAGE = "LANGUAGE"; public static final String LANGUAGE = "LANGUAGE";
public static final String RESOLUTION = "RESOLUTION"; public static final String RESOLUTION = "RESOLUTION";
public static final String WINDOWS_TYPE = "WINDOWS_TYPE";
// windows 10 codes // windows 10 codes
public static final String TOTAL_RAM = "TOTAL_RAM";// available ram in MB public static final String TOTAL_RAM = "TOTAL_RAM";// available ram in MB
@ -357,6 +358,7 @@ public final class PluginConstants {
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,10 @@ 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);
} }
} }

@ -43,6 +43,16 @@ public class StatusTag {
this.targetReference = targetReference; this.targetReference = targetReference;
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() {
} }
@ -132,8 +142,10 @@ public class StatusTag {
status.appendChild(targetReference); status.appendChild(targetReference);
} }
if (getChallenge() != null) { if (getChallenge() != null) {
getChallenge().buildChallengeElement(doc, status); getChallenge().buildChallengeElement(doc, status);
} }
if (getData() != null) { if (getData() != null) {
Element data = doc.createElement(Constants.DATA); Element data = doc.createElement(Constants.DATA);
data.appendChild(doc.createTextNode(getData())); data.appendChild(doc.createTextNode(getData()));

@ -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,22 @@ public class OperationHandler {
} }
} }
public void updateDisenrollOperation(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 +315,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 +586,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 +623,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 +665,18 @@ 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;
@ -159,17 +161,25 @@ public class OperationReply {
} }
private SyncmlBody generateStatuses() { private SyncmlBody generateStatuses() {
SyncmlBody sourceSyncmlBody = syncmlDocument.getBody(); SyncmlBody sourceSyncmlBody = syncmlDocument.getBody();
SyncmlHeader sourceHeader = syncmlDocument.getHeader(); SyncmlHeader sourceHeader = syncmlDocument.getHeader();
StatusTag headerStatus; StatusTag headerStatus;
ChallengeTag challengeTag;
challengeTag = new ChallengeTag();
MetaTag metaTag = new MetaTag();
metaTag.setFormat("b64");
metaTag.setType("syncml:auth-md5");
metaTag.setNextNonce("ZHVtbXk=");
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) {
@ -177,7 +187,7 @@ public class OperationReply {
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);
} }

@ -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.*;
@ -368,7 +370,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,16 +385,29 @@ 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());
enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD); enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD);
enrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE); enrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE);
generatedDevice.setEnrolmentInfo(enrolmentInfo); generatedDevice.setEnrolmentInfo(enrolmentInfo);
generatedDevice.setDeviceIdentifier(windowsDevice.getDeviceId()); generatedDevice.setDeviceIdentifier(windowsDevice.getDeviceId());
generatedDevice.setProperties(propertyList); generatedDevice.setProperties(propertyList);
@ -430,9 +445,13 @@ 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);
PolicyManagerService policyManagerService = WindowsAPIUtils.getPolicyManagerService(); PolicyManagerService policyManagerService = WindowsAPIUtils.getPolicyManagerService();
policyManagerService.getEffectivePolicy(new DeviceIdentifier(windowsDevice.getDeviceId(), device.getType())); policyManagerService.getEffectivePolicy(new DeviceIdentifier(windowsDevice.getDeviceId(), device.getType()));

@ -87,7 +87,9 @@ 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();
@ -97,8 +99,10 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
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 {
String msg = "Error occurred in while modify the enrollment."; String msg = "Error occurred in while modify the enrollment.";
log.error(msg); log.error(msg);
@ -109,17 +113,34 @@ 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.updateDisenrollOperation(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 +151,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();
} }

@ -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"/>

@ -39,6 +39,7 @@ public class MobileDevice implements Serializable {
private String serial; private String serial;
private String osBuildDate; private String osBuildDate;
private Map<String, String> deviceProperties; private Map<String, String> deviceProperties;
public MobileDevice() { public MobileDevice() {

Loading…
Cancel
Save