mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
Implement new API for the global proxy policy
This commit is contained in:
parent
811a7348e4
commit
61210bd73e
@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. 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.mdm.services.android.bean;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class represents the information of setting up global proxy
|
||||||
|
*/
|
||||||
|
|
||||||
|
@ApiModel(
|
||||||
|
value = "GlobalProxy",
|
||||||
|
description = "This class represents the information of setting up global proxy"
|
||||||
|
)
|
||||||
|
public class GlobalProxy extends AndroidOperation implements Serializable {
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "host", value = "The hostname of the proxy server", required = true)
|
||||||
|
private String host;
|
||||||
|
|
||||||
|
@ApiModelProperty(
|
||||||
|
name = "port",
|
||||||
|
value = "The port which the proxy server is running",
|
||||||
|
required = true)
|
||||||
|
private int port;
|
||||||
|
|
||||||
|
@ApiModelProperty(
|
||||||
|
name = "excludedList",
|
||||||
|
value = "Hosts to exclude using the proxy on connections for. These hosts can use wildcards such as " +
|
||||||
|
"*.example.com"
|
||||||
|
)
|
||||||
|
private List<String> excludedList;
|
||||||
|
|
||||||
|
@ApiModelProperty(
|
||||||
|
name = "username",
|
||||||
|
value = "Username of the proxy server"
|
||||||
|
)
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
@ApiModelProperty(
|
||||||
|
name = "password",
|
||||||
|
value = "Password of the proxy server"
|
||||||
|
)
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
public String getHost() {
|
||||||
|
return host;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHost(String host) {
|
||||||
|
this.host = host;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPort() {
|
||||||
|
return port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPort(int port) {
|
||||||
|
this.port = port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getExcludedList() {
|
||||||
|
return excludedList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExcludedList(List<String> excludedList) {
|
||||||
|
this.excludedList = excludedList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsername() {
|
||||||
|
return username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsername(String username) {
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. 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.mdm.services.android.bean.wrapper;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import org.wso2.carbon.mdm.services.android.bean.GlobalProxy;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class is used to wrap the GlobalProxyPolicy bean with devices.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@ApiModel(
|
||||||
|
value = "GlobalProxyBeanWrapper",
|
||||||
|
description = "Mapping between global proxy settings and devices"
|
||||||
|
)
|
||||||
|
public class GlobalProxyBeanWrapper {
|
||||||
|
@ApiModelProperty(
|
||||||
|
name = "operation",
|
||||||
|
value = "Information of setting up global proxy",
|
||||||
|
required = true
|
||||||
|
)
|
||||||
|
private GlobalProxy operation;
|
||||||
|
|
||||||
|
@ApiModelProperty(
|
||||||
|
name = "deviceIDs",
|
||||||
|
value = "List of device Ids",
|
||||||
|
required = true)
|
||||||
|
private List<String> deviceIDs;
|
||||||
|
|
||||||
|
public GlobalProxy getOperation() {
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOperation(GlobalProxy operation) {
|
||||||
|
this.operation = operation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getDeviceIDs() {
|
||||||
|
return deviceIDs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceIDs(List<String> deviceIDs) {
|
||||||
|
this.deviceIDs = deviceIDs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -15,6 +15,23 @@
|
|||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) 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.mdm.services.android.services;
|
package org.wso2.carbon.mdm.services.android.services;
|
||||||
|
|
||||||
@ -1834,5 +1851,64 @@ public interface DeviceManagementAdminService {
|
|||||||
required = true)
|
required = true)
|
||||||
WebClipBeanWrapper webClipBeanWrapper);
|
WebClipBeanWrapper webClipBeanWrapper);
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/set-global-proxy")
|
||||||
|
@ApiOperation(
|
||||||
|
consumes = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "POST",
|
||||||
|
value = "Setting a network independent proxy recommendation on Android Devices",
|
||||||
|
notes = "Set global proxy on Android devices. All the network traffic will be routed through the proxy " +
|
||||||
|
"server regardless of the network the device is connected to.",
|
||||||
|
response = Activity.class,
|
||||||
|
tags = "Android Device Management Administrative Service",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = AndroidConstants.SCOPE, value = "perm:android:set-global-proxy")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(
|
||||||
|
code = 201,
|
||||||
|
message = "Created. \n Successfully scheduled the set global proxy operation.",
|
||||||
|
response = Activity.class,
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Location",
|
||||||
|
description = "URL of the activity instance that refers to the scheduled operation."),
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Type",
|
||||||
|
description = "Content type of the body"),
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "ETag",
|
||||||
|
description = "Entity Tag of the response resource.\n" +
|
||||||
|
"Used by caches, or in conditional requests."),
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Last-Modified",
|
||||||
|
description = "Date and time the resource was last modified.\n" +
|
||||||
|
"Used by caches, or in conditional requests.")}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 303,
|
||||||
|
message = "See Other. \n The source can be retrieved from the URL specified in the location header.\n",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Location",
|
||||||
|
description = "The Source URL of the document.")}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 400,
|
||||||
|
message = "Bad Request. \n Invalid request or validation error."),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 415,
|
||||||
|
message = "Unsupported media type. \n The format of the requested entity was not supported."),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n " +
|
||||||
|
"Server error occurred while adding the set global proxy operation.")
|
||||||
|
})
|
||||||
|
Response setRecommendedGlobalProxy(
|
||||||
|
@ApiParam(
|
||||||
|
name = "globalProxyInfo",
|
||||||
|
value = "The properties to set the global proxy settings.",
|
||||||
|
required = true)
|
||||||
|
GlobalProxyBeanWrapper globalProxyBeanWrapper);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,13 +15,29 @@
|
|||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) 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.mdm.services.android.services.impl;
|
package org.wso2.carbon.mdm.services.android.services.impl;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
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.wso2.carbon.device.mgt.common.DeviceManagementException;
|
|
||||||
import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
|
import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
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.Operation;
|
||||||
@ -37,6 +53,7 @@ import org.wso2.carbon.mdm.services.android.bean.DeviceEncryption;
|
|||||||
import org.wso2.carbon.mdm.services.android.bean.DeviceLock;
|
import org.wso2.carbon.mdm.services.android.bean.DeviceLock;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.ErrorResponse;
|
import org.wso2.carbon.mdm.services.android.bean.ErrorResponse;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.FileTransfer;
|
import org.wso2.carbon.mdm.services.android.bean.FileTransfer;
|
||||||
|
import org.wso2.carbon.mdm.services.android.bean.GlobalProxy;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.LockCode;
|
import org.wso2.carbon.mdm.services.android.bean.LockCode;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.Notification;
|
import org.wso2.carbon.mdm.services.android.bean.Notification;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.PasscodePolicy;
|
import org.wso2.carbon.mdm.services.android.bean.PasscodePolicy;
|
||||||
@ -53,6 +70,7 @@ import org.wso2.carbon.mdm.services.android.bean.wrapper.CameraBeanWrapper;
|
|||||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.DeviceLockBeanWrapper;
|
import org.wso2.carbon.mdm.services.android.bean.wrapper.DeviceLockBeanWrapper;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.EncryptionBeanWrapper;
|
import org.wso2.carbon.mdm.services.android.bean.wrapper.EncryptionBeanWrapper;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.FileTransferBeanWrapper;
|
import org.wso2.carbon.mdm.services.android.bean.wrapper.FileTransferBeanWrapper;
|
||||||
|
import org.wso2.carbon.mdm.services.android.bean.wrapper.GlobalProxyBeanWrapper;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.LockCodeBeanWrapper;
|
import org.wso2.carbon.mdm.services.android.bean.wrapper.LockCodeBeanWrapper;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.NotificationBeanWrapper;
|
import org.wso2.carbon.mdm.services.android.bean.wrapper.NotificationBeanWrapper;
|
||||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.PasswordPolicyBeanWrapper;
|
import org.wso2.carbon.mdm.services.android.bean.wrapper.PasswordPolicyBeanWrapper;
|
||||||
@ -958,6 +976,44 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/set-global-proxy")
|
||||||
|
@Override
|
||||||
|
public Response setRecommendedGlobalProxy(GlobalProxyBeanWrapper globalProxyBeanWrapper) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Invoking 'set-global-proxy' operation");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (globalProxyBeanWrapper == null || globalProxyBeanWrapper.getOperation() == null) {
|
||||||
|
String errorMessage = "The payload of the set global proxy operation is incorrect";
|
||||||
|
log.error(errorMessage);
|
||||||
|
throw new BadRequestException(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setCode(400L).setMessage(errorMessage).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
GlobalProxy globalProxy = globalProxyBeanWrapper.getOperation();
|
||||||
|
ProfileOperation operation = new ProfileOperation();
|
||||||
|
operation.setCode(AndroidConstants.OperationCodes.GLOBAL_PROXY);
|
||||||
|
operation.setType(Operation.Type.PROFILE);
|
||||||
|
operation.setPayLoad(globalProxy.toJSON());
|
||||||
|
|
||||||
|
Activity activity = AndroidDeviceUtils
|
||||||
|
.getOperationResponse(globalProxyBeanWrapper.getDeviceIDs(), operation);
|
||||||
|
return Response.status(Response.Status.CREATED).entity(activity).build();
|
||||||
|
} catch (InvalidDeviceException e) {
|
||||||
|
String errorMessage = "Invalid Device Identifiers found.";
|
||||||
|
log.error(errorMessage, e);
|
||||||
|
throw new BadRequestException(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setCode(400L).setMessage(errorMessage).build());
|
||||||
|
} catch (OperationManagementException e) {
|
||||||
|
String errorMessage = "Issue in retrieving operation management service instance";
|
||||||
|
log.error(errorMessage, e);
|
||||||
|
throw new UnexpectedServerErrorException(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setCode(500L).setMessage(errorMessage).build());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void validateApplicationUrl(String apkUrl) {
|
private static void validateApplicationUrl(String apkUrl) {
|
||||||
try {
|
try {
|
||||||
URL url = new URL(apkUrl);
|
URL url = new URL(apkUrl);
|
||||||
|
|||||||
@ -16,6 +16,23 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) 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.
|
||||||
|
*
|
||||||
|
*
|
||||||
* Copyright (c) 2018, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
* Copyright (c) 2018, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
@ -122,6 +139,7 @@ public final class AndroidConstants {
|
|||||||
public static final String APP_RESTRICTION = "APP-RESTRICTION";
|
public static final String APP_RESTRICTION = "APP-RESTRICTION";
|
||||||
public static final String WORK_PROFILE = "WORK_PROFILE";
|
public static final String WORK_PROFILE = "WORK_PROFILE";
|
||||||
public static final String NOTIFIER_FREQUENCY = "NOTIFIER_FREQUENCY";
|
public static final String NOTIFIER_FREQUENCY = "NOTIFIER_FREQUENCY";
|
||||||
|
public static final String GLOBAL_PROXY = "SET_GLOBAL_PROXY";
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class StatusCodes {
|
public final class StatusCodes {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user